Software Development

Cards (43)

  • What is the software development lifecycle?
    The different phases a developer goes through when coding a solution for a problem.
  • What is software development methodology?
    A framework that is used to structure, plan, and control the process of developing a solution for a problem.
  • What are the main software development lifecycles?
    Feasibility, Requirements, Analysis and design, Implementation, Testing, deployment, evaluation, maintenance.
  • feasibility
    Is the problem solvable?
  • requirements
    Working out what the solution needs to do.
  • Analise and design
    Working out how the solution needs to do it
  • Implementation
    Coding the solution
  • Testing
    Checking if the code works
  • Deployment

    Installing it in the target environment
  • Maintenance
    Ensuring the code continues to function properly through improvements, patches and updates.
  • Waterfall lifecycle
    Cascading effect from one phase to another.
    Requirements -> Design -> coding -> testing -> evaluation.
    Evolution which allows going to past phases.
  • Spiral Model
    Risk driven methodology. Any project has own unique risks.
    Guide for development team - can adopt elements of one or more methodologies.
    Discissions on methodology made based on risks identified.
  • Rapid Application Development
    Requires successive prototypes until final version.
    These are designed, coded, test and evaluated with the user.
    Feasibility -> Analysis/Design & coding/ Testing & evaluation -> deployment -> maintenance.
  • Agile Methodology
    Group of methodologies. Focuses on idea that requirements shift/ change during development. Only dealt by producing software in an iterative way.
    Building in series of iterations (sprints - short time boxed periods team focused goals complete in select time period).
  • Extreme Programming
    Produce very high-quality code + promote devs quality of life by adopting set practices focus on - simplicity, communication, feedback & respect.
    Considered agile framework - encourages regular small iterative software releases. Every team member is equal value.
  • Extreme Programming part 2
    13 commonly accepted core practices making up extreme programming but five are considered to boost overall quality:
    collective code ownership, continuous integration, code standards, refractoring, paired programming.
  • Waterfall Benefits
    Simplicity making it easy to manage,
    Everyone is clear on their responsibilities,
    Clear deliverables,
    Easy to see if project is running to schedule.
  • Waterfall Drawbacks
    Large risk,
    User can't see product until nearly finished,
    Misunderstanding requirements cause problems not easy to fix,
    Requirements need to be understood - model not good for complex projects.
  • Rapid Applications Development benefits
    Requirements don't need to be clear,
    Allows continuous feedback from client - giving solution excellent usability,
    Focus groups involving user used to gather requirements without full documents upfront.
  • Rapid Applications Development drawbacks

    Focuses on usability not efficiency,
    Regular contact with client needed,
    Scales poorly for large projects with big teams.
  • Spiral advantages
    Risk management is at the heart of this model,
    Excellent for project that contain high level of risk.
  • Spiral drawbacks
    High cost because of its complex nature,
    risk management is a highly specialized skill,
    If risk analysis done badly project suffers.
  • Agile and Extreme benefits
    Quality of end code is high,
    Core principles & processes promote respect + collaboration - very productive development team.
  • Agile and Extreme drawbacks
    Requires team working in close collaboration - unlikely if in different locations,
    Client needs full time representative working with dev team.
    Processes involved in extreme programming can be costly such as paired programming.
  • When to use Agile and Extreme
    When project needs to have high quality code.
  • When to use spiral
    Large scale problems and those involve high risk - when user doesn't fully understand their requirements
  • When to use rapid application dev
    When initial requirements not fully understood as iterative nature prevents development from being sidetracked.
  • When to use waterfall?
    Large scale development projects - assuming requirements well understood carry little risk
  • What is an algorithm?
    A sequence of stops designed to perform a task.
  • What is an examples of an algorithm?
    Cross a raod - Stop before crossing -> look left + right -> is road clear? -> no -> press crossing button -> wait until cross light go goes then cross -> yes -> cross raod
  • What is pseudocode?
    Alterative, text method of representing the sequence of steps in an algorithm, (simplified programming code).
  • What does pseudocode allow?
    Lay down logic of problem without worrying about rules + syntax of particular language.
  • What are the 4 most common testing strategies?
    Black-box testing, White-box testing, alpha testing, beta testing
  • What is black-box testing?
    Checks whether an input produces expected output, code efficiency is not important. When doing testing you chose appropriate test data to cover range of situations.
  • What is white box testing?
    Testing algorithm in code making sure all function as intended. Focuses on identifying and testing all possible paths of execution. Each path is noted and compared with other runs. Checks over all efficiency of code.
  • What is Alpha & Beta testing?

    Carried out when software nearly ready for release - tested as complete solution. Apply especially to commercial software (e.g. computer games).
  • What is the difference between Alpha and Beta testing?
    Alpha testing occurs first and limited to internal employees. Often early version, contain number of bugs. Beta opened to wider community through public beta program. Testing load balancing & multiple hardware compatibility.
  • Spiral method


  • An iterative approach to problem-solving that involves breaking a large problem down into smaller parts, and repeatedly reviewing and refining the solution.
  • Large scale problems