the nature of software
play

The Nature of Software... Software is intangible What is Software - PowerPoint PPT Presentation

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


  1. 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

  2. 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

  3. 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

  4. 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