Software Engineering

  1. Software Development Methodologies
    1. Agile
      1. Core Principles
        1. Individuals and Interactions Over Processes and Tools
          1. Working Software Over Comprehensive Documentation
            1. Customer Collaboration Over Contract Negotiation
              1. Responding to Change Over Following a Plan
              2. Scrum
                1. Roles
                  1. Scrum Master
                    1. Product Owner
                      1. Development Team
                      2. Events
                        1. Sprint Planning
                          1. Daily Scrum
                            1. Sprint Review
                              1. Sprint Retrospective
                              2. Artifacts
                                1. Product Backlog
                                  1. Sprint Backlog
                                    1. Increment
                                  2. Kanban
                                    1. Core Principles
                                      1. Visualize Work
                                        1. Limit Work in Progress (WIP)
                                          1. Manage Flow
                                            1. Make Process Policies Explicit
                                              1. Implement Feedback Loops
                                              2. Kanban Board
                                                1. Metrics
                                                  1. Lead Time
                                                    1. Cycle Time
                                                      1. Cumulative Flow Diagram
                                                    2. Extreme Programming (XP)
                                                      1. Practices
                                                        1. Pair Programming
                                                          1. Test-Driven Development (TDD)
                                                            1. Continuous Integration
                                                              1. Refactoring
                                                                1. Small Releases
                                                            2. Waterfall
                                                              1. Sequential Phases
                                                                1. Requirements
                                                                  1. Design
                                                                    1. Implementation
                                                                      1. Verification
                                                                        1. Maintenance
                                                                        2. Advantages and Disadvantages
                                                                          1. Simple and Structured Approach
                                                                            1. Difficulty Accommodating Changes
                                                                          2. DevOps
                                                                            1. Key Concepts
                                                                              1. Collaboration Between Development and Operations
                                                                                1. Automation of Delivery and Infrastructure Changes
                                                                                2. Practices
                                                                                  1. Continuous Integration
                                                                                    1. Continuous Delivery/Deployment
                                                                                      1. Microservices
                                                                                        1. Infrastructure as Code
                                                                                        2. Cultural Aspects
                                                                                          1. DevOps Culture
                                                                                            1. Collaboration and Communication
                                                                                          2. Spiral Model
                                                                                            1. Phases
                                                                                              1. Planning
                                                                                                1. Risk Analysis
                                                                                                  1. Engineering
                                                                                                    1. Evaluation
                                                                                                    2. Spiral Iterations
                                                                                                      1. Risk Management Focus
                                                                                                      2. V-Model
                                                                                                        1. Verification and Validation Phases
                                                                                                          1. Correspondence of Development and Testing Phases
                                                                                                            1. Benefits and Challenges
                                                                                                              1. Clear Standards and Guidelines
                                                                                                                1. Rigid and Less Flexible
                                                                                                              2. Incremental Model
                                                                                                                1. Incremental Development Process
                                                                                                                  1. Dividing System into Smaller Increments
                                                                                                                    1. Delivering Functional Increments
                                                                                                                    2. Benefits of Early Product Delivery
                                                                                                                    3. Iterative Model
                                                                                                                      1. Iterations in Development
                                                                                                                        1. Prototype Development
                                                                                                                          1. Continuous Feedback and Refinement
                                                                                                                          2. Flexibility in Changing Requirements