Software Development: Tools and Processes Lecture -2: Basic concepts 1
The Software Engineering Crisis • Nearly 1/3 of information technology (computer and software) projects were cancelled before completion • Average overrun of project budgets was 189% • The average schedule overrun for projects that were in difficulty was 222% • On average, the delivered product contained only 61% of the originally -specified features. • Only 16% (1of 6) software projects were completed on time, on budget “Charting the Seas of Technology: The CHAOS Study” The Standish Group, January 1995 - CrossTalk, October 1997 2 SEPO-CG p 3 Software Engineering Process Office
Percent Rework on Projects At TRW 30% (Boehm, 1987) At NASA Software Engr. Lab 40% (McGarry, 1987) At Hewlett-Packard 33% (Duncker, 1992) At Raytheon 41% (Dion, 1993) From SEI study: • Rework is 40% - 50% of project costs • High-maturity organizations can get rework to <10% (Paulk, 1999) 3 8/17/99 p 13 Software Engineering Process Office
Software project statistics • A (US) Government Study Of nine federal software projects with a total cost of $6.8M • - $3.2M worth were delivered but not used - $2M worth were paid for but not delivered - $1.3M worth were abandoned or reworked - $0.2M worth were used after substantial modification - $0.1M was used as delivered (one project) 4
To avoid such disasters we should gain expertise in SE 5
Basic Concepts: Acquiring Expertise • How can one acquire expertise? – Concept of information chunking – by George A. Miller – All information should be presented in small digestible units – the limit is 7 + 2 – One can become expert after acquiring 50,000 chunks of information – This usually takes 10 years – Which information chunks should be acquired? – To become software engineering expert - SWEBOK 6
What do we understand by Body of Knowledge? Stable core of BOK? Stable core of BOK? 7
8 SWEBOK: Categories of Knowledge
9 SWEBOK: Sources of Knowledge
Basic Concepts: Software Engineering BOK There are 10 areas of Swebok – Software requirement engineering – Software design – Software construction – Software Testing – Software Evolution and Maintenance – Software Configuration Management – Software Quality Engineering – Software Engineering Management – Software Engineering Infrastructure – Software engineering process 10
Software requirement engineering • Method of requirement gathering • Requirement gathering = elicitation • Documentation of requirements • Analysis of the gathered requirements • Managing the change in requirements 11
Software design • System hi level design – architectural design • System detailed design – Sub division into modules – Definition of interfaces for modules – Algorithms within modules 12
Software construction • Implementation of software – coding • Unit testing by the developers • Performance optimization • Over-lapping areas with design and testing 13
Software Testing • Black box and white box testing • Execution of software for finding defects • It includes all artifacts related to testing – Test plans – Test cases – Unit tests – Integration tests – Stress tests 14
Software Evolution and Maintenance • Carrying out changes in the software after deployment • This is necessary to keep the software running under dynamic business environment • Related documentation and artifacts should be reviewed and updated 15
Software Configuration Management • Identification of the items to be managed through configuration management • Deals with the version control • Deals with the change control 16
Software Quality Engineering • Coordinate activities for developing the software which satisfies the required quality criteria • It includes activities like – Quality planning – Quality measurement – Testing – Reviews 17
Software Engineering Infrastructure • This includes the support of tools – CASE tools – PM tools – SCM tools – QA tools • Methodologies – Formal methods – Code reuse libraries – Practices for disseminating tools and methods 18
Software engineering process • Activities related to improvement of software development quality • Improvement of productivity • Improvement of project management techniques 19
Software engineering code of ethics • Code of ethics is defined by IEEE & ACM • This includes – Public interest – Client and employer – Product standards – Professional judgment – Reputation of profession – Fairness to colleagues – Life long learning of profession 20
Benefits of Code of Ethics • Helps avoid death march projects • Helps avoid Low-ball bidding • Helps avoid code and fix development • Helps avoid knowledge stagnation 21
Three Ps of Software Engineering • Processes – create discipline in development – build on past experience • People – Get the best out of people. How? • Product – Specs and testing – feature creep 22
What is the most difficult task in software engineering ? 23
What is the most important capability of a project manager ? 24
Small Oral Quiz • What is the difference between Skill and knowledge • What do we understand by knowledge management? 25
Professional Growth Model Mastery Competency Skills Knowledge 26
Recommend
More recommend