CS 5150 Software Engineering Software Processes 1 Lecture 2

advertisement
CS 5150
Software Engineering
Lecture 2
Software Processes 1
CS 5150
1
Projects
Project teams
• Any announcement to class?
• People who would like to form teams?
CS 5150
2
Projects
Project Suggestions on the web site
CS 5150
3
Projects
New project ideas
If you have a new project idea, please let me know, so
that I can confirm that it is suitable for the course.
Project teams
When you have formed your team and reached
agreement with your client, please send a message
to:
wya@cs.cornell.edu and rajkumar@cs.cornell.edu
with the names of the team, the client's name, and the
topic of the project.
CS 5150
4
Software Development: Risk
Most software development projects have major problems
Problems
Does not work as expected (FUNCTION)
Over budget (COST)
Late delivery (TIME)
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
5
The Three-way Trade-off
Competing goals
Every software project has a trade-off between:
Functionality (scope of project)
Cost (resources used)
Time (delivery date)
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
6
Software Development: Risk
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 Development: Risk
Many 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: 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
9
Minimizing Risk: Short Development Cycle with
Frequent Releases
Risk is minimized by short development cycles, with
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
10
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
Are often too optimistic
Consider reporting a waste time
etc.
Working software provides excellent visibility.
CS 5150
11
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 system from scratch
• Building on the work of others is a fundamental
skill of software development
• Much software is built in increments (sprints), with
different teams responsible for the increments
CS 5150
12
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.
CS 5150
13
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
CS 5150
14
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
CS 5150
15
Basic Process Steps in all Software Development
• Feasibility and planning
• Requirements
• System and program design
• Implementation
• Acceptance and release
These steps may be
repeated many
times during the
development cycle
• Operation and maintenance
CS 5150
16
Basic Testing Steps in all Software Development
• Testing 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
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
CS 5150
18
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
19
Download