Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 22

COMP 6710 Course Notes Slide 1-0

Auburn University
Computer Science and Software Engineering
Course Notes Set 1:
Introduction to
Software Engineering

Computer Science and Software Engineering
Auburn University

COMP 6710 Course Notes Slide 1-1
Auburn University
Computer Science and Software Engineering
Desirable Attributes of Software
Maintainability
It should be possible to evolve software
to meet the changing needs of
customers.
Dependability
Software dependability includes a
variety of things such as reliability,
security and safety. Dependable
software should not cause physical or
economic damage in the event of a
system failure.

COMP 6710 Course Notes Slide 1-2
Auburn University
Computer Science and Software Engineering
Desirable Attributes of Software
Efficiency
Software should not waste system
resources such as memory and processor
cycles.
Usability
Software should have an appropriate user
interface and adequate documentation.
Etc., etc.

Achieving these qualities in software is hard to do!


COMP 6710 Course Notes Slide 1-3
Auburn University
Computer Science and Software Engineering
No Silver Bullet
But as we look to the horizon of a decade hence, we see no silver
bullet. There is no single development, either in technology or
management technique, which by itself promises even one order
of magnitude improvement in productivity, in reliability, in simplicity.
Not only are there no silver bullets in view, the very nature of software
makes it unlikely there will be any.

Frederick Brooks, The Mythical Man Month

COMP 6710 Course Notes Slide 1-4
Auburn University
Computer Science and Software Engineering
Software Characteristics
Software is a crucial element of our society.
Software is becoming ubiquitous and invisible.
Software is both a product and a vehicle for delivering a
product.
Software consists of programs, documents, and data.
Software is developed or engineered, not manufactured.
Software is primarily custom-built, not assembled from
existing components.
Software deteriorates, but doesnt wear out.
Software has a chronic affliction [Pressman 5th Ed].

COMP 6710 Course Notes Slide 1-5
Auburn University
Computer Science and Software Engineering
Software Death
[Adapted from Figure 1.2, Pressman5E]

COMP 6710 Course Notes Slide 1-6
Auburn University
Computer Science and Software Engineering
Software Has Changed
Ran on single processor,
usually a mainframe
Input was linear, sequential
Output was alphanumeric
System design dominated
by
Transform systems
Transaction systems
Delivered across a network;
distributed, multiple
processors; client-server.
Input often from multiple
concurrent sources
Output must meet demands
for sophisticated
visualization
In addition to functional
requirements, must also
address:
network control
security
UI issues
data/object management
Demarco: Weve solved the easy problems first. The ones that are left are the hard ones.
Then: Now:

COMP 6710 Course Notes Slide 1-7
Auburn University
Computer Science and Software Engineering
Major Agents of Change
Compressed time-to-market, tight labor
market
Hardware costs down, software costs up
Powerful computing in small boxes
Pervasive networking
Ubiquity of object technology
Expectation of sophisticated GUIs
Inappropriateness of classic software
development process
Adapted from Toward a Discipline of Software Engineering, IEEE Software, Vol. 13, No. 6.

COMP 6710 Course Notes Slide 1-8
Auburn University
Computer Science and Software Engineering
Problems
Many critical systems are controlled or influenced by
legacy software which is difficult or impossible to
maintain, not understandable, or irreplaceable.
Little data exists on the process of developing software.
Software quality is difficult to define and measure.
Software doesnt have spare parts.
Software project managers are sometimes far removed
from software development.
Software developers are sometimes unaware of
engineering approaches to developing software.
Programming as an art versus programming as a
science.
Many myths pervade the software development culture.

COMP 6710 Course Notes Slide 1-9
Auburn University
Computer Science and Software Engineering
I would try to make some improvements in the
codes. Many codes or subroutines are more than
40 years old, and the guys who wrote them are
either in heaven or hell. Some codes are impossible
to refine because nobody knows what the original
programmer was trying to do. To figure it out, you
have to read the code in FORTRAN line by line, to
try to understand the underlying mathematics
picture and these codes are hundreds of
thousands, even millions of line long. Once
someone found a bug in the code and removed it
but then the code wouldnt work. So they put the
bug back in, even though no one knew why the
program work that way.
(by a nuclear scientist)
- Page 113, My Country verse Me, Dr. Wen-ho Lee, Hyperion Pub., 2001

COMP 6710 Course Notes Slide 1-10
Auburn University
Computer Science and Software Engineering
Myths
A general statement of objectives is enough to get
going. Fill in the details later.
Project requirements continually change, but change
can be easily accommodated because software is
flexible.
Once a program is developed, tested, and delivered, the
developers job is done.
Until a program is running, there is no way to assess its
quality.
The only deliverable for a successful project is a working
program.
We can always add more programmers if the project
gets behind.
All programmers are created equal.
[Adapted from public domain SEI course notes by Carter and Conn]

COMP 6710 Course Notes Slide 1-11
Auburn University
Computer Science and Software Engineering
What is Software Engineering?
coding
testing
maintenance
design
structured analysis
dataflow diagrams
structure charts
software quality assurance
configuration management
project management
CASE
requirements
KLOC
metrics

COMP 6710 Course Notes Slide 1-12
Auburn University
Computer Science and Software Engineering
Software Engineering
The establishment and use of sound engineering principles in
order to obtain economically software that is reliable and
works efficiently on real machines. [Bauer]
The application of a systematic, disciplined, quantifiable
approach to the development, operation, and maintenance of
software; that is, the application of engineering to software.
[IEEE Standard 610.12-1990]
a focus on quality
process
methods
tools
[Adapted from Pressman 5th Ed]

COMP 6710 Course Notes Slide 1-13
Auburn University
Computer Science and Software Engineering
Principles of Software Engineering
Abstraction
Analysis and Design Methods and
Notations
Prototyping
Software Architecture
Reuse
Measurement
Tools and Environments
Software Process
Adapted from Toward a Discipline of Software Engineering, IEEE Software, Vol. 13, No. 6.

COMP 6710 Course Notes Slide 1-14
Auburn University
Computer Science and Software Engineering
Principles
Abstraction
Primary tool for managing complexity
View a system in terms of layers or a
hierarchy or abstraction

COMP 6710 Course Notes Slide 1-15
Auburn University
Computer Science and Software Engineering
Principles
Analysis and Design Methods and
Notations
Notations
A formal way of documenting and communicating
design decisions
Issues: Cognitive aspects, readership skills, no
standards
Methods
A formal or semi-formal approach to building
models
Allows for completeness and consistency checks
(ideally)

COMP 6710 Course Notes Slide 1-16
Auburn University
Computer Science and Software Engineering
Principles
Prototyping
Help identify requirements
Explore feasibility
Simulate functions to be implemented
in hardware

COMP 6710 Course Notes Slide 1-17
Auburn University
Computer Science and Software Engineering
Principles
Software Architecture
Specifies a system in terms of
architectural units and how they
relate
Good architecture aids
implementation, testing, maintenance
Becoming a sub-discipline (e.g.,
Garlan and Shaw)

COMP 6710 Course Notes Slide 1-18
Auburn University
Computer Science and Software Engineering
Principles
Reuse
Make use of commonalities among systems
to reuse requirements, designs, code, test
scripts, etc.
Reusable components can be a business
asset
Barriers to reuse:
Can be faster to build a small component from
scratch
May take extra time to build a reusable
component
Potential adopters may hesitate due to SQA
concerns
Liability issues in the event of failure or needed
updates
Program understanding issues

COMP 6710 Course Notes Slide 1-19
Auburn University
Computer Science and Software Engineering
Principles
Measurement
Quantification of attributes of product
and process
Critical for assessment and
improvement

COMP 6710 Course Notes Slide 1-20
Auburn University
Computer Science and Software Engineering
Principles
Tools and Environments
Automated Software Engineering
Vertical v. Horizontal tools
Critical issues include
Integration
repositories

COMP 6710 Course Notes Slide 1-21
Auburn University
Computer Science and Software Engineering
Principles
Software Process
The organization and discipline of the
activities of developing software
Process diversity needed

You might also like