Software Engineering: Advanced
- Introduction: Why Study Software Engineering?
- Life Cycle Models
- Software Project Life Cycle Model
- Software Process Life Cycle
- Organization Process Assets
- Software Project Life Cycle Process
- Model Descriptions
- Strengths and Weaknesses
- Case Study
- Software Life Cycle vs Project Management Life Cycle
- Objectives, Principles, Attributes
- Objectives: Reusability, Maintainability, Concurrent Documentation, Testability, Correctness, Reliability, Portability
- Principles: Concurrent Documentation, Hierarchical Decomposition, Functional Decomposition,Information Hiding, Stepwise Refinement, Structured Programming, Life-Cycle Verification
- Attributes: Reduced Coupling, Enhanced Cohesion, Reduced Complexity, Well-Defined Interfaces, Readability, Ease of Change, Traceability, Visibility of Behavior, Early Error Detection
- Documentation Principles
- Concurrency, Maintainability, Correctness, Portability, Reusability, Reliability, Testability, Traceability, Adaptability, Accessibility
- Types of Interfaces
- Project Initiation
- Description of the Business Needs/Problem to Be Solved, Objective(s), Scope
- Feasibility Studies and Estimating
- People Management (Socio-Technical Systems)
- Technical and social skills and skill sets
- Team size and communication
- Developing, maintaining, and updating a resourced project schedule and resource plan.
- Configuration Management
- Change Management
- Risk Management
- Process Improvement: Software Engineering Institute’s Capability Maturity Model (SEI CMM)
- Object Oriented Analysis and Design
- Requirements Definition
- Stakeholders, Buy-in
- Joint Application Development (JAD)
- Requirements Management
- User Interfaces, Prototyping
- Alternatives Analysis
- Validation and Verification
- Design
- Architectural Design
- Application Architectures
- Decomposition: Functional and Modular
- Object Oriented Analysis and Design
- Procurement
- Design Patterns
- Development and Testing
- Object Oriented Programming
- Validation and Verification
- Types of Testing
- Unit, integration, white-box, black-box, path, boundary value analysis, equivalence classes, regression
- Implementation and Support
- Deployment
- Types of Maintenance: Corrective, Perfective, Preventive, Adaptive
- Wrap-up:
- Future of Software Engineering
- Course Recap, Q/A, and Evaluations