The Nature of Software... • Software is intangible What is Software • Hard to understand development effort Engineering? • Software is easy to reproduce • Cost is in its development Mark van den Brand Mark van den Brand − − in other engineering products, manufacturing is the in other engineering products, manufacturing is the costly stage • The industry is labor-intensive • Hard to automate / Faculteit Wiskunde en Informatica 2-2-2009 PAGE 1 The Nature of Software ... The Nature of Software • Untrained people can hack something together • Conclusions • Quality problems are hard to notice • Much software has poor design and is getting worse • Demand for software is high and rising • Software is easy to modify • We are in a continuous ‘software crisis’ • People make changes without fully understanding it • • We have to learn to ‘engineer’ software We have to learn to ‘engineer’ software • • Software does not ‘wear out’ Software does not ‘wear out’ • It deteriorates by having its design changed: − erroneously, or − in ways that were not anticipated, thus making it complex / Faculteit Wiskunde en Informatica 2-2-2009 PAGE 2 / Faculteit Wiskunde en Informatica 2-2-2009 PAGE 3
Types of Software... Software Engineering definitions • Software engineering is the establishment and use of sound • Custom engineering principles in order to obtain economically software • For a specific customer that is reliable and works efficiently on real machines • Generic • Other definitions: • Sold on the open market • IEEE: the application of a systematic, disciplined, quantifiable approach to − − COTS (Commercial Off The Shelf) COTS (Commercial Off The Shelf) the development, operation, maintenance of software; that is, the application the development, operation, maintenance of software; that is, the application of engineering to software − Shrink-wrapped: games, Office, Virusscanner, etc. • The Canadian Standards Association: The systematic activities involved in the design, implementation and testing of software to optimize its • Embedded production and support • Built into hardware • The process of solving customers’ problems by the systematic development and evolution of large, high-quality software systems within cost, time and • Hard to change other constraints / Faculteit Wiskunde en Informatica / Faculteit Wiskunde en Informatica 2-2-2009 PAGE 4 2-2-2009 PAGE 5 What is Software Engineering What is Software Engineering • Software engineering concerns the development of large • Solving customers’ problems programs • This is the goal of software engineering • Moving from programming-in-the-small to programming-in- • Sometimes the solution is to buy, not build the-large • Adding unnecessary features does not help solve the • Mastering complexity problem problem • Evolution • Evolution • Software engineers must communicate effectively to • Efficiency of software development identify and understand the problem • Cooperation between people is an integrated part of programming-in-the-large • Software has to supports its users effectively • … / Faculteit Wiskunde en Informatica 2-2-2009 PAGE 6 / Faculteit Wiskunde en Informatica 2-2-2009 PAGE 7
What is Software Engineering What is Software Engineering • Systematic development and evolution • Large, high quality software systems • An engineering process involves applying well • Software engineering techniques are needed because understood techniques in a organized and disciplined large systems cannot be completely understood by way one person • Many well-accepted practices have been formally Many well-accepted practices have been formally • Teamwork and co-ordination are required Teamwork and co-ordination are required standardized • Key challenge: Dividing up the work and ensuring that − e.g. by the IEEE or ISO the parts of the system work properly together • Most development work is evolution • The end-product must be of sufficient quality / Faculteit Wiskunde en Informatica / Faculteit Wiskunde en Informatica 2-2-2009 PAGE 8 2-2-2009 PAGE 9 What is Software Engineering Stakeholders in Software Engineering • Cost, time and other constraints 1. Users • Finite resources • Those who use the software • The benefit must outweigh the cost 2. Customers • Others are competing to do the job cheaper and faster • Those who pay for the software • • Inaccurate estimates of cost and time have caused Inaccurate estimates of cost and time have caused 3. Software developers 3. Software developers many project failures 4. Development Managers / Faculteit Wiskunde en Informatica 2-2-2009 PAGE 10 / Faculteit Wiskunde en Informatica 2-2-2009 PAGE 11
Software Quality... Software Quality and the Stakeholders Customer: User: • Usability solves problems at easy to learn; • Users can learn it and fast and get their job done easily an acceptable cost in efficient to use; • Efficiency terms of money paid and helps get work done resources used • It doesn’t waste resources such as CPU time and memory • Reliability • It does what it is required to do without failing It does what it is required to do without failing QUALITY QUALITY • Maintainability SOFTWARE • It can be easily changed Development manager: • Reusability Developer: sells more and easy to design; • Its parts can be used in other projects, so reprogramming is pleases customers not needed easy to maintain; while costing less easy to reuse its parts to develop and maintain / Faculteit Wiskunde en Informatica / Faculteit Wiskunde en Informatica 2-2-2009 PAGE 12 2-2-2009 PAGE 13 Software Quality: Conflicts and Objectives • The different qualities can conflict • Increasing efficiency can reduce maintainability or reusability • Increasing usability can reduce efficiency • Setting objectives for quality is a key engineering Setting objectives for quality is a key engineering activity • You then design to meet the objectives • Avoids ‘over-engineering’ which wastes money • Optimizing is also sometimes necessary • E.g. obtain the highest possible reliability using a fixed budget / Faculteit Wiskunde en Informatica 2-2-2009 PAGE 14
Recommend
More recommend