Chapter 1 Introduction to Software Engineering PDF
Document Details
Uploaded by Deleted User
Tags
Summary
This document provides an introduction to software engineering, covering various aspects like the nature of software, characteristics, and different software applications. Software engineering principles and process models are discussed, along with a look at applications within different domains.
Full Transcript
Unit 1: Introduction to Software Engineering, Process Models and Agile Development Introduction to Software Engineering Nature of Software Engineering Definition of Software Engineering and its layered Technology Software Process-The Process Framework Umbrella Activities Softw...
Unit 1: Introduction to Software Engineering, Process Models and Agile Development Introduction to Software Engineering Nature of Software Engineering Definition of Software Engineering and its layered Technology Software Process-The Process Framework Umbrella Activities Software: Software is (1) instructions (computer programs) that when executed provide desired function and performance (2) data structures that enable the programs to adequately manipulate information and (3) documents that describe the operation and use of the programs. Software Characteristics When hardware is built the human creative process (analysis, design, construction) is ultimately translated into a physical form. If we build a new computer our initial sketches formal design drawings and bread boarded prototypes evolve into a physical product (circuit boards, power supplies etc) Software is a logical rather than a physical system element. Therefore software has characteristic that differ considerably from those of hardware. 1. Software is developed or engineered, it is not manufactured in the classical sense Although some similarities exist between software development and hardware manufacture the two activities are fundamentally different. In both activities high quality is achieved through good design but the manufacturing phase for hardware can introduce quality problems that are nonexistent (or easily corrected) for software. 2. Software doesn’t wear out In figure depicts failure rate as a function of time for hardware. The relationship, often called the “bathtub curve”, indicates that hardware exhibits relatively high failure rates early in its life. Defects are corrected, and the failure rate drops to a steady state level (hopeful, quite low) for some period of time. As time passes, however, the failure rate rises again as hardware components suffer from the cumulative effects of dust, vibration, abuse, temperature extremes, and many other environmental maladies. Stated simply, the hardware begins to wear out. Software is not susceptible to the environmental maladies that cause hardware to wear out. This seeming contradiction can best be explained by considering. During its life software will undergo change (maintenance) As changes are made it is likely that some new defects will be introduced, causing the failure rate curve to spike as shown in Figure 1.3 Before the curve can return to the originally steady state failure rate, another change is requested causing the curve to spike again Slowly the minimum failure rate level begins to rise the software is deteriorating due to change. Software is customized Most of the software are developed according to the specifications of the customers, so they are customized. Versions are created New modifications or updation are done in existing software to form a new version of software. Different hardware requirements Software may use various hardware components as per the usability and applicability. Software can be reused One module of any software can be used in other software. Software Applications System Software System software is a collection of programs written to service other programs. Some system software (e.g., compiler s editors and file management utilities) processes complex but determinate information structures. In either case the systems software area 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 and multiple external interfaces. Real-Time Software Programs that monitor/analyze/ control real world events as they occur are called real-time software. Elements of real-time software include a data gathering component that collects and formats information from an external environment an analysis component that transforms information as required by the application a control / output component that responds to the external environment so that real-time response Business Software Business information processing is the largest single software application area. Discrete “systems” (e.g., payroll accounts receivable/payable inventory, etc.,) have evolved into management information system (MIS) software that accesses one or more large databases containing business information. Applications in this area restructure existing data in a way that facilitates business operation or management decision making. \ Engineering and Scientific Software Engineering and Scientific software has been characterized by “number crunching” algorithms. Application range from astronomy to volcanology from automotivestress analysis to space shuttle orbital dynamics and from molecular biology to automated manufacturing. Computer aided design system simulation and other interactive applications havebegun to take on real-time and even system software characteristics. Embedded Software Intelligent products have become commonplace in nearly every consumer and industrial market. Embedded software resides in readonly memory and is used to control products and systems for the consumer and industrial markets. Embedded software can perform very limited and esoteric functions (e.g., digital functions in an automobile such as fuel control, dashboard displays,braking systems, etc.,). Personal Computer Software The personal computer software market has burgeoned over the pastdecade. Word processing, spreadsheets, computer graphics, multimedia entertainment, database management personal and business financial applications and external network or database access areonly a few of hundreds of application. Artificial Intelligence Software Artificial Intelligence (AI) software makes use of non numericalalgorithms to solve complex problems that are not amenable to computation or straight forward analysis. An active AI area is expert systems also called knowledge-based systems. However other application areas for AI software are pattern recognition (image and voice) theorem proving and game playing. Inrecent years a new branch of AI software called artificial neural networks, hasevolved. A neural network simulates the structure of brain processes (the functions of the biological neuron) and may ultimately leadto a new class of software that can recognize complex patterns and learn from past experience More new software: 1. Open-world computing: 2. Net sourcing 3. Open source: Legacy software Companies spend a lot of money on software systems and, to get a return on that investment, the software must be usable for a number of years. The lifetime of software systems is very variable but many large systems remain in use for more than 10 years. Some organisations still rely on software systems that are more than 20 years old. Many of these old systems are still business-critical. That is, the business relies on the services provided by the software and any failure of these services would have a serious effect on the day- to-day running of the business. These old systems have been given the name legacy systems Legacy softwares are often business critical systems. They are maintained because it is too risky to replace them. The quality of Legacy software Older, poor quality Inextensible/ non flexible design Complex code Poor or nonexistent document Test cases and results that were never a poorly managed change history Legacy Layered model Legacy system is as series of layers Each layer depends on the layer immediately below it and interfaces with that layer. If interfaces are maintained, then it should possible to make changes within a layer without affecting either of the adjacent layers. i.e changes to one layer of the system may require consequent changes to layers that are both above and below the changed level. The reasons for this are 1. Changing one layer in the system may introduce new facilities and higher layers in the system may then be changed to take advantage of these facilities. For example, a new database introduced at the support software layer may include facilities to access the data through a web browser and business processes may be modified to take advantage of this facility. 2. Changing the software in the system may slow it down so at new hardware is needed to improve the system performance. The increase in performance from the new hardware may then mean that further software changes which were previously impractical become possible. 3. It is often impossible to maintain hardware interfaces especially if a radical change to a new type of hardware is proposed. For example, if a company moves from mainframe hardware to client-server systems these usually have different operating systems. Major changes to the application software may therefore be required. Software Engineering Software process is a framework for the tasks that are required build high quality software. Software engineering is performed creative, knowledgeable people who adopt a mature software process which is appropriate for the product they build and the demand of their marketplace. Software must be designed properly as per the user requirement. Source code must be implemented, tested, and contain supporting document such as user manual, installation procedure, training aids and maintenance document Software Engineering – Layered Technology 1. “Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.” (According to Fritz Bauer) 2. The IEEE [IEE93] has developed a more comprehensive definition when it states; “Software Engineering (1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software that is, the application of engineering gineering to software. (2) The study of approaches as in (1)”. 3. According to Parnas, ““Multi-person person construction of multiversion software” The primary goal of software engineering is to improve the quality of software products and to increase the productivity and job satisfaction of software engineers. Software engineering is a layered technology. Any engineering approach must rest on an organizational commitment to quality. Software Engineering layers Process defines a framework for a set of key process areas that must be established for effective delivery of software engineering technology. The key process areas form the basis for management control of software projects and establish the context in which technical methods are applied, work products are produced, milestones are established, quality is ensured, and change is properly managed. Software engineering methods provide the technical “how to’s” for building software. Methods encompass a broad array of tasks that include requirements analysis, design, program construction, testing, and maintenance. Software engineering methods rely on a set of basic principles that govern each area of the technology and include modeling activities and other descriptive techniques. Tools provide automated or semi-automated support for process and the method. The Software Process: A common process framework is established by defining a small number of framework activities that are applicable to all software projects, regardless of their size or complexity. Process Framework The framework activities are applicable to all projects and all application domains, and they are a template for every process model. Software process Process framework Umbrella activities Framework activity Software Engineering action Each framework activity is populated by a set of S/W eng actions – a collection of related tasks that produces a major S/W eng work product (design is a S/W eng action). Each action is populated with individual work tasks that accomplish some part of the work implied by the action. The following generic process framework is applicable to the vast majority of S/W projects. Communication: involves heavy communication with the customer (and other stakeholders) and encompasses requirements gathering. Planning: Describes the technical tasks to be conducted, the risks that are likely, resources that will be required, the work products to be produced and a work schedule. Modeling: encompasses the creation of models that allow the developer and customer to better understand S/W req. and the design that will achieve those req. Modeling activity is composed of two engineering action: Analysis contain a set of work tasks like requirement gathering, elaboration, negotiation, specification and validation Design contain work tasks like data design, architectural design, interface design and component level design Construction: combines code generation and the testing required uncovering errors in the code. Deployment: deliver the product to the customer who evaluates the delivered product and provides feedback. Each software engineering action is represented by a number of different task sets. Umbrella activities such as software quality assurance, software configuration management, and measurement overlay the process model. The framework described in the generic view of S/W eng is complemented by a number of umbrella activities. Typical activities include: S/W project tracking and control: allows the team to assess progress against the project plan and take necessary action to maintain schedule. Risk Management: Assesses the risks that may affect the outcome of the project or the quality. Software quality assurance: defines and conducts the activities required to ensure software quality. Formal Technical Review: uncover and remove errors before they propagate to the next action. Measurement: defines and collects process, project, and product measures that assist the team in delivering S/W that meets customers’ needs. Software configuration management: Manages the effect of change throughout the S/W process Reusability management: defines criteria for work product reuse. Work product preparation and production: encompasses the activities required to create work products such as models, documents, etc.