1 CS 501 Spring 2003 CS 501: Software Engineering Lecture 2 Software Processes.
Lecture 2 (Software Processes)
-
Upload
education-front -
Category
Engineering
-
view
109 -
download
6
description
Transcript of Lecture 2 (Software Processes)
Introduction to Software Engineering(CSC291)
InstructorHumaira Afzal
What is a Process … ?•When we provide a service or create a product we
always follow a sequence of steps to accomplish a set of tasks
▫You do not usually bake a cake before all the ingredients are mixed together
•We can think of a series of activities as a process
2
What is a Process … ?•Any process has the following characteristics▫It prescribes all of the major activities▫It uses resources and produces intermediate and final
products▫It may include sub-processes and has entry and exit
criteria▫The activities are organized in a sequence▫Constraints or controls may apply to activities
(budget constraints, availability of resources , etc.)
3
The software process• A structured set of activities that leads to the development of
a software product. From scratch By extending and modifying existing systems
• Basic Process activities(common to all software Processes)▫Specification▫Design▫Validation▫Evolution
Software specification/requirement engineering
• The process of understanding and defining
- what services are required from the system
- Identify the constraints on the system’s operation and development
- Critical Stage of the software process
- The “what” of the software life cycle
Software specification(contd..)•Four main phases in requirements engineering
process▫Feasibility study▫Requirements elicitation and analysis▫Requirements specification▫Requirements validation
1.Feasibility study :- an estimate is made of whether the identified user needs may be satisfied using current software and hardware technologies.
- whether the proposed system will be cost effective
- the decision of whether to go ahead with a more detailed analysis.
Software specification(contd..)
Software specification(contd..)
Requirements elicitation and analysis:
This is the process of deriving the system requirements through - observation of existing systems
- discussions with potential users- task analysis, etc.
This may involve the development of one or more different system models and prototypes. These help analyst
understand the system to be specified.
Requirements specification: is the activity of translating the information gathered during the analysis activity into a document that defines a set of requirements.
Two types of requirements : • User requirements• System requirements
Requirements validation : This activity checks the requirements for realism, consistency
and completeness.
Software specification(contd..)
The requirements engineering process
Feasibilitystudy
Requirementselicitation and
analysisRequirementsspecification
Requirementsvalidation
Feasibilityreport
Systemmodels
User and systemrequirements
Requirementsdocument
Note : Of course the activities in the requirements process are not simply carried out in a strict sequence. Therefore, the activities of analysis, definition and specification are interleaved.
The requirements engineering process
Software design and implementation•The process of converting the system specification
into an executable system•Software design▫Description of the structure of software to be
implemented• Implementation▫Translate this structure into an executable program
•The activities of design and implementation are closely related and may be inter-leaved
•The “how” of the software life cycle
Design process activities
•Architectural design•Abstract specification• Interface design•Component design•Data structure design•Algorithm design
1.Architectural design The sub-systems making up the system and their relationships are identified and documented.
2.Abstract specification For each sub-system, an abstract specification of its services and the constraints under which it must operate is produced.
The software design process
The software design process
• Interface design For each sub-system, its interface with other sub-system is designed and documented. This interface specification must be unambiguous as it allows the sub-system to be used without knowledge of the sub-system operation.
1.Component design Services are allocated to different components and the interfaces of these components are designed.
The software design process
1.Data Structure design The data structures used in the system implementation are designed in detail and specified.
2.Algorithm design The algorithms used to provide services are designed in detail and specified.
The software design process
Architecturaldesign
Abstractspecification
Interfacedesign
Componentdesign
Datastructuredesign
Algorithmdesign
Systemarchitecture
Softwarespecification
Interfacespecification
Componentspecification
Datastructure
specification
Algorithmspecification
Requirementsspecification
Design activities
Design products
In many software development projects, software design is still an ad hoc process. Starting from a set of requirements, usually in natural language, an informal design is prepared.
A more methodical approach to software design is proposed by “structured methods” which are sets of notations and guidelines for software design.
The software design process
Design methods•Systematic approaches to developing a software
design•The design is usually documented as a set of
graphical models•Possible models▫Data-flow model▫Entity-relation-attribute model▫Structural model▫Object models
Programming and debugging•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
Locateerror
Designerror repair
Repairerror
Re-testprogram
Software validation•Verification and validation is intended to show that a
system conforms to its specification and meets the requirements of the system customer
• Involves checking and review processes and system testing
•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
The testing process
Sub-systemtesting
Moduletesting
Unittesting
Systemtesting
Acceptancetesting
Componenttesting
Integration testing Usertesting
Testing stages• Unit testing
▫ Individual components are tested• 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
• System testing▫ Testing of the system as a whole. Testing of emergent properties
• Acceptance testing▫ Testing with customer data to check that it is acceptable
Testing phasesRequirementsspecification
Systemspecification
Systemdesign
Detaileddesign
Module andunit codeand tess
Sub-systemintegrationtest plan
Systemintegrationtest plan
Acceptancetest plan
Service Acceptancetest
Systemintegration test
Sub-systemintegration test
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 demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new
System evolution
Assess existingsystems
Define systemrequirements
Propose systemchanges
Modifysystems
Newsystem
Existingsystems