Software Engineering

This is my notes for software engineering. In this post, I will cover some basic principles about software engineering.


Software Process

  • A software process is a structured set of activities to produce or maintain a software product.
    • Specification: Define what the system should do
    • Design and Implementation: Defining the system’s architecture and implementing the system
    • Verification and Validation: Checking that it does that the customer wants
    • Maintenance: Changing the system in response to new customer / market needs

Waterfall Methodology

  • Definition: The Waterfall model is a sequential development process that flows like a waterfall through all phases of a project (analysis, design, development, and testing, for example), with each phase completely wrapping up before the next phase begins.
  • Strengths
    • Simple and easy to understand and use
    • Process and results are well documented
  • Weaknesses
    • Inflexible to changing requirements
    • Late discovery of technical problems due to sequential order

Agile Methodology

  • Definition: Agile methodology is a project management approach that prioritizes cross-functional collaboration and continuous improvement. It divides projects into smaller phases and guides teams through cycles of planning, execution, and evaluation.
  • Strengths
    • Extremely responsible to changes
    • Working software produced very early
  • Weaknesses
    • Highly dependant on customer involvement
    • Requires a high performing team