Presentation is loading. Please wait.

Presentation is loading. Please wait.

Software Engineering The Software Process. 2 Why Software Engineering?  Can you approach building software as building a bridge? Why? Why not?  How.

Similar presentations


Presentation on theme: "Software Engineering The Software Process. 2 Why Software Engineering?  Can you approach building software as building a bridge? Why? Why not?  How."— Presentation transcript:

1 Software Engineering The Software Process

2 2 Why Software Engineering?  Can you approach building software as building a bridge? Why? Why not?  How is software engineering like other engineering disciplines?

3 3 Software Process A structured set of activities required to develop a software system. Fundamental Assumption: Good processes lead to good software Good processes reduce risk

4 4 Risk Management What can go wrong in a software project? How can the risk be reduced?

5 5 The software process  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 it  Validation – checking that it does what the customer wants;  Evolution – changing the system in response to changing customer needs.

6 6 Software Process Models A software process model is an abstract representation of a process.  The waterfall model  Separate and distinct phases of specification and development (product focused)  Evolutionary development  Specification, development and validation are interleaved e.g. XP (Beck), increment driven  Component-based software engineering  The system is assembled from existing components.  Spiral (Boehm)  driven by risk analysis and mitigation

7 7 Use of the Models in Practice

8 8 The Waterfall Model Requirements Definition System and Software design Programming and Unit Testing Integration and System Testing Operation and Maintenance

9 9 Waterfall Model material adapted from Steve Easterbrook  View of development:  A process of stepwise refinement management  High-level management view  Problems:  Static view of requirements (ignores volatility)  Lack of user involvement once spec is written  Unrealistic separation of spec from design  Doesn’t accommodate prototyping, reuse requirements design code integrate test perceived need

10 10 Case Study  We participated in a group project where we designed and developed a cell phone game suitable for a cell phone using the programming language Java 2 Micro Edition.  We designed everything from the beginning with no game requirements given to us.  The process consists of defining system requirements, building the system, and testing the system. The goal of the project was to have a working game. We were restricted by time since this was a summer program

11 11 The Waterfall Model Requirements Definition System and Software design Programming and Unit Testing Integration and System Testing Operation and Maintenance

12 12 [1] Requirements Analysis and Definition The system's services, constraints and goals are established by consultation with system users. They are then defined in a manner that is understandable by both users and development staff. This phase can be divided into:  Feasibility study (often carried out separately)  Requirements analysis  Requirements definition  Requirements specification

13 13 Terminology  A requirement is a technical objective which is imposed upon the software, i.e., anything that might affect the kind of software that is produced  A requirement may be imposed by  the customer  the developer  the operating environment  The requirement must be documented  Requirements fall into two broad categories  functional  non-functional

14 14 Functional Requirements  Functional requirements are concerned with what the software must do  capabilities, services, or operations  Functional requirements are not concerned with how the software does things, i.e., they must be free of design considerations

15 15 Non-Functional Requirements  Non-functional requirements place restrictions on the range of acceptable solutions  Non-functional requirements cover a broad range of issues  interface constraints  performance constraints  operating constraints  life-cycle constraints  economic constraints  political constraints  manufacturing

16 16 Case Study  We participated in a group project where we designed and developed a cell phone game suitable for a cell phone using the programming language Java 2 Micro Edition.  We designed everything from the beginning with no game requirements given to us.  The process consists of defining system requirements, building the system, and testing the system. The goal of the project was to have a working game. We were restricted by time since this was a summer program

17 17 Define System Requirements  The system is designed to make the primary persona happy but the other personas should not be unhappy  Define user scenarios  User scenarios describe how someone will interact with the system.  This includes actual scenarios that could happen to a person while playing through the game.

18 18 Define System Requirements  Describe the user interface  Describe main interface that the user will interact with.  This includes screen interactions and all options the user will have.  Detailed requirements  Includes all functional, nonfunctional, and constraint requirements that the system must satisfy

19 19 The Waterfall Model Requirements Definition System and Software design Programming and Unit Testing Integration and System Testing Operation and Maintenance

20 20 [2] System and Software Design System design: Partition the requirements to hardware or software systems. Establishes an overall system architecture Software design: Represent the software system functions in a form that can be transformed into one or more executable programs  Unified Modeling Language (UML)

21 21 Case Study  We participated in a group project where we designed and developed a cell phone game suitable for a cell phone using the programming language Java 2 Micro Edition.  We designed everything from the beginning with no game requirements given to us.  The process consists of defining system requirements, building the system, and testing the system. The goal of the project was to have a working game. We were restricted by time since this was a summer program

22 22 Build System  Define the system classes  Classes are derived from the nouns in the user scenarios.  Every system activity or primitive function should reside in a class  Define system sequence diagrams  Sequence diagrams show how the classes work together to execute each use-case function

23 23 Build System

24 24 [3] Programming and Unit Testing The software design is realized as a set of programs or program units. (Written specifically, acquired from elsewhere, or modified.) Individual components are tested against specifications.

25 25 Build System  Implement the system  The class skeletons are coded based on the code generated from the class diagrams.  All coding takes place here.

26 26 The Waterfall Model Requirements Definition System and Software design Programming and Unit Testing Integration and System Testing Operation and Maintenance

27 27 [4] Integration and System Testing The individual program units are:  integrated and tested as a complete system  tested against the requirements as specified  delivered to the client

28 28 Case Study Test System  The final phase in the process was to test the system.  We ran visual acceptance tests by running the program and playing through the game.  This proved helpful in ensuring that the game is error free, not necessarily that the system is error free.

29 29 The Waterfall Model Requirements Definition System and Software design Programming and Unit Testing Integration and System Testing Operation and Maintenance

30 30 [5] Operation and Maintenance  Operation: The system is put into practical use.  Maintenance: Errors and problems are identified and fixed.  Evolution: The system evolves over time as requirements change, to add new functions or adapt the technical environment.  Phase out: The system is withdrawn from service.

31 31 Bank example  Requirements  Open an account for a customer (savings or chequing)  Deposit ƒ  Withdraw ƒ  Display details of an account ƒ  Change LOC ƒ  Produce monthly statements ƒ  Print a list of customers  Ambiguities  What is the difference between savings and chequing?

32 32

33 33 Design of Bank – Identify Classes  TELLER ƒ  CUSTOMER ƒ  SAVINGS_ACCOUNT ƒ  CHEQUING_ACCOUNT ƒ  MAIN_MENU ƒ  BALANCE_INQUIRY ƒ  INTEREST_RATE

34 34 Discussion of the Waterfall Model Advantages:  Process visibility  Dependence on individuals  Quality control  Cost control

35 35 The Classical Software Lifecycle The classical software lifecycle models the software development as a step-by-step “waterfall” between the various development phases. The waterfall model is unrealistic for many reasons: requirements must be frozen too early in the life-cycle requirements are validated too late Design Implementation Testing Maintenance Analysis Requirements Collection

36 36 Problems with the Waterfall Lifecycle 1.“Real projects rarely follow the sequential flow that the model proposes. Iteration always occurs and creates problems in the application of the paradigm” 2.“It is often difficult for the customer to state all requirements explicitly. The classic life cycle requires this and has difficulty accommodating the natural uncertainty that exists at the beginning of many projects.”  Each stage in the process reveals new understanding of the previous stages, that requires the earlier stages to be revised.

37 37 Problem Case Study  Publisher of books want to develop a product that will carry out all the accounting functions of the company and provide online information to the head office staff regarding orders and inventory  Terminals are required for 15 accounting clerks, 32 order clerks, and 15 managers need access to the data. The publisher will pay 30000 and wants the complete product in 4 weeks  What do you tell him?

38 38 Case Study: Sensor Display  Consider a small system that displays the status of several sensors (e.g., pressure, temperature, rate of change, etc.) on a limited-size screen  What are some of its functional requirements?  What are some of its non-functional requirements?

39 39 Case study Children hospital  Care for children in the Alexandria city and some Arab countries  The average length of stay of inpatients is 3.6 days  All patients are accompanied by a parent for the entire duration of their stay at hospital

40 40 Iterative Development In practice, development is always iterative, and all activities progress in parallel. Requirements Collection Testing Design Analysis Validation through prototyping Testing based on requirements Testing throughout implementation Maintenance through iteration Design through refactoring If the waterfall model is pure fiction, why is it still the dominant software process? Implementation

41 41 Iterative Refinement Requirements Design Implementation (prototype) Evaluation

42 42 Phased Models material adapted from Steve Easterbrook designcodetestintegrateO&Mreqts Requirements designcodetestintegrateO&M designcodetestintegrateO&M designcodetestintegrateO&M designcodetestintegrateO&M designcodetestintegrateO&Mreqts designcodetestintegratereqts version 1 version 2 version 3 Release 1 release 2 release 3 release 4 lessons learnt Incremental development (each release adds more functionality) Evolutionary development (each version incorporates new requirements)

43 43 Incremental Development Plan to incrementally develop (i.e., prototype) the system.  If possible, always have a running version of the system, even if most functionality is yet to be implemented.  Integrate new functionality as soon as possible.  Validate incremental versions against user requirements.

44 44 Incremental development

45 45

46 46

47 47

48 48

49 49 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.  User requirements are prioritised and the highest priority requirements are included in early increments.  It is easier to get customer feedback on the development work that has been done.

50 50 Incremental development advantages  Customer value can be delivered with each increment so system functionality is available earlier.  Early increments act as a prototype to help elicit requirements for later increments.  Lower risk of overall project failure.  The highest priority system services tend to receive the most testing.  The cost of accommodating changing customer requirements is reduced.

51 51 Evolutionary Process Model

52 52

53 53 Evolutionary DesignCodingTestDeploymentRequirementsDesignCodingTestDeploymentRequirementsDesignCodingTestDeploymentRequirements Feedback Version 1 Version 2 Version 3 New versions implement new and evolving requirements (Some call it iterative)

54 54 Evolutionary development  Problems  Lack of process visibility;  Systems are often poorly structured;  Special skills (e.g. in languages for rapid prototyping) may be required.  Applicability  For small or medium-size interactive systems;  For parts of large systems (e.g. the user interface);  For short-lifetime systems.

55 55 Build and Fix Model  Advantage  Appropriate for small programs written by one person  Disadvantage  Understandability and maintainability decrease rapidly with increasing program size  Totally unsatisfactory  Need a life-cycle model  “Game plan”  Phases  Milestones


Download ppt "Software Engineering The Software Process. 2 Why Software Engineering?  Can you approach building software as building a bridge? Why? Why not?  How."

Similar presentations


Ads by Google