cs 5150 1 cs 5150 software engineering lecture 2 software processes 1

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

Upload: warren-jacobs

Post on 05-Jan-2016

220 views

Category:

Documents


1 download

TRANSCRIPT

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

CS 5150 1

CS 5150 Software Engineering

Lecture 2

Software Processes 1

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

CS 5150 2

Underclassmen: be paired with an upperclassman mentor!Upperclassmen: mentor an underclassman and/or have a PhD/MEng

mentor!  

To find a mentor or to be a mentor:Fill out a questionnaire to specify your preferences--

send an email to [email protected] for the links.

ACSU Bowling /Mentor-Mentee Matching Event: 9/8 at Helen Newman!

(*please also fill out the questionnaire)Time: 9/8, 7-9 PM

Location: Helen Newman Bowling Alley (in the basement of HNL)FREE pizza and soda will be served!

 

ACSU is initiating a peer mentoring program

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

CS 5150 3

Independent Research in Computer Science & Information Science

The Web Lab applies supercomputing methods to analyze very large collections of text. See http://weblab.infosci.cornell.edu/. It uses MapReduce programming and the Hadoop distributed file system on a large Linux cluster.

Projects for fall 2010:

• Studying how the .gov domain changes over time.

• Building indexes to very large collections of digitized books.

If you are interested, come to a meeting on Tuesday at 4:00 p.m. in the Information Science building, 301 College Avenue.

The Web Lab

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

CS 5150 4

Administration

Project teams

• Any announcement to class?

• People who would like to form teams?

Project Suggestions on the web site

Entrepreneurship experiment

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

CS 5150 5

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 6: CS 5150 1 CS 5150 Software Engineering Lecture 2 Software Processes 1

CS 5150 6

Software is Risky

Most software development projects have major problems

Problems

Does not work as expected

Over budget

Late delivery

Much of software is wasted (perhaps 50% is never used )

Never used

Does the wrong thing

Users dislike to use it

There are no customersetc.

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

CS 5150 7

Software is Risky

What is the penalty to the client if software is:

late?over budget?does not work or full of bugs?

Examples of risk:

car anti-lock brakes (no bugs allowed)web browser in cell phone (no delays in release allowed)

Failures of software development projects can bankrupt companies

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

CS 5150 8

Software is Risky

Most software projects fail because the software developers build the wrong software!

• Understand what the client, the customer, and the users expect of the software

• As a developer, provide technical insights and suggestions, but remember:

Client satisfaction and customer acceptance are the primary measures of success in a software project.

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

CS 5150 9

Minimizing Risk: Incremental Development with Frequent Releases

Recent approaches to software development minimize risk by emphasizing frequent delivery of working software (weeks rather than months).

•Client, customers, and users can evaluate the developers' work.

•Opportunities to adapt to changing circumstances.

This is one of the basic principles of Agile Software Development.

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

CS 5150 10

The Three-way Trade-off

Competing goals

Every software project has a trade-off between:

Functionality Resources (cost) Timeliness

What is important to the person who is paying?

Example:

Start-up companies: Are there real customers who will pay for the product?

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

CS 5150 11

Minimizing Risk: Relationship with the Client

• Feasibility studies (whether to begin a project).

• Separation of requirements (what the client wants) from design (how the developers meet the requirements).

• Milestones (how the developers report or demonstrate progress to the clients) and releases.

• Acceptance (how the client tests that the software meets the requirements) and user testing.

• Handover (ensuring that the client receives a package that can be operated and maintained over a long time period).

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

CS 5150 12

Minimizing Risk: Visibility

The people who take the responsibility must know what is happening

• Managers

Must rely on others for reports of progress or difficulties

• Software Developers

Have difficulty evaluating progress Optimistic

Consider reporting a waste timeetc.

Working software provides excellent visibility.

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

CS 5150 13

Teams

Most software development is by teams

• Effectiveness of team determines success

Most large software projects are built on older ones

• It is rare to start a new suite of programs from scratch

• Building on the work of others is a fundamental skill of software development

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

CS 5150 14

Observations about Big Projects

• A CS 5150 project is about 0.3 person/years. A big project may be 100 to 10,000+ person years.

• Every important program is written 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.

A CS 5150 project is about the size of a single increment in a production Agile process.

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

CS 5150 15

Software Process

Fundamental Assumption:

Good processes lead to good software

Good processes reduce risk

Good processes enhance visibility

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

CS 5150 16

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 17: CS 5150 1 CS 5150 Software Engineering Lecture 2 Software Processes 1

CS 5150 17

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 18: CS 5150 1 CS 5150 Software Engineering Lecture 2 Software Processes 1

CS 5150 18

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 should be part of all software projects

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

CS 5150 19

Basic Process Steps in all Software Development

• Feasibility and planning

• Requirements

• System and program design

• Implementation

• Acceptance and release

• Operation and maintenance

In a lightweight process, these steps are repeated with each increment