2. Software Engineering Introduction and Overview
Essence and Accident
• Inherent
Difficulties
– Complexity
– Conformity
– Changeability
– Invisibility
• Essence
– difficulties inherent in
the nature of
software
• Accidents
– difficulties
encountered but not
inherent
3. Software Engineering Introduction and Overview
Software Engineering Processes
attempt to maximize QUALITY in the form of:
• Reliability
• Portability
• Efficiency
• Human Engineering
• Testability
• Understandability
• Modifiability
4. Software Engineering Introduction and Overview
Software Engineering Processes
Why?
Issues concerning software quality
• Relative costs of fixing faults
• Price performance factors
• Product size increase leads to larger teams
5. Software Engineering Introduction and Overview
What are the phases in
the lifecycle of a software product?
• Requirements
• Specifications
• Design
• Implementation
• Integration
• Maintenance
• Retirement
6. Software Engineering Introduction and Overview
Requirements Phase
• What does the
problem require in
terms of the
solution?
• Written document
• Customer driven
• Requirements
testing
– Rapid prototype
– Mock-up
– Partial system
7. Software Engineering Introduction and Overview
Specifications Phase
• What does the
product do?
• What are the
constraints on the
product?
• Acceptance criteria
• Frequent problems with
a spec:
– ambiguous
– incomplete
– contradictory
• Specifications testing
– SQA
– reviews
8. Software Engineering Introduction and Overview
Design Phase
• 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
10. Software Engineering Introduction and Overview
Integration Phase
• Composition order
• Integration testing
– interfaces
• Testing
– does it meet the
specs?
– product testing by
SQA
– acceptance testing
by customer
12. Software Engineering Introduction and Overview
Specification principles
• Separate functionality from implementation
– A process-oriented systems spec language is required
– A spec must encompass the system of which the SW is a
component
– A spec must encompass the environment in which the
system operates
– A system spec must be a cognitive model
– A spec must be operational
– The spec must be tolerant of incompleteness and
augmentable
– A spec must be localized and loosely coupled
13. Software Engineering Introduction and Overview
Analysis principles and issues
• What differentiates one analysis technique from
another?
– hueristics and notions
– point of view
– notation
– modeling approach
• What things are common about analysis methods?
– hierarchical representation
– external and internal interfaces
– design and implementation foundation
– no focus on constraints or validation
14. Software Engineering Introduction and Overview
Analysis principles and issues
• Analysis is information-driven
– First provide a mechanism for representing info
then derive function and behavior
– Common characteristics
1) mechanism for info domain analysis
2) approach for functional and/or behavior representation
3) definition of interfaces
4) mechanisms for problem partitioning
5) support of abstraction
6) representation of essential and implementation views
15. Software Engineering Introduction and Overview
Testing
Testing cannot show the absence of defects,
it can only show that software defects are present.
1. Testing is a process of executing a program with the
intent of finding an error.
2. A good test case is one that has a high probability of
finding an as yet undiscovered error.
3. A successful test is one that uncovers an as yet
undiscovered error.
16. Software Engineering Introduction and Overview
Testing Methods
• Black-box testing
– Knowing the specified function that a product has been
designed to perform, tests can be conducted that
demonstrate each function is fully operational.
• White-box or glass-box testing
– Knowing the internal workings of a product, tests can be
conducted to ensure that "all the gears mesh".
1. independent paths at least once
2. logical decisions both true and false
3. loops
4. internal data structures
17. Software Engineering Introduction and Overview
Development Testing
• Debugging approaches
– brute force
– backtracking
– cause elimination
• Before you fix
1. Is the cause of this bug also reproduced
elsewhere?
2. What new bug might I be putting in?
3. What would have prevented this bug?
18. Software Engineering Introduction and Overview
Software Configuration Management
Change is inevitable
• Activities of SCM
1. ID change
2. control change
3. ensure that change is
properly implemented
4. report change to others
• SCM output
– programs
– documentation
– data structures
19. Software Engineering Introduction and Overview
Systems Engineering Issues
Takes customer-defined goals and
constraints and derives a representation
of function, performance, interfaces,
design constraints and information
structure that can be allocated to each
of the generic system elements
available.