KA1: Development methodologies

Cards (46)

  • 7 stages of iterative development: 

    A (Analysis) Dog (Design) In (Implementation) The (Testing) Dog (Documentation) Estate (Evaluation) Mansion (Maintenance)
  • The iterative software development process can be called the traditional or the waterfall method
  • Iterative process - one that incorporates feedback and involves an element of repition.
  • The waterfall model involves constant revision and evaluation at every phase which makes it an iterative process. This ensures quality and efficiency in the final product. Large scale commercial software projects have traditionally followed this development process as far as possible in order to create successful product.
  • Analysis - Stage where an initial description of the problem to be solved is examined and turned into a precise description of exactly what the software will be able to do.  System Analyst produces software specification -  a legally binding document which can be used by either party to resolve possible disputes in the future. This describes exactly what the software will be able to do.
  • Analysis - Note that the software specification describes what the software will be able to do, not how it does it. That is the responsibility of the people who undertake the design stage.
    Errors made or shortcuts taken at this stage in the software development process can have serious effects on subsequent stages.
  • Why is the analysis stage of software development important?

    The analysis stage is important because unless the initial problem description is clearly stated and the software specification agreed upon, then subsequent stages will suffer from delays and difficulties due to the need to re-analyse the task and rewrite the software specification.
  • The Systems Analyst will create a software specification at the end of the Analysis stage of software development. What is a software specification?
    The software specification describes what the software to be created must be able to do.
  • Design -  is when the software specification created by the systems analyst is turned into a design which can be used by the team of programmers to write the code.
  • Design - In theory, any software problem can be broken down into smaller more easily managed problems. These problems can subsequently be further broken down into a set of simple steps. This process is often referred to as Top Down Design and Stepwise Refinement and if it can be done successfully, a structure diagram will usually be created showing how the different sub-problems relate to each other.
  • Modular Design - organising a large complex program into smaller parts coded as seperate modules. Modular design is often the result of breaking a complex problem down into smaller sub programs.
  • Advantages of modular design:
    • Modules can be tested independently.
    • A well written module may be able to be re-used in another application.
    • Modules can mirror the structure of the data being processed by the application. For instance a school management system may have a timetable module, a registration module, and an assessment module.
  • Design
    Modular Design involves two steps:
    1. Top down Design - breaking the problem into smaller sub problems.
    2. Stepwise refinement - designing the logic for each module through pseudocode
  • Implementation creates the source code for the program - the high level language for an application before it has been translated to machine code.
  • Testing - Testing should check that:
    • the software meets the specification;
    • it is robust;
    • it is reliable.
  • Testing - At the design stage, a set of test data will have been created which can be used to determine whether the software meets the specification or not, so that it is possible to see if the program does what it is supposed to do.
  • Testing - Testing can only demonstrate the presence of errors, it cannot demonstrate their absence.
    As far as possible, testing should be both systematic, which means testing in a logical order, and comprehensive which means testing every possible scenario.
  • Documentation - when the guides to using and installing the software are produced. The documents created during the previous stages such as the software specification and test history are also collected together so that they can be referred to in case of changes or problems discovered at a later date.
  • Documentation - The user guide for the software should include a comprehensive guide to the menu options, and how each one functions.
    The technical guide for the software should include details of the minimum specification of hardware required such as available RAM, processor clock speed, hard disk capacity and graphics card specification. 
  • Evaluation - where the software is critically examined by both the client and the developer. 
  • Evaluation - The single most important criterion for evaluating software is whether it is fit for purpose i.e. does it match the software specification written at the analysis stage. It will also be evaluated against the following criteria:
    • Robustness
    • Maintainability
    • Efficiency
    • Usability
  • Evaluation - The evaluation is useful to the client because once it is complete, they can be sure that they have the software that was specified, and useful to the developer because if any problems are found at this stage it can save work later on. An evaluation can also help the developer improve their performance for future projects.
  • Maintenance - Three types:
    • Corrective - Not detected during testing but occur during actual use of the program.
    • Adaptive - necessary when program's environment changes - e.x. new operating system.
    • Perfective - When client requests change or improvement to program which was not specified in original software specification. Can involve revision of entire system.
  • Agile development - Although the waterfall model has traditionally been the one used for large scale software development projects, it has often been criticised as being too rigid and too slow a process, resulting in projects where the software specification had to be changed substantially during the lifetime of the project, or software became out of date before it was even complete. In theory the analysis stage should result in a software specification which can then be used throughout the rest of the project, but in practice this is often unrealistic.
  • Agile development - breaks a project down into a series of short development goals called sprints.
  • Benefits of Agile Method:
    • the client is involved throughout the process, giving constant feedback on prototypes of the software during development;
    • collaboration within teams of developers throughout the process;
    • reduced development time;
    • increased responsiveness to changing circumstances;
    • more reduced costs due to the efficiency of using small groups of developers.
  • Strengths of iterative
    • Rigid planning structure
    • Good for large teams
    • Helps to plan and track large software projects
    • Clear agreement on outcomes at start of project
  • Weaknesses of iterative
    • Very rigid approach does not deal well with mid-project changes
    • Can over-complicate simple projects
    • Unidentified issues at the analysis stage can be time-consuming and costly to fix
    • Little involvement of client after analysis.
  • Strengths of agile
    • Copes well with little cumulative changes as the project progresses.
    • Good for small-scale projects like most Apps
    • Ongoing involvement of client allows changes to be agreed quickly
    • Changes cause less delay or can be tackled in the next version.
  • Weaknesses of agile
    • Works best with small teams
    • Needs close version control and tracking of changes
    • Can be difficult to determine the full scope of the project in the early stages
    • Usually no legally binding agreement at the start
    • User Guide: Describes how users can operate the program.
    • Technical Guide: Includes hardware requirements and technical details for maintenance.
  • Chronological flow: If a problem is found during testing, you would ideally go back to the relevant stage (like design), fix it, and then return to testing. The process can be iterative, but stages are generally revisited in sequence
  • Agile Development:
    1. Sprints: The project is split into short development cycles called sprints, with frequent client involvement.
    • Agile may begin with some form of analysis, but it allows the specification to evolve as the project progresses.
    • Features are incrementally developed and reviewed with the client regularly.
  • Why is the analysis stage of software development important?
    The analysis stage is important because unless the initial problem description is clearly stated and the software specification agreed upon, then subsequent stages will suffer from delays and difficulties due to the need to re-analyse the task and rewrite the software specification.
  • The Systems Analyst will create a software specification at the end of the Analysis stage of software development. What is a software specification?
    The software specification describes what the software to be created must be able to do
  • Summarise the involvement of the client during each stage of the iterative software development process
    • Analysis - heavily involved
    • Design - little or no involvement
    • Implementation - no involvement
    • Documentation - no involvement
    • Testing - little or no involvement
    • Evaluation - heavily involved
  • Describe the way in which teams work together on iterative software development projects
    Teams of analysts, programmers, testers and documenters work independently of each other, at each stage, but pass on the product/knowledge between these stages
  • Describe the process of documentation for iterative software development projects
    Iterative software development projects involve heavy documentation throughout the process
  • A software development project can be progressed using an agile methodology or an iterative development process. Describe two advantages of the agile methodology when compared to iterative.
    Award 1 mark for each bullet
    . • Communication/feedback between client and developer occurs throughout the process
    Prototypes/software available (for review)
    Repeated testing/evaluation
    Reduced documentation
    Communication within the development team
  • Describe the role of the client when developing software using agile methodologies.
    The client:
    Details requirements
    Outlines scope and boundaries
    Evaluates prototype/suggest changes
    Provides feedback/liaising with development team throughout process