Software Engineering
Introduction to Software Engineering
Software Processes
Software Requirements Analysis and Specification
Software Architecture
Planning a Software Project
Function-Oriented Design
Object-Oriented Design
Detailed Design
Coding
Testing
- The Problem Domain
- Software is Expensive
- Late and Unreliable
- Maintenance and Rework
- The Software Engineering Challenges
- Scale
- Quality and Productivity
- The Software Engineering Approach
- Phased Development Process
- Managing the Process
- Software Development Life Cycle
- Project Management Methodology
- Project Categorization
- What is management?
- Setting objectives
- The Business Case
- Software Process
- Component Software Processes
- Predictability
- Support Testability and Maintainability
- Support Change
- Early Defect Removal
- Process Improvement and Feedback
- Waterfall Model
- Iterative Development
- The Spiral model
- Comparison of Models
- Project Management Process
- The Inspection Process
- Software Configuration Management Process
- Requirements Change Management Process
- Process Management Process
- Software Requirements Analysis
- Software Requirements Specification
- Requirement Process
- Problem Analysis
- Informal Approach
- Data Flow Modeling
- Object-Oriented Modeling
- Prototyping
- Requirements Specification
- Characteristics of an Software Requirement Specification
- Components of an Software Requirements Specification
- Specification Language
- Structure of a Requirements Document
- Functional Specification with Use Cases
- Examples of use cases
- Validation
- Software Architecture
- Architecture Views
- Component and Connector View
- Pipe and Filter
- Shared-Data Style
- Client-Server Style
- Architecture and Design
- Preserving the Integrity of an Architecture
- Deployment View and Performance Analysis
- Documenting Architecture Design
- Evaluating Architectures
- The Architectural Tradeoff Analysis Method
- Function-Oriented Design
- Design Principles
- Problem Partitioning and Hierarchy
- Abstraction
- Top-Down and Bottom-Up Strategies
- Module-Level Concepts
- Design Notation and Specification
- Specification
- Structured Design Methodology
- Restate the Problem as a Data Flow Diagram
- Identify the Most Abstract Input and Output Data Elements
- First-Level Factoring
- Factoring the Input, Output, and Transform Branches
- Design Heuristics
- Transaction Analysis
- Verification
- Metrics
- Network Metrics
- Stability Metrics
- Information Flow Metrics
- Introduction to Object-Oriented Design
- OO Analysis and OO Design
- OO Concepts
- Structure Charts
- Unified Modeling Language
- Class Diagram
- Sequence and Collaboration Diagrams
- Inheritance and Polymorphism
- A Design Methodology
- Dynamic Modeling
- Functional Modeling
- Internal Classes and Operations
- Optimize and Package
- The Word-Counting Problem
- Rate of Returns Problem
- Metrics
- Testing
- Test Oracles
- Test Cases and Test Criteria
- Psychology of Testing
- Black-Box Testing
- Boundary Value Analysis
- Cause-Effect Graphing
- State-Based Testing
- White-Box Testing
- Mutation Testing
- Testing Process
- Levels of Testing
- Test Case Specifications
- Test Case Execution and Analysis
- Defect Logging and Tracking
- Defect Analysis and Prevention
- Perform Causal Analysis
- Develop and Implement Solutions
- Effective Software Testing
- Unit Testing
- Integration Testing
- Regression Testing
- System Testing
- User Acceptance Testing
- Testing for Agile Software Development
- Auditing Software Testing Process
- Challenges in Testing Web Based Applications
- Software Testing Myths
- Bug Reporting