1 / 47

Ingeniería de Software

Ingeniería de Software. Diseño, construcción y mantenimiento de sistemas de software grandes. Dr. Pedro Mejía Alvarez. CINVESTAV-IPN, México. Introduction. Getting started with software engineering Objectives To introduce software engineering and to explain its importance

cuthbert
Download Presentation

Ingeniería de Software

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Ingeniería de Software • Diseño, construcción y mantenimiento de sistemas de software grandes. Dr. Pedro Mejía Alvarez. CINVESTAV-IPN, México

  2. Introduction • Getting started with software engineering • Objectives • To introduce software engineering and to explain its importance • To set out the answers to key questions about software engineering

  3. Introduction why is software so hard? and what can we do about it?

  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. 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. What about our operating systems ?

  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. 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. 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. 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. 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. Critical systems (why they fail ?) ARIANE Flight 501 • Disintegration after 39 sec • Caused by large correction for attitude deviation • Caused by wrong data being sent to On Board Computer • 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. 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. 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. 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. 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. SE is concerned with BIG programs complexity is an issue software evolves development must be efficient you’re doing it together software must effectively support users involves different disciplines SE is a balancing act Central themes

  18. Relative distribution of software/hardware costs 100 Hardware Development 60 Percent of total cost Software 20 Maintenance 1955 1970 1985 Year Why does software maintenance cost so much?

  19. Global distribution of effort design 15% coding 20% requirements engineering 10% specification 10% testing 45%

  20. Engineering • Engineering is … • The application of scientific principles and methods • To the construction of useful structures & machines • Examples • Mechanical engineering • Civil engineering • Chemical engineering • Electrical engineering • Nuclear engineering • Aeronautical engineering • Why other areas of science and engineering are doing things better than Software Engineering ?

  21. Electrical Engineering

  22. Architecture & Civil Engineering

  23. Control Systems

  24. Process & Chemical Engineering

  25. Software Engineering • The term is 40 years old: NATO Conferences • Garmisch, Germany, October 7-11, 1968 • Rome, Italy, October 27-31, 1969 • The reality is finally beginning to arrive • Computer science as the scientific basis • Other scientific bases?

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

  27. Why software engineering • The economies of ALL developed nations are dependent on software • More and more systems are software controlled • Software engineering is concerned with theories, methods and tools for professional software development • Software engineering expenditure represents a significant fraction of GNP in all developed countries • Software failures are ever more visible and costly

  28. Ever-Present Difficulties • Few guiding scientific principles • Few universally applicable methods • As muchmanagerial / psychological / sociologicalas technological

  29. Why These Difficulties? • 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. Software Engineering ≠ Software Programming • 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. Software Engineering ≠ Software Programming • 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. Software costs • Software costs often dominate system costs. The costs of software on a PC are often greater than the hardware costs • 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

  33. Economic and Management Aspects of SE • Software production = development + maintenance (evolution) • Maintenance costs > 60% of all development costs • 20% corrective • 30% adaptive • 50% perfective • Quicker development is not always preferable • higher up-front costs may defray downstream costs • poorly designed/implemented software is a critical cost factor

  34. Relative Costs of Fixing Software Faults 200 30 10 4 3 2 1 Requirements Specification Planning Design Implementation Integration Maintenance

  35. Mythical Man-Monthby Fred Brooks • Published in 1975, republished in 1995 • Experience managing development of OS/360 in 1964-65 • 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 • Central conclusions • Conceptual integrity achieved through chief architect • Implementation achieved through well-managed effort • Brooks’s Law • Adding personnel to a late project makes it later

  36. FAQs about software engineering • What is software? • What is software engineering? • What is the difference between software engineering and computer science? • What is the difference between software engineering and system engineering? • What is a software process? • What are the costs of software engineering? • What are software engineering methods? • What are the attributes of good software? • What are the key challenges facing software engineering?

  37. What is software? • Computer programs and associated documentation • Often referred to as “artifacts” • Software products may be developed for a particular customer or may be developed for a general market • 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. What is software engineering? • Software engineering is an engineering discipline which is concerned with all aspects of software production • 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 • A key software engineering “axiom” • Better • Cheaper pick any two • Faster

  39. What is the difference between software engineering and computer science? • Computer science is concerned with theory and fundamentals • Software engineering is concerned with the practicalities of developing and delivering useful software • Computer science theories are currently insufficient to act as a complete underpinning for software engineering

  40. What is the difference between software engineering and system engineering? • 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 • System engineers are involved in overall system specification, architectural design, integration and deployment

  41. What is a software process? • A set of activities whose goal is the development or evolution of software • 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. What are the costs of software engineering? • Roughly 60% of costs are development costs, 40% are testing costs • Evolution costs often far exceed development costs • 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) • Distribution of costs depends on the development model that is used

  43. What are software engineering methods? • 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 • What are some example methods?

  44. What are the attributes of good software? • Software should deliver the required functionality and performance, and should be maintainable, dependable and usable • Maintainability • Software must evolve to meet changing needs • Dependability • Software must be trustworthy • Efficiency • Software should not waste system resources • Usability • Software must be usable by the users for which it was designed • There are many others!

  45. What are the key challenges facing software engineering? • Coping with • Legacy systems • Increasing diversity • Demands for reduced delivery times • Legacy systems • Old, valuable systems must be maintained and updated • Heterogeneity • Systems are distributed and include a mix of hardware and software • Delivery • There is increasing pressure for faster delivery of software

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

  47. Key points • Software engineering is an engineering discipline which is concerned with all aspects of software production. • Software products consist of developed programs and associated documentation. Essential product attributes are maintainability, dependability, efficiency and usability. • The software process consists of activities which are involved in developing software products. Basic activities are software specification, development, validation and evolution. • 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.

More Related