1.27k likes | 1.33k Vues
Introduction to Software Engineering. C.Arunkumar B.E.,M.Tech Assistant Professor(Sr.Gr) - CSE Vice Chair – Council of Wardens – Hostels, Amrita School of Engineering, Coimbatore. Agenda for the Day. What is Software Engineering? Why Software Engineering? How to do Software Engineering?
E N D
Introduction to Software Engineering C.Arunkumar B.E.,M.Tech Assistant Professor(Sr.Gr) - CSE Vice Chair – Council of Wardens – Hostels, Amrita School of Engineering, Coimbatore
Agenda for the Day • What is Software Engineering? • Why Software Engineering? • How to do Software Engineering? • Software Process Models • Software Testing
What is Software Engineering? Software Engineering = Software + Engineering • What is Software? Software = Soft + ware Any examples? • What is Engineering? Engineering = Engine-er-ing Any examples? Is this an Engineering discipline? If yes, why? If not, why not? Is this for an Engineer or a scientist?
What is Software Engineering? A historical definition: “The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines …”[Fritz Bauer, at the 1st NATO Conference on Software Engineering, 1969] IEEE definition: “Software engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software.”
Small groups arealso easy to manage! Single-person projects depend on the skill and disciplineof the developer!
Large projects - high cost, heavy resources, critical nature, distributeddevelopment, … - require a moredisciplined and controlledapproach
Software Characteristics • is developed or engineered, rarely manufactured • is custom-built; rarely assembled • is non-material, and therefore does not wear out • is too flexible • is too pliable(easy to bent/shape)
Symptom of Software Crisis • about US$250 billion spent per year in the US on application development • of this, about US$140 billion wasted due to the projects getting abandoned or reworked; this in turn because of not following best practices and standards Ref: Standish Group, 1996
Symptom of Software 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: 3 year study of 70 large c/s apps in 30 European firms. Compuware (12/95)
Why Software Engineering? 9 software projects totaling $96.7 million: Where The Money Went [Report to Congress, Comptroller General, 1979] Delivered, but never successfully used 45% Used as delivered 2% Paid for, but not delivered 30% Usable w. rework 3% • Why? • Software hurts • Requirements • design Used w. extensive rework, but later abandoned 20%
The CHAOS Ten 1. Executive Management Support 2. User Involvement 3. Experienced Project Manager 4. Clear Business Objectives 5. Minimized Scope 6. Standard Software Infrastructure 7. Firm Basic Requirements 8. Formal Methodology 9. Reliable Estimates 10. Other What Factors Contribute to Project Success? Standish Group, ‘01 (www.standishgroup.com) Project Success Factors 28% completed on time and on budget • overran original estimates: • Time overrun averaged 63% • - Cost overrun averaged 45% canceled before completion 49% 23%
What Factors Contribute to Project Failure? The CHAOS Ten The CHAOS Ten Standish Group, ‘01 (www.standishgroup.com) “The definition of insanity is doing the same thing over and over again and expecting a different result.” [Albert Einstein]
Factors – Success/Failure • Appropriate senior management levels of commitment to the project • Adequate project funding • A well-done set of project requirements and specifications • Careful development of a comprehensive project plan that incorporates sufficient time and flexibility to anticipate and deal with unforeseen difficulties as they arise • An appropriate commitment of time and attention on the part of those outside the IT department who have requested the project, combined with a willingness to see it through to the end • Candid, accurate reporting of the status of the project and of potential difficulties as they arise • A critical assessment of the risks inherent in the project, any potential harm associated with those risks, and the ability of the project team to manage those risks • The development of appropriate contingency plans that can be employed should the project run into problems • An objective assessment of the ability and willingness of the organization to stay the project course
But the proof of the pudding is in the eating; not in the Recipe ! Software Myths (Management Perspectives) As long as there are good standards and clear procedures in my company, I shouldn’t be too concerned.
The environment is only one of the several factors that determine the quality of the end software product! Software Myths (Management Perspectives) As long as my software engineers(!) have access to the fastest and the most sophisticated computer environments and state-of-the-art software tools, I shouldn’t be too concerned.
Unfortunately, software business does not entertain schedule compaction beyond a limit! Software Myths (Management Perspectives) When my schedule slips, what I have to do is to start a fire-fighting operation: add more software specialists, those with higher skills and longer experience - they will bring the schedule back on the rails!
Software Myths(Customer Perspectives) • A general statement of objectives is sufficient to get started with the development of software. Missing/vague requirements can easily be incorporated/detailed out as they get concretized. • Application requirements can never be stable; software can be and has to be made flexible enough to allow changes to be incorporated as they happen.
Usually, the problems just begin! Software Myths(Developer Perspectives) Once the software is demonstrated, the job is done.
Usually, there are too many tiny bugs inserted at every stage that grow in size and complexity as they progress thru further stages! Software Myths(Developer Perspectives) Until the software is coded and is available for testing, there is no way for assessing its quality.
The code is only the externally visible component of the entire software complement! Software Myths(Developer Perspectives) The only deliverable for a software development project is the tested code.
Software Product is a product designated for delivery to the user documents sourcecodes reports manuals plans objectcodes data test results test suites prototypes
Boehm’s Top TenIndustrial Software Metrics Finding and fixing a software problem after delivery of the product is 100 times more expensive than defect removal during requirements and early design phases. 1
Effort to Repair Software(when defects are detected at different stages)
Cumulative Effects of Error the real problem requirements correct incorrect hidden missing
Cumulative Effects of Error requirements correct incorrect hidden missing design correct incorrect incorrect incorrect hidden missing
Cumulative Effects of Error design correct incorrect hidden missing code correct incorrect incorrect hidden missing
Boehm’s Top TenIndustrial Software Metrics Nominal software development schedules can be compressed up to 25% (by adding people, money, etc.) but no more. 2
Boehm’s Top TenIndustrial Software Metrics Maintenance costs twice what the development costs. 3
Boehm’s Top TenIndustrial Software Metrics Development and maintenance costs are primarily a function of the size. 4
Boehm’s Top TenIndustrial Software Metrics Variations in humans account for the greatest variations in productivity. 5
Boehm’s Top TenIndustrial Software Metrics The ratio of software to hardware costs has gone from 15:85 in 1985 and continues to grow in favour of software as the dominant cost. 6
Boehm’s Top TenIndustrial Software Metrics Only about 15% of the development effort is in coding. 7
Distribution of EffortAcross Phases Testing Coding Design Analysis
Boehm’s Top TenIndustrial Software Metrics Applications products cost three times as much per instruction as individual programs; system software products cost nine times as much. 8
Boehm’s Top TenIndustrial Software Metrics Walkthroughs catch 60% of the errors. 9
Boehm’s Top TenIndustrial Software Metrics Many software processes obey a Pareto distribution. 10 20%modules 80%cost
Boehm’s Top TenIndustrial Software Metrics Many software processes obey a Pareto distribution. 10 20%modules 80%errors
Boehm’s Top TenIndustrial Software Metrics Many software processes obey a Pareto distribution. 10 80%cost to fix 20%modules
Boehm’s Top TenIndustrial Software Metrics Many software processes obey a Pareto distribution. 10 20%modules 80%exec time
Boehm’s Top TenIndustrial Software Metrics Many software processes obey a Pareto distribution. 10 20%tools 80%use
Software process model • Process models prescribe a distinct set of activities, actions, tasks, milestones, and work products required to engineer high quality software. • Process models are not perfect, but provide roadmap for software engineering work. • Software models provide stability, control, and organization to a process that if not managed can easily get out of control • Software process models are adapted to meet the needs of software engineers and managers for a specific project.
Build and Fix Model The earlier approach • Product is constructed without specification or any attempt at design. • Developers simply build a product that is reworked as many times as necessary to satisfy the client. • Model may work for small projects but is totally unsatisfactory for products of any reasonable size. • Maintenance is high. • Source of difficulties and deficiencies • impossible to predict • impossible to manage
Why Models are needed? • Symptoms of inadequacy: the software crisis • Scheduled time and cost exceeded • User expectations not met • Poor quality
Process as a "black box" Quality? Uncertain / Incomplete requirement In the beginning
Problems • The assumption is that requirements can be fully understood prior to development • Interaction with the customer occurs only at the beginning (requirements) and end (after delivery) • Unfortunately the assumption almost never holds