Chap 4 Software Processes ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 1 Objectives To introduce software process models To describe three generic process models and when they may be used To describe outline process models for requirements engineering, software development, testing and evolution To explain the Rational Unified Process model To introduce CASE technology to support software process activities ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 2 Topics covered 4.1 Software process models 4.2 Process iteration 4.3 Process activities 4.4 The Rational Unified Process 4.5 Computer-aided software engineering ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 3 What is the software process? A software process is a set of activities that leads to the production of a software product. These activities may involve the development of software from scratch in a standard programming language. Increasingly, however, new software is developed by extending and modifying existing systems and by configuring and integrating off-the-shelf software or system components. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 4 The fundamental activities of software processes. Although there are many software processes, some fundamental activities are common to all software processes: • • • • Software specification : the functionality of the software and constraints on its operation must be defined. Software design and implementation : the software to meet the specification must be produced. Software validation : the software must be validated to ensure that it does what the customer wants. Software evolution : the software must evolve to meet changing customer needs. 64 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 5 4.1 The software process A software process model is an abstract representation of a process. It presents a description of a process from some particular perspective, and thus provides only partial information about that process. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 6 Generic software process models The waterfall model • Evolutionary development • Separate and distinct phases of specification development, validation and evolution and represents them as separate process phases such as requirements specification, software design, implementation, testing and so on. This approach interleaves (interchange) the activities of specification, development and validation. An initial system is rapidly developed from abstract specifications. This is then refined with customer input to produce a system that satisfies the customer’s needs. Component-based software engineering • The system is assembled from existing components, the focuses on integrating these components into a system rather than developing them from scratch. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 7 These generic process models are widely used in current software engineering practice. They are not mutually (interchange) exclusive and are often used together, especially for large systems development. Sub-system within a larger system may be developed using different approaches, but we should understand that, in practice, they are often combined. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 8 4.1.1 Waterfall model Figure 4.1 the software life cycle ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 9 4.1.1 Waterfall model phases 1. Requirements analysis and definition • 2. System and software design • 3. The system’s services, constraints and goals are established by consultation with system users. They are then defined a detail system specification. Systems design process partitions the requirements to either hardware or software systems. It establishes an overall system architecture. Software design involves identifying and describing the fundamental software system abstractions and their relationships. Implementation and unit testing • Software design is realized (accomplish) as a set of programs or program units. Unit testing involves verifying that each unit meets its specification. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 10 Waterfall model phases 4. Integration and system testing • 5. Individual program units or programs are integrated and tested as a complete system to ensure that the software requirements have been met. After testing, the software system is delivered to the Customer. Operation and maintenance • This is longest life-cycle phase. The system is installed and put into practical use. Maintenance involves correcting errors which were not discovered in earlier stages of the life cycle, improving the implementation of system units and enhancing the system’s services as new requirements are discovered. 67 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 11 Waterfall model problems Inflexible partitioning of the project into distinct stages makes it difficult to respond to changing customer requirements. Therefore, this model is only appropriate when the requirements are well-understood and changes will be fairly limited during the design process. Few business systems have stable requirements. The waterfall model is mostly used for large systems engineering projects where a system is developed at several sites. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 12 4.1.2 Evolutionary development There are two fundamental types of evolutionary development: Exploratory development Objective is to work with customers and to evolve a final system from an initial outline specification. Should start with wellunderstood requirements and add new features as proposed by the customer. Throw-away prototyping • Objective is to understand the system requirements. Should start with poorly understood requirements to clarify what is really needed. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 13 4.1.2 Evolutionary development Figure 4.2 Evolutionary development ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 14 4.1.2 An evolutionary approach to software development is often more effective than the waterfall approach in producing system that meet the immediate needs of customers. From an engineering and management perspective, the evolutionary approach has two problems: • • Process is not visible: Managers need regular deliverables (report) to measure progress. If systems are developed quickly, it is not cost-effective to produce documents that reflect every version of the system. Systems are often poorly structured: Continual change tend to corrupt the software structure. incorporating (combine) software changes becomes increasingly difficult and costly. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 15 4.1.2 Evolutionary development Problems • • • Lack of process visibility; Systems are often poorly structured; Special skills may be required. Applicability (suitable) • • • For small or medium-size interactive systems; For parts of large systems (e.g. the user interface); For short-lifetime systems. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 16 For small and medium-sized systems (up to 500,000 lines of code). I think that the evolutionary approach is the best approach to development. For large, complex, long-life-time systems, where different teams develop different part of the system, it is difficult to establish a stable system architecture using this approach. Which makes it hard to integrate contributions from the teams. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 17 For large systems, I recommend a mixed process that incorporates the best features of the waterfall and the evolutionary development models. This may involve developing a throwaway prototype to resolve uncertainties in the system specification, then reimplement the system using a more structured approach. Part of the system that are well understood can be specified and developed using a waterfall-based process. Other part of system, such as the user interface, which are difficult to specify in advance, should always be developed using an exploratory programming approach. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 18 4.1.3 Component-based software engineering (CBSE) Based on systematic reuse where systems are integrated from existing components or COTS (Commercial-off-the-shelf) systems. This approach is becoming increasingly used as component standards have emerged. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 19 4.1.3 Process stages 1. Component analysis; • 2. Given the requirements specification, a search is made for components to implement that specification. Usually, there is no exact match, and the components that may be used only provide some of the functionality required. Requirements modification; • ©Ian Sommerville 2006 During this stage, the requirements are analysed using information about the components that have been discovered. They are then modified to reflect (consider) the available components. Where modifications are impossible, the component analysis activity may be reentered to search for alternative solutions. Software Engineering, 8th edition. Chapter 4 Slide 20 3. System design with reuse; • During this phase, the framework of the system is designed or an existing framework is reused. The designers take into account the components that are reused and organize the framework to cater (supply) to this. Some new software may have to be designed if reusable components are not available. 4. Development and integration. • ©Ian Sommerville 2006 Software that cannot be externally procured is developed, and the components and COTS systems are integrated to create the new system. System integration, in this model, may be part of the development process rather than a separate activity. Software Engineering, 8th edition. Chapter 4 Slide 21 Reuse-oriented development Figure 4.3 component-based software engineering CBSE : Component-based software engineering ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 22 Advantage and short-point of Componentbased software engineering Has obvious advantage of reducing the amount of software to be developed and so reducing cost and risks. Leads to faster delivery of the software. However, requirements compromises are inevitable and this may lead to a system that does not meet the real needs of users. Furthermore, some control over the system evolution is lost as new versions of the reusable components are not under the control of the organization using them.70 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 23 4.2 Process iteration Change is inevitable in all large software projects. The system requirements change as the business procuring the system responds to external pressures. Management priorities change. As new technologies become available designs and implementation change. This means that the software process is not a oneoff process; rather, the process activities are regularly repeated as the system is reworked in response to change requests. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 24 4.2 Two (related) approaches • Incremental delivery: • The software specification, design and implementation are broken down into a series of increments that are each developed in turn. • Spiral development: • The development of the system spirals outwards from an initial outline through to the final developed system. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 25 4.2 The essence of iterative processes is that the specification is developed in the same time with the software developed. However, this conflicts with the procurement model of many organizations where the complete system specification is part of the system development contract. In the incremental approach, there is no complete system specification until the final increment is specified. So which large customers such as government agencies may find difficult to accommodate. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 26 4.2.1 Incremental delivery The waterfall model of development requires customers for a system to commit (make sure) to a set of requirements before design begins and the designer to commit to particular design strategies before implementation. An evolutionary approach to development allows requirements and design decisions to be delayed but also leads to software that may be poorly structured and difficult to understand and maintain. Incremental delivery is an in-between approach that combines the advantages of these models. 71 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 27 In the incremental development process Customer identify, in outline, the services should be provided in the system. They identify which of the services are most important and which are least important to them. A number of delivery increments are then defined, with each increment providing a sub-set of the system functionality. The allocation (assign) of services to increments depends on the service priority with the highest priority services delivered first. 72 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 28 Incremental development ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 29 4.2.1 Incremental development advantages 1. 2. Customer do not have to wait until the entire system is delivered before they can gain value from it, the first increment satisfies their most critical requirements so they can use the software immediately. Customer can use the early increments as prototypes and gain experience that informs their requirements for later system increments. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 30 3. 4. There is a lower risk of overall project failure. Although problems may be encountered in some increments, it is likely that most of them will be successfully delivered to the customer. As the highest priority services are delivered first, and later increments are integrated with them, it is inevitable that the most important system services receive the most testing. This means that customers are less likely to encounter software failures in the most important parts of the system. 72 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 31 Incremental delivery problems Should be relatively small ( no more than 20,000 lines of code ) Each increment should deliver some system functionality. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 32 4.2.2 Spiral development Process is represented as a spiral rather than as a sequence of activities with backtracking. Each loop in the spiral represents a phase in the process. No fixed phases such as specification or design loops in the spiral are chosen depending on what is required. Thus the innermost loop might be concerned with system feasibility (practicability), the next loop with requirements definition, the next loop may with system designed. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 33 Spiral model of the software process ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 34 Spiral model sectors Each loop in the spiral is split into four sectors: 1. Objective setting Specific objectives for that phase are defined. Constraints on the process and the product are identified and a detailed management plan is drawn up. Project risks are identified. Alternative strategies, depending on these risks, may be planned. 2. Risk assessment and reduction (reduce) For each of the identified project risks, a detailed analysis is carried out. Steps are taken to reduce the risk. For example, if there is risk that the requirements are inappropriate, a prototype system may be developed. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 35 3. 4. Development and validation • After risk evaluation, a development model for the system is chosen. • If safety risks are the main consideration, development based on Formal Transformations may be the most appropriate. • If the main identified risk is sub-system integration then Waterfall model may be the most appropriate development model. Planning • The project is reviewed and the next phase of the spiral is planned. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 36 Conclusion of Spiral development The main difference between the spiral model and other software process models is the explicit recognize of risk in the spiral model. For example, if the intention is to use a new programming language, a risk is that the available compilers are unreliable or do not produce sufficiently efficient object code. So risk in project problems such as schedule and cost overrun so risk minimization is very important project management activity. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 37 A cycle of the spiral begins by determine clear objectives. such as performance and functionality. Alternative ways of achieving these objectives and the constraints imposed on each of the loop. Each alternative is assessed or evaluate. To resolve these risks by information-gathering activities such as more detailed analysis, prototyping and simulation. Once risks have been assessed, some development is carried out, followed by a planning activity for the next phase of the process. 74 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 38 4.3 Process activities 1. 2. 3. 4. Software specification Software design and implementation Software validation Software evolution ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 39 4.3.1 Software specification The process of establishing what services are required and the constraints on the system’s operation and development. Requirements engineering process 1. Feasibility study; • ©Ian Sommerville 2006 An estimate is made of whether the identified user needs may be satisfied using current software and hardware technologies, and whether the proposed system will be cost-effective from a business point of view and within existing budgetary constraints. Software Engineering, 8th edition. Chapter 4 Slide 40 2. Requirements elicitation (draw out) and analysis; • 3. Requirements specification; • 4. This is a process of deriving the system requirements through observation of existing systems, discussions with potential users and customer, task analysis and so on. This activity will translating the information gathered during the analysis activity into a set of requirement documents. Requirements validation. • ©Ian Sommerville 2006 This activity checks the requirements for consistency and completeness .in this stage, error in the requirements document may occur, it must be modified to correct these problems. Software Engineering, 8th edition. Chapter 4 Slide 41 The requirements engineering process ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 42 4.3.2 Software design and implementation The process of converting the system specification into an executable system. Software design • Implementation • Design a software structure that realizes the specification; Translate this structure into an executable program; The activities of design and implementation are closely related and may be interleaved. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 43 Design process activities 1. Architectural design 2. Abstract specification 3. The sub-system making up the system and their relationships are identified and documented. For each sub-system, under its services an abstract specification and the constraints which will be produced. Interface design For each sub-system, its interface with other sub-systems is designed and documented. This interface specification must be clear, ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 44 4. Component design • 5. Data structure design • 6. Service are assigned to components and interface of these components are designed. To designed a detail and specified Data structure for the implementation system. Algorithm design • Detail designed and specified the algorithms that used to provide service. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 45 The software design process ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 46 Structured methods Structured methods is approach that rely on producing graphical models of the system, include a design process model,notations to represent the design, report formats, rules and design guidelines, it may support some or all of the following models of a system: ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 47 Structured methods Possible models 1. Object model; that show the object classes used in the system and their dependencies. 2. Sequence model; show how objects in the system interact when the system is executing. 3. State transition model; shows system states and the triggers condition for the transitions from one state to another. 4. Structural model; to documented the system components and their aggregations. 5. Data-flow model. to describe the model when data transformation is processed. 78 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 48 Programming and debugging Translating a design into a program and removing errors from that program. Programming is a personal activity - there is no generic programming process. Programmers carry out some program testing to discover faults in the program and remove these faults in the debugging process. 79 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 49 The debugging process ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 50 4.3.3 Software validation Verification and validation (V & V) is intended to show that a system conforms (obedient) to its specification and meets the requirements of the system customer. Involves checking and review processes and system testing. System testing involves executing the system with test cases that are derived (gain) from the specification of the real data to be processed by the system. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 51 The testing process Figure 4.9 the testing process ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 52 Testing stages Component or unit testing • Individual components are tested independently; • Components may be simple entities such as functions or objects class. or may be related groupings of these entities. System testing • The components are integrated to make up the system. • This process is concerned with finding errors that result from unanticipated (unexpected) interactions between component interface problems. • It is also concerned with validating that the system meets its functional and non-functional requirements. • For large systems, may be a multistage process where components are integrated to form sub-systems that are individually test before they are themselves integrated to form the final system. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 53 Testing stages Acceptance testing • Testing with customer (real) data to check that the system meets the customer’s needs. • It may reveal errors and omissions in the system requirements definition because the real data exercise the system in different ways from the test data. 80 Usually, system development and testing are interleave. Figure 4.10, explain how to connect with testing plain between the development and testing ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 54 Testing phases Figure 4.10 Testing Phases ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 55 Category of Acceptance Testing Alpha testing: custom system are developed for a single client. The Alpha testing process continues until the system developer and client agree that the delivered system is an acceptable implementation of the system requirements. Beta testing: when a system is to be marketed as a software product, this testing process called Beta testing, it involves delivering a system to a number of potential customers who agree to use that system. Then report problems to the system developers. This exposes the product to real use and detects errors that may not have been anticipated by the system builders. 81 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 56 4.3.4 Software evolution Once a decision has been made to procure hardware, it is very expensive to make changes to the hardware design, however change can be made to software at any time during or after the system development. As requirements change through changing business circumstances, the software that supports the business must also evolve and change. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 57 Distinction between development and evolution (maintenance) is becoming increasingly irrelevant (unrelated) . Fewer and fewer software systems are now completely new systems, It is more realistic to think of software engineering as an evolutionary process. 82 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 58 System evolution Figure 4.11 System evolution ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 59 4.4 The Rational Unified Process (RUP) A modern process model derived from the work on the UML (Unified Modeling Language) and associated process. Normally described from 3 perspectives (viewpoint) • • • A dynamic perspective that shows phases over time; A static perspective that shows process activities; A practice perspective that suggests good practice. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 60 RUP phases RUP is a phased model that identifies four discrete (separated) phases in the software process. However, unlike the waterfall model where phases are equated with process activities, the phase of RUP are more closely related to business rather than technical concerns. Include four stage as followed : (Dynamic view) 1. ©Ian Sommerville 2006 Inception • Establish the business case for the system. You should identify all external entities (people and system) that will interact with the system and define these interactions. You should use this information to assess the contribution that the system makes to the business. In case the contribution is minor then the project may be cancelled. Software Engineering, 8th edition. Chapter 4 Slide 61 Dynamic view 2. Elaboration • • • • Toe goals is Develop an understanding of the problem domain Establish an architecture framework for the system Identify key project risks when develop project plan When completion of this phase, you have 3. Requirements model for the system (UML are specified) Architectural description and software development plan Construction • • • In this phase is essentially concerned System design, programming and testing. Some systems are developed in parallel and integrated during this phase. When completion, you should have a working software system and associated documentation that is ready for delivery to users. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 62 4. Transition • • ©Ian Sommerville 2006 Is final phase, concerned with moving the system from the development environment to the user community and making it work in a real environment. This is a expensive and sometimes problematic activity, but is ignored in the most software process models. 83 Software Engineering, 8th edition. Chapter 4 Slide 63 Dynamic view RUP is Iteration activities and supported in two ways. • • Each phase may be enacted (act) in an interative way with the results (complete) developed incrementally. The whole set of phase may also be enacted an interative way incrementally too, as show by the looping arrow from Tasnsition to Inception in followed next Figure 4.12 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 64 RUP phase model P has e i terati on Incepti on ©Ian Sommerville 2006 Elaborati on Cons tructi on Software Engineering, 8th edition. Chapter 4 Transi tion Slide 65 Workflows in the RUP description The static view of the RUP focuses on the activities during the development process. These are called workflows in RUP description • • • There are six core process workflows identified in the process and three core supporting workflows. The RUP has been designed in conjunction with the UML (Unified Modeling Language) The workflows show in followed figure 4.13 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 66 Static workflows (static view) W ork flow Descri ption Business modelling The business processes are modelled using business use cases. Requirement s Actors who interact with the system are ident ified and use cases are developed to model the system requirement s. Analysis and design A design model is created and documented using architectural models, component models, object models and sequ ence models. Implementat ion The components in the system are implemented and structured into implementat ion sub-systems. Automat ic code generat ion from design models helps accelerate this process. Test Test ing is an iterat ive process that is carried out in conjunct ion with implementat ion. System test ing follows the completion of the implementat ion. Deployment A product release is created, distributed to users and installed in their workplace. Configurat ion and change management This supporting workflow managed changes to t he system (see Chapter 29). Project management This supporting workflow manages the system development (see Chapter 5). Environment This workflow is concerned with making appropriate software tools available to the software development team. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 67 RUP describes good SE practice Six fundamental best practices are recommended: 1. Develop software iteratively • • 2. Plan increments of the system based on customer requirement Develop and deliver the highest priority system features early in the development process. Manage requirements • • • Explicitly the customer’s requirements document keep track of change the requirements Analyse the impact of changes on the system before accepting them. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 68 3. Use component-based architectures • 4. Visually model software • 5. Use graphical UML models to show static and dynamic view of the software system. Verify software quality • 6. Transfer the system structure into components Ensure that the software meets the organization quality standards. Control changes to software • Manage changes to the software using a change management system and configuration management procedures and tools 84 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 69 4.5 Computer-aided software engineering (CASE) Computer-aided software engineering (CASE) is software to support software development and evolution processes activities. The activities include such requirements engineering, design, program development and testing. So case tool include design editors, data dictionaries, compilers, debuggers, system building tools and so on. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 70 Case technology provides software process support by automating some process activities and by providing information about the software that is being developed. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 71 Example of Activity that can be automated : 1. Graphical editors for system model development; 2. Data dictionary that holds information about the entities and relations in a design; 3. Generation of user interfaces from a graphical interface description that is created interactively by the user; 4. Program debugging through the provision of information about an executing program; 5. Automated translators to generate new versions of a program from an old version of a programming, language such as COBOL. 85 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 72 Case technology Case technology has led to significant improvements in the software process, in fact, the improvements have been achieved 40% saved. However, it did not generate huge savings in software process costs. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 73 CASE are limited by two factor : 1. Software engineering requires creative thought • • existing CASE system can easily automate routine activities But try to use artificial intelligence technology to provide support for design have not been successful. 2. Software engineering is a team activity and, for large projects, much time is spent in team interactions. CASE technology does not really support these. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 74 CASE technology is now mature In the market the CASE tools and workbenches are available from a wide range of suppliers. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 75 CASE classification Classification helps us understand the different types of CASE tools and their support for process activities. 1. Functional perspective • 2. Process perspective • 3. Tools are classified according to their specific function. Tools are classified according to process activities that are supported. Integration perspective • Tools are classified according to their organisation into integrated units. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 76 Figure 4.14 In figure 4.14, according to functionality to classified the case tool. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 77 Functional tool classification Tool type Examples Planning tools PERT tools, estimation tools, spreadsheets Editing tools Text editors, diagram editors, word processors Change ma nagement tools Requirements traceability tools, change control systems Configuration management tools Version management systems, system b uilding tools Prototyping tools Very high-level languages, user interface generators Method-support tools Design editors, data dictionaries, code generators Language-processing tools Compilers, interpreters Program analysis tools Cross reference generators, static analysers, dynamic analysers Testing tools Test data generators, file comp arators Debugging tools Interactive debugging systems Documentation tools Page layout programs , ima ge editors Re-engineering tools Cross-reference systems , program re-structuring systems Figure 4.14 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 78 Figure 4.15 It is the other way to classified to show the each step of development when use CASE tools. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 79 Activity-based tool classification R e-eng in eerin g to ols Tes tin g to ols Deb ug g in g too ls Prog ram an aly sis to ol s Lang u ag e-p ro ces sin g to ol s Meth o d s up po r t too ls Prot oty p ing to ol s C on fig urati on man ag emen t to ol s C hang e man ag emen t t oo ls Documen tat io n t oo ls Edit ing t oo ls Plan ni ng to o ls Figure 4.15 ©Ian Sommerville 2006 Specifi catio n Desi gn Impl emen tat io n Software Engineering, 8th edition. Chapter 4 Verificat ion an d Val idatio n Slide 80 CASE integration The other classified way for CASE is depending on it can support the how wide of software process Tools • Support individual process tasks such as design consistency checking, text editing, etc. Workbenches • Support a process phase such as specification or design, Normally include a number of integrated tools. Environments • Support all or a substantial part of an entire software process. Normally include several integrated workbenches. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 81 Tools, workbenches, environments CASE tech no lo g y Wo rk ben ch es To ols Editors Compilers File co mpar ato rs Analy sis an d d esign Multi-metho d wo rk ben ch es ©Ian Sommerville 2006 In teg rated en v iro nmen ts Pro grammin g Sing le-meth od wo rk ben ch es Env iro nmen ts Pro ces s-cen tr ed en v iro nmen ts Tes tin g Gen er al-pu rp os e wo rk ben ch es Lang u ag e-s pecific wo rk ben ch es Software Engineering, 8th edition. Chapter 4 Slide 82 Key points 1. 2. 3. 4. 5. Software processes are the activities involved in producing and evolving a software system. Software process models are abstract representations of these processes. General activities are specification, design and implementation, validation and evolution. Generic process models describe the organisation of software processes. Examples include the waterfall model, evolutionary development and componentbased software engineering. Iterative process models describe the software process as a cycle of activities. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 83 Key points 6. 7. 8. 9. Requirements engineering is the process of developing a software specification. Design and implementation processes transform the specification to an executable program. Validation involves checking that the system meets to its specification and user needs. Evolution is concerned with modifying existing system to meet new requirements. This is becoming the normal approach to software development for small and medium-sized systems. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 84 More informations Computer Aided Software Engineering (CASE tool) Computer Aided Software Engineering tools offer many benefits for developers building large-scale systems. As spiralling user requirements continue to drive system complexity to new levels, enabling us to abstract away from the entanglement of source code, to a level where architecture and design become more apparent and easier to understand and modify. The larger a project, the more important it is to use a case tool in software development. As developers interact with portions of a system designed by their colleagues, they must quickly seek a subset of classes and methods and assimilate an understanding of how to interface with them. In a similar sense, management must be able, in a timely fashion and from a high level, to look at a representation of a design and understand what's going on. For these reasons, CASE tools coupled with methodologies give us a way of representing systems too complex to comprehend in their underlying source code or schema-based form. Select Business Solutions has been developing and building these CASE tools since the late 1980s, as well as developing processes and methods to support high quality application development. Solution Breakdown Select Solution Factory a Business Process Modeling - BPM, a Unified Modeling Language - UML modeling tool, and Data Modeling CASE Tool Select Scope Manager a eXtreme Programming and Agile Modeling CASE Tool Select SSADM a Structured Systems Analysis and Design Methodology CASE Tool Select Yourdon a real time CASE Tool supporting the Yourdon, Hatley-Pirbhai and Ward-Mellor real-time extensions. 10. 11. The Rational Unified Process is a modern generic process model that is organised into phases (inception, elaboration, construction and transition “Dynamic perspective”) but that separates activities (requirements, analysis and design, etc. ”Static perspective”) CASE technology provides automated supports for software process. CASE tools support individual process activities; workbenches support a set of related activities; environments support all or most software process activities. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 86 End week 6 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 87 Week 8 testing Could you explain how many Software process models in this chapter, and detail explain them? ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 88 Ans p65 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 89 Exercises 4.1 giving reasons for your answer based on the type of system being developed, suggest the most appropriate generic software process model that might be used as a basis for managing the development of the following systems: • A system to control anti-lock braking in a car. • Anti-lock braking system: Safety-critical system so method based on formal transformations with proofs of equivalence between each stage, therefore waterfall model is appropriate. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 90 • A virtual reality system to support software maintenance : • Virtual reality system, the system whose requirements cannot be predicted in advance so exploratory programming model is appropriate. (4.1.2) 68 • A university accounting system that replaces an existing system : • System whose requirements should be stable because of existing system therefore waterfall model is appropriate. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 91 • An interactive system that allows railway passengers to find train times from terminals installed in stations. • System with a complex user interface but which must be stable and reliable. Should be based on throwaway prototyping to find requirements then either incremental development or waterfall model. (4.1.2) 68 ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 92 Exercises 4.2 Explain why programs that are developed using evolutionary development are likely to be difficult to maintain. • From an engineering and management perspective, the evolutionary approach has two problems: • The process is not visible: Managers need regular deliverables to measure progress. If systems are developed quickly, it is not cost-effective to produce documents that reflect every version of the system. • Systems are often poorly structured: continual change tends to corrupt the software structure. Incorporating software changes becomes increasingly difficult and costly. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 93 Exercises 4.5 Suggest why it is important to make a distinction between developing the user requirements and developing system requirements in the requirements engineering process. • • User requirements (high-level abstract requirements): are statement, in a natural language plus diagrams, of what services the system is expected to provide and the constraints under which it must operate. System requirements (detailed description of what the system should do, sometimes call a functional specification): set out the system’s functions, services and operational constraints in detail. The system requirements document should be precise (exact). It should define exactly what is to be implemented. It may be part of the contract between the system buyer and the software developers. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 94 Exercises 4.6 Describe the main activities in the software design process and the outputs of these activities. Using a diagram, show possible relationships between the outputs of these activities. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 95 Answer 4.6 Architectural design 2. Abstract specification 3. Interface design 4. Component design 5. Data structure design 6. Algorithm design The diagram as show on page 77, 4.3.2 figure 4.7 1. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 96 Exercises 4.8 Design a process model for running system tests and recording their results. No Running program Recording result Error occur System stop Yes Input new data for test ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 97 Exercises 4.9 Explain why a software system that is used in realworld environment must change or become progressively less useful. • Systems must change because as they are installed in an environment the environment adapts to them and this adaptation naturally generates new/different system requirements. Furthermore, the system's environment is dynamic and constantly generates new requirements as a consequence (result) of changes to the business, business goals and business policies. Unless the system is adapted to reflect these requirements, its facilities will become out-of-step with the facilities needed to support the business and, hence, it will become less useful ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 98 Exercises 4.10 Suggest how a CASE technology classification scheme may be helpful to managers responsible for CASE system procurement • A classification scheme can be helpful for system procurement because it helps identify gaps in the CASE tool coverage in an organization. Procurement may be aimed at filling these gaps. Alternatively, a classification scheme may be used to find tools which support a range of activities - these may represent the most cost effective purchases if funds are limited. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 99 Exercises 4.12 Historically, the introduction of technology has caused profound (deep) changes in the labour market and, temporarily at least, displaced (replace) people from jobs. Discuss whether the introduction of advanced CASE technology is likely to have the same consequences for software engineers. If you don’t think it will, explain why not. If you think that it will reduce job opportunities, is it ethical (moral) for the engineers affected to passively (inactive) or actively resist the introduction of this technology? ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 100 Ans: • • There are obviously (easy understand) different views here and a lot depends on the development of CASE technology in the future. A major difference between the introduction of CASE technology and, for example, the introduction of CAD technology which made draftsmen redundant, is that the routine elements in the design and development of software are relatively minor parts of the whole development process. Therefore, savings are not that large. However, if AI (Artificial Intelligent) technology develops so that truly intelligent tools can be developed than, obviously, this situation will change. By the way, new technology will change some job to become redundant, but in the same time, it will create new opportunity and new jobs for the new century. ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 101 End ©Ian Sommerville 2006 Software Engineering, 8th edition. Chapter 4 Slide 102