Software Engineering Chapter 2
Software Engineering Chapter 2
• Chapter 2
• Software Processes
– Specification , Development, Validation,
Evolution
• Software Process Models
•
Objectives
• To introduce software process
• To describe outline process models for
requirements engineering, software
development, testing and evolution
• To describe a number of different process
models and when they may be used
• To introduce CASE technology to support
software process activities
The software process
• Coherent sets of activities for specifying, designing, implementing and
testing software systems (..set of ordered tasks) OR
• A structured set of activities required to develop a
software system
– Specification – the functionality of the software and
constraints on its operation must be defined .
– Development – the software to meet the specification
must be produced
– Validation – the software must be validated to ensure
that it does what the customer wants
– Evolution – the software must evolve to meet changing
customer needs
• Activities vary depending on the organization and the type of system being
developed.
Why we need software process
• Common understanding of the activities, resources and
constraints involved in software development.
• Allow us to examine, understand, control and improve the
activities that comprise the process.
• Captures our experience and pass them along to others
• Creating processes helps
• Find inconsistencies,
• Redundancies; and
• Omissions
Software process characteristics
• Understandability
– „ Is the process defined and understandable?
• „ Visibility
– „ Is the process progress externally visible?
• „ Supportability
– „ Can the process be supported by CASE tools?
• „ Acceptability
– „ Is the process acceptable to those involved in it?
Reliability
– „ Are process errors discovered before they
result in product errors?
„ Robustness(STRONG AND HEALTHY)
– „ Can the process continue in spite of unexpected problems?
Maintainability
„ Can the process evolve to meet changing organizational needs?
„ Rapidity
„ How fast can the system be produced?
Process activities
• The four basic process activities of
specification, development, validation and
evolution are organized differently in
different development processes.
• In the waterfall model, they are organized in
sequence, whereas in incremental
development they are inter-leaved.
Software specification
• The process of establishing what services are required and the
constraints on the system’s operation and development.
• Requirements engineering process
– Feasibility study
• Is it technically and financially feasible to build the system?
– Requirements elicitation and analysis
• What do the system stakeholders require or expect from the system?
– Requirements specification
• Defining the requirements in detail
– Requirements validation
• Checking the validity of the requirements
Requirements engineering process
Feasibility Requirements
study elicitation and
analysis
Requir ements
specification
Feasibility Requirements
report validation
System
models
User and system
requirements
Requirements
document
Software design and implementation
• The process of converting the system
specification into an executable system.
• Software design
– Design a software structure that realises the
specification;
• Implementation
– Translate this structure into an executable program;
• The activities of design and implementation are
closely related and may be inter-leaved.
A general model of the design process
Design activities
Unit
testing
Module
testing
Sub-system
testing
System
testing
Acceptance
testing
Existing New
systems system
Software process models
• The goal of Software Engineering is to provide models and
processes that lead to the production of well-documented
maintainable software in a manner that is predictable.
• Also termed as software life cycle models
• A software process model is an abstract representation of a
process.
– Each process model represents a process from particular
perspective.
• Examples of process perspectives are
– Workflow perspective - sequence of activities
– Data-flow perspective - information flow
– Role/action perspective - who does what
Need for a software process model:
Requirements
definition
System and
software design
Implementation
and unit testing
Operation and
maintenance
Cont…
• Objective setting
– Specific objectives for the phase are identified
• Risk assessment and reduction
– Risks are assessed and activities put in place to reduce the
key risks
• Development and validation
– A development model for the system is chosen which can
be any of the generic models
• Planning
– The project is reviewed and the next phase of the spiral is
planned
Cont…
Cont…
• Advantages:
– Realism: the model accurately reflects the iterative
nature of software development on projects with
unclear requirements.
– Flexible: incorporates the advantages of the waterfall
and evolutionary methods.
– Comprehensive model to decreases risk.
– Good project visibility.
– On each iteration, plans, costs, risks and schedules
updated and project manager get more accurate
estimate of number of required iterations
Cont…
Concurr ent
activities
Initial
Specification
version
Outline Intermediate
Development
description versions
Final
Validation
version
Cont…
• Throw-away prototyping
– Objective is to understand the system requirements.
Should start with poorly understood requirements
• Develop “quick and dirty” system quickly;
• Expose to user comment;
• Refine;
– Until adequate system is developed.
– Particularly suitable where:
• detailed requirements not possible;
• powerful development tools (e.g. GUI) available
Cont…
• The users and the designers must be well aware of the issues
and the pitfalls
• Use prototyping when the requirements are unclear.
• Applicability
– For small or medium-size interactive systems
– For parts of large systems (e.g. the user interface)
– For short-lifetime systems
Formal transformation development process
• Problems
– Need for specialised skills and training to apply the
technique
– Difficult to formally specify some aspects of the system such
as the user interface.
• Advantage
– The resulting software will have high quality
• Applicability
– Critical systems especially those where a safety or security
case must be made before the system is put into operation
Reuse-oriented development
• Based on systematic reuse where systems are integrated
from existing components or COTS (Commercial-off-the-
shelf) systems
• Process stages
– Component analysis
– Requirements modification
– System design with reuse
– Development and integration
• This approach is becoming more important but still
limited experience with it
Cont…
Development System
and integration validation
Software systems are intangible so managers need documents to
assess progress.
Process Models & Process visibility
Process model Process visibility
Waterfall model Good visibility, each activity produces some
deliverable
Evolutionary Poor visibility, uneconomic to produce
development documents during rapid iteration
Formal Good visibility, documents must be produced
transformations from each phase for the process to continue
Reuse-oriented Moderate visibility, it may be artificial to
development produce documents describing reuse and
reusable components.
Spiral model Good visibility, each segment and each ring
of the spiral should produce some document.
Automated process support (CASE)
• Computer-aided software engineering (CASE) is
software to support software development and
evolution processes
• Activity automation
– Graphical editors for system model development
– Data dictionary to manage design entities
– Graphical UI builder for user interface construction
– Debuggers to support program fault finding
– Automated translators to generate new versions of a
program
Case technology
• Case technology has led to significant improvements in the
software process though not the order of magnitude
improvements that were once predicted
– Software engineering requires creative thought -
this is not readily automatable
– Software engineering is a team activity and, for
large projects, much time is spent in team
interactions. CASE technology does not really
support these
CASE classification
• Classification helps us understand the different
types of CASE tools and their support for process
activities
• Functional perspective
– Tools are classified according to their specific function
• Process perspective
– Tools are classified according to process activities that
are supported
• Integration perspective
– Tools are classified according to their organisation
into integrated units
Functional tool classification
Activity-based classification
Reengineering tools
Testing tools
Debugging tools
Language-processing
tools
Prototyping tools
Configuration
management tools
Documentation tools
Editing tools
Planning tools
Analysis and
Programming Testing
design