Introduction to software engineering

INTRODUCTION The Need for Software Engineering Are Software Teams Really Necessary? Software Engineering Software Lifecycles Different Views of Software Engineering Activities Software Engineering as an Emerging Discipline Some Techniques of Software Engineering Standards Commonly Used for Software Development Processes The Year 2000 Problem and Similar Problems Organization of the Book PROJECT MANAGEMENT Sub-Teams Needed in Software Engineering Projects The Nature of Project Teams Project Management Software Project Estimation Project Scheduling Project Measurement Project Management Tools The Role of Networks in Project Management Groupware An Example: Project Management for a Year 2000 Conversion Project REQUIREMENTS Some Problems with Requirements Determination Requirements Elicitation Requirements Traceability Software Architectures and Requirements Reengineering System Requirements Assessment of Feasibility of System Requirements Usability Requirements Specifying Requirements Using State Diagrams and Decision Tables Specifying Requirements Using Petri Nets Ethical Issues Some Metrics for Requirements The Requirements Review The Major Project - Problem Statement The Major Project - Requirements Elicitation The Major Software Project - Requirements Analysis SOFTWARE DESIGN Introduction Software Design Patterns Introduction to Software Design Representations Procedurally-Oriented Design Representations Software Architectures Software Design Principles for Procedurally-Oriented Programs What is an Object? Object-Oriented Design Representations Software Design Principles for Object-Oriented Programs Class Design Issues An Example of Class Development - The String Class User Interfaces Software Interfaces Some Metrics for Design Design Reviews A Manager's Viewpoint of Design Architecture of the Major Software Engineering Project Preliminary Design of the Major Software Project Subsystem Design of the Major Software Project Detailed Design for the Major Software Project CODING The Choice of Programming Language Coding Styles Coding Standards Coding, Design, Requirements, and Change Some Coding Metrics Coding Reviews and Inspections Configuration Management A Management Perspective on Coding Coding of the Major Software Project TESTING AND INTEGRATION Types of Software Testing Black-Box Module Testing White-Box Module Testing Reducing the Number of Test Cases by Effective Test Strategies Testing Objects for Encapsulation and Completeness Testing Objects with Inheritance General Testing Issues for Object-Oriented Software Test Plans Software Integration Managing Change in the Integration Process Performance and Stress Testing Quality Assurance Software Reliability A Manager's Viewpoint on Testing and Integration Testing the Major Software Project Integrating the Major Software Project DELIVERY, INSTALLATION, AND DOCUMENTATION Delivery Installation Internal Documentation External Documentation Design Rationales Installation, User, Training, and Operations Manuals On-Line Documentation Reading Levels A Manager's View of Delivery, Installation, and Documentation Delivery, Installation, and Documentation of the Major Software Project MAINTENANCE Introduction Corrective Software Maintenance Adaptive Software Maintenance Preventative Software Maintenance and the Year 2000 Problem How to Read Requirements, Designs, and Source Code A Manager's Perspective on Software Maintenance Maintenance of the Major Software Project RESEARCH ISSUES IN SOFTWARE ENGINEERING Some Important Research Problems in Software Engineering How to Read the Software Engineering Research Literature APPENDIX: COMMAND-LINE ARGUMENTS REFERENCES