Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
• Student Comments
The Software Lifecycle • Define the problem – requirements
• Estimate size of task, how long it will
take to complete
• Provide initial support/teach people to
support the project
15-413: Introduction to Software • Teach people how to use the products
Engineering
Jonathan Aldrich
29 August 2005
• Software Design
Design
• Coding
• Testing
Implementation
• Documentation
• Software Maintenance Quality Assurance
Evolution
Requirements Design
• Determining what clients need from • Engineering solution that addresses
software requirements
• Problem space, not solution space
• May include quality attributes • Designs include
• Performance, security, maintainability… • Architecture
• Code interfaces
• Challenges • User interfaces
• Clients don’t know what they want • Components
• Clients can’t express what they want • Data structures
• Bound to change • Algorithms
• Better communication
• Better client
• Changes to environment
1
Implementation Quality Assurance
• Realizing a design in code • Ensuring the implementation meets
quality standards
• More than just coding
• Documentation • Testing
• Assertions/Invariants • Unit
• Coding standards • Functional
• Pair programming • Regression
• Tools
• Configuration management • Analysis
• Design and code reviews
2
Extreme Programming
• An iterative/spiral process
• Divides development into short iterations
delivering functionality
• Lightweight practices
• Requirements through “stories”
• Planning game
• Pair programming
• Increasingly popular in industry
• Fun
• Will be used for the projects
• Along with waterfall lifecycle deliverables
• Promotes familiarity traditional style
development artifacts
29 August 2005