1.2.3 Software Development

Cards (46)

  • Programming methodologies
    • Waterfall lifecycle
    • Agile methodologies
    • Extreme programming
    • Spiral model
    • Rapid application development
  • Software can be developed using a variety of approaches
  • Most software development life cycles (SDLCs) have some stages in common, including:
  • Analysis
    1. Stakeholders state what they require from the finished product
    2. Information is used to clearly define the problem and the system requirements
    3. Requirements may be defined by analysing strengths and weaknesses with the current way the problem is being solved, considering types of data involved including inputs, outputs, stored data, and amount of data
  • Design
    1. The different aspects of the new system are designed, such as inputs, outputs, security features, hardware set-up, user interface
    2. A test plan may also be designed at this stage
  • Development
    The design from the previous stage is used to split the project into individual, self-contained modules, which are allocated to teams for programming
  • Testing
    1. The program is tested against the test plan formed in the Design stage
    2. Various types of testing can be carried out: Alpha testing, Beta testing, White box testing, Black box testing
  • Implementation
    Once the testing stage has been used to make the appropriate changes to the software, it is installed onto the users’ systems
  • Evaluation
    1. After the implementation stage, the effectiveness of the software is evaluated against the system requirements defined at the analysis stage to evaluate its suitability in solving the problem
    2. Different criteria are considered, including robustness, reliability, portability, and maintainability
  • Maintenance
    1. Any errors or improvements that could be made to the software are flagged up by the end-users
    2. Programmers will regularly send out software updates to fix any bugs, security issues, or make any needed improvements
  • The traditional waterfall model of software development is now being replaced with more agile models
  • The waterfall model is based on a series of stages
  • Waterfall lifecycle
    The traditional waterfall model of software development is based on a series of stages which are completed in sequence, from start to finish
  • Waterfall model
    • Based on a series of stages completed in sequence
  • Analysis stage in Waterfall model
    Includes a feasibility study evaluating the project using 'TELOS': Technical, Economic, Legal, Operational, Scheduling
  • If a change needs to be made within a project developed using the waterfall model, programmers must revisit all levels between the current stage and the stage at which a change needs to be made, making the model inflexible and unsuitable for projects with changing requirements
  • Users have little input in the waterfall lifecycle as they are only involved at the very beginning and end, during the analysis and evaluation stage
  • Agile methodologies
    Collection of methodologies aiming to improve flexibility of software development and adapt to changes in user requirements faster
  • Agile methodologies
    • Sections of the problem are broken down and developed in parallel, working prototype delivered early on, prototypes built upon and improved iteratively, less focus on documentation, more priority given to user satisfaction
  • Extreme programming (XP)
    Development team consists of a pair of programmers alongside a representative end-user, built on 'user stories', aim to produce high-quality code, programmers work no longer than forty hours a week, each iteration generates a 'working version' of the program
  • Extreme programming (XP)
    • Development team consists of a pair of programmers alongside a representative end-user, aim to produce high-quality code, each iteration generates a 'working version' of the program
  • In XP, the iterative nature makes it hard to produce high-quality documentation, effective communication among programmers is crucial
  • Spiral model
    Built on four key stages focusing on effectively managing risk-heavy projects: Analysing system requirements, Pinpointing and mitigating risks, Development, testing and implementation, Evaluating to inform the next iteration
  • If a project is found to be too risky at any point in the spiral model, it is terminated
  • Hiring risk assessors to analyse risks in the spiral model can be expensive, making this methodology suited to only v
  • Mitigating risks
    1. Development, testing and implementation
    2. Evaluating to inform the next iteration
    3. Project termination if found too risky
  • Hiring risk assessors to analyse risks involved can be expensive, making this methodology suited to only very large-scale projects
  • Rapid Application Development (RAD)
    1. Iterative methodology using partially functioning prototypes which are continually built-upon
    2. Initial gathering of user requirements using focus groups
    3. Development of an 'incomplete' version of the solution given to the user to trial
    4. User feedback used to generate the next improved prototype until it matches the requirements of the end-users and becomes the final product
  • RAD is commonly used where user requirements are incomplete or unclear at the start
  • Additions and changes made to the code in RAD may be inefficient as requirements change over the course of the project
  • Writing and following algorithms
    An algorithm is a set of instructions used to solve a problem. Good algorithms have key qualities: Inputs must be clearly defined, must always produce a valid output, must deal with invalid inputs, must always reach a stopping condition, must be well-documented for reference, must be well-commented for easy modifications
  • Merits of Waterfall methodology
    • Straightforward to manage
    • Clearly documented
  • Drawbacks of Waterfall methodology
    • Lack of flexibility
    • No risk analysis
    • Limited user involvement
  • Uses of Waterfall methodology
    • Static, low-risk projects which need little user input, such as general-purpose software
  • Merits of Agile methodology
    • Produces high-quality code
    • Flexible to changing requirements
    • Regular user input
  • Drawbacks of Agile methodology
    • Poor documentation
    • Requires consistent interaction between user and programmer
  • Uses of Agile methodology
    • Small to medium projects with unclear initial requirements
  • Merits of Extreme Programming methodology
    • Produces high-quality code
    • Constant user involvement means high usability
  • Drawbacks of Extreme Programming methodology
    • High cost of two people working on one project
    • Teamwork is essential
    • End-user may not be able to be present
  • Uses of Extreme Programming methodology
    • Small to medium projects with unclear initial requirements requiring excellent usability