ESE Components and Modules
ESE is composed of nine (9) major components that address all key aspects of software engineering practice. Each ESE component is organized into two or more modules, each approximately one hour in length, that address a specific software engineering topic.
All components are accompanied by a detailed workbook, containing written discussion of important topics, exercises and a post test for each mopdule. Each ESE component and module is described below:
Component 1: Software Engineering Overview
Module 1-1: Software and Software Engineering. Discusses software and the basic process components that are used to build it.
Module 1-2: Software Engineering Paradigms. Presents a set of alternative process models that can be used to implement software engineering procedures, methods, and tools.
Module 1-3: Process Improvement Topics. Introduces a pragmatic strategy for improving software engineering practices within your organization.
Component 2: Software Project Management
Module 2-1, Measurement and Metrics. Discusses how measurement can be used to help a project manager estimate, control product quality, and assess the efficacy of the software process.
Module 2-2, Project Estimation. Presents specific techniques for estimating project effort, duration, and staffing
Module 2-3, Risk Analysis. Provides guidelines for identifying risks, assessing their probability and impact, and developing a plan for mitigating, monitoring and managing them.
Module 2-4, Scheduling, Staffing and Control. Discusses how to establish an effective project schedule, the options for defining team structures, and provides a basic introduction to SQA and SCM as project control mechanisms.
Component 3: Information Engineering (SA/SD)
Module 3-1: Information Engineering. Introduces techniques that can be applied to analyze the information needs of a business.
Module 3-2: Analysis Fundamentals. Considers methods for requirements gathers and presents five basic principles that govern all analysis work
Module 3-3: Structured Analysis (presented in three parts). Presents methods for data modeling, data flow representations, and procedural and behavioral modeling.
Module 3-4: Design Fundamentals. Presents a set of basic characteristics that lead to high quality software designs.
Module 3-5: Structured Design. Covers the notation and heuristics associated with a method for deriving data designs as well as architectural and procedural designs.
Component 4: Reengineering Strategies
Module 4-1: Business and Application Reengineering. Discusses how to reengineer information systems and applications, presenting a reengineering paradigm for this work.
Module 4-2: Process Reengineering. Presents a six-step model for software process improvement.
Component 5: Object-Oriented Methods
Module 5-1: Object-Oriented Concepts. Presents each of the important OO concepts that make object-oriented software engineering unique.
Module 5-2: Object-Oriented Analysis. Presents the basic principles that underlie all good analysis models and the methods that are applied to create models for object-oriented applications.
Module 5-3: Object-Oriented Design. Discusses the principles, modeling notation and heuristics that are required to build an OO design model.
Module 5-4: Reuse and Management Issues. Addresses one of the key outgrowths of object-oriented software engineering&emdash;reusability&emdash;and also considers OO project management issues and testing for OO software.
Component 6: Software Testing
Module 6-1: Software Testing Concepts. Discusses the objectives of testing, the limitations that software engineers face, and the different organizations that become involved in the testing process.
Module 6-2: Test Case Design Methods. Presents both white-box and black-box testing methods. These methods result in the design of test cases that have a high probability of finding errors.
Module 6-3: Testing Strategies. Presents a systematic strategy for conducting testing as the software is constructed, validated, and delivered.
Component 7: Software Quality Assurance
Module 7-1 Software Quality. Discusses how software quality is defined, the factors that impact quality from a technical perspective, and the metrics that are used to assess product quality.
Module 7-2 SQA Activities. Presents fundamental software quality assurance (SQA) activities.
Module 7-3 Software Reviews. Presents the roles of different review participants, logistics of formal technical reviews, and the information that results at the conclusion of a review.
Component 8: Software Configuration Management
Module 8-1 Change and Basic SCM Concepts. Discusses change and its impact on the software project. Basic SCM concepts are also introduced.
Module 8-2 Identification and Version Control. Presents the SCM activities that enable a project team to identify and control the elements of the software configuration.
Module 8-3 Change Control. Presents the process that allows a software project team to control change without retarding progress.
Component 9: ISO 9000 Software Development
Module 9-1, Fundamentals of ISO 9000. Describes the ISO philosophy of quality assurance, the registration process, the role of auditing, and compares ISO 9000 to the Software Engineering Institute's Capability Maturity Model and IEEE software engineering standards.
Module 9-2, ISO 9001 Standard. Provides a detailed explanation of each of the standard's requirements, the documentation associated with each requirement, and the records considered by auditors for each requirement.
Module 9-3, ISO 9000-3 Guidelines. Discusses the software-specific model that many organizations have used to become registered to ISO 9001. The three parts of the model and areas of concern are described.
Module 9-4, Developing a 9001 Compliant System. Presents a chronology for achieving ISO registration. Common problems encountered and tips in how to avoid them are described.
Suggestions for Use
Essential Software Engineering has been designed to fill a void in the education of software professionals. It is not always possible for software engineers and their managers to acquire high quality classroom training. Even in situations where such training is available, the demands of project deadlines and limited budgets often preclude widespread application of the training. ESE gives you the ability to provide "just-in-time" training, targeting content and presentation as needed, when needed.
The number of people involved in software engineering within your company and your local training commitment will dictate the manner in which you use ESE.
Individual ESE training focuses on practitioners and managers (as well as other interested parties) who have a desire to learn about software engineering outside the context of any group training activity. Individual training is conducted at a pace defined by the student and focuses on topics that are of direct interest to the student.
ESE can also be used to train large groups of software practitioners and managers. ESE may be used either as the only vehicle for software engineering training or to supplement other forms of training (e.g., formal classroom presentations and project work).
It is possible to augment group viewing sessions by providing additional live instruction and team-oriented laboratory work associated with each ESE topic. For example, a generic ESE component might be presented on software project planning. After the generic presentation, an instructor might present a detailed view of local procedural approaches to software project management, including a discussion of predefined company milestones; locally applied scheduling tools; and required project reporting mechanisms (e.g., charge numbers, task identification, and personnel administration)