Practical issues • Docent: Software engineering (2IP25) Software engineering (2IP25) • Prof.dr. Mark van den Brand (m.g.j.v.d.brand@tue.nl), HG5.59 P f d M k d B d ( j d b d@t l) HG5 59 • Meer informatie over SE (2IP25): • • http://www win tue nl/~mvdbrand/courses/se/0910/ http://www.win.tue.nl/~mvdbrand/courses/se/0910/ − slides Prof.dr. Mark van den Brand − opdrachten − achtergrond artikelen g • boek (verplicht): − Software Engineering van Hans van Vliet, 3 de editie, Wiley / Faculteit Wiskunde en Informatica 3-2-2010 PAGE 1 Practical issues Why Software Engineering in general? • The nature of software … • Examen: • Software is everywhere • Schriftelijk examen (70%) − dependable − Materiaal: − robust − slides lid • Software is intangible − artikelen − hard to understand development effort • Software is easy to reproduce − boek boe − cost is in its development • Praktische opgave: analyseren van URD (30%) − in other engineering products, manufacturing is the costly stage • The industry is labor-intensive − hard to automate / Faculteit Wiskunde en Informatica 3-2-2010 PAGE 2 / Faculteit Wiskunde en Informatica 3-2-2010 PAGE 3
Why Software Engineering? Why Software Engineering? • 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 • Software is easy to modify − Demand for software is high and rising S ft i t dif D d f ft i hi h d i i − people make changes without fully understanding it − We are in an ever lasting ‘software crisis’ • Software does not ‘wear out’ − We have to learn to ‘engineer’ software So t a e does ot ea out e a e to ea to e g ee so t a e − it deteriorates by having its design changed: − erroneously, or − in ways that were not anticipated, thus making it complex / Faculteit Wiskunde en Informatica / Faculteit Wiskunde en Informatica 3-2-2010 PAGE 4 3-2-2010 PAGE 5 Why Software Engineering? Why Software Engineering? • Types of software … • Within 30 years the amount of software in cars went y y from 0 lines of code to more than 10,000,000 lines of • Custom code − For a specific customer • More than 2000 functions are controlled by software • More than 2000 functions are controlled by software • Generic G i in high-end cars − Sold on open market • 50/70% of the development costs of hard/software p − Often called O te ca ed are software costs − COTS (Commercial Off The Shelf) − Shrink-wrapped • Embedded − Built into hardware − Hard to change Hard to change / Faculteit Wiskunde en Informatica 3-2-2010 PAGE 6 / Faculteit Wiskunde en Informatica 3-2-2010 PAGE 7
Why Software Engineering? What is Software Engineering? • Software engineering is the establishment and use • Embedded Software as Innovation Driver of sound engineering principles in order to obtain of sound engineering principles in order to obtain • Software is today the most crucial innovation driver for economically software that is reliable and works technical systems, in general efficiently on real machines • By software • By software − we realize innovative functions, • Other definitions: − we find new ways of implementing known functions • • The process of solving customers’ problems by the systematic The process of solving customers problems by the systematic with reduced costs, less weight or higher quality, development and evolution of large, high-quality software − we save energy and, what is, in particular, important, systems within cost, time and other constraints • IEEE: (1) the application of a systematic, disciplined, quantifiable ( ) pp y , p , q − we combine functions and correlate them into multi- − we combine functions and correlate them into multi- approach to the development, operation, maintenance of functional systems software; that is, the application of engineering to software. (2) The study of approaches as in (1). / Faculteit Wiskunde en Informatica / Faculteit Wiskunde en Informatica 3-2-2010 PAGE 8 3-2-2010 PAGE 9 What is Software Engineering? What is Software Engineering? • Software engineering concerns the development of • Solving customers’ problems g large program s large program s • 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 Addi f t d t h l l th • Mastering complexity problem • Evolution • Software engineers must communicate effectively to • Efficiency of software development Effi i f ft d l t identify and understand the problem • Cooperation between people is an integrated part of programming-in-the-large p g g g • Software has to supports its users effectively • … / Faculteit Wiskunde en Informatica 3-2-2010 PAGE 10 / Faculteit Wiskunde en Informatica 3-2-2010 PAGE 11
What is Software Engineering? What is Software Engineering? • Large, high quality software systems • Systematic development and evolution y • Software engineering techniques are needed because • Software engineering techniques are needed because • An engineering process involves applying well large systems cannot be completely understood by understood techniques in an organized and disciplined one person way way • Identification of missing quality aspects before • Many well-accepted practices have been formally building standardized • Teamwork and co-ordination are required q − e.g. by the IEEE or ISO b h IEEE ISO • Key challenge: dividing up the work and ensuring that • Most development work is evolution the parts of the system work properly together • The end product must be of high quality • The end-product must be of high quality / Faculteit Wiskunde en Informatica / Faculteit Wiskunde en Informatica 3-2-2010 PAGE 12 3-2-2010 PAGE 13 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 many project failures 3. Software developers 4. Development Managers 4 Development Managers • Quality attributes: • Usability, efficiency, reliability, maintainability, reusability • The different qualities can conflict − increasing efficiency can reduce maintainability − increasing usability can reduce efficiency / Faculteit Wiskunde en Informatica 3-2-2010 PAGE 14 / Faculteit Wiskunde en Informatica 3-2-2010 PAGE 15
Software Quality... Software Quality and the Stakeholders Customer: • Usability User: solves problems at easy to learn; • Users can learn it and fast and get their job done easily • Users can learn it and fast and get their job done easily an acceptable cost in an acceptable cost in efficient to use; terms of money paid and • Efficiency helps get work done resources used • It doesn’t waste resources such as CPU time and memory • Reliability QUALITY • It does what it is required to do without failing SOFTWARE • Maintainability M i t i bilit • It can be easily changed Development manager: Developer: sells more and easy to design; • Reusability pleases customers pleases customers easy to maintain; • Its parts can be used in other projects, so reprogramming while costing less easy to reuse its parts is not needed to develop and maintain 16 17 Software Quality: Conflicts and Objectives Objectives • The different qualities can conflict • Increasing efficiency can reduce maintainability or reusability • Increasing usability can reduce efficiency g y y • 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 O ti i i i l ti • E.g. obtain the highest possible reliability using a fixed budget 18
Recommend
More recommend