The Software Engineering Process

The Software Engineering Process
Software Engineering:
The practical application of computer science,
management, and other sciences to the analysis, design,
construction, and maintenance of software and the
documentation necessary to use, operate, and maintain the
delivered software system.
The software Development Crisis
-
For every 6 large software projects put into
operation, 2 are cancelled
The average software development project overshoots
its schedule by half
Three quarters of all large systems are “operating
failures.” (Don’t function as intended or are not used
at all)
1
Software Engineering – A Layered Technology
1.
Software Engineering must rest on an organizational
commitment to quality, which leads to continued
improvements in the software engineering process.
2.
A Process defines a framework for a set of key
process areas that must be established to ensure
effective delivery of software engineering technology.
The Key process areas form the basis for management
control of software projects. These include tasks such
as:
-
3.
Determining Deliverables
Establishing milestones
Software Quality Assurance
Software Configuration (change) Management
Software Engineering methods provide the technical
how to for building software.
Methods include a wide array of tasks such as:
-
4.
Requirements Analysis
Design
Program Construction
Testing
Maintenance
Software Engineering Tools provide automated or
semi-automated support for the process and the
methods.
- Example: CASE (Computer Aided Software Engineering)
2
The Software Engineering Paradigm (Process Model):
A software engineering strategy that encompasses the
process, methods, and tools used for system development.
Classes of Process Models include:
1.
The Linear Sequential Model (also known as classic
life cycle model and waterfall model):
-
The oldest and most commonly used software
engineering model
-
Demands a systematic, sequential approach to
software development that begins at the system
level and progresses through analysis, design,
coding, testing, and maintenance.
-
Problems with linear models:
1.
Real projects rarely follow
sequential model
2.
Difficult for customers to
state all requirements explicitly
3.
Customer does not get the feel
for system until the end of development.
2.
The Prototyping Model
-
A mechanism for determining customer requirements
-
Developer and customer meet and define the
overall objectives for the software, identify
whatever requirements are known, and outlines
areas where further definition is mandatory.
-
A quick design and implementation is carried-out
(mostly representing graphical user interfaces)
-
The customer/developer review the prototype
making adjustments to and/or adding requirements
3
-
Iteration occurs as prototype is tuned to satisfy
the needs of customer.
-
Problems with Prototyping:
1.
Customer thinks system is ready
or just needs a few adjustments to be
useable
2.
Software quality was not
considered in development
3.
No well prepared design is
available
4.
Maintenance is difficult
3.
-
Other Models:
Incremental model
Develop complete sub-systems to be built on later
-
Evolutionary model (Spiral model):
Combine sequential and prototyping models
-
The Formal Method Model:
Use rigorous mathematical notation to specify,
develop, and verify a computer-based system.
Software Project Management(covered next chapter)
Software Quality Assurance (SQA)
4
-
-
-
Conformance to
- explicitly stated functional and performance
requirements,
- explicitly documented development standards, and
- implicit characteristics that are expected of all
professionally developed software.
Quality is built into the system starting with
methods and tools used to help analyze and design the
system, and not reached after the system has been
developed.
Quality factors:
-
-
Correctness
Reliability
Efficiency
Integrity
Usability
Maintainability
Flexibility
Testability
Portability
Reusability
Interoperability
Activities for quality assessment and control:
-
Formal Technical Reviews (RTF)
Software Testing
Change Control
Measurement
Record Keeping and Recording
Software Configuration Management (SCM)
-
-
The art of identifying, organizing, and controlling
modifications to the software being built by a
programming team.
SCM Activities:
-
Identify change
Control change (improve quality and reduce error)
Ensure correct implementation of change
Report change to those who may be effected
5
The Technical Spectrum
The methodologies and disciplines for developing software
projects.

1.
Software Engineering falls into three different
approaches (categories) of development:
Conventional Development
View software as an information transform and approach
each problem using a input-process-output viewpoint.
2.
Object-Oriented Development
Consider each problem as a set of classes and work to
create a solution by implementing a set of
communicating objects that are instantiated from these
objects.
3.
Formal Methods
Describe the problem in mathematical terms, enabling
rigorous evaluation of completeness, consistency, and
correctness.

1.
2.
3.
4.
5.
Technical Software Engineering Tasks Include:
Requirements Analysis (problem Definition)
Design
Code Construction
Testing
Maintenance
6
TESTING:
A process of executing a program with the intent of
finding an error
Can help determine that a program is functioning
correctly (according to requirements)

Good testing includes different levels of testing:
Low-level (unit testing):
-
Verify that a small segment of source code has been
correctly implemented
Intermediate-Level (integration testing):
-
Discover errors in the interfaces between modules
High-level (system testing):
-
Validate major system functions against customer
requirements

-
Further Issues of Software Engineering:
Reuse
Reengineering
Retooling
7