CS 5150 Software Engineering Software Processes 1 Lecture 2

advertisement
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
Processes and tools
Documentation
Contract negotiation
Following a plan
Lightweight
Individuals & interactions
Working software
Customer collaboration
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
• System and program design
• Implementation
• Acceptance and release
In a lightweight
process, these steps
are repeated with
each increment
• Operation and maintenance
CS 5150
19
Download