SW Dev Methods
SWDev Life Cycle¶
Analysis Diagram
- Requirements
- List candidate requirements
- Understand the system context through domain modelling and business modelling
- Capturing functional as well as non functional requirements 1. Functional requirement: A booking system must make the booking if the user has paid for the booking 2. Non functional requirement: must book w/i 30s
- Analysis
- Understand how requirements interact and what it means for the system
- Client might miss out on specifications in the requirement - you need to read between the lines
- Developing an internal view of the system
- Identifying the analysis classes and their collaborators - place holders of functionality
- Design
- Deciding the collaboration between the components lies at the heart of SW Design
- A component fulfils its own responsibility through the code it contians
- Components exhcange information through methods
- Tech stack
- Dividing the system into implementation units
- Implementation
- Programming
- Unit testing
- Integration testing
- Deployment model
- Testing
- Manaul & automated testing
- Continuous integration and testing
SWDev Methods¶
Waterfall Model¶
Linear sequential model of SDLC
- Clearly defined stages, well understood milestones
- Hardly adjustable to new requirements
1 2 3 4 5 6 |
|
Work products from each stage are inputs to the next page
Each stage of the life cycle is separate from the others
If the requirements are not stable, this can be a disadvantage, because it means restarting the life cycle if there is a change in the product requirements
Rapid Prototyping¶
Make a prototype of your end product ASAP to review w/ customer
- building of prototypes to clarify requirements and system scope
- The prototypes, however, should never become the final system
- Once the requirements have been sort out, the system is built formally
Iterative and Incremental Development¶
RADIT, Release, RADIT, Release, ...
Sprints, time boxed development cycles
iterative incremental model: make small steps at each iteration: wheel comes before car
Agile Method¶
- Individual interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
12 Agile principles
- Customer satisfaction by rapid delivery of useful software
- Welcome changing requirements, even late in development
- Working software is delivered frequently (weeks rather than months)
- Close, daily cooperation between business people and developers
- Projects are built around motivated individuals, who should be trusted
- Face-to-face conversation is the best form of communication (co-location)
- Working software is the principal measure of progress (talk is cheap, show me your code)
- Sustainable development, able to maintain a constant pace
- Continuous attention to technical excellence and good design
- Simplicity—the art of maximizing the amount of work not done—is essential
- Self-organizing teams
- Regular adaptation to changing circumstance
It has high demand on the quality of devs, and its hard to separate responsibilities. Not recommended for team size > 12
Abstraction¶
Black box, the process of hiding the implementation details of something and providing the user with just the functionality
Hierarchy¶
OOP
The Software Equation¶
\((B^{1/3} * Size ) / Productivity = Effort^{1/3} * Time^{4/3}\)
\(Effort = \left[ \cfrac{Size}{Productivity \times Time^{4/3}} \right]^3 \times B\)