Upload
purvik-rana
View
215
Download
1
Embed Size (px)
Citation preview
Symptom of software crisis About
• US $250 billions spent per year in the US on application development
Out of this,
• About US $140 billions wasted due to the Projects getting abandoned or reworked.
• This in turn because of not following best practices and standards.
Ref: Standish Group
More Statistics – about crisis 10% of client/server apps are abandoned or restarted from scratch
20% of apps are significantly altered to avoid disaster
40% of apps are delivered significantly late
Source (Compuware) : 3 year study of 70 large c/s apps 30 European firms.
Why? Misconception in software development
• False assumptions
• Not distinguishing the coding of a computer program from the development of a software product
Programs Software Product
Usually small in size Large
Author himself is a sole user Large number of Users
Single Developer Team of Developers
Lacks proper User interface Well-designed UI
Lacks proper Documentation Well-documented & User-manual prepared
Ad Hoc development Systematic Development
Software Programming ≠ Software Engineering Software programming • The process of translating a problem from its physical environment into
a language that a computer can understand and obey. o Single developer
o “Toy” applications
o Short lifespan
o Single or few stakeholders • Architect = Developer = Manager = Tester = Customer = User
o One-of-a-kind systems
o Built from scratch
o Minimal maintenance
Software Programming ≠ Software Engineering Software engineering • Teams of developers with multiple roles
• Complex systems
• Indefinite lifespan
• Numerous stakeholders
o Architect ≠ Developer ≠ Manager ≠ Tester ≠ Customer ≠ User
• Reuse to amortize costs
• Maintenance accounts for over 60% of overall development Costs
What is software engineering? The application of a systematic, disciplined, quantifiable approach to development,
operation, and maintenance of software that is, the application of engineering to software. (IEEE Standard Computer Dictionary, 610.12, ISBN 1-55937-079-3, 1990)
Multi-person construction of multi-version software. (Parnas, 1987)
A discipline that deals with the building of software systems which are so large that they are built by a team or teams of engineers. (Ghezzi, Jazayeri, Mandrioli)
SDLC A software life cycle is the series of identifiable stages that a software product
undergoes during its lifetime.
The first stage is called Scope.
The subsequent stages are: Requirement mgmt: Analysis and Specification, Design, Coding, Testing & Maintenance.
Each of these stages is called a Life Cycle Phase.
1. Project Start-up - Concept, Proposal, Scope.
2. Requirements and Analysis.
3. High level Design.
4. Low level Design.
5. Construction - Unit test, Code inspection.
6. Integration and System tests.
7. Replication, delivery, installation.
8. Acceptance Testing (Requirements mapped).
9. Training, Documentation.
10. Project windup - Checklist, Report, Lessons
learnt.
11. Maintenance (may involve all the above).
SDLC Phases - Detailed
benefits Increasing Quality
• Achieve conformance to requirements
• Reduce the number of software defects
• Mitigate risks associated with the software
Reducing Project Cost and Schedule
• Provides a framework for systematic, incremental software process improvements
• Reduces the cost and schedule of the testing, installation, and maintenance phases
Improving Manageability
• Enhanced accuracy of project planning
• Detailed means of tracking projects
• Early measures of software quality
• Improved repeatability of success stories
SOFTWARE PROFESSIONALS LACK
ENGINEERING TRAINING • Programmers have skills for programming but without the engineering mind-set about
a process discipline
• Internal complexities
That is what all in Software Engineering Introduction.