41
CS 5150 1 CS 5150 Software Engineering Lecture 2 Software Processes

CS 5150 1 CS 5150 Software Engineering Lecture 2 Software Processes

  • View
    244

  • Download
    0

Embed Size (px)

Citation preview

CS 5150 1

CS 5150 Software Engineering

Lecture 2

Software Processes

CS 5150 2

Administration

Project teams

• Any announcement to class?

• People who would like to form teams?

CS 5150 3

Administration

Project teams

When you have formed your team and reached agreement with your client, please send a message to:

[email protected] and afix.cs.cornell.edu

with the names of the team, the client's name, and the topic of the project.

CS 5150 4

A Classic Book

Frederick P. Brooks, Jr. The Mythical Man Month. Addison-Wesley, 1972.

CS 5150 5

Software Process

Fundamental Assumption:

Good processes lead to good software

Good processes reduce risk

Good processes enhance visibility

CS 5150 6

Variety of Software Processes

Software products are very varied...

Therefore, there is no standard process for all software engineering projects

BUT successful software development projects all need to address similar issues.

This creates a number of process steps that must be part of all software projects

CS 5150 7

Basic Process Steps in all Software Development

• Feasibility and planning

• Requirements

• System and program design

• Implementation and testing

• Acceptance testing and release

• Operation and maintenance

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

Do not confuse requirements and design

CS 5150 8

Process Step: Feasibility and Planning

A feasibility study precedes the decision to begin a project.

• What is the scope of the proposed project?

• Is the project technically feasible?

• What are the projected benefits?

• What are the costs, timetable?

A feasibility study leads to a decision: go or no-go.

CS 5150 9

Process Step: Requirements

Requirements define the function of the system from the client's viewpoint.

The requirements establish the system's functionality, constraints and goals by consultation with the client and users.

They are specified in a manner that is understandable by both the client and the development staff.

CS 5150 10

Process Step: System and Program Design

Design describes the system from the software developers' viewpoint

System design: Match the requirements to hardware or software systems. Establishes an overall system architecture

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

CS 5150 11

Process Step: Implementation and Testing

Implementation (coding)

The software design is realized as a set of programs or program units. (The software components may be written specifically, acquired from elsewhere, or modified.)

Testing

Individual components are tested against specifications.

The components are integrated and tested against the design by the development staff as a complete system.

CS 5150 12

Process Step: Acceptance Testing and Release

Acceptance testing

The system is tested against the requirements by the client.

Delivery and release

The system is delivered to the client and released into production.

CS 5150 13

Process Step: 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.

This is sometimes called the Software Life Cycle

CS 5150 14

Sequence of Processes

Every software project will include these basic processes, in some shape or form, but:

• They may be formal or informal

• They may be carried out in various sequences

CS 5150 15

Sequence of Processes

Major alternatives

• Iterative: Go quickly through all process steps to create a rough system, then repeat them to improve the system. Iterative refinement.

• Sequential: As far as possible, complete each process step before beginning the next. Waterfall model.

• Phased: Divide the project into a number of phases. Implement each phase in turn and put it in production immediately.

CS 5150 16

Iterative Refinement

Requirements

DesignImplementation

Evaluation

CS 5150 17

Iterative Development: Iterative Refinement (Evolutionary Development)

Concept: Initial implementation for client and user evaluation, followed by refinement until system is complete.

• Vaporware: user interface mock-up

• Throw-away software components

• Dummy modules

• Rapid prototyping

• Successive refinement

CS 5150 18

Iterative Processes: Requirements and Risk

Mistakes in the requirements are the most expensive to correct.

Requirements are hard to understand until there is an operational system, particularly with user interfaces

Create an outline system quickly, review it with clients, test it with users, improve the understanding of the requirements

Example: Integration of browser into operational system

CS 5150 19

Sequential Development:The Waterfall Model

Requirements

System design

Testing

Operation & maintenance

Program design

Implementation (coding)

Acceptance & release

Requirements

Design

Implementation

Feasibility study

CS 5150 20

Discussion of the Waterfall Model

Advantages:

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

Disadvantages:

Each stage in the process reveals new understanding of the previous stages, which often requires the earlier stages to be revised.

The Waterfall Model is not enough!

CS 5150 21

Sequence of Processes

A pure sequential model is impossible

Examples:

• A feasibility study cannot create a proposed budget and schedule without a preliminary study of the requirements and a tentative design.

• Detailed design or implementation usually reveals gaps in the requirements specification.

The plan must allow for some form of iteration.

CS 5150 22

Modified Waterfall Model

Requirements

System design

Testing

Operation & maintenance

Program design

Implementation (coding)

Acceptance & release

Waterfall model with feedback

This is better

Feasibility study

CS 5150 23

Phased Development

A simple system with basic functionality is brought quickly into production (Phase 1).

Subsequent phases are based on experience gained from users of each previous phase.

Advantages

• Pay-back on investment begins soon.

• Requirement are more clearly understood in developing subsequent phases.

• User feedback can be incorporated in later phases.

CS 5150 24

Phased Development Online

When software is released online it is possible to divide it into small phases that are developed and released in quick succession.

Example: Amazon.com divides most software development into phases of about four weeks elapsed time.

This approach is excellent for continual enhancement of a system within an established architecture.

It is not possible for shrink wrapped software, embedded systems, or similar environments.

CS 5150 25

Mixed Processes: User Interface Development

User interfaces have to be tested with users. This forces iterative development, even within an underlying sequential process.

A common model is to combine iterative refinement of user interfaces within an overall sequential process.

(Iteration within the steps of a sequential process is sometimes called a spiral development process.)

CS 5150 26

Examples of Mixed Processes:Iterative Refinement + Waterfall Model:

Problem: Add graphics package to a programming environment

Phase 1: Iterative refinement

Extend current environment with a preprocessor and run-time support package. Test with users. Make several new versions until users are pleased with function. Throw the code away.

Phase 2: Modified waterfall

Use the results of Phase 1 as the basis for a formal set of requirements. Write new compiler and run-time system incorporating graphics elements. Make minor adjustments to requirements as needed.

CS 5150 27

Modern Developments in Software Processes

Changes during the software development process are expensive.

• If the requirements are poorly understood, or expected to change, select a process that keeps flexibility. Iterative refinement, phased implementation.

• For big software systems with many inter-related components, avoid major changes to the design of a system during development. Sequential process, such as the modified waterfall model.

CS 5150 28

Modern Developments in Software Processes

Agile software development is a variant of iterative refinement that stresses rapid iterations with a flexible approach to requirement and design.

Extreme programming is an approach that concentrates on selected techniques of software development, e.g., coding by teams, design and code reviews, and typically releases software in a sequence of small phases.

CS 5150 29

Observations about Software Processes

Completed projects should have the basic process stepsbut ... the development process is always partly evolutionary.

Risk is lowered by:

• Prototyping key components

• Dividing into phases

• Following a visible software process

• Making use of reusable components

Conclusion

It is not possible to complete each step and throw it over the wall.

CS 5150 30

CS 5150 Project Presentations: Iterative Option

Requirements

DesignImplementation

Evaluation

first presentation

second presentation

third presentation

CS 5150 31

CS 5150 Project Presentations: Sequential Option

Requirements

System design

Testing

Operation & maintenance

Program design

Implementation (coding)

Acceptance & release

1. Requirements

2. Design

3. Implementation

Feasibility study

If you follow a sequential process the three presentations should be as shown.

CS 5150 32

CS 5150 Software Engineering

Project Suggestions

CS 5150 33

Project Suggestion: eCommons

Harvesting from Web sites for the Cornell academic repository

John Saylor, Cornell University Library

CS 5150 34

Project Suggestion: iPhone Application for Pet Nutrition

Stephanie Specchio, College of Veterinary Medicine

Ron DiNapoli, Cornell Information Technologies

CS 5150 35

Project Suggestion: Field of Mars

Social networking and e-commerce site for athletics and fitness

Jonathan and Aleda SchafferJohnson School, Cornell University

CS 5150 36

Project Concept: Legal Information Institute

• Spaeth database of Supreme Court statistics

• User contributed queries

Tom Bruce, Director Legal Information Institute

CS 5150 37

Project Concept: FSAE Race Car

Controller area network for FSAE race car

Cangming LiuFSAE Race Team

CS 5150 38

Project Concept: Risk Management and Public Safety

Personal Protection Equipment & Training Assessment Tool

Curtis Baker, Risk Management and Public Safety Information Services [former CS 5150 student]

CS 5150 39

Project Suggestion: Civitas electronic voting system

Civitas electronic voting system

Michael ClarksonComputer Science Department

CS 5150 40

Project Suggestions from Electrical and Computer Engineering

GPS Sensor Array ManagementBrady O'Hanlon

Aerobic Exercise MonitorJohn Belina

CS 5150 41

Project Suggestion: SNAP

Social Network Applied Perception (SNAP) Search Engine

Stephen Purpura, Cornell Information Science