1.2.3

Cards (11)

  • Programming methodologies
    • Waterfall lifecycle
    • Agile methodologies
    • Extreme programming
    • Spiral model
    • Rapid application development
  • Waterfall lifecycle
    • Series of stages completed in sequence from start to finish
    • Includes a feasibility study (TELOS)
    • Changes require revisiting all levels between current and change stage
    • Users have little input
  • Agile methodologies
    • Aim to improve flexibility and adapt to changing user requirements faster
    • Problem broken down into parallel sections
    • Design and analysis often occur together
    • Working prototype delivered early and improved iteratively
    • Less focus on documentation, more priority on user satisfaction
  • Extreme programming
    • Agile model with pair programming and end-user representative
    • Uses 'user stories' to specify requirements
    • Aims to produce high-quality code
    • Programmers work no longer than 40 hours per week
    • Hard to produce high-quality documentation
  • Spiral model

    • Focuses on effectively managing risk-heavy projects
    • Includes analysis, risk mitigation, development/testing/implementation, and evaluation
    • Project terminated if too risky
    • Hiring risk assessors can be expensive
  • Rapid application development

    • Iterative methodology using partially functioning prototypes
    • User requirements initially gathered using focus groups
    • Incomplete prototype given to users to trial, feedback used to improve
    • Additions/changes may be inefficient as requirements change
  • Algorithm
    Set of instructions used to solve a problem
  • Qualities of good algorithms
    • Clearly defined inputs
    • Always produce valid output for defined input
    • Deal with invalid inputs
    • Reach stopping condition
    • Well-documented
    • Well-commented
  • Merits of programming methodologies
    • Waterfall: Straightforward to manage, clearly documented
    • Agile: Produces high quality code, flexible to changing requirements, regular user input
    • Extreme Programming: Produces high quality code, constant user involvement for high usability
    • Spiral: Thorough risk-analysis and mitigation, caters to changing user needs, produces prototypes
    • Rapid Application Development: Caters to changing user requirements, highly usable finished product, focus on core features to reduce development time
  • Drawbacks of programming methodologies
    • Waterfall: Lack of flexibility, no risk analysis, limited user involvement
    • Agile: Poor documentation, requires consistent interaction between user and programmer
    • Extreme Programming: High cost of two people working on one project, teamwork essential, end-user may not be able to be present
    • Spiral: Expensive to hire risk assessors, lack of focus on code efficiency, high costs due to constant prototyping
    • Rapid Application Development: Poorer quality documentation, fast pace may reduce code quality
  • Uses of programming methodologies
    • Waterfall: Static, low-risk projects which need little user input, such as general-purpose software
    • Agile: Small to medium projects with unclear initial requirements
    • Extreme Programming: Small to medium projects with unclear initial requirements requiring excellent usability
    • Spiral: Large, risk-intensive projects with high budget
    • Rapid Application Development: Small to medium, low-budget projects with short time-frames