Software & Software Development

Subdecks (1)

Cards (56)

  • Programmers work through a number of distinct phases collectively known as the software development lifecycle
  • SDLC consists of:
    • Feasibility
    • Requirements
    • Analysis and design
    • Implementation
    • Testing
    • Deployment
    • Evaluation
    • Maintenance
  • SDLC : Feasibility
    • Is the problem solvable
  • SDLC: Requirements
    • Working out what the solution needs to do
  • SDLC: Analysis and design
    • Working out how the solutions needs to do it
  • SDLC: Implementation
    • Coding the solution
  • SDLC: Deployment
    • Installing it in the target environment
  • SDLC: Evaluation
    • Checking in with the user - is it complete
  • SDLC: Maintenance
    • Ensuring it continues to function properly by the way of improvements, patches and updates
  • Feasibility establishes whether or not a project can be done
    • Deciding how feasible a new system is relies on factors such as
    • Economic
    • Time
    • Technical
    • Political
    • Legal
  • A requirement is a specific feature of the new system and is recorded in a document called requirements specification
  • Requirements can be broken down into:
    • Interface: how the user interacts with it
    • Function: what the system will do
    • Performance: how well/fast the system will respond
  • The five software development methodologies are:
    • Waterfall lifecycle
    • Spiral model
    • Rapid Application Development
    • Agile methodology
    • Extreme programming
  • Waterfall lifecycle
    • Derives name from cascading effect from one phase to another
    • Each phase has a well-defined start and end point with identifiable deliverables
  • Process of the waterfall model
    • Strict development stages
    • Identify problem
    • Access feasibility
    • Analyse system
    • Design solution
    • Implementation
    • Testing
    • Go live
    • Evaluation
    • Maintenance
  • Advantages of waterfall model
    • Simplicity makes it easy to manage
    • Everyone on the project is clear on their responsibilities at each stage
    • Clear deliverables
    • Easy to see if project is running to schedule
  • Disadvantages of waterfall model
    • Carries a lot of risk
    • User doesn't get to see the product for the first time until the project is near its end
    • Misunderstanding requirements can lead to a project that is not easy to fix
    • Requirements must be well understood, so model is not suitable for complex projects
  • Spiral model
    • Risk-driven development methodology as any project has its own risks associated with it
    • A guide for development teams, allowing to adopt element of one or more methodologies e.g. waterfall
  • Process of spiral model:
    • Uses approaches from waterfall but is risk-centered
    • Recognises that risk at the heart of many large scale projects
    • Deals with risks before they become major problems
    • 4 stages: Identity, Design, Construct, Evaluate (IDCE)
    • Prototype is developed and tested
    • Project goes through a number of builds until it's complete
  • Advantages of the spiral model
    • Risk management is at the heart of the model
    • Excellent for projects that contain a high level of risk
  • Disadvantages of the spiral model:
    • Complex nature of risk analysis increases costs - risk management is a highly specialised skill
    • If risk analysis is done badly, the project suffers
  • Rapid Application Development (RAD)
    • Involves producing successive prototypes of software until a final version is produced and approved
    • Following the initial approval of a feasible program, increasingly refined prototypes are made with reduced functionality
    • These are designed, coded, tested and evaluated with the4 end user
  • RAD process
    • SImilar to spiral model but emphasis is on rapid development
    • Prototype is shown to user which can influence future development with feedback
    • Iterative process may be carried out in which another prototype is developed until eventually, the program is complete
  • Advantages of RAD
    • Requirements don't need to be entirely clear from the start
    • Focus groups including the user can be used to gather requirements without the need for full formal requirements document upfront
  • Disadvantages of RAD
    • Focuses on usability rather than how the product works - not suited for projects where code efficiency is very important
    • Regular contact with client must be maintained at all times
    • Scales poorly for large projects with big teams
  • Agile methodology
    • Focus on the idea that requirements will shift and change during development which can only be dealt with by producing software in a iterative way
    • Products built in a series of iterations named sprints
    • Sprints are short, time boxed periods when a team has focused goals to complete a set amount of work, taking no longer than 1-4 weeks
  • Extreme programming
    • Aims to produce high quality code and promote developers' quality of life by encouraging them to adopt a set of common practices that focus on the values of simplicity, communication and respect
    • Considered agile framework as it encourages regular, small, iterative software releases
  • Process of agile methodologies and extreme programming
    • In the design, coding, testing and evaluating stages:
    • Similar to RAD but less time between iterations
    • User becomes part of the development team to facilitate quick feedback
    • Paired programming: Two heads are better than one. Code partner to review , advise and bounce ideas off
  • Advantages of agile and extreme programming
    • Emphasises programming so quality of end code is likely to be very high
    • Core principles and processes promote respect and collaboration, leading to a very productive development team
  • Disadvantages of agile and extreme programming
    • Requires a team of programmers working in close collaboration - unlikely to work well if team is widely distributed geographically
    • Client must be able to commit to having a full time representative working with the development team
    • Some of the processes involved in extreme programming such as paired programming can be quite costly
  • The most common test strategies are:
    • Black box testing
    • White box testing
    • Alpha testing
    • Beta testing
  • Black box testing
    • Checks whether an input produces the expected output
    • Code efficiency is not important as long as inputs return the desired outputs
    • If all inputs produce the desired outputs, we can be satisfied the program works in all cases
  • White box testing:
    • Involves testing the algorithms in the code and making sure all parts of those algorithms function as intended
    • Focuses on identifying and testing all the possible paths of execution through a program
    • Path of execution is noted so it can be compared with other runs
    • Checking the efficiency of the code
  • Alpha and beta testing are carried out when software is nearly ready for release and can be tested as a complete solution
  • Alpha testing occurs first and is limited to internal employees and their friends and family
    • Often an early version of the finished software and may contain a number of bugs
  • Beta testing is usually opened to a wide community through a public beta program
    • Program is in an almost finished state
    • Developers look to test area such as load balancing and multiple hardware compatibility
  • The different test data types are
    • No data
    • Erroneous data
    • Normal data
    • Boundary data
  • Normal data is data that should be accepted by the program without causing errors
  • Boundary data is data of the correct type that is on either edge of the accepted validation limits
  • Trace tables have the ability to track down logic errors in a program
    • A new row should be added if the state of a variable changes