Lesson 8. Software Development
Lesson Objective
- Describe the waterfall lifecycle, agile methodologies, extreme programming, the spiral model and rapid application development.
- Describe the relative merits and drawbacks of different methodologies and when they might be used.
Lesson Notes
What is Software?
Software refers to a collection of programs and data that instruct a computer on how to perform specific tasks. The image below show software broken down into various categories.
Systems Development Life Cycle
Software development, from the initial idea to the final product, follows distinct stages.
- Analysis
- Design
- Implementation (create, test and install)
- Evaluation
- Maintenance
Explanation of each stage:
Phase |
Description |
Method |
Initiation (Analysis) |
Systems analyst gathers information about:
- what the current system does.
- if there is one.
- What the new system needs to do.
|
- Interview people who will use the software.
- Use questionnaires to get information from large groups of people.
- Observe how the current system works.
- Look at existing documentation.
|
Planning (Design) |
The software design will include:
- A description of the data: data type, format, and validations
- Database design if appropriate
- Input screens
- Output screens and reports
- How the data will be processed
- How the software will be tested
|
- Wireframe designs
- General screen mockups
- Class diagrams
- ERDs
- Data plans
- Description of the system requirements
- Test plans
|
Execution (Implementation) |
This stage includes:
- Coding and testing the software
- Writing user and technical documentation
- Installing the software for the user
|
- Creation using chosen program
- Prototypes
- Testing
- Black box testing - I/O tests
- White box testing - Code test
- Alpha Testing - Developer tests
- Beta Testing - User tests
|
Evaluation |
- Does it all work?
- The user now needs to test every aspect of the software to make sure it does what it is supposed to do.
- It will be evaluated against the original specification document.
- This stage is also called Acceptance testing.
|
Evaluation of:
|
Maintenance |
Three types of maintenance:
- Corrective maintenance. Bugs will usually be found when the software is put into action, no matter how thoroughly it was tested.
- Adaptive maintenance. Over time, user requirements will change and the software will have to be adapted to meet new needs.
- Perfective maintenance. Even if the software works well, there may be ways of making it even better - faster, easier to use, more functionality.
|
|
A diagram showing the interactions between each stage:
The Waterfall Model
As in the lifecycle model, each stage is completed and documented before the next is begun.
The customer does not see the end product until it is completed.
Any change to be made often means the project has to be started again.
This model is suitable when::
- The requirements are very clear and fixed
- There are no ambiguous requirements
- The technology is well understood
Advantages:
- Simple to understand and use
- Each stage is separate and self-contained with well defined outcomes and written documentation - easier to manage
- The model works well for where requirements are very well understood
Disadvantages:
- Little user involvement after the Analysis stage
- No working software is produced until late in the cycle
- The user is presented with the finished product and if it is not quite what was required, it is generally too late to make changes
The Spiral Model
The four basic steps of analysis, design, implementation (i.e. programming and testing) and evaluation are followed.
The software project passes through these phases repeatedly.
Each successive loop round the spiral generates a new, more refined prototype until the software meets all the requirements.
Advantages:
- The well-defined steps.
- Software is produced at an early stage so problems are found early.
- The user can gives feedback on each prototype earlier.
- Added functionality can be added during the process.
- The end result is more likely to be what the user wants.
Disadvantages:
- The process of developing prototypes, getting feedback and refining the prototypes is time-consuming so the finished product takes longer to develop.
- A system is more costly to develop because of the time involved.
- Not suitable for smaller projects.
This model is suitable when::
- For medium to high-risk projects with complex requirements.
- When users are unsure of their needs.
- For large projects which may take years to develop, during which time new technologies may develop and significant changes occur.
The Agile Model
Software is developed in rapid incremental cycles. Each version builds on previous functionality and thoroughly tested before release.
Agile is good for small, time-critical projects. Very little planning is needed to get started using this method.
Advantages:
- Rapid, continuous delivery of useful software leads to customer satisfaction.
- Customers, developers and testers constantly interact with one another.
- Working software is delivered frequently.
- Software is easily adapted to changing circumstances.
- Late changes can be implemented.
Disadvantages:
- There is a lack of emphasis on necessary design and documentation.
- The project can fail to deliver if the customer is not clear about the desired final outcome.
- Not suitable for novice programmers - experienced programmers capable of making good decisions are required.
This model is suitable when::
- When new changes need to be implemented - small incremental changes can be made frequently and for little cost.
- In an expanding or developing business where users' needs are continuously changing and developing.
Extreme Programming
This is a type of agile software development.
- Frequent releases of the software are made in short development cycles.
- It is intended to improve productivity and responsiveness to changing customer requirements.
Rapid Application Development
Rapid Application Development (RAD) is an adaptive software development model that prioritizes prototyping and quick feedback over extensive planning.
RAD emphasizes building prototypes rapidly rather than following a rigid planning process. It allows developers to iterate and update software quickly without starting from scratch. The focus is on delivering a quality product aligned with end users' requirements.
RAD offers agility and user-centric development but requires careful management to avoid pitfalls.
Advantages:
- RAD emphasizes quick prototyping, allowing developers to create functional prototypes rapidly. Faster development cycles lead to quicker time-to-market for software products.
- RAD involves end users early in the process through prototypes. Regular feedback ensures alignment with user needs and expectations.
- RAD adapts well to changing requirements. Iterative development allows adjustments based on real-world usage.
- Less emphasis on extensive documentation. Focus shifts to working code and user interaction.
- Cross-functional teams collaborate closely. Communication between developers, designers, and users is streamlined.
Disadvantages:
- Rapid iterations may lead to scope expansion. Managing feature requests becomes challenging.
- RAD requires skilled developers who can create robust prototypes. Inexperienced teams may struggle with quality and maintainability.
- RAD suits projects with clear requirements and well-defined user needs. Not ideal for complex, large-scale systems.
- Quick development may sacrifice code quality. Technical debt accumulates if not addressed promptly.
- Minimal upfront planning may overlook critical aspects. Strategic decisions might be deferred until later stages.
Why use this model?:
- RAD enables swift creation of prototypes for testing software functionalities.
- It requires less emphasis on the planning phase.
- Teams can design, review, and iterate features rapidly.