24
Software Engineering Lecture 3 Software Processes 2

CS 5150 Software Engineering Lecture 3 Software Processes 2

Embed Size (px)

Citation preview

Page 1: CS 5150 Software Engineering Lecture 3 Software Processes 2

CS 5150Software

EngineeringLecture 3

Software Processes 2

Page 2: CS 5150 Software Engineering Lecture 3 Software Processes 2

2CS 5150

Project Teams

• I will send out project suggestions this afternoon

• You should have a team soon

• Send email to Ben & Yue when you have (most of) a team

• Team name

• Names of team members

• Client info

• Project topic

Page 3: CS 5150 Software Engineering Lecture 3 Software Processes 2

3CS 5150

Projects

• Project suggestions continuing to come in

• You should have contacted a client by next week

Page 4: CS 5150 Software Engineering Lecture 3 Software Processes 2

4CS 5150

Project Details

Page 5: CS 5150 Software Engineering Lecture 3 Software Processes 2

5CS 5150

Software Processes in More Detail

• Feasibility and planning

• Requirements

• System and program design

• Implementation

• Acceptance and release

• Operation and maintenance

Page 6: CS 5150 Software Engineering Lecture 3 Software Processes 2

6CS 5150

Feasibility

• A feasibility study precedes the decision to start a project

• What is the scope of the project?

• What relevant experience to the participants have?

• Projected benefits?

• Projected costs, risks, timetable?

• Beware McConnell’s wicked problem

• But don’t appeal to it too quickly

Page 7: CS 5150 Software Engineering Lecture 3 Software Processes 2

7CS 5150

Feasibility for 5150

• Mostly a scoping aid

• Sketch out projected work

• More in next lecture

Page 8: CS 5150 Software Engineering Lecture 3 Software Processes 2

8CS 5150

Requirements

• Define the system’s behavior from the client’s perspective

• Higher resolution than feasibility study

• Priorities -- relative importance

• Can be developed before design or incrementally

Page 9: CS 5150 Software Engineering Lecture 3 Software Processes 2

9CS 5150

System and Program Design

• Define the system from the implementer’s perspective

• System design (or architecture)

• High level. Should fit on a white board for 5150

• Program design

• “Medium level”

• Source of much debate in software engineering

Page 10: CS 5150 Software Engineering Lecture 3 Software Processes 2

10

CS 5150

Implementation (Construction)

• Actual coding

• Or acquisition and integration of existing code

Page 11: CS 5150 Software Engineering Lecture 3 Software Processes 2

11

CS 5150

Acceptance and Release

• The system is tested against the requirements by the client

• The system is transferred to the client or made available to the public

Page 12: CS 5150 Software Engineering Lecture 3 Software Processes 2

12

CS 5150

Operation and Maintenance

• Operation: The system is in active use

• Maintenance: Errors and other problems are identified and fixed or triaged

• Evolution: The system is changed in response to changing requirements and priorities

• This might involve a whole new cycle through a software process

• Phase out: Use of the system ends (abruptly or gradually)

• The software life cycle

Page 13: CS 5150 Software Engineering Lecture 3 Software Processes 2

13

CS 5150

Three Categories of Testing

• User testing

• Using mock-ups, prototypes or the actual system to evaluate usability with real potential users

• Program testing

• The development team makes sure the system works as designed

• Acceptance testing

• The client compares the system with the requirements

Page 14: CS 5150 Software Engineering Lecture 3 Software Processes 2

14

CS 5150

What is a Software Process?

• More or less formal rules for organizing work on software

• Trivial example:

• Meeting with client

• Meeting with team

• Code code code

• Test

• Email finished program to client

Page 15: CS 5150 Software Engineering Lecture 3 Software Processes 2

15

CS 5150

Spectrum of Software Processes

• (Modified) waterfall model

• Iterative refinement

• Incremental (Agile)

Page 16: CS 5150 Software Engineering Lecture 3 Software Processes 2

16

CS 5150

The Waterfall Model

Page 17: CS 5150 Software Engineering Lecture 3 Software Processes 2

17

CS 5150

Iterative Refinement

Page 18: CS 5150 Software Engineering Lecture 3 Software Processes 2

18

CS 5150

Incremental

• In each increment (sprint) the team works through the full software development cycle and ends up with new production-ready features

• Each sprint is assigned a fixed (and short) time frame, e.g. 4 weeks

• Team size involved in a sprint is usually small (5-10)

Page 19: CS 5150 Software Engineering Lecture 3 Software Processes 2

19

CS 5150

Waterfall Discussion

• Pros

• Visibility and predictability

• Separation of tasks

• Quality control at each step

• Cost control at each step

• Cons

• Wicked problems

Page 20: CS 5150 Software Engineering Lecture 3 Software Processes 2

20

CS 5150

Modified Waterfall

This is morerealistic

Page 21: CS 5150 Software Engineering Lecture 3 Software Processes 2

21

CS 5150

Iterative Refinement Discussion

• Pros

• Complete (bare-bones) system done quickly

• Can correct mistakes in early design stages

• Cons

• Throw away a lot of code

• Can encourage feature bloat

• Can lead to half-done features

Page 22: CS 5150 Software Engineering Lecture 3 Software Processes 2

22

CS 5150

Incremental Development Discussion

• Pros

• Leads quickly to production code

• Feedback benefits of iterative refinement, but even faster

• Minimizes wasted code

• Cons

• Haphazard high-level architecture

Page 23: CS 5150 Software Engineering Lecture 3 Software Processes 2

23

CS 5150

“Choosing” a Process

• Often heavily influenced by the project’s environment

• Big bureaucracies often like waterfall

• End user software vendors usually do something like iterative refinement

• Internet applications often developed with an incremental process

Page 24: CS 5150 Software Engineering Lecture 3 Software Processes 2

24

CS 5150

Thought Exercise

• Software process conversation dominated by commercial software developers

• Do these processes make sense for open source?

• What is open source? (Linux, Haskell compiler, Uncle Joe’s photo organizer)