Presentation is loading. Please wait.

Presentation is loading. Please wait.

CS310 Software Engineering Lecturer Dr.Doaa sami Khafag

Similar presentations


Presentation on theme: "CS310 Software Engineering Lecturer Dr.Doaa sami Khafag"— Presentation transcript:

1 CS310 Software Engineering Lecturer Dr.Doaa sami Khafag
Software Processes Activities

2 Topics Basic activities of a Software Process
Coping with changing system requirements Rational Unified Process Computer-aided Software Engineering

3 Software Process Activities

4 Process activities Software specification
Software design and implementation Software validation Software evolution

5 Software Specification
The process of establishing what services are required from the system and the constraints on the system’s operation and development Requirements Engineering Process Feasibility study Requirements elicitation and analysis Requirements specification Requirements validation All these activities are interleaved

6 The requirements engineering process

7 Software Specification Phases
Feasibility Study Is it technically and financially feasible to build the system? A short focused study that checks If the system contributes to organizational objectives If the system can be engineered using current technology and within budget If the system can be integrated with other systems that are already in place

8 Software Specification Phases
Requirements elicitation and analysis What do the system stakeholders require or expect from the system? Involves technical staff working with customers to find out about the application domain, the services that the system should provide and the system’s operational constraints May involve the development of one or more system models and prototypes to help the analyst understand the system to be specified

9 Software Specification Phases
Requirements Specification Defining the requirements in detail The activity of translating the information gathered during the analysis phase into a document This may include: User requirements: abstract view for the customer and end-user of the system System requirements: detailed description of the functionality to be provided

10 Software Specification Phases
Requirements Validation Checking the validity of the requirements Concerned with demonstrating that the requirements define the system that the customer really wants Requirements error costs are high so validation is very important Fixing a requirements error after delivery may cost up to 100 times the cost of fixing an implementation error

11 Software design and implementation
The process of converting the system specification into an executable system Software design Design a software structure that realises the specification; Implementation Translate this structure into an executable program The activities of design and implementation are closely related and may be inter-leaved

12 Design process activities
Architectural design Interface design Component design Database design

13 The software design process

14 Design process – Architectural Design
Identify the overall structure of the system, the principal components (sometimes called sub-systems or modules), their relationships and how they are distributed Identify Subsystems and Modules Example: Program Submission System Server Teacher Interface Student Interface

15 Design process – Interface Design
For each subsystem, its interface with other subsystems is designed and documented Goal: provide unambiguous information regarding extent of external interaction parameters/inputs, return values/outputs Once interface specifications are agreed, components can be designed and developed concurrently Example: Server function: set_up_class parameters: catnum, section, list of students (id#’s and names)

16 Design process – Component Design
Take each system component and design how it will operate Could be a simple statement of the expected functionality or A list of changes to be made to a reusable component or A detailed design model

17 Design process – Database Design
Design the system data structures and how these are to be represented in a database

18 Structured methods Systematic approaches to developing a software design. The design is usually documented as a set of graphical models. Possible models Object model; Sequence model; State transition model; Structural model; Data-flow model

19 Possible Models (ATM Example)
State Transition Model Object Model Sequence Model

20 Possible Models (ATM Example)
Data Flow Model

21 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.

22 The debugging process

23 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. Verification: system conforms to its specification Validation: system meets the requirements of the customer.

24 Testing stages Component or unit testing System testing
Individual components are tested independently Components may be functions or objects or coherent groupings of these entities System testing Testing of the system as a whole Finding errors that result from unanticipated interaction between components Verifying that the system meets all the requirements

25 Testing stages contd.. Acceptance testing
Testing with customer data to check that the system meets the customer’s needs “Alpha testing” continues till the system developer and the client agree that the system is acceptable Bespoke/custom systems are normally tested this way “Beta testing” involves delivering a system to a number of potential customers who report any problems to the developer After this feedback, the system is modified and released for further testing or for general sale This approach is applicable to generic software

26 The testing process The testing process is iterative as defects in components may come to light during integration testing; that requires the components to be retested

27 Testing phases

28 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 demarcation between development and evolution (maintenance) this is increasingly irrelevant as fewer and fewer systems are completely new.

29 System evolution

30 Coping With Change

31 Prototyping Change is inevitable in all large software projects
A prototype is an initial version of a system used to demonstrate concepts and try out design options. A prototype can be used in: The requirements engineering process to help with requirements elicitation and validation; In design processes to explore options and develop a UI design; In the testing process to run back-to-back tests. Prototype: A prototype is an initial version of a system used to demonstrate concepts and try out design options. A prototype can be used in: The requirements engineering process to help with requirements elicitation and validation; In design processes to explore options and develop a UI design; In the testing process to run back-to-back tests. Benefits: Improved system usability. A closer match to users’ real needs. Improved design quality. Improved maintainability. Reduced development effort. May be based on rapid prototyping languages 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 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 organizational quality standards.

32 Prototype Development
May be based on rapid prototyping languages 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 requirements

33 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 organizational quality standards.

34 Process iteration System requirements ALWAYS evolve in the course of a project so process iteration where earlier stages are reworked is always part of the process for large systems. Iteration can be applied to any of the generic process models. Two (related) approaches Incremental delivery; Spiral development.

35 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. Once the development of an increment is started, the requirements are frozen though requirements for later increments can continue to evolve.

36 Incremental Delivery

37 Incremental development and delivery
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 Incremental delivery Deploy an increment for use by end-users; More realistic evaluation about practical use of software; Difficult to implement for replacement systems as increments have less functionality than the system being replaced.

38 Incremental delivery advantages
Customer value can be delivered with each increment so system functionality is available earlier Early increments act as a prototype (different from a throw- away prototype discussed earlier) to help elicit requirements for later increments Lower risk of overall project failure The highest priority system services tend to receive the most testing

39 Incremental Delivery Problems
Most systems require a set of basic facilities that are used by different parts of the system. As requirements are not defined in detail until an increment is to be implemented, it can be hard to identify common facilities that are needed by all increments. The essence of iterative processes is that the specification is developed in conjunction with the software. However, this conflicts with the procurement model of many organizations, where the complete system specification is part of the system development contract.

40 When to use Incremental Delivery
When the software can be broken into increments and each increment represents a solution

41 When NOT to use Incremental Delivery
Large systems development involving teams working in different locations Embedded systems where software depends on hardware development Critical systems where all requirements need to be analyzed in advance to guarantee safety of the system E.g., robotic surgery machines, nuclear reactor control systems, amusement rides, railway signaling, air-traffic control systems

42 Boehm’s spiral model 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 Each loop is split into four sectors No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required Team moves in clockwise direction beginning at the centre Risks are explicitly assessed and resolved throughout the process.

43 Boehm’s spiral model of the software process
CS310 Software Engineering

44 Spiral Model Sectors Objective setting Risk assessment and reduction
Specific objectives for the phase are identified. Risk assessment and reduction Risks are assessed and activities put in place to reduce the key risks. Development and validation A development model for the system is chosen which can be any of the generic models. Planning The project is reviewed and the next phase of the spiral is planned.

45 Rational Unified Process

46 The Rational Unified Process
A modern generic process derived from the work on the UML and associated process. Brings together aspects of the 3 generic process models discussed previously. Normally described from 3 perspectives A dynamic perspective that shows phases over time; A static perspective that shows process activities; A proactive perspective that suggests good practice.

47 Phases in the Rational Unified Process

48 RUP phases Inception Elaboration Construction Transition
Establish the business case for the system. Elaboration Develop an understanding of the problem domain and the system architecture. Construction System design, programming and testing. Transition Deploy the system in its operating environment.

49 RUP iteration In-phase iteration Cross-phase iteration
Each phase is iterative with results developed incrementally. Cross-phase iteration As shown by the loop in the RUP model, the whole set of phases may be enacted incrementally.

50 Static workflows in the Rational Unified Process
Description Business modelling The business processes are modelled using business use cases. Requirements Actors who interact with the system are identified and use cases are developed to model the system requirements. Analysis and design A design model is created and documented using architectural models, component models, object models and sequence models. Implementation The components in the system are implemented and structured into implementation sub-systems. Automatic code generation from design models helps accelerate this process.

51 Static workflows in the Rational Unified Process
Description Testing Testing is an iterative process that is carried out in conjunction with implementation. System testing follows the completion of the implementation. Deployment A product release is created, distributed to users and installed in their workplace. Configuration and change management This supporting workflow managed changes to the system Project management This supporting workflow manages the system development Environment This workflow is concerned with making appropriate software tools available to the software development team.

52 Major Workflows Produce Models
You can relate this back to previous slides that describe the system model and the many diagrams needed to fully communicate its content. One can consider all of the models listed here, taken together, to be “the system model.” The only model that is a little different is the business model. It describes the business at large, not just the automated part. The other models describe the information system that supports the business model. It is a good idea to point out that each of these models is incrementally developed across many iterations. Analysis & Design Design Model Implementation Model Test Model realized by implemented by verified by Requirements Implementation Test Use-Case Model Business Modeling Business Model supported by

53 Bringing It All Together: The Iterative Model
In an iteration, you walk through all workflows Management Environment Business Modeling Implementation Test Analysis & Design Preliminary Iteration(s) Iter. #1 Phases Process Workflows Iterations Supporting Workflows Iter. #2 Iter. #n Iter. #n+1 Iter. #n+2 Iter. #m Iter. #m+1 Deployment Configuration Mgmt Requirements Elaboration Transition Inception Construction Can iterations overlap? No. Our model is to show no overlap among iterations. In a large project, several teams may work in parallel on their portions of the iteration, but we do not consider these to be separate iterations. How many iterations should you have? It depends on many factors. Err on the side of too many iterations. Animation note: The callouts and black rectangle appear 2 seconds after the slide. Workflows group activities logically

54

55 RUP good practice Develop software iteratively Manage requirements
Plan increments based on customer priorities and deliver highest priority increments first. Manage requirements Explicitly document customer requirements and keep track of changes to these requirements. Use component-based architectures Organize the system architecture as a set of reusable components.

56 RUP good practice Visually model software Verify software quality
Use graphical UML models to present static and dynamic views of the software. Verify software quality Ensure that the software meet’s organizational quality standards. Control changes to software Manage software changes using a change management system and configuration management tools.

57 Computer-aided Software Engineering http://www. SoftwareEngineering-9

58 Computer-aided software engineering
Computer-aided software engineering (CASE) is software to support software development and evolution processes. Activity automation Graphical editors for system model development; Data dictionary to manage design entities; Graphical UI builder for user interface construction; Debuggers to support program fault finding; Automated translators to generate new versions of a program.

59 CASE technology CASE technology has led to significant improvements in the software process. However, these are not the order of magnitude improvements that were once predicted Software engineering requires creative thought - this is not readily automated; Software engineering is a team activity and, for large projects, much time is spent in team interactions. CASE technology does not really support these.

60 CASE classification Classification helps us understand the different types of CASE tools and their support for process activities. Functional perspective Tools are classified according to their specific function. Process perspective Tools are classified according to process activities that are supported. Integration perspective Tools are classified according to their organisation into integrated units.

61 Functional tool classification
Configuration management (CM) is a field of management that focuses on establishing and maintaining consistency of a system's or product's performance and its functional and physical attributes with its requirements, design, and operational information throughout its life. Static code analysis is the analysis of computer software that is performed without actually executing programs built from that software (analysis performed on executing programs is known as dynamic analysis). In most cases the analysis is performed on some version of the source code and in the other cases some form of the object code. The term is usually applied to the analysis performed by an automated tool.

62 Activity-based tool classification

63 CASE integration Tools Workbenches Environments
Support individual process tasks such as checking the consistency of a design, compiling a program, comparing test results, etc Tools may be general-purpose, stand-alone tools (e.g. a word- processor) or may be grouped into workbenches 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.

64 Tools, workbenches, environments

65 Recommended Reading Chapter 2 of the textbook


Download ppt "CS310 Software Engineering Lecturer Dr.Doaa sami Khafag"

Similar presentations


Ads by Google