19
CS 5150 1 CS 5150 Software Engineering Lecture 3 Software Processes 2

CS 5150 Software Engineering

Embed Size (px)

DESCRIPTION

CS 5150 Software Engineering. Lecture 3 Software Processes 2. Administration. Project teams •Any announcement to class?. Administration. Project teams When you have formed your team and reached agreement with your client , please send a message to: - PowerPoint PPT Presentation

Citation preview

Page 1: CS 5150  Software Engineering

CS 5150 1

CS 5150 Software Engineering

Lecture 3

Software Processes 2

Page 2: CS 5150  Software Engineering

CS 5150 2

Administration

Project teams

• Any announcement to class?

Page 3: CS 5150  Software Engineering

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 [email protected]

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

Page 4: CS 5150  Software Engineering

CS 5150 4

Observations about Big Projects

A big project may be 100 to 10,000+ person years

• Every large system is developed by many people, who are constantly changing.

• Before a big project is completed the requirements have changed many times.

• No large system is ever complete.

CS 5150 Projects

• A CS 5150 project is about 0.3 person/years.

This is about the size of a single increment (sprint) in a production Agile process.

Page 5: CS 5150  Software Engineering

CS 5150 5

Software Process

Fundamental Assumption:

Good processes lead to good software

Good processes reduce risk

Good processes enhance visibility

Systematic testing is an integral part of all processes

Page 6: CS 5150  Software Engineering

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 and testing steps that should be part of all software projects

Page 7: CS 5150  Software Engineering

CS 5150 7

Basic Process Steps in all Software Development

• Feasibility and planning

• Requirements

• System and program design

• Implementation

• Acceptance and release

• Operation and maintenance

These steps may be repeated many times during the development cycle

Page 8: CS 5150  Software Engineering

CS 5150 8

Basic Testing Steps in all Software Development

• Vallidating the requirements

• Testing the system and program design

Usability testing

• Testing the implementation

• Acceptance testing

• Bug fixing and maintenance

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

Page 9: CS 5150  Software Engineering

CS 5150 9

Process Step: Feasibility

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.

Page 10: CS 5150  Software Engineering

CS 5150 10

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, customers, and users.

The requirements may be developed in a self-contained study, or may emerge incrementally.

Page 11: CS 5150  Software Engineering

CS 5150 11

Process Step: System and Program Design

Design describes the system from the software developers' viewpoint

System design: Establish a system architecture that matches the requirements to hardware or software systems.

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

Page 12: CS 5150  Software Engineering

CS 5150 12

Process Step: Implementation

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.

Page 13: CS 5150  Software Engineering

CS 5150 13

Process Step: Acceptance and Release

Acceptance

The system is tested against the requirements by the client, often with selected customers and users.

Delivery and release

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

Page 14: CS 5150  Software Engineering

CS 5150 14

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

Page 15: CS 5150  Software Engineering

CS 5150 15

Testing

User testing

A preliminary version of the user interface is tested by users. Their experience may lead to changes in the requirements or the design.

Program testing

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

Acceptance testing

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

Page 16: CS 5150  Software Engineering

CS 5150 16

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

Deliverables

In a heavyweight process, each process step creates a deliverable, usually documentation, e.g., a requirements specification.

In a lightweight process, the deliverables are incremental working code, with minimal supporting documentation.

Page 17: CS 5150  Software Engineering

CS 5150 17

Heavyweight and Lightweight Software Development

In a heavyweight process, the development team works through the entire development cycle slowly and systematically, with the aim of delivering a complete software product with minimal changes and revision.

Example: the Modified Waterfall Model

In a lightweight process, the development team releases working software in small increments, and develops the plans incrementally, based on experience.

Example: Agile Software Development

Page 18: CS 5150  Software Engineering

CS 5150 18

Heavyweight and Lightweight Methodologies

Heavyweight Lightweight

Processes and tools Individuals & interactions

Documentation Working software

Contract negotiation Customer collaboration

Following a plan Responding to change

Based on the Manifesto for Agile Software Development: http://agilemanifesto.org/

Page 19: CS 5150  Software Engineering

CS 5150 19

Sequence of Processes

Major alternatives

• Sequential: As far 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 them to improve the system. Iterative refinement.

• Incremental: An extension of iterative refinement in which small increments of software are placed in production (sprints). Agile development.