session 1 - software development process

46
 Software Software Development Development Process Process Prepared by Malliga Ramalingam

Upload: suresh1130

Post on 30-May-2018

225 views

Category:

Documents


0 download

TRANSCRIPT

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 1/46

SoftwareSoftwareDevelopmentDevelopment

ProcessProcess

Prepared byMalliga Ramalingam

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 2/46

[email protected]

Session Objectives

Introduction to SDPUnderstanding Quality

Understanding ProcessUnderstanding Life Cycle ModelsChoosing a Process

Conclusion

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 3/46

[email protected]

Programming in Small

Individual Effort

Not rigorously tested

Used by the developer only

Circus in programming Language

Intellectual Exercise

No Documentation

Developer Maintenance

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 4/46

[email protected]

1.Team Effort2.Use of methodology3.Documentation4.Schedule/Cost Control5.Quality Assurance6.Used by lay User7.Planning8.Reuse

Programming in Large

9.Use of Software Tools10.Conformance to

standards11. Very Likely to becommercial12. Non-Developer

maintenance13.ChangeManagement14.Version Control

15.Subject To Risk

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 5/46

[email protected]

Programming:Small Vs Large

1)Writing a program 2)Creatingan airline

that sorts a list of ticketreservationstrings an application system, a

browserthat stores the names likeInternet

of friends and their Explorer.

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 6/46

[email protected]

The Myths And Facts

MYTH: There are “10 steps toSuccessful software development”FACT: Software development is aboutprojects

MYTH: Software development is about

technologyFACT: Software development is about

Technology. It is also about people,methodology and process.

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 7/46

[email protected]

The Myths And Facts

MYTH: Software Development is aboutwriting code.FACT: Writing code is the part of software development -perhaps theeasiest part to do

MYTH: Most software projects aresuccessful.FACT: “…32% of projects terminatebefore delivery and only 11% arecompleted on budget. Of the remaining

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 8/46

[email protected]

2004 Third Quarter ResearchReport

This year results show that 295 of allprojects succeeded (delivered on time,on budget, with required features and

functions); 53% are challenged (late,over budget and/or with less than therequired features and functions); and18% have failed (cancelled prior tocompletion or delivered and neverused).

Courtesy: The Standish Group

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 9/46

[email protected]

Common dangerous Attitudes

Documenting and reviewing arewaste of time.

The customer should accept whatwe deliver.Standards constrain and limit

creativityI/we should build everythingIn any case, we have disclaimers

rather than guaranties/warranties

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 10/46

[email protected]

What is a successful softwareproject?

A project that meets or exceedscustomer expectations in terms of features, quality, cost andschedule.

And adds value, monetary orother, to the developmentcompany.

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 11/46

[email protected]

What is EngineeringApproach?

Disciplined Problem SolvingAnalysis of a problem.

Product SpecificationSub-assemblies.Prototypes.

Reuse.

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 12/46

[email protected]

Software Engineering

Term Coined in 1967 andendorsed by NATO conference in1968

Relatively young in comparison to

other engineering disciplines.

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 13/46

[email protected]

SoftwareEngineering:Definition

“ A Systematic Approach to theDevelopment, Operation, Maintenanceand Retirement of Software,

Where Software is ComputerPrograms, Procedures, Rules and

Associated Documents and datapertaining to the Operation of aComputer System.”

- IEEE

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 14/46

[email protected]

Similarity in software andhardware

PhasesMethodology

ActivitiesStandards

Tools

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 15/46

[email protected]

Uniqueness of Software

Not “manufactured” in the classicalsense.Similarities exist between software and

hardware manufacture but…- The relationship between people

applied andwork accomplished is different.

- The manufacturing phase forhardware can

introduce quality problems that are

nonexistent in software production.-

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 16/46

[email protected]

Uniqueness of Software

Usually “custom- built”. The difference between generic

and bespoke software.Does not “wear-out”.Absence of physical laws

governing the behavior of software.It is invisible.

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 17/46

[email protected]

Aspects of Software projects

Team effort : Any large developmenteffort requires the services of a team of specialists.Methodology : two types of methodologies, ' procedure orientedmethodolgies ' and ' object orientedmethodologies '.Documentation : Clear andunambiguous documentation of the

artifacts of the development process arecritical for the success of the softwareproject.Planning : development takes placeagainst a client's requirements so thewhole effort is to be well planned to

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 18/46

[email protected]

Aspects of Software projects

Lay user : Most of the time, thesesoftware packages will be used by non-computer savvy users. Hence the

software has to be highly robust.Software tools : Documentation isimportant for the success of a softwareproject. There are tools known as

Computer Aided Software Engineering(CASE) tools which simplify the processof documentation.Conformance to standards : We

need to follow certain standards toensure clear and unambi uous

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 19/46

[email protected]

Aspects of Software projects

Non-developer maintenance : Software lives for a long time. Thedevelopment team, may not.Change management : Whenever achange has to be made, it is necessaryto analyse its impact on various partsof the software.Version control : Once changes are

made to the software, the user shouldget the right copy of the software.Failures should roll back to theprevious versions.Subject to risks : Any large effort issubject to risks. Eg: skills, technology,

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 20/46

[email protected]

Session Objectives

Introduction to SDPUnderstanding Quality

Understanding ProcessUnderstanding Life Cycle ModelsChoosing a Process

Conclusion

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 21/46

[email protected]

Software Quality

Goal of any software developmentprocess is to produce high qualitysoftware.Software quality has beenvariously defined as:

Fitness for purposeZero defectsConformability & dependability

The ability of the software to meetcustomer's stated and implied needs

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 22/46

[email protected]

Software Attributes for QualityMeasurement

Important attributes used tomeasure software quality are:

Correctness Software should meet the

customer's needsRobustness Software must alwaysbehave in an expected manner, evenwhen unexpected inputs are given

Usability Ease of use. A software witha graphical user interface isconsidered more user-friendly thanone without it

Portability The ease with which

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 23/46

[email protected]

Software Attributes for QualityMeasurement

Efficiency Optimal resource(memory & execution time)utilizationMaintainability Ease with whichsoftware can be modifiedReliability The probability of thesoftware giving consistentresults over a period of timeFlexibility Ease with whichsoftware can be adapted for use

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 24/46

[email protected]

Software Attributes for QualityMeasurement

Security Prevention of unauthorised accessInteroperabilty The ability of thesoftware to integrate withexisting systemsPerformance The ability of thesoftware to deliver the outputswith in the given constraints liketime, accuracy, memory usage

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 25/46

[email protected]

Attributes & Realization

Correctness is the most importantattribute.

The other attributes may be

present in varying degrees.Eg: it is an expensive proposition tomake a software 100% reliable and itis not required in all contexts.

Some of the attributes conflictwith each other.Eg: portability and efficiency couldconflict with each other.

In practice there will always be a

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 26/46

[email protected]

Session Objectives

Introduction to SDPUnderstanding Quality

Understanding ProcessUnderstanding Life Cycle ModelsChoosing a Process

Conclusion

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 27/46

[email protected]

What is a Process?

A Process is a series of definable,repeatable, and measurable tasksleading to a useful result. The benefitsof a well defined process are numerous.

It provides visibility into a project. Visibilityin turn aids timely mid-course correctionsIt helps developers to weed out faults at thepoint of introduction. This avoids cascadingof faults into later phasesIt helps to organize workflow and outputs tomaximize resource utilizationIt defines everybody's roles and

responsibilities clearly.

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 28/46

[email protected]

SDP - Phases

The generic phases that are normally used ina software development process are:

Analysis : user needs are gathered and convertedinto software requirements. - should answer the

question: what is to be done to meet user needs?Design : answers the question: How to meet theuser needs? - In this phase we determineorganisation of various modules in the softwaresystemConstruction : Coding is the main activity in thisphaseTesting : There are three categories of testing: unittesting, integration testing, and system testing.

There are two types of testing: Black box testingand White box testing. Black box testing focuses on

generating test cases based on requirements.White box testing focuses on generating test cases

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 29/46

[email protected]

Session Objectives

Introduction to SDPUnderstanding Quality

Understanding ProcessUnderstanding Life Cycle ModelsChoosing a Process

Conclusion

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 30/46

[email protected]

Waterfall model

Sequential model, alsoknown as water fall model:Analysis

Design

Development

Testing

Implementation

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 31/46

[email protected]

Waterfall Model

sequence of steps (phases).requires a phase is completebefore the next phase is started.helps in contract finalisation withreference to delivery and paymentschedules.

Is difficult to use this model as itis, because of the uncertainity inthe software requirements.

all the requirements a priori is

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 32/46

[email protected]

Prototyping

Prototyping - working version of thesoftware is built early in the project life.

Throw away prototypeEvolutionary prototype Throw away prototyping model

understand the requirements and solution

methodologies better.essence is speed.ad-hoc and quick development approachwith no thought to qualityonce the objective is met, the code isdiscarded and fresh development is

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 33/46

[email protected]

Prototyping

Evolutionary prototyping modelrequirements are prioritisedcode is developed for the most importantrequirements first, with an eye on quality.Software is continuously refined andexpanded with feedback from the client.advantage of prototyping is that the clientgets a feel of the product early in theproject life cycle.

As can be seen, evolutionaryprototyping is an iterative model. Sucha model can be characterised by doinga little analysis, design, code, test and

repeat the process till the product iscomplete.

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 34/46

[email protected]

Spiral ModelSpiral model - Another iteartivemodel

Is like a framework, adapted tospecific projects.

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 35/46

[email protected]

Spiral Model

best mix of other approachesfocusses on eliminating errors and

unattractive alternatives early.Important feature of this model isstress on risk analysis.

This model is best suited forprojects, which involve newtechnology development. Riskanalysis expertise is most criticalfor such ro ects.

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 36/46

[email protected]

ETVX model

Introduced by IBM during the 80's todocument their processes.

'E' stands for the entry criteria – to be satisfied fortasks to be performed

'T' is the set of tasks to be performed'V' stands for the verification & validation process toensure that the right tasks are performed'X' stands for the exit criteria or the outputs of thetasks. If an activity fails in the validation check,either corrective action is taken or a rework isordered.

It can be used in any development process.Each phase in the process can be consideredas an activity and structured using the ETVX

model.If re uired the tasks can be further

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 37/46

[email protected]

ETVX Model

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 38/46

[email protected]

Rational Unified Process Model

Rational Unified Process (RUP)developed by RationalCorporation.It is an iterative model andcaptures many of the bestpractices of modern softwaredevelopment.RUP is explained more fully in themodule OOAD with UML.

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 39/46

[email protected]

Agile Methodologies

All other methodologies premiseSDP should be predictable and repeatable.Emphasis on following procedures and preparingdocumentation.Considered to be heavyweight or rigorous.Criticised for excessive emphasis on structure.

Agile Software Movement, questioning thispremise.

variations in processes and inputsthe model should be flexible enough to handle thevariations.

Agile methodolgies advocate the principle "build short, build often".

project is broken up in to subprojectseach subproject is developed and integrated in tothe already delivered system.customer gets continuous delivery of useful and

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 40/46

[email protected]

Agile methodologies

The more popular agilemethodologies are

SCRUMDYNAMIC SYSTEMSDEVELOPMENT METHOD (DSDM)CRYSTAL METHODSFEATURE-DRIVENDEVELOPMENT(FDD)LEAN DEVELOPMENT (LD)EXTREME PROGRAMMING (XP)

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 41/46

[email protected]

Agile MethodologiesSCRUM:

is a project management framework.divides the development in to short cycles calledsprint cycles in which a specified set of features aredelivered.advocates daily team meetings for coordination andintegration.

DYNAMIC SYSTEMS DEVELOPMENTMETHOD (DSDM): It is characterised by nineprinciples:

Active user involvement Team empowerment

Frequent delivery of productsFitness for business purposeIterative and incremental developmentAll changes during development are reversibleBaselining of requirements at a high level

Integrated testingCollaboration and cooperation between stakeholders

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 42/46

[email protected]

Agile Methodologies

CRYSTAL METHODOLOGIES: They are a set of configurablemethodologies. They focus on the people aspects of development. The configuration is carried out based onproject size, criticality and objectives. Some of the namesused for the methodologies are Clear, Yellow, Orange,Orange web, , Red , etc.

FEATURE DRIVEN DEVELOPMENT (FDD): It is a shortiteration framework for software development. It focuses onbuilding an object model, build feature list, plan by feature,design by feature, and build by feature.LEAN DEVELOPMENT (LD): This methodology is derivedfrom the principles of lean production, the restructuring of the Japanese automobile manufacturing industry that

occurred in the 1980s. It is based on the following principlesof lean thinking: Eliminate waste, Amplify learning, Decide aslate as possible, Deliver as fast as possible, Empower theteam, Build the integrity in, See the whole.EXTREME PROGRAMMING (XP): This methodology isprobably the most popular among the agile methodologies. Itis based on three important principles, viz., test first,continuous refactoring, and pair programming.

One of the important concepts popularised by XP is pair

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 43/46

[email protected]

Session Objectives

Introduction to SDPUnderstanding Quality

Understanding ProcessUnderstanding Life Cycle ModelsChoosing a Process

Conclusion

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 44/46

[email protected]

How to choose a processBest way to attack this is to look at the

software requirements.If they are stable and well understood, thenwaterfall model may be sufficient.If they are stable, but not clear, then throw awayprototyping can be used.

Where the requirements are changing, evolutionaryprototyping is better.If the requirements are coupled with the underlyingbusiness processes, which are going through aprocess of change, then a model based on Boehm'sspiral model, like the Rational Unified Processshould be used.In these days of dynamic business environment,where 'time to market' is critical, and project size isrelatively small, an agile process should be chosen.

These are guidelines only.Many organisations choose a model and

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 45/46

[email protected]

Session Objectives

Introduction to SDPUnderstanding Quality

Understanding ProcessUnderstanding Life Cycle ModelsChoosing a Process

Conclusion

8/14/2019 Session 1 - Software Development Process

http://slidepdf.com/reader/full/session-1-software-development-process 46/46

ramsuri@gmail com

Conclusions

The most important take awayfrom this session is that softwaredevelopment should follow adiscplined process.

The choice of the process shoulddepend upon the stabilty of therequirements, completeness of requirements, underlying businessprocesses, organisational