CHAPTER 1 – INTRODUCTION TO SOFTWARE ENGINEERING 2005 McGraw-Hill Higher Education http://highered.mcgraw-hill.com/sites/0072853182/student_view0/chapter1/chapter_summary.html Overview Software is designed and built by software engineers. Software is used by virtually everyone in society. Software engineers have a moral obligation to build reliable software that does no harm to other people. Software engineers view "software" as being made up of the programs, documents, and data. Software users are only concerned with whether or not software products meet their expectations and make their tasks easier to complete. Important Questions for Software Engineers Why does it take so long to get software finished? Why are development costs so high? Why can't we find all errors before we give the software to our customers? Why do we continue to have difficulty in measuring progress as software is being developed? Software Software is both a product and a vehicle for delivering a product (information). Software is engineered not manufactured. Software does not wear out, but it does deteriorate. Currently, most software is still custom-built. Software Application Types System software Application software Embedded software Engineering/Scientific software Product software Web Applications Artificial intelligence software New Software Challenges Page 1 of 2 Ubiquitous computing o Creating software to allow machines of all sizes to communicate with each other across vast networks Netsourcing o Architecting simple and sophisticated applications that benefit targeted end-user markets worldwide Open Source o Distributing source code for computing applications so customers can make local modifications easily and reliably New economy o Building applications that facilitate mass communication and mass product distribution using evolving concepts Legacy software Many programs still provide a valuable business benefit, even though they are one or even two decades old. These programs must be maintained and this creates problems because their design is often not amenable to change. Software Evolution Process by which programs change shape, adapt to the marketplace, and inherit characteristics from preexisting programs Law of continuing change o Systems must be continually adapted or they become progressively unsatisfactory Law of increasing complexity o As system evolves its complexity increases unless work is done to reduce the complexity Law of self-regulation o System evolution is self-regulating with its process and product measures following near normal distributions Law of conservation of Organizational Stability o Average effective global activity rate for an evolving systems is invariant over the product lifetime Law of conservation of familiarity o As system evolves all stakeholders must maintain their mastery of its content and behavior to achieve satisfactory evolution Law of continuing growth o Functional content of system must be continually increased to maintain user satisfaction over its lifetime Law of declining quality o System quality will appear to decline unless the system is rigorously maintained and adapted to environment changes Feedback system law o System evolution processes must be treated as multi-level, multi-loop, multi-agent feedback systems to achieve significant improvement Software Myths Still believed by many managers and practitioners Insidious because they do have elements of truth Every practitioner and manager should understand the reality of the software business. Software Creation Page 2 of 2 Almost every software project is precipitated by a business need (e.g., correct a system defect, adapt system to changing environment, extend existing system, create new system) Many times an engineering effort will only succeed if the software created for the project succeeds The market will only accept a product that has the software embedded when it meets the customer's stated or unstated needs