1.2.3 Software Development Flashcards
craig + dave videos - 27 to 31
what is the software development lifecycle?
the distinct phases which programmers go through when developing a solution for a computer system
what is a software development methodology?
the arrangement and how programmers move from one phase to another in the software development lifecycle
what are the stages of the SDLC?
- feasibility
- requirements
- analysis and design
- implementation
- testing
- deployment
- evaluation
- maintenance
what are the 5 methodologies?
waterfall
rapid application development
sprial
agile
extreme programming
what are the features of the waterfall lifecycle?
- each phase has a well defined start and end point with identifiable deliverables
- once you end one phase, you never really return to it and move onto the next one
what are the features of rapid application development (RAD)?
- produces successive prototypes of the software until the final version is produced and approved
- following approval of the feasibility of the program, increasingly refined prototypes are made wit reduced functionality
- each prototype is designed, coded, tested and evaluated with the user
what are the four main quadrants of the spiral methodology?
- determine objectives
- identify and resolve risks
- development and test
- plan for next iteration
what are the features of the spiral model?
- risk driven
- provides a guide for the team where the decisions on the software development methodology are made based on the risks identified
what is agile development?
a group of methodologies which focus on the idea that requirements will shift and change during development and this can only be dealt with in an iterative way.
what are sprints in agile methodologies?
short, time boxed periods when a team has focused goals to complete a set amount of work
- should only be a bite sized piece of focused work
what is extreme programming?
a framework for software development
what is the aim of extreme programming?
produce high quality code and promote developers’ quality of life by adopting a set of common practices
what are the values of extreme programming?
- simplicity
- communication
- feedback
- courage
- respect
what are the 5 core practices of extreme programming which are generally thought to boost overall quality of any solution to almost any project?
- collective code ownership
- continuous integration
- code standards
- refactoring
- paired programming
what are some benefits of the waterfall methodology?
- simplicity = easy to manage
- everyone knows responsibilities at each stage
- clear deliverables
- easy to see if project running to schedule
what are the drawbacks of the waterfall methodology?
- carries a lot of risk
- user doesn’t get to see product for the first time until the end is near
- misunderstanding requirements can lead to the problems not easy to fix
- requirements must be well understood so not suitable for complex projects
when would the waterfall model be used?
ease of management means it is suitable for large scale development projects
- have to be well understood and carry little risk
what are the advantages of RAD?
- requirements don’t need to be clear from the start
- focus groups involving user can be used to gather info without formal documents at first
- continuous feedback from client means solution is likely to have excellent usability
what are the disadvantages of RAD?
- focuses on usability rather than how product works - got good where efficiency is important
- regular contact with client must be kept at all times
- scales poorly for large projects with big teams
when is RAD good to use?
for projects where initial requirements are not fully understood and iterative nature prevents development being side-tracked
what are the advantages of the spiral model?
- risk management centred
- good for high risk projects
what are the disadvantages of the spiral model?
- expensive as risk management is a highly specialised skill
- if risk analysis done badly, project suffers
when is the spiral model good?
- large scale problems that involve high degrees of risk
what are the advantages of agile and extreme programming methodologies?
- emphasises programming so end code is high quality
- core principles and processes promote respect and collaboration which is likely to lead to a productive team
what are the disadvantages of agile and extreme programming methodologies?
- requires a team of programmers working closely which is an issue if team is far apart
- client must commit to a full time representative working with the team
- some processes are costly (eg. paired programming)
when is agile and extreme programming good?
when the emphasis on the project is on the quality of the finished code
what is an algorithm?
a sequence of steps designed to perform a task
how can algorithms be written?
pseudocode
flowcharts
high-level language
what is pseudocode?
text based method of representing algorithms
- like simplified programming code
why is pseudocode good?
allows us to lay down logic without worrying about rules + syntax of a particular language
how do you refine an algorithm?
- find areas which need modifying
- change appropriate areas
what are the 6 flowchart symbols?
- terminal
- process
- decision
- input/output
- subroutine
- like
why do programs need to be tested?
to make sure it works as intended
what are the most common test strategies?
- black-box
- white-box
- alpha
- beta
what does black-box testing check?
if an input produces the expected output
how is black-box testing done to test the inputs and outputs of a program?
choose appropriate test data that covers a range of situations
what is white-box testing?
tests the algorithms in the code and makes sure all parts of the algorithms function as intended
- checks efficiency
when are alpha and beta testing done?
when software is nearly ready for release and can be tested as a complete solution
when and with who does alpha testing occur?
occurs before beta
limited to internal employees and their friends or family
very early software with bugs and rough
when and with who is beta testing done?
opened to a wider community through a public beta program
- almost finished version
what are the types of test data?
- no data
- erroneous data
- normal data
- boundary data
what is erroneous data?
data that should be rejected by the program
what is normal data?
data that should be accepted without errors
what is boundary or extreme data?
data of the correct type that is on either edge of the accepted validation limits
what is tracing execution?
examining a printed extract of program code and running through the program
how do you perform tracing execution?
take each line at a time and write out the current state of each variables in a trace table noting the outputs.
what is the structure of a trace table?
- each variable has its own column
- a new row should be added if the state of a variable changes
what does regular feedback with the user allow?
- keeps project focused
- makes sure you develop the actual system they need
- provides opportunities for discussion
- makes the user feel part of the finished solution