19-01-2016, 03:05 PM
Essence and Accident
Essence
difficulties inherent in the nature of software
Accidents
difficulties encountered b
Inherent Difficulties
Complexity
Conformity
Changeability
Invisibility
ut not inherent
Software Engineering Processes attempt to maximize QUALITY in the form of:
Reliability
Portability
Efficiency
Human Engineering
Testability
Understandability
Modifiability
Software Engineering Processes
Why?
Issues concerning software quality
Relative costs of fixing faults
Price performance factors
Product size increase leads to larger teams
What are the phases in the lifecycle of a software product?
Requirements
Specifications
Design
Implementation
Integration
Maintenance
Retirement
Requirements Phase “What I need, not what I said I needed”
What does the problem require in terms of the solution?
Written document
Customer driven
Requirements testing
Rapid prototype
Mock-up
Partial system
Specifications PhaseWhat the developer wants to know:
What does the product do?
What are the constraints on the product?
Acceptance criteria
Frequent problems with a spec:
ambiguous
incomplete
contradictory
Specifications testing
Design PhaseHow does the product do what it is supposed to do?
Analysis of the problem
Structured analysis : decomposing problem by how data is manipulated (acted upon)
Object-oriented analysis: decomposing problem by how data is represented
Developer must make design decisions about:
algorithms
data representations
I/O interfaces
data flow
modules
Design testing traceability
Implementation PhaseInitial CS courses have to focus on this element first
Code
Documentation
Tests
Implementation testing
desk checking
test cases
reviews