Software Development

Cards (14)

  • There are 5 types of software development methodologies:
    • Waterfall
    • Agile
    • Extreme programming
    • Rapid Application Development (RAD)
    • Spiral
  • Waterfall is a linear method of software development
    Requirements are established at the beginning of the project
    It follows a rigid, structured routine, with the current process needing to be fully completed before proceeding to the next
    Development phase focused on whether code meets design - no real account of efficiency
    Requirements cannot be changed - if they are, the whole project must be repeated.
    Formal documentation is created for each stage
  • Advantages of waterfall:
    • Linear structure makes it easy and simple to follow
    • Good for managing workload between large teams
    • Good for stable projects which have stable requirements
    • Clear documentation makes software easy to use and develop
  • Disadvantages of waterfall:
    • Very inflexible - requirements cannot change, as it is time-consuming
    • Takes a long amount of time
    • May have poor usability, as client is only consulted at the end of the process
    • Delays testing until after completion - errors may be very large, which wastes time in trying to change code to account for them
  • There are some main stages of any development process:
    • Feasibility study
    • Requirements analysis
    • Analysis and design
    • Implementation
    • Testing
    • Deployment
    • Maintenance and Updatin
  • RAD (Rapid Application development) is a second type of software development methodology. It is iterative. This means that software is created as a prototype, which is then sent to the client for feedback. The client's feedback is then used to inform the next iteration of the prototype, and this process is repeated until the prototype matches the requirements that the client needs.
  • Advantages of RAD:
    • Iterative nature makes it highly flexible to changing requirements
    • Constant client feedback ensures good usability
    • Fast development time, as each sub-task is given a strict time limit
  • Disadvantages of RAD:
    • May be inefficient for very large teams, due to need of clear and constant communication
    • Maintaining client contact can be difficult
    • Focus is on usability - this may mean that code efficiency is not optimal
    • Creating documentation for all iterations of the prototype may be time-consuming
  • Spiral Model is a third type of development methodology. It is also iterative. It has 3 sections - determine objectives , risk analysis , develop and test , and then the next iteration is planned. This places risk analysis at its heart. It is risk-driven module . Projects may be modified or even dropped if too risky. As usual, the client gives feedback on each iteration of software.
  • Advantages of spiral model:
    • Iterative, so is relatively flexible, and can respond to changing client requirements
    • Risk analysis means it is perfect for risky projects
    • Constant user involvement ensures good usability
    • Strong documentation control
  • Agile methodologies is a fourth type of methodology. This is a group of methodologies. this is also iterative. It is specifically designed for projects with changing requirements. It builds code in sprints. As usual, prototypes of software are given to the user for feedback which is used to inform the next sprint.
  • Advantages of agile:
    • Emphasises programming - so high quality of efficient code
    • Paired programming allows good communication between teams
    • Suited for small teams
    • Constant client feedback ensures good usability
  • Extreme programming is a paradigm of these agile methodologies. It focues on good quality code. Like agile, it is also designed to respond to changing user requirements. it is also iterative, and as a result, gets constant client feedback. Code is developed in successive sprints.
  • Disadvantages of Agile and XP:
    • Not suited for large-scale teams. Paired programming requires constant communication which is also usuallt face to face . This is difficult to arrange
    • Client contact can be difficult to maintain
    • Can be costly to allow paired programming - big demand on client
    • Lack of necessary documentation