2Objectives To introduce software process models To describe three generic process models and when they may be usedTo describe outline process models for requirements engineering, software development, testing and evolutionTo explain the Rational Unified Process modelTo introduce CASE technology to support software process activities
3Topics covered 4.1 Software process models 4.2 Process iteration 4.3 Process activities4.4 The Rational Unified Process4.5 Computer-aided software engineering
4What 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.
5The 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
64.1 The software processA 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.
7Generic software process models The waterfall modelSeparate 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.Evolutionary developmentThis 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 engineeringThe system is assembled from existing components, the focuses on integrating these components into a system rather than developing them from scratch.
8These 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.
94.1.1 Waterfall modelFigure 4.1 the software life cycle
104.1.1 Waterfall model phases Requirements analysis and definitionThe system’s services, constraints and goals are established by consultation with system users. They are then defined a detail system specification.System and software designSystems 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 testingSoftware design is realized (accomplish) as a set of programs or program units. Unit testing involves verifying that each unit meets its specification.
11Waterfall model phases Integration and system testingIndividual 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 maintenanceThis 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
12Waterfall 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.
134.1.2 Evolutionary development There are two fundamental types of evolutionary development:Exploratory developmentObjective is to work with customers and to evolve a final system from an initial outline specification. Should start with well-understood requirements and add new features as proposed by the customer.Throw-away prototypingObjective is to understand the system requirements. Should start with poorly understood requirements to clarify what is really needed.
144.1.2 Evolutionary development Figure 4.2 Evolutionary development
154.1.2An 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.
164.1.2 Evolutionary development ProblemsLack 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.
17For small and medium-sized systems (up to 500,000 lines of code) 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.
18For 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 re-implement 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.
194.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.
204.1.3 Process stages Component analysis; Requirements modification; 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;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 re-entered to search for alternative solutions.
21System 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.Development and integration.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.
23Advantage and short-point of Component-based 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
244.2 Process iterationChange 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 one-off process; rather, the process activities are regularly repeated as the system is reworked in response to change requests.
254.2 Two (related) approaches Incremental delivery: Spiral development: 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.
264.2The 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.
274.2.1 Incremental deliveryThe 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
28In 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
304.2.1 Incremental development advantages 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.
31There is a lower risk of overall project failure 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
32Incremental delivery problems Should be relatively small ( no more than 20,000 lines of code )Each increment should deliver some system functionality.
334.2.2 Spiral developmentProcess 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.
35Spiral model sectorsEach loop in the spiral is split into four sectors:Objective settingSpecific 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.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.
36Development 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.PlanningThe project is reviewed and the next phase of the spiral is planned.
37Conclusion 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.
38A cycle of the spiral begins by determine clear objectives 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
394.3 Process activities Software specification Software design and implementationSoftware validationSoftware evolution
404.3.1 Software specification The process of establishing what services are required and the constraints on the system’s operation and development.Requirements engineering processFeasibility study;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.
41Requirements elicitation (draw out) and analysis; 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.Requirements specification;This activity will translating the information gathered during the analysis activity into a set of requirement documents.Requirements validation.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.
434.3.2 Software design and implementation The process of converting the system specification into an executable system.Software designDesign a software structure that realizes the specification;ImplementationTranslate this structure into an executable program;The activities of design and implementation are closely related and may be interleaved.
44Design process activities Architectural designThe sub-system making up the system and their relationships are identified and documented.Abstract specificationFor each sub-system, under its services an abstract specification and the constraints which will be produced.Interface designFor each sub-system, its interface with other sub-systems is designed and documented. This interface specification must be clear,
45Component design Data structure design Algorithm design Service are assigned to components and interface of these components are designed.Data structure designTo designed a detail and specified Data structure for the implementation system.Algorithm designDetail designed and specified the algorithms that used to provide service.
47Structured methodsStructured 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:
48Structured methods Possible models Object model; that show the object classes used in the system and their dependencies.Sequence model; show how objects in the system interact when the system is executing.State transition model; shows system states and the triggers condition for the transitions from one state to another.Structural model; to documented the system components and their aggregations.Data-flow model. to describe the model when data transformation is processed. 78
49Programming 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
514.3.3 Software validationVerification 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.
52The testing processFigure 4.9 the testing process
53Testing 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 testingThe 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.
54Testing 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. 80Usually, system development and testing are interleave.Figure 4.10, explain how to connect with testing plain between the development and testing
56Category 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
574.3.4 Software evolutionOnce 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.
58Distinction 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
604.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.
61RUP phasesRUP 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)InceptionEstablish 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.
62Dynamic view Elaboration Construction Toe goals is Develop an understanding of the problem domainEstablish an architecture framework for the systemIdentify key project risks when develop project planWhen completion of this phase, you haveRequirements model for the system (UML are specified)Architectural description and software development planConstructionIn 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.
63TransitionIs 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
64Dynamic 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
66Workflows in the RUP description The static view of the RUP focuses on the activities during the development process.These are called workflows in RUP descriptionThere 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
68RUP describes good SE practice Six fundamental best practices are recommended:Develop software iterativelyPlan increments of the system based on customer requirementDevelop and deliver the highest priority system features early in the development process.Manage requirementsExplicitly the customer’s requirements documentkeep track of change the requirementsAnalyse the impact of changes on the system before accepting them.
69Use component-based architectures Visually model software Transfer the system structure into componentsVisually model softwareUse graphical UML models to show static and dynamic view of the software system.Verify software qualityEnsure that the software meets the organization quality standards.Control changes to softwareManage changes to the software using a change management system and configuration management procedures and tools 84
704.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.
71Case technology provides software process support by automating some process activities and by providing information about the software that is being developed.
72Example of Activity that can be automated : Graphical editors for system model development;Data dictionary that holds information about the entities and relations in a design;Generation of user interfaces from a graphical interface description that is created interactively by the user;Program debugging through the provision of information about an executing program;Automated translators to generate new versions of a program from an old version of a programming, language such as COBOL. 85
73Case technologyCase 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.
74CASE are limited by two factor : Software engineering requires creative thoughtexisting CASE system can easily automate routine activitiesBut try to use artificial intelligence technology to provide support for design have not been successful.Software engineering is a team activity and, for large projects, much time is spent in team interactions. CASE technology does not really support these.
75CASE technology is now mature In the market the CASE tools and workbenches are available from a wide range of suppliers.
76CASE classificationClassification helps us understand the different types of CASE tools and their support for process activities.Functional perspectiveTools are classified according to their specific function.Process perspectiveTools are classified according to process activities that are supported.Integration perspectiveTools are classified according to their organisation into integrated units.
77Figure 4.14In figure 4.14, according to functionality to classified the case tool.
81CASE integrationThe other classified way for CASE is depending on it can support the how wide of software processToolsSupport individual process tasks such as design consistency checking, text editing, etc.WorkbenchesSupport a process phase such as specification or design, Normally include a number of integrated tools.EnvironmentsSupport all or a substantial part of an entire software process. Normally include several integrated workbenches.
83Key pointsSoftware 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 component-based software engineering.Iterative process models describe the software process as a cycle of activities.
84Key pointsRequirements 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.
85More informationsComputer 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.
86The 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.
90Exercises 4.1giving 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.
91A 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) 68A university accounting system that replaces an existing system :System whose requirements should be stable because of existing system therefore waterfall model is appropriate.
92An 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 throw-away prototyping to find requirements then either incremental development or waterfall model. (4.1.2) 68
93Exercises 4.2Explain 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.
94Exercises 4.5Suggest 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.
95Exercises 4.6Describe 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.
96Answer 4.6 Architectural design Abstract specification Interface designComponent designData structure designAlgorithm designThe diagram as show on page 77, figure 4.7
97Exercises 4.8Design a process model for running system tests and recording their results.NoSystem stopRunning programRecording resultError occurYesInput new data for test
98Exercises 4.9Explain why a software system that is used in real-world 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
99Exercises 4.10Suggest how a CASE technology classification scheme may be helpful to managers responsible for CASE system procurementA 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.
100Exercises 4.12Historically, 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?
101Ans: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.