Ch2 SW Processes.pptx

Full Transcript

Chapter 2 – Software Engineering Processes 30/10/2014 Chapter 2 Software Processes 1 Topics covered  Software process models  Process activities  Coping with change 30/10/2014 Chapter 2 Software Processes 2 The software engineering process  A structured set of relat...

Chapter 2 – Software Engineering Processes 30/10/2014 Chapter 2 Software Processes 1 Topics covered  Software process models  Process activities  Coping with change 30/10/2014 Chapter 2 Software Processes 2 The software engineering process  A structured set of related “complex” activities that lead to the production of a software system.  No universal SE method/process/model  Many different software processes, but all involve:  Specification – defining what the system should do;  Design and implementation – defining the organization of the system and implementing the system;  Validation – checking that it does what the customer wants;  Evolution – changing the system in response to changing customer needs. 30/10/2014 Chapter 2 Software Processes 3 Software process descriptions  When we describe and discuss processes, we usually talk about the activities in these processes such as specifying a data model, designing a user interface, etc. and the ordering of these activities.  Process descriptions may also include:  Products (Deliverables), which are the outcomes of a process activity;  Roles, which reflect the responsibilities of the people involved in the process;  Pre- and post-conditions, which are statements that are true before and after a process activity has been enacted or a product produced. 30/10/2014 Chapter 2 Software Processes 4 Factors in Choosing a Software Process  Customer involvement  Stable requirements  Team size / proximity  Developer experience  Familiarity with technology  Familiarity with domain  Severity of impact of incorrect analysis  Anticipated changes in technology 30/10/2014 Chapter 2 Software Processes 5 Plan-driven and agile processes  Plan-driven processes are processes where all of the process activities are planned in advance and progress is measured against this plan.  In agile processes, planning is incremental and it is easier to change the process to reflect changing customer requirements.  In practice, most practical processes include elements of both plan-driven and agile approaches.  There are no right or wrong software processes. 30/10/2014 Chapter 2 Software Processes 6 Software process models (Software Development Life Cycles: SDLC) 30/10/2014 Chapter 2 Software Processes 7 2.1 Software process models  The waterfall model  Plan-driven model + Separate and distinct phases of specification and development  Incremental/iterative model  Specification, development and validation are interleaved. May be plan-driven or agile.  Integration and configuration  The system is assembled from existing configurable components. May be plan-driven or agile. In practice, most large systems are developed using a process that incorporates elements from all of these models. 30/10/2014 Chapter 2 Software Processes 8 2.1.1 The waterfall model A sequential development approach in which development is seen as flowing steadily downwards (like a waterfall) through several phases 30/10/2014 Chapter 2 Software Processes 9 Waterfall model phases  There are separate identified phases in the waterfall model:  Requirements analysis and definition  System and software design  Implementation and unit testing  Integration and system testing  Operation and maintenance  The main drawback of the waterfall model is the difficulty of accommodating change after the process is underway. In principle, a phase has to be complete before moving onto the next phase. 30/10/2014 Chapter 2 Software Processes 10 Waterfall model problems  Inflexible partitioning of the project into distinct stages makes it difficult to respond to requirements changes.  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.  In those circumstances, the plan-driven nature of the waterfall model helps coordinate the work.  Formal system development: a variant of the waterfall model (B method) Chapter 2 Software Processes 30/10/2014 11 2.1.2 Incremental development Idea: develop an initial implementation, get feedback from users and others and evolve the software through several versions 30/10/2014 Chapter 2 Software Processes 12 Incremental development benefits  Better than waterfall model for most business systems  The cost of accommodating changing customer requirements is reduced.  The amount of analysis and documentation that has to be redone is much less than is required with the waterfall model.  It is easier to get customer feedback on the development work that has been done.  More rapid delivery and deployment of useful software to the customer is possible.  Customers are able to use and gain value from the software earlier than is possible with a waterfall process. 30/10/2014 Chapter 2 Software Processes 13 Incremental development 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.  System structure tends to degrade as new increments are added.  Unless time and money is spent on refactoring to improve the software, regular change tends to corrupt its structure. Incorporating further software changes becomes increasingly difficult and costly.  Not appropriate for large complex systems involving different teams 30/10/2014 Chapter 2 Software Processes 14 2.1.3 Integration and configuration  Based on software reuse where systems are integrated from existing components or application systems (sometimes called COTS -Commercial-off-the-shelf) systems).  Reused elements may be configured to adapt their behaviour and functionality to a user’s requirements  Reuse is now the standard approach for building many types of business systems  Reuse covered in more depth in Chapter 15. 30/10/2014 Chapter 2 Software Processes 15 Types of reusable software  Stand-alone application systems (sometimes called COTS) that are configured for use in a particular environment.  Collections of objects that are developed as a package to be integrated with a component framework such as.NET or J2EE.  Web services that are developed according to service standards and which are available for remote invocation. 30/10/2014 Chapter 2 Software Processes 16 Reuse-oriented software engineering 30/10/2014 Chapter 2 Software Processes 17 Key process stages  Requirements specification  Software discovery and evaluation  Search for components and systems that provide the required functionality. Candidate components are evaluated.  Requirements refinement  Based on information about the reusable components and applications  Application system configuration  If an off-the-shelf application system is available and needs configuration  Component adaptation and integration 30/10/2014 Chapter 2 Software Processes 18 Advantages and disadvantages  Reduced costs and risks as less software is developed from scratch  Faster delivery and deployment of system  But requirements compromises are inevitable so system may not meet real needs of users  Loss of control over evolution of reused system elements 30/10/2014 Chapter 2 Software Processes 19 Process activities 30/10/2014 Chapter 2 Software Processes 20 2.2 Process activities  Real software processes are inter-leaved sequences of technical, collaborative and managerial activities with the overall goal of specifying, designing, implementing and testing a software system.  Processes are tool-supported (e.g. requirements management systems, design model editors, program editors, automated testing tools, …)  The four basic process activities are organized differently in different development processes.  For example, in the waterfall model, they are organized in sequence, whereas in incremental development they are interleaved. 30/10/2014 Chapter 2 Software Processes 21 2.2.1 Software specification (Requirements engineering) 30/10/2014 Chapter 2 Software Processes 22 2.2.1 Software specification (Requirements engineering)  The critical process of establishing what services are required from the system and identifying the constraints on the system’s operation and development.  Requirements engineering process activities:  Requirements elicitation and analysis What do the system stakeholders require or expect from the system?  Requirements specification Defining the elicited requirements in detail into a document.  Requirements validation Checking the validity of the requirements document.  Produces the requirements document (SRS: software requirements specification). 30/10/2014 Chapter 2 Software Processes 23 2.2.2 Software design and implementation  The process of converting the system specification into an executable system.  Software design  Design a software structure that realizes the specification;  Implementation  Translate this structure into an executable program;  The activities of design and implementation are closely related and may be inter-leaved. 30/10/2014 Chapter 2 Software Processes 24 A general model of the design process 30/10/2014 Chapter 2 Software Processes 25 Design activities  Architectural design: where you identify the overall structure of the system, the principal components (subsystems or modules), their relationships and how they are distributed.  Database design: where you design the system data structures and how these are to be represented in a database.  Interface design: where you define the interfaces between system components.  Component selection and design: where you search for reusable components. If unavailable, you design how it will operate. 30/10/2014 Chapter 2 Software Processes 26 System implementation  The software is implemented either by developing a program or programs or by configuring an application system.  Design and implementation are interleaved activities for most types of software system.  Programming is an individual activity with no standard process.  Debugging is the activity of finding program faults and correcting these faults. 30/10/2014 Chapter 2 Software Processes 27 2.2.3 Software validation  Verification and validation (V & V) is intended to show that a system conforms 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 from the specification of the real data to be processed by the system.  Testing is the most commonly used V & V activity. 30/10/2014 Chapter 2 Software Processes 28 Stages of testing 30/10/2014 Chapter 2 Software Processes 29 Testing stages  Component testing  Individual components are tested independently by the software developers  Components may be functions or objects or coherent groupings of these entities.  System testing  Testing of the system as a whole. Testing of emergent properties is particularly important.  It shows that the system meets the requirements  Acceptance testing  Testing with real customer data to check that the system meets the customer’s needs. 30/10/2014 Chapter 2 Software Processes 30 2.2.4 Software evolution  Software is inherently flexible and can change.  As requirements change through changing business circumstances, the software that supports the business must also evolve and change.  Although there has been a split between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new. 30/10/2014 Chapter 2 Software Processes 31 System evolution 30/10/2014 Chapter 2 Software Processes 32 Coping with change 30/10/2014 Chapter 2 Software Processes 33 2.3 Coping with change  Change is inevitable in all large software projects.  Business changes lead to new and changed system requirements  New technologies open up new possibilities for improving implementations  Changing platforms require application changes  Change leads to rework so the costs of change include both rework (e.g. re-analyzing requirements) as well as the costs of implementing new functionalities  How to reduce the cost of rework?  2 approaches may be used 30/10/2014 Chapter 2 Software Processes 34 Reducing the costs of rework  Change anticipation; where the software process includes activities that can anticipate possible changes before significant rework is required.  For example, a prototype system may be developed to show some key features of the system to customers.  E.g. A waterfall model with prototyping  Change tolerance; where the process is designed so that changes can be easily made and at relatively low cost.  It involves some form of incremental development. Proposed changes may be implemented in increments that have not yet been developed. If this is impossible, then only a single increment (a small part of the system) may have to be altered to incorporate the change. 30/10/2014 Chapter 2 Software Processes 35 Two ways of coping with changing requirements  System prototyping, where a version of the system or part of the system is developed quickly to check the customer’s requirements and the feasibility of design decisions. This approach supports change anticipation.  Incremental delivery, where system increments are delivered to the customer for comment and experimentation. This supports both change avoidance and change tolerance. 30/10/2014 Chapter 2 Software Processes 36 2.3.1 Software prototyping  A prototype is an early version of a system used to demonstrate concepts, try out design options and find out problems.  A prototype can be used to help anticipate changes in:  The requirements engineering process to help with requirements elicitation and validation;  In design process to explore options and develop a UI for the system; 30/10/2014 Chapter 2 Software Processes 37 The process of prototype development 30/10/2014 Chapter 2 Software Processes 38 Prototype development  May be based on rapid prototyping languages (e.g. Ruby on Rails, Python, …) or tools  May involve leaving out functionality  Prototype should focus on areas of the product that are not well- understood;  Error checking and recovery may not be included in the prototype;  Focus on functional rather than non-functional requirements such as reliability and security 30/10/2014 Chapter 2 Software Processes 39 Throw-away prototypes  Prototypes should be discarded after development as they are not a good basis for a production system:  It may be impossible to tune the system to meet non-functional requirements;  Prototypes are normally undocumented;  The prototype structure is usually degraded through rapid change;  The prototype probably will not meet normal organisational quality standards. 30/10/2014 Chapter 2 Software Processes 40 2.3.2 Incremental delivery  Rather than deliver the system as a single delivery, the development and delivery is broken down into increments with each increment delivering part of the required functionality.  Unlike a prototype, an increment is a part of the final real system.  User requirements are prioritized and the highest priority requirements are included in early increments.  Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve. 30/10/2014 Chapter 2 Software Processes 41 Incremental development and delivery  Incremental development  Develop the system in increments and evaluate each increment before proceeding to the development of the next increment;  Normal approach used in agile methods;  Evaluation done by user/customer proxy.  Incremental delivery  Deploy an increment for use in end-user’s working environment;  More realistic evaluation about practical use of software;  Difficult to implement for replacement systems as increments have less functionality than the system being replaced. 30/10/2014 Chapter 2 Software Processes 42 Incremental delivery 30/10/2014 Chapter 2 Software Processes 43

Use Quizgecko on...
Browser
Browser