Post on 20-Aug-2015
1
Chapter 4
Part-2
Software Processes
2
In Ch4 Lec 5 – Part 1 we discuss:
1- Generic software process model a. waterfall model b. evolutionary model c. Formal systems d. reuse- based component model
In Ch4 Lec 5 – Part 2 we discuss:
2- Iterative process model a. Incremental development (delivery) b. Spiral development
3- software process
4- CASE tools
3
Process iteration• process iteration where earlier stages are
reworked in response to change request is always part of the process for large systems
• The iteration process models that have been designed to support process iteration??
– 1- Incremental development (delivery)– 2- Spiral development
4
1- Incremental delivery
• It is an in between approach which combines the advantages of waterfall and evolutionary models.
• Rather than deliver the system as a single delivery, the software specification, design and implementation is broken down into increments with each increment delivering part of the required functionality.
5
Incremental delivery
• User requirements are prioritized and the highest priority requirements are included in early increments
• Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve
6
Incremental development
Valida teincrement
Develop systemincrement
Design systemarchitecture
Integrateincrement
Valida tesystem
Define outline requirements
Assign requirements to increments
System incomplete
Finalsystem
7
Incremental delivery advantages• Customer can gain value from the system with each
increment so system functionality is available earlier
• Early increments act as a prototype to help elicit requirements for later increments
• Lower risk of overall project failure
• The highest priority system services tend to receive the most testing
• it is useful when staffing is unavailable for a complete implementation.
8
Advice: when you encounter a difficult deadline that cannot be changed, the incremental model is a good one to consider.
Increments should be relatively small and each increment should deliver some system functionality.
So it is difficult to map the customer’s requirement with the right size of the increment.
A recent evolution of this increment approach called extreme programming (XP).
9
Extreme programming (XP)- a new evolution of incremental approach.
• New approach based on the development and delivery of very small increments of functionality
• Relies on user involvement in the development team (planning) and pair programming (Coding)
10
2- Spiral development• Process is represented as a spiral rather than as a
sequence of activities with backtracking from one activity to another.
• Each loop in the spiral represents a phase in the software process.
• The inner loop might be connected to feasibility, next loop with requirements definitions and so on.
• Risks are explicitly assessed and resolved throughout the process
11
Spiral model of the software process
Riskanalysis
Riskanalysis
Riskanalysis
Riskanalysis Proto-
type 1
Prototype 2Prototype 3
Opera-tionalprotoype
Concept ofOperation
Simulations, models, benchmarks
S/Wrequirements
Requirementvalidation
DesignV&V
Productdesign Detailed
design
CodeUnit test
IntegrationtestAcceptance
testService Develop, verifynext-level product
Evaluate alternativesidentify, resolve risks
Determine objectivesalternatives and
constraints
Plan next phase
Integrationand test plan
Developmentplan
Requirements planLife-cycle plan
REVIEW
12
Spiral model loop sectors• Objective setting
– Specific objectives for the phase are identified– constraints on the process and the product are
identified, also project risks are identified.
• Risk analysis (assessment) and reduction– Risks are assessed and activities put in place to
reduce the key risks– Example: if there is a risk that the requirements
are inappropriate, a prototype system may be developed.
13
Spiral model loop sectors
• Development and validation (engineering)– A development model for the system is chosen
which can be any of the generic models– Example: if user interface risk are dominant an appropriate development model ,مسيطرmight be evolutionary prototyping
• Planning– The project is reviewed and the next phase of
the spiral is planned
14
Spiral model
• The main different between the Spiral model and other Software process model:
is the explicit recognition of the risk (something that can be go wrong)
15
Process activities
• 1- Software specification
• 2- Software design and implementation
• 3- Software validation
• 4- Software evolution
16
1- Software specification (RE)
• It is the process of establishing what services are required from the system and the constraints on the system’s operation and development
17
1- Software specification (RE)• Software specification or Requirements Engineering process phases:
– Feasibility study (is the proposed system cost-effective, is it within the budget constraints)
– Requirements elicitation and analysis, this may involve observation of existing system, task analysis, and may need to development of system model an prototype.
– Requirements specification, translate info gathered to set of requirements (document), it include:
User requirement and system requirements (more detail)
– Requirements validation, realism, consistency and completeness.
18
The Requirements Engineering process
Feasibilitystudy
Requirementselicitation and
analysisRequirementsspecification
Requirementsvalidation
Feasibilityreport
Systemmodels
User and systemrequirements
Requirementsdocument
19
2- Software design and implementation
• The process of converting the system specification into an executable system
• Software design, is a description of the structure of the software, the data, the interfaces, and algorithms.
• Implementation, translate this structure into an executable program
• The activities of design and implementation are closely related and may be inter-leaved
20
Design process activities (phases)
• Architectural design, the sub systems making the system and their relationship are identified.
• Abstract specification, for each sub system, an abstract specification of its services and constraints is produced.
• Interface design, for each sub system, its interfaces with others is designed.
• Component design: services are allocated to the component and the interfaces for this component is designed
• Data structure design: the data structure used in this system are designed in detail.
• Algorithm design: the Algorithm used in this system are designed in detail.
21
The software design process
Architecturaldesign
Abstractspecification
Interfacedesign
Componentdesign
Datastructuredesign
Algorithmdesign
Systemarchitecture
Softwarespecification
Interfacespecification
Componentspecification
Datastructure
specification
Algorithmspecification
Requirementsspecification
Design activities
Design products
22
Programming and debugging ( Implementation)
• Translating a design into a program and removing errors from that program
• Programming is a personal activity - there is no generic programming process
• Programmers carry out some program testing to discover faults in the program and remove these faults in the debugging process
• The debugging process are consisted of locate errors, design error repair, repair errors, and re-test program.
23
The debugging process
Locateerror
Designerror repair
Repairerror
Re-testprogram
24
3- Software validation
• Verification and validation (V & V) is intended to show that a system conforms to its specification and meets the requirements of the system’s customer
• System testing involves executing the system with test cases that are derived from the specification of the real data to be processed by the system
25
The stages of testing process
Sub-systemtesting
Moduletesting
Unittesting
Systemtesting
Acceptancetesting
Componenttesting
Integration testing Usertesting
26
Testing Process stages
• Unit(Component) testing, individual components are tested to insure that it is work correctly
• Module testing, related collections of dependent components are tested
• Sub-system testing, modules are integrated into sub-systems and tested. The focus here should be on interface testing
27
Testing Process stages, cont…
• System testing, testing of the system as a whole. integrate the component then make testing * to find the errors result from integration and interface problems for this component. This test is used * to validate the system to meet the functional and non-functional requirement and * to check the emergent properties.
• Acceptance testing, testing with customer data to check that it is acceptable. System is tested using a real data supplied by the user. This test reveals requirement problems and if the system performance is not acceptable.
28
4- Software evolution• Software is inherently flexible and can change.
• As requirements change through changing business
circumstances, the software that supports the business must also evolve and change
• Although there has been a split between development and evolution (maintenance) .
• Software maintenance cost is several times the development cost.
29
System evolution
Assess existingsystems
Define systemrequirements
Propose systemchanges
Modifysystems
Newsystem
Existingsystems
30
Computer-aided software engineering (CASE)
• CASE is software to support requirement, design, software development and evolution processes.
• Activity automation- can be used by CASE:– Graphical editors used for system model development– Data dictionary that holds information about entities and
relations of design. Used to understand design.– Graphical User Interface builder used for user interface
construction– Debuggers to support program fault finding– Automated translators to generate new versions of a
program from old one. (ex COBOL)
31
CASE technology• Case technology has led to significant improvements in the
software process and saving in the cost of software process.
• CASE is available for most routine activities of software process.
• The improvement from the use of CASE are limited by two factors: – Software engineering requires creative thought- (Artificial
intelligent technology ) - this is not easily 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
32
CASE Tool 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 how they are organised into integrated units that provide support for process activity.
33
Functional tool classification
34Activity-based classification
Reengineering tools
Testing tools
Debugging tools
Program analysis tools
Language-processingtools
Method support tools
Prototyping tools
Configurationmanagement tools
Change management tools
Documentation tools
Editing tools
Planning tools
Specification Design Implementation Verificationand
Validation
35
CASE Classification Categories: • Tools: support individual process activity such as design
consistency checking, text editing.
• Workbenches: support a set of related process phases and activities such as specification or design.
Normally include a number of integrated tools.
• Environments: support all or most part of an entire software process activities. Normally include several integrated workbenches
36
Tools, workbenches, environments
Single-methodworkbenches
General-purposeworkbenches
Multi-methodworkbenches
Language-specificworkbenches
Programming TestingAnalysis and
design
Integratedenvironments
Process-centredenvironments
Filecomparators
CompilersEditors
EnvironmentsWorkbenchesTools
CASEtechnology
37
Key points• Software processes are the activities involved in producing
and evolving a software system. They are represented in a software process model
• General activities are specification, design, implementation, validation and evolution
• Generic process models describe the organization of software processes such as waterfall, evolutionary and reuse-component.
• Iterative process models describe the software process as a cycle of activities. Such as incremental delivery and spiral model.
The main advantage of iteration process model is to avoid the commitment to specification and design.
38
Key points• Requirements engineering is the process of developing a
software specification
• Design and implementation processes transform the specification to an executable program
• Validation involves checking that the system meets to its specification and user needs
• Evolution is concerned with modifying the system after it is in use
• CASE technology supports software process activities