software engineering process

38
1 Chapter 4 Part-2 Software Processes

Upload: raheel-aslam

Post on 20-Aug-2015

703 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: software Engineering process

1

Chapter 4

Part-2

Software Processes

Page 2: software Engineering process

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

Page 3: software Engineering process

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

Page 4: software Engineering process

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.

Page 5: software Engineering process

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

Page 6: software Engineering process

6

Incremental development

Valida teincrement

Develop systemincrement

Design systemarchitecture

Integrateincrement

Valida tesystem

Define outline requirements

Assign requirements to increments

System incomplete

Finalsystem

Page 7: software Engineering process

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.

Page 8: software Engineering process

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).

Page 9: software Engineering process

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)

Page 10: software Engineering process

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

Page 11: software Engineering 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

Page 12: software Engineering process

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.

Page 13: software Engineering process

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

Page 14: software Engineering process

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)

Page 15: software Engineering process

15

Process activities

• 1- Software specification

• 2- Software design and implementation

• 3- Software validation

• 4- Software evolution

Page 16: software Engineering process

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

Page 17: software Engineering process

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.

Page 18: software Engineering process

18

The Requirements Engineering process

Feasibilitystudy

Requirementselicitation and

analysisRequirementsspecification

Requirementsvalidation

Feasibilityreport

Systemmodels

User and systemrequirements

Requirementsdocument

Page 19: software Engineering process

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

Page 20: software Engineering process

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.

Page 21: software Engineering process

21

The software design process

Architecturaldesign

Abstractspecification

Interfacedesign

Componentdesign

Datastructuredesign

Algorithmdesign

Systemarchitecture

Softwarespecification

Interfacespecification

Componentspecification

Datastructure

specification

Algorithmspecification

Requirementsspecification

Design activities

Design products

Page 22: software Engineering process

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.

Page 23: software Engineering process

23

The debugging process

Locateerror

Designerror repair

Repairerror

Re-testprogram

Page 24: software Engineering process

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

Page 25: software Engineering process

25

The stages of testing process

Sub-systemtesting

Moduletesting

Unittesting

Systemtesting

Acceptancetesting

Componenttesting

Integration testing Usertesting

Page 26: software Engineering process

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

Page 27: software Engineering process

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.

Page 28: software Engineering process

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.

Page 29: software Engineering process

29

System evolution

Assess existingsystems

Define systemrequirements

Propose systemchanges

Modifysystems

Newsystem

Existingsystems

Page 30: software Engineering process

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)

Page 31: software Engineering process

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

Page 32: software Engineering process

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.

Page 33: software Engineering process

33

Functional tool classification

Page 34: software Engineering process

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

Page 35: software Engineering process

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

Page 36: software Engineering process

36

Tools, workbenches, environments

Single-methodworkbenches

General-purposeworkbenches

Multi-methodworkbenches

Language-specificworkbenches

Programming TestingAnalysis and

design

Integratedenvironments

Process-centredenvironments

Filecomparators

CompilersEditors

EnvironmentsWorkbenchesTools

CASEtechnology

Page 37: software Engineering process

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.

Page 38: software Engineering process

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