SOFTWARE ENGINEERING LECTURE NOTES ON SOFTWARE ENGINEERING III B. Tech I semester (JNTUH-R13)
SOFTWARE ENGINEERING UNIT-I INTRODUCTION TO SOFTWARE ENGINEERING Software: Software is (1) Instructions (computer programs) that provide desired features, function, and performance, when executed (2) Data structures that enable the programs to adequately manipulate information, (3) Documents that describe the operation and use of the programs. Characteristics of Software: (1) Software is developed or engineered; it is not manufactured in the classical sense. (2) Software does not “wear out” (3) Although the industry is moving toward component-based construction, most software continues to be custom built. Software Engineering: (1) The systematic, disciplined quantifiable approach to the development, operation and maintenance of software; that is, the application of engineering to software. (2) The study of approaches as in (1) EVOLVING ROLE OF SOFTWARE: Software takes dual role. It is both a product and a vehicle for delivering a product. As a product: It delivers the computing potential embodied by computer Hardware or by a network of computers. As a vehicle: It is information transformer-producing, managing, acquiring, modifying, displaying, or transmitting information that can be as simple as single bit or as complex as a multimedia presentation. Software delivers the most important product of our time-information. - It transforms personal data - It manages business information to enhance competitiveness - It provides a gateway to worldwide information networks - It provides the means for acquiring information The role of computer software has undergone significant change over a span of little more than 50 years - Dramatic Improvements in hardware performance - Vast increases in memory and storage capacity - A wide variety of exotic input and output options 1970s and 1980s: Osborne characterized a “new industrial revolution” Toffler called the advent of microelectronics part of “the third wave of change” in human history Naisbitt predicted the transformation from an industrial society to an “information society” Feigenbaum and McCorduck suggested that information and knowledge would be the focal point for power in the twenty-first century Stoll argued that the “electronic community” created by networks and software was the key to knowledge interchange throughout the world 1990s began: Toffier described a “power shift” in which old power structures disintegrate as computers and software lead to a “democratization of knowledge”. Yourdon worried that U.S companies might lose their competitive edge in software related business and predicted “the decline and fall of the American programmer”. Hammer and Champy argued that information technologies were to play a pivotal role in the “reengineering of the corporation”. Mid-1990s: The pervasiveness of computers and software spawned a rash of books by neo-luddites.
SOFTWARE ENGINEERING Later 1990s: Yourdon reevaluated the prospects of the software professional and suggested “the rise and resurrection” of the American programmer. The impact of the Y2K “time bomb” was at the end of 20th century 2000s progressed: Johnson discussed the power of “emergence” a phenomenon that explains what happens when interconnections among relatively simple entities result in a system that “self-organizes to form more intelligent, more adaptive behavior”. Yourdon revisited the tragic events of 9/11 to discuss the continuing impact of global terrorism on the IT community Wolfram presented a treatise on a “new kind of science” that posits a unifying theory based primarily on sophisticated software simulations Daconta and his colleagues discussed the evolution of “the semantic web”. Today a huge software industry has become a dominant factor in the economies of the industrialized world. THE CHANGING NATURE OF SOFTWARE: The 7 broad categories of computer software present continuing challenges for software engineers: 1) System software 2) Application software 3) Engineering/scientific software 4) Embedded software 5) Product-line software 6) Web-applications 7) Artificial intelligence software. System software: System software is a collection of programs written to service other programs. The systems software is characterized by - heavy interaction with computer hardware - heavy usage by multiple users - concurrent operation that requires scheduling, resource sharing, and sophisticated process management - complex data structures - multiple external interfaces E.g. compilers, editors and file management utilities. Application software: - Application software consists of standalone programs that solve a specific business need. - It facilitates business operations or management/technical decision making. - It is used to control business functions in real-time E.g. point-of-sale transaction processing, real-time manufacturing process control. Engineering/Scientific software: Engineering and scientific applications range - from astronomy to volcanology - from automotive stress analysis to space shuttle orbital dynamics - from molecular biology to automated manufacturing E.g. computer aided design, system simulation and other interactive applications. Embedded software: - Embedded software resides within a product or system and is used to implement and control features and functions for the end-user and for the system itself. - It can perform limited and esoteric functions or provide significant function and control capability.
SOFTWARE ENGINEERING E.g. Digital functions in automobile, dashboard displays, braking systems etc. Product-line software: Designed to provide a specific capability for use by many different customers, product-line software can focus on a limited and esoteric market place or address mass consumer markets E.g. Word processing, spreadsheets, computer graphics, multimedia, entertainment, database management, personal and business financial applications Web-applications: WebApps are evolving into sophisticated computing environments that not only provide standalone features, computing functions, and content to the end user, but also are integrated with corporate databases and business applications. Artificial intelligence software: AI software makes use of nonnumerical algorithms to solve complex problems that are not amenable to computation or straightforward analysis. Application within this area includes robotics, expert systems, pattern recognition, artificial neural networks, theorem proving, and game playing. The following are the new challenges on the horizon: Ubiquitous computing Netsourcing Open source The “new economy” Ubiquitous computing: The challenge for software engineers will be to develop systems and application software that will allow small devices, personal computers and enterprise system to communicate across vast networks. Net sourcing: The challenge for software engineers is to architect simple and sophisticated applications that provide benefit to targeted end-user market worldwide. Open Source: The challenge for software engineers is to build source that is self descriptive but more importantly to develop techniques that will enable both customers and developers to know what changes have been made and how those changes manifest themselves within the software. The “new economy”: The challenge for software engineers is to build applications that will facilitate mass communication and mass product distribution. SOFTWARE MYTHS Beliefs about software and the process used to build it- can be traced to the earliest days of computing myths have a number of attributes that have made them insidious. Management myths: Manages with software responsibility, like managers in most disciplines, are often under pressure to maintain budgets, keep schedules from slipping, and improve quality. Myth: We already have a book that’s full of standards and procedures for building software - Wont that provide my people with everything they need to know? Reality: The book of standards may very well exist but, is it used? Are software practitioners aware of its existence? Does it reflect modern software engineering practice? Myth: If we get behind schedule, we can add more programmers and catch up. Reality: Software development is not a mechanistic process like manufacturing. As new people are added, people who were working must spend time educating the new comers, thereby reducing the amount of time spend on productive development effort. People can be added but only in a planned and well coordinated manner. Myth: If I decide to outsource the software project to a third party, I can just relax and let that firm built it. Reality: If an organization does not understand how to manage and control software projects internally, it will invariably struggle when it outsources software projects.