cs 360 lecture 3. the software process is a structured set of activities required to develop a...

35
SOFTWARE DEVELOPMENT PROCESS CS 360 Lecture 3

Upload: virginia-francine-fleming

Post on 29-Dec-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

SOFTWARE DEVELOPMENT PROCESS

CS 360

Lecture 3

SOFTWARE PROCESSThe software process is a structured set of activities required to develop a software system.

Fundamental Assumption: Good software processes lead to good software. Good software processes reduce risks.

2

BASIC PROCESS STEPS IN ALL SOFTWARE DEVELOPMENTFeasibility and planningRequirementsSystem and program design ImplementationAcceptance and releaseMaintenance

3

BASIC PROCESS STEPS IN ALL SOFTWARE DEVELOPMENTFeasibility and planningRequirementsSystem and program design ImplementationAcceptance and releaseMaintenance

It is important to distinguish among these process steps and to be clear which you are doing at any given moment.

4

These steps may berepeated many timesduring the developmentcycle.

QUALITY CONTROL STEPS IN ALL SOFTWARE DEVELOPMENT (DOCUMENTATION)Validating the requirementsValidating the system and program designUsability testingProgram testingAcceptance testingBug fixing, feature enhancements, and maintenance

5

QUALITY CONTROL STEPS IN ALL SOFTWARE DEVELOPMENTValidating the requirementsValidating the system and program designUsability testingProgram testingAcceptance testingBug fixing, feature enhancements, and maintenance

6

Some of these steps will be repeated many times during the life of the system.

CATEGORIES OF TESTINGThe term “testing” is used in several different contexts, which can be confusing:

User testing: Versions of the user interface are tested by users and clients.

Their experience may lead to changes in the requirements or design.

Program testing: The development team tests components individually (unit testing) or in combination (system testing) against the design to find bugs, etc.

Acceptance testing: The client tests the final version of the system or parts of the system against the requirements.

7

PROCESS STEP: FEASIBILITYThe feasibility study:

What is the scope of the proposed project? Is the project technically feasible?What are the projected benefits?What are the costs?Expected timeline?What resources are needed?What are the risks and how can they be managed?

8

PROCESS STEP: REQUIREMENTSRequirements define the function of the system from the client’s viewpoint.

Requirements establish:System functionalityConstraintsGoals

9

PROCESS STEP: REQUIREMENTSThe requirements step is divided into tasks:

Requirements analysis Requirements definition Requirements specification

The project’s requirements may be developed in a self-contained study, or developed incrementally.

Failure to agree on the requirements and define the adequately is one of the main causes of software projects failing. 10

PROCESS STEP: REQUIREMENTS The requirements step is divided into tasks:

Requirements analysis Meetings, documentation, process specifications, use cases, etc.

Requirements definition Description of the services that the system should provide.

Requirements specification Functional requirements

Inputs, behavior, outputs Non-functional requirements

Criteria used to judge the operation of the system Ex: accessibility, compliance, privacy, performance, reusability, stability, usability,

etc.

The project’s requirements may be developed in a self-contained study, or developed incrementally.

Failure to agree on the requirements and define the adequately is one of the main causes of software projects failing.

11

PROCESS STEP: SYSTEM AND PROGRAM DESIGN Design describes the system from the software developers’ viewpoint.

System design: Establish a system architecture, both hardware and software, that matches requirements.

Program design: Represent the software functions in a form that can be transformed into one or more executable programs.

Preliminary user testing can be carried out as part of the design step.

Models are used to represent requirements, system architecture, and programming design. This course covers the basic concepts of the Unified Modeling Language (UML).

12

PROCESS STEP: IMPLEMENTATION

Implementation (coding):The software design is realized as a set of programs.These software components may be written by the development team, or modified from existing components.

Program testing: Individual components (unit testing) should be tested against the design documentation.

All components are integrated and tested against the design as a complete system (system testing). 13

PROCESS STEP: ACCEPTANCE AND DELIVERYAcceptance testing:

The system is tested against the requirements by the client. Can be done in weekly meetings, or after each milestone delivery.

Delivery: After successful acceptance testing, the system is finally delivered to the client and released into production.

14

PROCESS STEP: OPERATION AND MAINTENANCE Operation:

The system is moved from the developmental phase into practical use.

Maintenance: Errors and problems are identified and fixed.

Evolution: The system evolved over time as requirements change.

Add new functionality Increased stability Adapt to changing technical environment

Phase out: The system is withdrawn from service.

This is generally called the Software Life Cycle.

15

SOFTWARE ENGINEERING PROCESSESEvery software project will include the previous basic processes, in some shape or form, but: The steps may be formal or informal The steps may be carried out in different order

Your job as the software development team is to implement, in as much detail as possible, the processes described in order to develop a good software product.

16

SEQUENCE OF PROCESSES In this course, we will look at three categories of software development processes: Sequential:

As much as possible, complete each process step before beginning the next. Waterfall model

Iterative: Go quickly through all process steps to create a rough system, then repeat

to improve the system. Prototype, test, analyze, refine, repeat.. Iterative refinement, entire system

Incremental: Variation of the iterative refinement in which small increments of software

are placed in production (sprints). Prototype, test, analyze, repeat.. Agile refinement, adding individual features during each phase.

17

DELIVERABLESDeliverables:

A deliverable is some work product that is given to the client.

Each process step mentioned previously creates a deliverable. Documentation, source code, etc.

For this course, the deliverables include: Presentations Software process documentation(s) Software and/or hardware resources

18

THREE TYPES OF SOFTWARE PROCESS

TYPES OF SOFTWARE PROCESSThe basic process steps can be combined in many ways to create a successful software process for development.

Three types of software process: Sequential ((modified) waterfall model), plan-driven Iterative refinement Incremental (agile)

20

TYPES OF SOFTWARE PROCESSPlan-driven processes have all process activities described in advance and progress is measured against this plan.

Agile processes have incremental planning stages, where change can be accommodated more easily to reflect updated client requirements.

In practice, most approaches include elements of both plan-driven and agile development processes.21

SEQUENTIAL DEVELOPMENT: WATERFALL MODEL

22

DISCUSSION OF THE WATERFALL MODELThe waterfall model requires full documentation at each process step.

Advantages: Process visibility Separation of tasks Quality control at each step Cost monitoring at each step

Disadvantages: In practice, each process stage reveals new understanding of the

previous stages. Often requires earlier stages to be revised. 23

DISCUSSION OF THE WATERFALL MODELA pure sequential model is impossible

Example: A feasibility study can’t cerate a proposed budget and schedule

without a study of the requirements and initial design. Detailed design and implementation reveal gaps in the requirement

specifications. Requirements and/or technology may change during project

development.

Solution: Modified waterfall model 24

MODIFIED WATERFALL MODEL

25

SEQUENTIAL DEVELOPMENTSequential processes work best when the requirements are well understood, and the design is straightforward. Ex:

Conversions of existing manual data processing systems. New models of a product based on earlier versions or similar products.

Parts of a larger system where components are clearly defined.

26

ITERATIVE PROCESSESConcept:

Create a prototype system early in the development process Review the prototype with clients and test it with users

To improve the understanding of the requirements Clarify the design

Requirements can be difficult to understand until there is an operational system.

Mistakes in the requirements are the most expensive to correct. 27

ITERATIVE REFINEMENT

28

ITERATIVE PROCESSES Iterative processes require documentation refinement during each phase.

This type of software process enables the client to review the planned system early during development: Software/hardware mock-ups Sandbox modules Rapid prototyping Feature refinement

The goal is to get something working as quickly as possible, for client and user evaluation, but do not release it.

29

INCREMENTAL DEVELOPMENT (SPRINTS)The project is divided into a large number of small tasks, known as sprints.

For each sprint, the team works through a full software development cycle: planning, requirements, analysis, design, coding, testing, acceptance testing, and release.

Each spring is completed in a fixed time period, or milestone.

The size of a sprint is based on team size 4-7 people.

30

INCREMENTAL DEVELOPMENT

31

THOUGHTS ABOUT SOFTWARE PROCESSCompleted projects should have included all of the basic process steps, but the development process is always partly evolutionary.

Risks are lowered by: Prototyping key components Frequent releases, or dividing into phases Early and repeated testing with users and clients Making use of reusable components

32

CS 360 PROJECTS: ITERATIVE REFINEMENT

33

CS 360 PROJECTS: INCREMENTAL DEVELOPMENT

34

CS 360 PROJECTS: SEQUENTIAL DEVELOPMENT

35