Chapter 1 Software and Software Engineering 1 Scope of Software Engineering Historical Aspects 1968 NATO Conference, Garmisch Aim: to solve the “Software Crisis” Software is delivered Late Over budget Unreliable (with residual faults) 2 Scope of Software Engineering (cont.) always with complaints like why does it take so long to get software finished? why are development costs so high? why can’t we find all the errors before we give to customers? why do we continue to have difficulty in measuring progress as software is being developed? why we always need to restart during installation? 3 Real Cases 84% of software projects were not completed on time and within budget (a survey conducted by Standish Group) 8000 projects in US in 1995 more than 30% were cancelled 189% over budget 4 Real Cases (cont.) Bank of America Master Net System Trust business, 1982 Spend 18 months in deep research & analysis of the target system Original budget: 20 million Original schedule: 9 month, due to 1984/12/31 Not until March 1987, and spent 60 million Lost 600 millions business Eventually, gave up the software system and 34 billion trust accounts transferred 5 Software’s Dual Role Software is a product Delivers computing potential Produces, manages, acquires, modifies, displays, or transmits information Software is a vehicle for delivering a product Supports or directly provides system functionality Controls other programs (e.g., an operating system) Effects communications (e.g., networking software) Helps build other software (e.g., software tools) 6 What is Software? an information transformer that produces, manages, acquires, modifies, displays, or transmits information both a product and a vehicle for delivering a product the basis for the control of the computer (OS), the communication of information (networks), the creation and control of other programs (S/W tools) instructions (computer programs) that when executed provide desired function and performance data structures that enable the programs to adequately manipulate information documents that describe the operation and use of the programs 7 What is Software? (cont.) Software is a set of items or objects that form a “configuration” that includes • programs • documents • data ... 8 Software Characteristics software is a logical system element software is engineered, not manufactured software doesn’t wear out but “deteriorating” software is complex most software continuing to be custom built 9 Software Characteristics (cont.) 10 Failure Rate Product Bathtub Curve Model “Infant Mortality” -due to design or manufacturing defects “Wear Out” -due to cumulative affects of environments Time 11 Failure Rate Software Idealized Curve Idealized Curve Time 12 Software Actual Failure Curve 13 What is Software Engineering? Definition of “Engineering” The profession in which a knowledge of the mathematical and natural sciences gained by study, experience, and practice is applied with judgment to develop ways to utilize, economically, the materials and forces of nature for the benefit of mankind -- Accreditation Board for Engineering and Technology, 1996 14 What is Software Engineering? (cont.) 15 What is Software Engineering? (cont.) Software Engineering: -- technologies that make it easier, faster, and less expensive to build high-quality computer programs -- a discipline aiming to the production of fault-free software, delivered on time and within budget, that satisfies the users’ needs -- an engineerlinglike activity in software production -- the philosophy and paradigm of established engineering disciplines to solve what are termed software crisis 16 Software Applications system software application software engineering/scientific software embedded software product-line software WebApps (Web applications) AI software 17 Software—New Categories Ubiquitous computing —wireless networks Netsourcing—the Web as a computing engine Open source—”free” source code open to the computing community (a blessing, but also a potential curse!) Also … (see Chapter 32) Data mining Grid computing Cognitive machines Software for nanotechnologies 18 Legacy Software Why must it change? software must be adapted to meet the needs of new computing environments or technology. software must be enhanced to implement new business requirements. software must be extended to make it interoperable with other more modern systems or databases. software must be re-architected to make it viable within a network environment. 19 Software Evolution The Law of Continuing Change (1974) The Law of Increasing Complexity (1974) As an E-type system evolves its complexity increases unless work is done to maintain or reduce it. The Law of Self Regulation (1974) E-type systems must be continually adapted else they become progressively less satisfactory. The E-type system evolution process is self-regulating with distribution of product and process measures close to normal. The Law of Conservation of Organizational Stability (1980) The average effective global activity rate in an evolving E-type system is invariant over product lifetime. Source: Lehman, M., et al, “Metrics and Laws of Software Evolution—The Nineties View,” Proceedings of the 4th International Software Metrics Symposium (METRICS '97), IEEE, 1997, can be downloaded from: http://www.ece.utexas.edu/~perry/work/papers/feast1.pdf 20 Software Evolution (cont.) The Law of Conservation of Familiarity (1980) The Law of Continuing Growth (1980) The functional content of E-type systems must be continually increased to maintain user satisfaction over their lifetime. The Law of Declining Quality (1996) As an E-type system evolves all associated with it, developers, sales personnel, users, for example, must maintain mastery of its content and behavior to achieve satisfactory evolution. The quality of E-type systems will appear to be declining unless they are rigorously maintained and adapted to operational environment changes. The Feedback System Law (1996) E-type evolution processes constitute multi-level, multi-loop, multi-agent feedback systems and must be treated as such to achieve significant improvement over any reasonable base. 21 Software Myths Affect managers, customers (and other nontechnical stakeholders) and practitioners Are believable because they often have elements of truth, but … Invariably lead to bad decisions, therefore … Insist on reality as you navigate your way through software engineering 22 Software Myths (Management) Myth1: We already have a book that’s full of standards and procedures for building s/w, won’t that provide my people with everything they need to know? Myth2: If we get behind schedule, we can add more programmers and catch up. Myth3: If I decide to outsource the software project to a third party, I can just relax and let that firm build it. 23 Software Myths (Customer) Myth1: A general statement of objectives is sufficient to begin writing programs – we can fill in the details later. Myth2: Project requirements continually change, but change can be easily accommodated because software is flexible. 24 Software Myths (Practitioner) Myth1: Once we write the program and get it to work, our job is done. Fact: the sooner you begin writing code, the longer it will take you to get done. Myth2: Until I get the program “running,” I have no way of assessing its quality. Myth3: The only deliverable work product for a successful project is the working program. Myth4: Software engineering will make us create voluminous and unnecessary documentation and will invariable slow us down. 25 Software Industry Independent Programming Service Software Product Enterprise Solution Packed Software for the Mass Internet Software and Services 26 Independent Programming Service (Era 1) Feb 1955, Elmer Kubie and John Sheldon founded CUC The first software company that devoted to the constuction of software especially for hardware company Promoting software industry: two major projects SABRE: airline reservation system, $30 million SAGE: air defense system (1949~1962) 700/1000 programmers in the US $8 billion 27 Software Product (Era 2) 1962 John A. Postley originated the concept of “Software Product” John A. Postley, Mark IV: evolution of the software product, a memoir, IEEE Annals of the History of Computing,Vol. 20, No. 1, 1998, pp. 43 - 50 1964 Martin Goetz developed Flowchart Software – Autoflow for RCA, but rejected The key role in developing MARK IV file management system A pre-runner for the database management system Sale to the customer of RCA & IBM Develop and market software products not specifically designed for a particular hardware platform IBM unbundled software from hardware from 1970 28 Enterprise Solutions (Era 3) Dietmar Hopp. IBM Germany Systems, Applications and Products (SAP) $3.3 billion (1997) Setting up shop in Walldorf, Germany Marked by the emergence of enterprise solutions providers e.g. Baan 1978, Netherland $680 million (1997) Oracle 1977 US, founded by Larry Ellison ERP, $45 billion (1997) 29 Packed Software for the Masses (Era 4) Software products for the masses 1979 VisiCalc, Spreadsheet program August 1981: The deal of the century Bill Gates bought the first version of the OS from a small firm called Seattle Computer Products for $50,000 without telling them it was for IBM The development of IBM PC, 1981, initiated a 4th software era PC-based mass-market software. Few additional services are required for installation Microsoft reached revenues of $11.6 billion. Packed software products, $57 billion (1997) 30 Internet Software and Services (Era 5) Internet and value-added services period, 1994. with Netscape’s browser software for the internet Free on-line software service, e.g., Google’s Apps for Your Domain 31 IT Market 32 Software Products and Services Professional Enterprise Software Services Solutions Packed Mars-Market Software Anderson Consulting IBM Microsoft IBM Oracle IBM EDS Computer Associates Computer Associates CSC SAP Adobe Science Application HP Novell Gap Gemini Fujitsu Symantec HP Hitachi Intuit DEC People Soft Autodesk Fujitsu Siemens Apple 33 Conclusions Software has become the key element in the evolution of computer-based systems and products Software has evolved into a industry in itself Yet still have trouble developing high-quality software on time and within budget The intent of software engineering is to provide a framework for building high-quality software 34