150 likes | 304 Views
Software processes. A software process is a set of activities that leads to the production of a software product . There is no ideal process , and many organisations have developed their own approach to software development . Some fundamental activities are common :
E N D
Software processes A software process is a set of activitiesthatleads to the production of a software product. There is no ideal process, and many organisations have developedtheirown approach to software development. Some fundamental activitiesarecommon: Software specification (functionallity) Software design and implementation Software validation (the software must bevalidated to ensure, that it doeswhat the customerswants) Software evolution. The software must evolve to meetchanging in customerneeds)
Software process model Frameworks of the process • The waterfall model • Evolutionary model • Component-based software engineering
The waterfall model(the software lifecycle) • The firstpublished model –consist of • Requirementsanalysis and definition • System and software design • Implementation and unit testing • Integration and system testing • Operation and maintenace
Advantages: gooddocumentation and fit with otherengineeringprocess models. Disadvantages: dissicult to respond to changing in customerrequirements. In principle the result of eachphase is one or more documentsthatareapproved. The followingphaseshould not start until the previousphase has finished. Onlyuse the model when the requirementsarewellunderstoos and unlike to changeduring system development.
Evolutionarydevelopment Evolutionarydevelopment is based on the idea of developing an initial implementation, exposingthis to usercomment and refining it throughmany versions until a adequate has beendevelopment 1) Exploratydevelopmentwhere the objective of the process is to work with the customer to exploretheirrequirements and deliver a final system.
2) Throwawayprototypingwhere the objective of the evolutionarydevelopmentprocess is to understand the customersrequirements and hencedevelop a betterrequirement definition for the system. The evolutionary approach is best for small and medium-sized systems.
Component-based software engineering • Relies on reuse.
Processiteration Twoprocess models that have beenexplicitlydesigned to support processiteration • Incrementaldelivery • Spiral development
Incrementaldelivery • Customers identify the services to beprovided by the system. Theyidentifywhich of the services are most important and whichareleastimportant to them. • Once an increment is completed and deliveredcustomerscan put it into service.
Advantages: • Customers do not have to waituntil the entire system is deliveredbeforetheycangainvalue from it. • Useearlyincrements as prototypes for laterincrements. • Lowerrisk of overall projectfailure. • Higestdeliveryimplementedfirst.
Disadvantages: Difficult to map the customersrequire-mentsontoincrements of the right size. Hard to identifycommonfacilitiesthatareneeded by all increments – xp is an answer.
Spiral development The process is represented as a spiral. Each loop in the spiral represent a phase of the software process. Each loop in the spiral is split intofoursectors: • Objectivesetting - a detailed management plan is drawn up. - projectriskareidentified - alternative strategiesdepending on theserisk, maybeplanned.
Riskassignment and reduction. For each of the identifiedprojectrisks, a detailedanalysis is carried out • Development and validation Chose a development model for the system • Planning The project is reviewed and a decision made whether to continue with a further loop of the spiral-
RUP (Rational unifiedProcess A hybrid process model. It bringstogether elements from all of the genericprocess models. RUP is normallydescribed from threeperspectives. • A dynamicperspectivethat shows the phases of the model over time. • A staticperspectivethat shows the processactivitiesthatareenacted. (focus on activitiesthattakeplaceduring the developmentprocess). • A practiceperspectivethat suggests goodpractices to beusedduring the process
6 fundamental bestpractices • Develop software iteratively – deliver the higtestpriority system features early in the developmentprocess. • Managerequirements (document the customersrequirements and keeptrack of changes to theserequirements). • Use component-basedarchitectures. • Visually model software: Usegraphical UML models to present static and dynamicviews of the software. • Verify software quality • Control changesto software