Software Developement

Cards (20)

  • Common stages in software development life cycles (SDLCs)
    • Analysis
    • Design
    • Development
    • Testing
    • Implementation
    • Evaluation
    • Maintenance
  • Analysis
    1. Stakeholders state what they require from the finished product
    2. Information used to define the problem and system requirements
    3. Requirements may be defined by analysing strengths and weaknesses of current solution
    4. Considering types of data involved including inputs, outputs, stored data and amount of data
  • Design
    1. 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
    1. Design from previous stage is used to split the project into individual, self-contained modules
    2. Modules allocated to teams for programming
  • Testing
    1. Program tested against test plan formed in Design stage
    2. Alpha testing carried out in-house by software development teams
    3. Beta testing carried out by end-users after alpha testing
    4. White box testing carried out by software development teams based on internal structure
    5. Black box testing carried out without knowledge of internal structure, by both in-house and end-users
  • Implementation
    Software installed onto users' systems after testing stage
  • Evaluation
    1. Effectiveness of software evaluated against system requirements defined at analysis stage
    2. Criteria considered include robustness, reliability, portability and maintainability
  • Maintenance
    1. Errors or improvements flagged up by end-users
    2. Programmers regularly send out software updates to fix bugs, security issues or make improvements
  • Waterfall lifecycle
    The traditional waterfall model of software development is very well-known and well-defined but is now being replaced with more agile models. The waterfall model is based on a series of stages which are completed in sequence, from start to finish.
  • Analysis stage
    1. Feasibility study
    2. Evaluate feasibility using TELOS:
    3. Technical
    4. Economic
    5. Legal
    6. Operational
    7. Scheduling
  • If a change needs to be made within a project being 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
  • The waterfall model is inflexible and unsuitable to projects with changing requirements
  • Users have little input as they are only involved at the very beginning and end of the waterfall lifecycle, during the analysis and evaluation stage
  • Agile methodologies
    A collection of methodologies which aim to improve the flexibility of software development and adapt to changes in user requirements faster. It is also easier to make improvements or changes to the software.
  • Agile development
    1. Problem broken down into sections
    2. Sections developed in parallel
    3. Design and analysis phase often occur together
    4. Different sections at different stages of development
    5. Working prototype delivered early on
    6. Prototypes built upon and improved iteratively
  • In agile development methodologies, there is less of a focus on documentation and more priority is given to user satisfaction
  • Extreme programming (XP)
    An agile model in which the development team consists of a pair of programmers alongside a representative end-user. The model is built on 'user stories': system requirements are specified by the end-user and used when designing the program. The aim of paired programming is to produce high-quality code, as the code is written by one person and critiqued by the other so is improved as it is written. Programmers work no longer than forty hours a week with the aim that quality is not compromised. Each iteration through the cycle generates what is called a 'working version' of the program which means it could function as the final product.
  • The iterative nature of development means that it is hard to produce high quality documentation, which is less of a priority. In order for XP to be effective, programmers must communicate effectively.
  • Spiral model
    Built on four key stages with the focus of effectively managing risk-heavy projects: Analysing system requirements, Pinpointing and mitigating risks, Development, testing and implementation, Evaluating to inform the next iteration. If the project is found to be too risky at any point, the project is terminated. However hiring risk assessors to analyse the risks involved can be expensive, which makes this methodology suited to only very large-scale projects.
  • Rapid application development (RAD)

    An iterative methodology which uses partially functioning prototypes which are continually built-upon. User requirements are initially gathered using focus groups and used to develop an 'incomplete' version of the solution which is given to the user to trial. User feedback is then used to generate the next, improved prototype and this continues until the prototype matches the requirements of the end-users at which point it becomes the final product. This is commonly used where user requirements are incomplete or unclear at the start. However, as requirements change over the course of the project, additions and changes made to the code may be inefficient.