CS 5150 Software Engineering Software Processes 2 Lecture 3

advertisement
CS 5150
Software Engineering
Lecture 3
Software Processes 2
CS 5150
1
Administration
Project teams
• Any announcement to class?
CS 5150
2
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 rajkumar@cs.cornell.edu
with the names of the team, the client's name, and the
topic of the project.
CS 5150
3
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
4
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
5
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
6
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
7
Basic Testing Steps in all Software Development
• Vallidating 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
8
Process Step: Feasibility
A feasibility study precedes the decision to begin a project.
• What is the scope of the proposed project?
• Is the project technically feasible?
• What are the projected benefits?
• What are the costs, timetable?
A feasibility study leads to a decision: go or no-go.
CS 5150
9
Process Step: Requirements
Requirements define the function of the system from the
client's viewpoint.
The requirements establish the system's functionality,
constraints and goals by consultation with the client,
customers, and users.
The requirements may be developed in a self-contained
study, or may emerge incrementally.
CS 5150
10
Process Step: System and Program Design
Design describes the system from the software
developers' viewpoint
System design: Establish a system architecture that
matches the requirements to hardware or software
systems.
Program design: Represent the software functions in a
form that can be transformed into one or more executable
programs
CS 5150
11
Process Step: Implementation
Implementation (coding)
The software design is realized as a set of programs or
program units.
The software components may be written specifically,
acquired from elsewhere, or modified.
CS 5150
12
Process Step: Acceptance and Release
Acceptance
The system is tested against the requirements by the
client, often with selected customers and users.
Delivery and release
The system is delivered to the client and released into
production or marketed to customers.
CS 5150
13
Process Step: Operation and Maintenance
Operation: The system is put into practical use.
Maintenance: Errors and problems are identified and
fixed.
Evolution: The system evolves over time as requirements
change, to add new functions or adapt the technical
environment.
Phase out: The system is withdrawn from service.
This is sometimes called the Software Life Cycle
CS 5150
14
Testing
User testing
A preliminary version of the user interface is tested by users.
Their experience may lead to changes in the requirements or the
design.
Program testing
The development team tests components individually (unit
testing) or in combination (system testing) to find bugs, etc.
Acceptance testing
The client tests the final version of the system or parts of the
system against the requirements.
CS 5150
15
Sequence of Processes
Every software project will include these basic processes, in some
shape or form, but:
•
They may be formal or informal
•
They may be carried out in various sequences
Deliverables
In a heavyweight process, each process step creates a deliverable,
usually documentation, e.g., a requirements specification.
In a lightweight process, the deliverables are incremental working
code, with minimal supporting documentation.
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
CS 5150
17
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
18
Sequence of Processes
Major alternatives
•
Sequential: As far as possible, complete each process step
before beginning the next. Waterfall model.
•
Iterative: Go quickly through all process steps to create a
rough system, then repeat them to improve the system.
Iterative refinement.
•
Incremental: An extension of iterative refinement in which
small increments of software are placed in production
(sprints). Agile development.
CS 5150
19
Download