[Unit 1.2.3] Software Development Flashcards
Software Development
what are the 5 key elements of software development
feasibility study
requirements specification
testing
documentation
software development methodologies
what is feasibility study
investigation to see if project is viable
what are the reasons a project might fail a feasibility study
not economically feasible
not legally feasible
not technically feasible
not enough time to complete project
what is the requirement specification
document listing all functionality system should have.
agreement between client and developer
through what process are requirements acquired
requirements elicitaion
why can requirement elicitation be a difficult process
users have difficulty expressing what they want
users have unrealistic expectations
what is testing in terms of software development
ensures program works as it should.
what are the four different types of testing in software development
destructive
alpha
beta
acceptance
what is destructive testing
trying to crash the program or behave unexpectedly.
what is alpha testing
product used by people who have worked on the project
what is beta testing
product used by people outside of software development company
what is acceptance testing
testing the program against the requirement specification
what 4 documents are made during software development
requirements specification
design (algorithms/UI)
technical (how works/maintained)
user (how to operate)
what is software development life cycle
process of planning, creating, testing & deploying software
what is the waterfall lifecycle model
sequence of stages that only start after prior is finished.
linear model but can OCCASSIONALLY go back a stage
what are the 6 stages of the waterfall lifecycle model
requirement elicitation
analysis - what solutions available
design - produce solution
implementation - developers write code
testing
maintenance - fix bugs
what are the advantages of the waterfall lifecycle
- easy to manage as team focused on one stage at a time
- everyone has clear responsibilities
- suitable for large scale projects
- can work on multiple projects at once
what are the disadvantages of the waterfall lifecycle
- dependant on quality of requirement elicitation.
- if requirements change model is inflexible.
- working software produced late in lifecycle
- feedback at end of product
- not suitable for high risk projects
what is the spiral lifecycle model
same as waterfall but develops software in 4 iterative cycles.
each cycle adds a new element to solution
each cycle ends with a prototype
prioritises riskiest elements first.
what are the four phases in the spiral model
determine objectives
identify & resolve risks
development & testing
plan next iteration
what are the advantages of the spiral model
- manages risk well
- flexible (changes incorporated in later iterations)
- good client involvement
- good for large & risky projects
- good for long term projects
what are the disadvantages of the spiral model
- many phases, increasing efforts
- high level of risk analysis required
- risk analysts are expensive
- client invests a lot of time into project
what is agile software development
ways of developing software that is iterative and focuses on prototypes and feedback
what are the two types of agile programming
rapid application development (RAD)
extreme programming (XP)
what are the advantages of agile programming generally
flexible
good for small - medium projects
customer feedback
what is scope creep
when client keeps adding requirements after each prototype
what are the disadvantages of agile programming generally
scope creep
what are the stages of rapid application development
analysis & design –> build, demonstrate, refine –> testing –> implementation
what is rapid application development
prioritising rapid prototype and user feedback
what are the advantages of rapid application development
- product out quickly
- good where requirements aren’t clear at the start
- continuous feedback
- good when UI is important aspect
- more projects done on time
what are the disadvantages of rapid application development
- may not be most efficient code
- heavy time input from client
- scope creep
what is extreme programming
emphasis on quality of code
what are user stories
how the requirements are split up. descriptions of different ways the system will be used, what it will look like, and what it’s expected to do
what are the key features of extreme programming
user stories
representatives embedded in development team
pair programming
short development cycles
what are the advantages of extreme programming
- final code is of very high quality
- product produced quickly
- low risk of failure due to user stories
what are the disadvantages of extreme programming
- little documentation made
- client commits a lot of time
- a lot of communication needed
- scope creep
4 differences between extreme programming and rapid application development
- XP focus on code quality
- XP has shorter development cycles
- XP releases working versions of system component not prototype
- XP has client in team not just feedback