> For the complete documentation index, see [llms.txt](https://nec-license.gitbook.io/books/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://nec-license.gitbook.io/books/8.-software-engineering-and-object-oriented-analysis-and-design.md).

# 8. Software Engineering and Object-Oriented Analysis & Design

### **8.1 Software Process and Requirements**

* **Software Characteristics and Quality Attributes**
* **Software Process Models**
  * Agile Model, V-Model, Iterative Model, Prototype Model, Big Bang Model
* **Computer-Aided Software Engineering (CASE)**
* **Requirements Engineering**
  * Functional and Non-Functional Requirements
  * User Requirements, System Requirements, Interface Specification
  * The Software Requirements Document
  * Requirements Elicitation, Analysis, Validation, and Management

### **8.2 Software Design**

* **Design Process and Concepts**
  * Design Mode, Design Heuristics
  * Architectural Design Decisions
* **System Organization**
  * Modular Decomposition Styles, Control Styles
  * Reference Architectures, Multiprocessor Architecture
  * Client-Server Architectures, Distributed Object Architectures
  * Inter-Organizational Distributed Computing
* **Real-Time Software Design and Component-Based Software Engineering**

### **8.3 Software Testing, Cost Estimation, Quality Management, and Configuration Management**

* **Software Testing**
  * Unit Testing, Integration Testing, System Testing, Component Testing, Acceptance Testing
  * Test Case Design, Test Automation
  * Metrics for Testing
* **Cost Estimation and Quality Management**
  * Algorithmic Cost Modeling, Project Duration and Staffing
  * Software Quality Assurance (SQA)
  * Formal Technical Reviews, Formal Approaches to SQA
  * Statistical Software Quality Assurance, Framework for Software Metrics
  * ISO Standards, CMMI, SQA Plan
* **Configuration Management**
  * Change Management, Version and Release Management
  * CASE Tools for Configuration Management

### **8.4 Object-Oriented Fundamentals and Analysis**

* **Defining Models and Requirement Process**
* **Use Cases**
* **Object-Oriented Development Cycle**
* **Unified Modeling Language (UML)**
* **Building Conceptual Models**
  * Adding Associations and Attributes
  * Representation of System Behavior

### **8.5 Object-Oriented Design**

* **From Analysis to Design**
  * Describing and Elaborating Use Cases
  * Collaboration Diagrams
* **Objects and Patterns**
* **Determining Visibility**
* **Class Diagrams**

### **8.6 Object-Oriented Design Implementation**

* **Programming and Development Process**
  * Mapping Design to Code
  * Creating Class Definitions from Design Class Diagrams
  * Creating Methods from Collaboration Diagrams
  * Updating Class Definitions, Classes in Code
  * Exception and Error Handling
