8/8/2019 Software Enggniring
1/13
SOFTWARE ENGGNIRING
Software Engineering is the technological and managerial disciplineconcerned with systematic production and maintenance of software
products that are developed and modified on time and within cost
estimates.
SOFTWARE = Programs + Documentation required to develop, operate andmaintain programs.
Documentation is an essential component of software because it is notpossible to understand different aspects of large programs without
documentation.
WHAT IS A SOFTWARE PROCESS? A setofactivitieswhose goalisthe developmentorevolutionofsoftware. Genericactivitiesinallsoftwareprocessesare:
Specification - whatthesystemshould doand its developmentconstraints
Development - productionofthesoftwaresystem Validation - checking thatthesoftwareiswhatthecustomerwants Evolution - changing thesoftwareinresponsetochanging demands.
The identification of the software development as an engineering disciplineled to the need of a Software Development Model or Software Life
Cycle. The detailed model is still the topic of research but it is now clear
that a number of general models or paradigms of software development
can be identified.
SOFTWARE PROCESS MODELS Waterfall model Evolutionary development Component-based software engineering Incremental model Spiral model
8/8/2019 Software Enggniring
2/13
SOFTWARE PROCESS ACTIVITIES Specification Design and implementation Validation Evolution
THE RATIONAL UNIFIED PROCESS COMPUTER-AIDED SOFTWARE ENGINEERING
SOFTWARE PROCESS MODELS
Softwareprocess = organized setofactivitiesaimed at building asoftwaresystem
Softwareprocessmodel = anabstractrepresentationofasoftwareprocess
Fundamentalsoftwareprocessactivities: Softwarespecification Software design Softwareimplementation Softwarevalidation Softwareevolution
SOFTWARE PROCESS MODELS
1. THE WATER-FALL APPROACH:This approach views the software lifecycle as made up of a number of stages such as: requirements specification,
software design, implementation and so on. After the completion of one
stage the development proceeds to the next stage.
2. EXPLORATORYPROGRAMMING:This approach involves developinga working system as quickly as possible and then modifying that system
until it works in an adequate way. This is used in the de velopment of AI
systems where the users can not formulate a detailed requirement
8/8/2019 Software Enggniring
3/13
specification and where adequacy rather than correctness in the aim of
designers.
3. PROTOTYPING:This approach is similar to exploratory programming inthat first phase involves the quick development of a program for users
experiment. But here the objective is to establish the system requirements.This is developed from an outline specification. The users experiment with
the prototype to refine and improve the specification. This is followed by
the re-implementation of the software to produce a production quantity
system.
4. FORMAL TRANSFORMATION:This approach involves developing aformal specification of the system and transforming this specification to a
program using correctness - preserving transformations. Each
transformation is sufficiently close to the previous description that effort of
verifying the transformation is not excessive. It can then be guaranteed
that the developed program is the true implementation of the sp ecification.
5. SYSTEM ASSEMBLY FROM RE -USABLE COMPONENTS:Thisapproach involves developing software system from the existing
components. Thus the system development process becomes one of the
assembly rather than creation.
The first three of these approaches are all being used for practical
system development. Some systems have been built using formaltransformation but this is still an untried approach. The re-use-
oriented model is still not commercially viable because of the lack
of reusable component libraries.
1. THEWATERFALLMODELThis model is illustrated in the figure below. Because of the cascade from one
stage to other this model is called waterfall model. This is also called Classic
Life-Cycle. This model is the oldestand widely used one.
REQUIREMENTS ANALYSIS AND DEFINITION:The systems services,
constraints and goals are established by consultation with the system users.
They are then defined in a manner which is understandable by the users and
the development staff.
8/8/2019 Software Enggniring
4/13
SYSTEM AND SOFTWARE DESIGN: The system design process
partitions the requirements either to hardware or to software systems and
establishes an overall systems structure. The software design involves
representing the software system functions in such a way that may be
transformed to one or more executable programs.
IMPLEMENTATION AND UNI T TESTING:In this stage the software
design is realised as a set of working programs or program units. The unit -
testing means verifying each unit that meets its specifications and it is ver ified
that the defined input produces the desired results.
INTEGRATION AND SYSTEM TESTING :The individual program units or
programs are integrated and tested as a whole system to ensure that software
requirements are met. After testing the system is delivered to the customer.
OPERATION &MAINTENANCE :Normally (not necessarily) this is the
longest phase of the life cycle. The system is installed and put into practical
use. Maintenance involves correcting errors, which were not detected in
earlier stages of the life cycle, improving the implementation of the system
units and enhancing the systems services as new requirements are discovered.
ADVANTAGES: Organized approach, provides robust separation of phases
Requirementsdefinition
System and
software design
Implementationand unit testing
Integration andsystem testing
Operation andmaintenance
8/8/2019 Software Enggniring
5/13
Reflects common engineering practice DISADVANTAGES:
Doesnt cope well with changes required by the client Development teams might wait for each other A working version of the product is available only late
APPLICABILITY: When requirements are well known and few changes are likely to be
needed
Can be used also for parts of larger software systems2. EVOLUTIONARY DEVELOPMENTu
This is based on the idea of developing an initial implementation, exposing it to
the user and refining this through many stages until an adequate system has
been developed
y This method requires rapid development of the system & rapidincorporation of the modifications. To accomplish thus:
y A very high-level programming language such as LISP or PROLOG isrequired.
y Powerful dedicated hardware is required.y Integrated set of tools for the development of software is required.y Its main difference from the other approaches is in the verification &
validation:
y Without a specification verification is impossible because for this purposethe program is composed of its specifications.
y The notion of correctness is replaced by the notion of adequacy.y It has been mostly used to develop AI systems & has been little used in the
development of large, long life systems because :
y It is not economical to produce a great deal of documentation as thesystem goes on changing regularly.
y This results in a system whose structure is not well defined and if there isany it gets deteriorated.
8/8/2019 Software Enggniring
6/13
MAIN CHARACTERISTICS
The phases of the software construction are interleaved Feedback from the user is used throughout the entire process The software product is refined through many versions Types of evolutionary development: Exploratory development Throw-away prototyping Advantages:
Deals constantly with changes Provides quickly an initial version of the system Involves all development teams
Disadvantages: Quick fixes may be involved Invisible process, not well-supported by documentation The systems structure can be corrupted by continuous change Special tools and techniques may be necessary The client may have the impression the first version is very close to the
final product and thus be less patient
Applicability:
ValidationFinal
version
DevelopmentIntermediate
versions
SpecificationInitial
version
Outlinedescription
Concurrentactivities
8/8/2019 Software Enggniring
7/13
When requirements are not well understood When the client and the developer agree on a rapid prototype that will be
thrown away
Good for small and medium-sized software systems3. COMPONENT-BASED
SOFTWARE ENGINEERINGu
MAIN CHARACTERISTICS:
Makes intensive use of existing reusable components The focus is on integrating the components rather than on creating them
from the scratch
ADVANTAGES:y Reduces considerably the software to be developed in-housey Allows faster deliveryy In principle, more reliable systems, due to using previously tested
components
DISADVANTAGES:y Compromises in requirements are neededy Less control over the systems evolution APPLICABILITY:y When there is a pool of existing components that could satisfy the
requirements of the new product
y Emerging trend: integration of web services from a range of suppliers
Requirementsspecification
Componentanalysis
Development
and integration
System design
with reuse
Requirementsmodification
Systemvalidation
8/8/2019 Software Enggniring
8/13
4. INCREMENTALDEVELOPMENTu
MAIN CHARACTERISTICS :
y Hybrid model that combines elements of the waterfall and evolutionaryparadigms
y The specification, design, and implementation phases are broken in smallerincrements
Advantages:y Provides better support for process iterationy Reduces rework in the software construction processy Some decisions on requirements may be delayedy Allows early delivery of parts of the systemy Supports easier integration of sub-systemsy Lower risk of project failurey Delivery priorities can be more easily setDISADVANTAGES:
y Increments need be relatively smally Mapping requirements to increments may not be easyy Common software facilities may be difficult to identify
Applicability:
Validateincrement
Develop systemincrement
Design systemarchitecture
Integrateincrement
Validatesystem
Define outlinerequirements
Assign requirementsto increments
System incomplete
Finalsystem
8/8/2019 Software Enggniring
9/13
y When it is possible to deliver the system part-by-partBOEHMS SPIRAL MODEL
Main characteristics:y Also a hybrid model that support process iterationy The process is represented as a spiral, each loop in the spiral representing a
process phase
y Four sectors per loop: objective setting, risk assessment and reduction,development and validation, planning
y Risk is explicitly taken into consideration
Advantages:y Risk reduction mechanisms are in placey Supports iteration and reflects real-world practicesy Systematic approach Disadvantages:y Requires expertise in risk evaluation and reduction
Risk
analysis
Risk
analysis
Risk
analysis
Riskanalysis Proto-
type 1
Prototype 2
Prototype 3Opera-
tionalprotoype
Concept of
Operation
Simulations, models, benchmarks
S/Wrequirements
Requirement
validation
DesignV&V
Productdesign Detailed
design
Code
Unit test
Integrationtest
AcceptancetestService Develop, verify
next-level product
Evaluate alternatives
identify, resolve risks
Determine objectivesalternatives and
constraints
Plan next phase
Integrationand test plan
Developmentplan
Requirements planLife-cycle plan
REVIEW
8/8/2019 Software Enggniring
10/13
y Complex, relatively difficult to follow strictlyy Applicable only to large systems Applicability:y Internal development of large systems
PROCESS ACTIVITIES1.SPECIFICATION
2.DESIGN& IMPLEMENTATION
3. TESTING..
The debugging process
The testing process
Feasibilitystudy
Requirementselicitation and
analysisRequirementsspecification
Requirementsvalidation
Feasibilityreport
Systemmodels
User and system
requirements
Requirementsdocument
hitecturaldesign
Abstractspecification
Interfacedesign
Componentdesign
Datastructuredesign
Algorithmdesign
ystemhitecture
Softwarespecification
Interfacespecification
Componentspecification
Datastructure
specification
Algorithmspecification
Requirementsspecification
Designactivities
Designproducts
Locate
error
Design
error repair
Repair
error
Re-test
program
8/8/2019 Software Enggniring
11/13
Testing phases
System evolution
THE RATIONAL UNIFIED PROCESSRUP PHASES
Assess existing
systems
Define system
requirements
Propose system
changes
Modify
systems
New
system
Existing
systems
8/8/2019 Software Enggniring
12/13
CLASSIFICATION OF CASE TECHNOLOGY
8/8/2019 Software Enggniring
13/13
Single-methodworkbenches
General-purposeworkbenches
Multi-methodworkbenches
Language-specificworkbenches
Programming TestingAnalysis and
design
Integratedenvironments
Process-centredenvironments
Filecomparators
CompilersEditors
EnvironmentsWorkbenchesTools
CASEtechnology