preface
preface to the first edition
list of figures
1. introduction
1.1 the software engineering discipline—its evolution andimpact
1.2 software development projects
1.3 what is wrong with the exploratory style of softwaredevelopment?
1.4 emergence of software engineering
1.5 notable changes in software development practices
1.6 computer systems engineering
summary
exercises
2. software life cycle models
2.1 why use a life cycle model?
2.2 classical waterfall model
2.3 iterative waterfall model
2.4 prototyping model
2.5 evolutionary model
2.6 spiral model
2.7 comparison of different life cycle models
summary
exercises
3. software project management
3.1 responsibilities of a software project manager
3.2 project planning
3.3 metrics for project size estimation
3.4 project estimation techniques
3.5 empirical estimation techniques
3.6 cocomo--- a heuristic estimation technique
3.7 halstead's software science--an analytical technique
3.8 staffing level estimation
3.9 scheduling
3.10 organization and team structures
3.11 staffing
3.12 risk management
3.13 software configuration management
3.14 miscellaneous plans
summary
exercises
4. requirements analysis and specification,
4.1 requirements gathering and analysis
4.2 software requirements specification (srs)
4.3 formal system specification
4.4 axiomatic specification
4.5 algebraic specification.
4.6 executable specification and 4gl
summary
exercises
5. software design
5.1 outcome of a design process
5.2 how can we characterize a good software design?
5.3 cohesion and coupling
5.4 layered arrangement of modules
5.5 approaches to software design
5.6 object-oriented versus function-oriented designapproaches
summary
exercises
6. function-oriented software design
6.1 overview of sa/sd methodology
6.2 structured analysis
6.3 data flow diagrams (dfds)
6.4 extending dfd technique to make it applicable to
6.5 structured design
6.6 detailed design
6.7 design review
summary
exercises
7. object modelling using uml
7.1 overview of basic object-orientation concepts
7.2 unified modelling language (uml)
7.3 uml diagrams
7.4 use case model
7.5 class diagrams
7.6 interaction diagrams
7.7 activity diagrams
7.8 state chart diagram
7.9 postscript
summary
exercises
8. object-oriented software development
8.1 patterns
8.2 some common design patterns
8.3 an object-oriented analysis and design methodology.
8.4 interaction modelling
8.5 applications of the analysis and design process
8.6 ood goodness criteria
summary
exercises
9. user interface design
9.1 characteristics of a good user interface
9.2 basic concepts
9.3 types of user interfaces
9.4 fundamentals of component-based gui development
9.5 a user interface design methodology
summary
exercises
10. coding and testing
10.1 coding
10.2 code review
10.3 software documentation
10.4 testing
10.5 testing in the large versus testing in the small
10.6 unit testing
10.7 black-box testing
10.8 white-box testing
10.9 debugging
10.10 program analysis tools
10.11 integration testing
10.12 testing object-oriented programs
10.13 system testing
10.14 some general issues associated with testing
summary
exercises
11. software reliability and quality management
11.1 software reliability
11.2 statistical testing
11.3 software quality
11.4 software quality management system
11.5 iso 9000
11.6 sei capability maturity model
11.7 personal software process (psp)
11.8 six sigma
summary
exercises
12. computer aided software engineering
12.1 case and its scope
12.2 case environment
12.3 case support in software life cycle
12.4 other characteristics of case tools
12.5 towards second generation case tool
12.6 architecture of a case environment
summary
exercises
13. software maintenance
13.1 characteristics of software maintenance
13.2 software reverse engineering
13.3 software maintenance process models
13.4 estimation of maintenance cost
summary
exercises
14. software reuse
14.1 what can be reused?
14.2 why almost no reuse so far?
14.3 basic issues in any reuse program
14.4 a reuse approach
14.5 reuse at organization level
summary
exercises
15. emerging trends
15.1 client-server software
15.2 service-oriented architecture (soa)
15.3 software as a service (saas)
summary
exercises
references
index