Presentation is loading. Please wait.

Presentation is loading. Please wait.

©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 1 Ingeniería de Software l Diseño, construcción y mantenimiento.

Similar presentations


Presentation on theme: "©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 1 Ingeniería de Software l Diseño, construcción y mantenimiento."— Presentation transcript:

1 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 1 Ingeniería de Software l Diseño, construcción y mantenimiento de sistemas de software grandes. Dr. Pedro Mejía Alvarez. CINVESTAV-IPN, México

2 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 2 Introduction l Getting started with software engineering l Objectives To introduce software engineering and to explain its importance To set out the answers to key questions about software engineering

3 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 3 Introduction why is software so hard? and what can we do about it?

4 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 4 How’s our personal software? Software warranties, 2007 Apple “Except for the limited warranty on media... software is provided “as is”, with all faults and without warranty of any kind...” Google “as is, with no warranties whatsoever” Microsoft “substantially in accordance with the accompanying materials, for a period of 90 days...”

5 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 5 Is your PC secure? typical patch size ‣ 100MB typical time to download ‣ 10 minutes average time to infection* ‣ 4 minutes [Windows XP, default firewall settings] Unprotected PCs Fall To Hacker Bots In Just Four Minutes Gregg Keizer; Nov 30, 2004; http://www.techweb.com/wire/security/54201306 From: Security Absurdity: The Complete, Unquestionable, And Total Failure of Information Security, Noam Eppel; http://securityabsurdity.com

6 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 6 What about our operating systems ?

7 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 7 What about our web browsers ? dependences between DLLs ‣ disciplined layering why IE killed Netscape? ‣ spaghetti code in both ‣ but IE3 rebuilt from scratch dependences in internet explorer graph from http://www.spinellis.gr/blog/20031003 for Netscape story see: Competing on Internet Time: Lessons From Netscape & Its Battle with Microsoft by Michael A. Cusumano and David B. Yoffie

8 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 8 Sample failures in Systems build for the government? Navy enterprise resource planning ‣ $1B wasted on systems that don’t interoperate NASA financial systems ‣ after 12 years and $120M spent, on third attempt expected to cost $1B ‣ still cannot produce auditable financial statements Department of Veterans’ Affairs ‣ supplies not available for patients due to bad inventory control ‣ implementation halted after spending $250M

9 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 9 Sample failures in Systems build for the government (FBI)? reacting to 9/11 ‣ had to send photos of suspected hijackers by fax ‣ no PCs for most employees, no secure email for images Trilogy ‣ new network, thousands of PCs, software system (“VCF”) ‣ contract awarded to SAIC National Research Council report, 2004 ‣ agents can’t take copies of cases into the field ‣ no bookmarking or history to help navigation, no sorting outcome ‣ $600M later, no system; Sentinel ($425M) planned for 2009

10 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 10 Critical systems (why they fail ?) South Africa, October 2007 ‣ antiaircraft cannon kills 9 soldiers and injures 14 others ‣ cause not known, but software suspected http://blog.wired.com/defense/2007/10/robot-cannon-ki.html

11 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 11 Critical systems (why they fail ?) A radar system that was supposed to warn low-flying planes of nearby obstacles was plagued with problems and fixed nationwide only after a 1997 fatal airplane crash on Guam, according to a published report. In some cases, programming errors caused the Minimum Safe-Altitude Warning system not to operate over wide areas, including near busy airports such as those in Chicago and Dallas-Ft. Worth. In other cases, false alarms were so numerous that air traffic controllers placed cardboard over warning speakers to silence the noise. The Federal Aviation Administration was warned about the trouble after a business jet Crashed outside Washington in 1994, but it did not take decisive action to resolve it until after a Korean Air jumbo jet slammed into a hill on approach to Guam in August 1997, killing 228. AP, Oct 1999; http://ns.gov.gu/guam/indexmain.html most aviation deaths from “controlled flight into terrain”

12 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 12 Critical systems (why they fail ?) ARIANE Flight 501 l Disintegration after 39 sec l Caused by large correction for attitude deviation l Caused by wrong data being sent to On Board Computer l Caused by software exception in Inertial Reference System after 36 sec. IEEE Computer, jan. 1997, p. 129-130 http://www.cs.vu.nl/~hans/ariane5report.html

13 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 13 How do we get here ? Magnetic disks, US$/gigabyte From Frans Kaashoek and Jerome Saltzer, Topics in the Engineering of Computer Systems, to appear.

14 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 14 How do we get here ? operating system growth size in millions of lines of code From Frans Kaashoek and Jerome Saltzer, Topics in the Engineering of Computer Systems.

15 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 15 Fundamental challenges: context, state space, coupling a software system is a component ‣ interacts with physical environment ‣ and organizational context of operators & users sources of defects ‣ < 3% of software failures due to bugs in code ‣ >90% from poor understanding of requirements consequences ‣ requirements analysis is critical ‣ not just function, also assumptions

16 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 16 Fundamental challenges: context, state space, coupling state space complexity software systems have huge state space ‣ in lifetime, small proportion covered ‣ in testing, hardly any covered implications ‣ “Program testing can be used to show the presence of bugs, but never to show their absence!” ‣ often running in uncharted territory * E.W. Dijkstra, Structured programming (EWD268) http://www.cs.utexas.edu/users/EWD/

17 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 17 17 Central themes l SE is concerned with BIG programs l complexity is an issue l software evolves l development must be efficient l you’re doing it together l software must effectively support users l involves different disciplines l SE is a balancing act

18 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 18 18 Relative distribution of software/hardware costs Hardware Development Software Maintenance 195519701985 Year 100 60 20 Percent of total cost Why does software maintenance cost so much?

19 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 19 19 Global distribution of effort testing 45% coding 20% design 15% requirements engineering 10% specification 10%

20 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 20 Engineering l Engineering is … The application of scientific principles and methods To the construction of useful structures & machines l Examples Mechanical engineering Civil engineering Chemical engineering Electrical engineering Nuclear engineering Aeronautical engineering l Why other areas of science and engineering are doing things better than Software Engineering ?

21 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 21 Electrical Engineering

22 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 22 Architecture & Civil Engineering

23 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 23 Control Systems

24 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 24 Process & Chemical Engineering

25 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 25 Software Engineering l The term is 40 years old: NATO Conferences Garmisch, Germany, October 7-11, 1968 Rome, Italy, October 27-31, 1969 l The reality is finally beginning to arrive Computer science as the scientific basis Other scientific bases?

26 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 26 Software Engineering in a Nutshell l Development of software systems whose size/complexity warrants team(s) of engineers multi-person construction of multi-version software [Parnas 1987] l Scope study of software process, development principles, techniques, and notations l Goal production of quality software, delivered on time, within budget, satisfying customers’ requirements and users’ needs

27 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 27 l The economies of ALL developed nations are dependent on software l More and more systems are software controlled l Software engineering is concerned with theories, methods and tools for professional software development l Software engineering expenditure represents a significant fraction of GNP in all developed countries l Software failures are ever more visible and costly Why software engineering

28 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 28 Ever-Present Difficulties l Few guiding scientific principles l Few universally applicable methods l As much managerial / psychological / sociological as technological

29 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 29 Why These Difficulties? l SE is a unique brand of engineering Software is malleable Software construction is human-intensive Software is intangible Software problems are unprecedentedly complex Software directly depends upon the hardware It is at the top of the system engineering “food chain” Software solutions require unusual rigor Software has discontinuous operational nature

30 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 30 Software Engineering ≠ Software Programming l Software programming Single developer “Toy” applications Short lifespan Single or few stakeholders Architect = Developer = Manager = Tester = Customer = User One-of-a-kind systems Built from scratch Minimal maintenance

31 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 31 Software Engineering ≠ Software Programming l Software engineering Teams of developers with multiple roles Complex systems Indefinite lifespan Numerous stakeholders Architect ≠ Developer ≠ Manager ≠ Tester ≠ Customer ≠ User System families Reuse to amortize costs Maintenance accounts for over 60% of overall development costs

32 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 32 l Software costs often dominate system costs. The costs of software on a PC are often greater than the hardware costs l Software costs more to maintain than it does to develop. For systems with a long life, maintenance costs may be several times development costs  Software engineering is concerned with cost- effective software development Software costs

33 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 33 Economic and Management Aspects of SE l Software production = development + maintenance (evolution) l Maintenance costs > 60% of all development costs 20% corrective 30% adaptive 50% perfective l Quicker development is not always preferable higher up-front costs may defray downstream costs poorly designed/implemented software is a critical cost factor

34 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 34 Relative Costs of Fixing Software Faults Requirements SpecificationPlanningDesignImplementationIntegrationMaintenance 1 2 3 4 10 30 200

35 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 35 Mythical Man-Month by Fred Brooks l Published in 1975, republished in 1995 Experience managing development of OS/360 in 1964-65 l Central argument Large projects suffer management problems different in kind than small ones, due to division in labor Critical need is the preservation of the conceptual integrity of the product itself l Central conclusions Conceptual integrity achieved through chief architect Implementation achieved through well-managed effort l Brooks’s Law Adding personnel to a late project makes it later

36 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 36 FAQs about software engineering 1.What is software? 2.What is software engineering? 3.What is the difference between software engineering and computer science? 4.What is the difference between software engineering and system engineering? 5.What is a software process? 6.What are the costs of software engineering? 7.What are software engineering methods? 8.What are the attributes of good software? 9.What are the key challenges facing software engineering?

37 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 37 What is software? l Computer programs and associated documentation Often referred to as “artifacts” l Software products may be developed for a particular customer or may be developed for a general market l Software products may be Generic - developed to be sold to a range of different customers Custom - developed for a single customer according to the customer’s specification

38 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 38 What is software engineering? l Software engineering is an engineering discipline which is concerned with all aspects of software production l Software engineers should adopt a systematic and organised approach to their work and use appropriate tools and techniques depending on the problem to be solved, the development constraints, and the resources available l A key software engineering “axiom” Better Cheaper pick any two Faster

39 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 39 What is the difference between software engineering and computer science? l Computer science is concerned with theory and fundamentals  Software engineering is concerned with the practicalities of developing and delivering useful software l Computer science theories are currently insufficient to act as a complete underpinning for software engineering

40 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 40 What is the difference between software engineering and system engineering? l System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is a “component” in this process l System engineers are involved in overall system specification, architectural design, integration and deployment

41 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 41 What is a software process? l A set of activities whose goal is the development or evolution of software l Generic activities in all software processes are: Specification - what the system should do and its development constraints Development - production of the software system Validation - checking that the software is what the customer wants Evolution - changing the software in response to changing demands

42 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 42 What are the costs of software engineering? l Roughly 60% of costs are development costs, 40% are testing costs l Evolution costs often far exceed development costs l Costs vary depending on The type of system being developed E.g., custom built vs. mass market software The requirements of system attributes such as performance and system reliability The experience of the development team(s) l Distribution of costs depends on the development model that is used

43 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 43 What are software engineering methods? l Structured approaches to software development which include system Models Why are models needed? Notations Such as? Rules - Constraints applied to system models Design advice - recommendations on good design practice Process guidance - what activities to follow l What are some example methods?

44 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 44 What are the attributes of good software? l Software should deliver the required functionality and performance, and should be maintainable, dependable and usable l Maintainability Software must evolve to meet changing needs l Dependability Software must be trustworthy l Efficiency Software should not waste system resources l Usability Software must be usable by the users for which it was designed l There are many others!

45 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 45 What are the key challenges facing software engineering? l Coping with Legacy systems Increasing diversity Demands for reduced delivery times l Legacy systems Old, valuable systems must be maintained and updated l Heterogeneity Systems are distributed and include a mix of hardware and software l Delivery There is increasing pressure for faster delivery of software

46 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 46 Essential software engineering difficulties l Complexity no two software parts are alike complexity grows non-linearly with size l Conformity software is always required to conform often the “last kid on the block” l Changeability software is viewed as infinitely malleable change originates with new applications, users, machines, standards, laws l Invisibility the reality of software is not embedded in space software is not representable as a familiar geometric entity

47 ©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 47 Key points l Software engineering is an engineering discipline which is concerned with all aspects of software production. l Software products consist of developed programs and associated documentation. Essential product attributes are maintainability, dependability, efficiency and usability. l The software process consists of activities which are involved in developing software products. Basic activities are software specification, development, validation and evolution. l Methods are organised ways of producing software. They include suggestions for the process to be followed, the notations to be used, rules governing the system descriptions which are produced and design guidelines.


Download ppt "©Sommerville 2000, Medvidovic 2006, Mejia 2009,Introduction to Software Engineering Slide 1 Ingeniería de Software l Diseño, construcción y mantenimiento."

Similar presentations


Ads by Google