🗒
Software Engineering Revision
Type Knowledge
Status Revise
URL
Updated @June 5, 2023 6:26 PM
Created @May 23, 2023 9:08 AM
Date
Action Items
APIs
Notes
The Software development lifecycle
What is the software development life cycle
SDLCs are very general software development process models/frameworks
that can be extended or built upon to create more specific software
engineering processes - Context is everything!
💡 As engineers we want to make things work – not just ‘run’.
- We want, and our clients want us, to deliver a working, viable,
robust, appropriate, maintainable solution.
- In budget and on time!
2 General process models:
The waterfall model: This takes the fundamental process activities of
specification, development, validation, and evolution and represents
Software Engineering Revision 1
, them as separate process phases such as requirements specification,
software design, implementation, and testing.
Incremental development: This approach interleaves the activities of
specification, development, and validation. The system is developed as a
series of versions (increments), with each version adding functionality to
the previous version.
Interleaving?
By interleaving these activities, teams can gather feedback
early in the development process, identify issues or gaps in
requirements, and make necessary adjustments. This approach
promotes continuous collaboration and communication
among stakeholders, reducing the chances of
misunderstandings and rework later in the project.
In an interleaved or iterative approach, the activities are
performed in parallel and can overlap. This approach
acknowledges that software development is an iterative and
collaborative process, where feedback from one activity can
influence and inform the others. It allows for flexibility and
adaptation to changes in requirements and helps in mitigating
risks associated with rigid, sequential approaches.
The key stages are:
Software Specification – here we define the functionality of our software
predicated by the user requirements
Software Development – software to meet the specification is designed
and produced
Software Verification – software is tested and checked to ensure it does
what the developers have designed it to do – in all cases
Software Validation – software is validated against the customer’s
specification of requirements to ensure it does what the customer wants
Software Maintenance – software is maintained to ensure it meets the
customers evolving needs
Which of the process activities are the most important?
None, equally as important
Software Engineering Revision 2
, While each stage is important, the relative significance may
vary based on project requirements, timelines, and specific
challenges. It's crucial to approach the SDLC holistically and
allocate appropriate resources and attention to each stage to
achieve a successful software project.
Difference between Verification and Validation
Very buggy - Verification is checking the code itself
Give some examples how and why a software client’s need might evolve and
thus why we might need to maintain a piece of software?
Need’s might evolve due to:
Changing business requirements
Market demands
Technological advancements
We might need to maintain a software for:
New functions for the program due to changes in market or business
demands to make the software more valuable
Bug and performance improvement to combat any bug found during
testing to the open public
User feedback and usability improvements: Clients may receive
feedback from users and require software maintenance to enhance
usability and address user preferences and pain points.
Security enhancements: Clients may seek software maintenance to
implement additional security measures, patch vulnerabilities, and
ensure compliance with evolving cybersecurity threats.
2 main types of SDLC
Waterfall - Project management between every stage: Checking with
stakeholder, ticking it off and we move on
Specification frozen
If changes are required spec must be changed
Software Engineering Revision 3