Presentation Transcript
Software Process: Software Process Chapters 1 and 3 (Sommerville)
What is a Software?: What is a Software? Documents
Database
Configuration scripts or data
Example: Video game: models, programs, database of objects, behaviors…
Software Types: Software Types Generic Product
Stand-alone systems
Generic Tools
Customized products
What is software engineering?: What is software engineering? Apply methods: coding, design
Apply tools: jsp, java, UML
To build a software
Sometimes use ad hoc methods, not completely formalized
What is Software Process?: What is Software Process? Activities:
Specification (what)
Design (how)
Coding/development
Testing/validation
Maintenance (change!)
Specification (What): Specification (What) Feasibility study
Can we do it using the tools, time and budget constraints?
Requirements Analysis
Figuring out specifics of what we need to do. (You did part of that last class)
Requirements Spec
Document everything you found out. Why?
Requirements Validation
Show them to customers, do prototypes
Design (how): Design (how) Architecture
Subsystems, and their relationships
Abstract spec.
Subsystem services and constraints
Interface design
Methods or messages between subsystems
This is important. Why?
We are going to do this Thursday
Design (how): Design (how) Component Design
Services and interface
Data Structure or class design
Algorithm design
Structured Models: Structured Models Data-flow model
Entity Relation model (should have seen that in Dbase)
Object oriented methods (inheritance, class/object interaction and relationship)
State Transition models
Programming: Programming Modular programming
Even object oriented programming can become messy
Don’t be afraid of redesigning the code or starting from scratch
Testing: Testing Unit Testing
Module/object testing
Subsystem testing
System testing
Acceptance testing
} Done by programmer } Done by testing group
Software Myths: Software Myths ' If we are behind the schedule, just add more programmers'
'Nine Women cannot make a baby in nine months'
Software Myths: Software Myths ' Once we write the program and get it to work, our job is done' '60%-80% of all effort expended on software will be expended after it is delivered for the first time'
What is Software Process?: What is Software Process? Activities:
Specification (what)
Design (how)
Coding/development
Testing/validation
Maintenance (change!)
In what order?
Challenges: Challenges Wiked problems
Customers don’t know what they want
Hard to change code, esp. with evolution of programming languages
Methods the people developed: Methods the people developed The waterfall model
Separate and distinct phases of specification and development
Evolutionary development
Specification and development are interleaved
Formal systems development
A mathematical system model is formally transformed to an implementation
Reuse-based development
The system is assembled from existing components
Waterfall Model (1970): Waterfall Model (1970)
Advantages and Disadvantages: Advantages and Disadvantages Good when requirements are understood and problem has been attached before
Cannot adapt to rapidly changing requirements or ill-defined problems
Building a software is like driving: Building a software is like driving ' Driving is not about getting the car going in the right direction. Driving is about constantly paying attention, making little correction this way, a little correction that way' – from XP
Evolutionary Development: Evolutionary Development Exploratory development
Objective is to work with customers and to evolve a final system from an initial outline specification
Throw-away prototyping
Objective is to understand the system requirements. Should start with poorly understood requirements
Evolutionary Development: Evolutionary Development Problems
Lack of process visibility
Systems are often poorly structured
Special skills (e.g. in languages for rapid prototyping) may be required
Applicability
For small or medium-size interactive systems
For parts of large systems (e.g. the user interface)
For short-lifetime systems
Reuse Oriented Development: Reuse Oriented Development Requirements Spec.
Research Existing Components
Rework Requirements
Design
Component Integration and testing
Process Iteration: Process Iteration System requirements ALWAYS evolve in the course of a project so process iteration where earlier stages are reworked is always part of the process for large systems
Two (related) approaches
Incremental development
Spiral development
Incremental Method: Incremental Method
Spiral Model: Spiral Model Process is represented as a spiral rather than as a sequence of activities with backtracking
Each loop in the spiral represents a phase in the process.
No fixed phases such as specification or design - loops in the spiral are chosen depending on what is required
Risks are explicitly assessed and resolved throughout the process
Spiral Method: Spiral Method
Spiral Model: Spiral Model Objective setting
Specific objectives for the phase are identified
Risk assessment and reduction
Risks are assessed and activities put in place to reduce the key risks
Development and validation
A development model for the system is chosen which can be any of the generic models
Planning
The project is reviewed and the next phase of the spiral is planned
Settlers of Catan : Settlers of Catan Homework for next class
Think of how you can develop it
What is the architecture
What are the major components
What is the interface and relationships between components
Bring that to class, we will
Discuss architecture andamp; components
Assign teams
For each team a component will be assigned