Anda di halaman 1dari 19

CS 5150

Software Engineering

Lecture 2

Software Processes 1

CS 5150 1
ACSU is initiating a peer mentoring program

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 cornellcsmentorship@gmail.com 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!

CS 5150 2
The Web Lab

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.

CS 5150 3
Administration

Project teams
• Any announcement to class?
• People who would like to form teams?
Project Suggestions on the web site
Entrepreneurship experiment

CS 5150 4
Administration

Project teams
When you have formed your team and reached
agreement with your client, please send a message
to:
wya@cs.cornell.edu and stevepurpura@gmail.com
with the names of the team, the client's name, and the
topic of the project.

CS 5150 5
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 customers
etc.

CS 5150 6
Software is Risky

Failures of software development projects can


bankrupt companies

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)

CS 5150 7
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.

CS 5150 8
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.

CS 5150 9
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?

CS 5150 10
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).

CS 5150 11
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 time
etc.
Working software provides excellent visibility.

CS 5150 12
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

CS 5150 13
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.

CS 5150 14
Software Process

Fundamental Assumption:
Good processes lead to good software
Good processes reduce risk
Good processes enhance visibility

CS 5150 15
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

CS 5150 16
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/

CS 5150 17
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

CS 5150 18
Basic Process Steps in all Software Development

• Feasibility and planning

• Requirements
In a lightweight
• System and program design
process, these steps
• Implementation are repeated with
each increment
• Acceptance and release

• Operation and maintenance

CS 5150 19

Anda mungkin juga menyukai