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