Software Development Life Cycle Flashcards
Define SDLC
A systematic process that structures the development of software to deliver a project.
What is the difference between Verification and validation?
Verification - testing the software to ensure it functions like intended from the developers designs.
Validation - validated the software based on client requirements.
Compare the waterfall and incremental schemes
Incremental over waterfall
-less costly when requirements are changed
-client feedback is continously incorporated
Waterfall over incremental
-Greater distinction between stages of development
-Known requirement means more robust code
-Little to no room for error (more likely to get it right the first time)
Testing comes into what part of the SDLC?
verification and validation
What does it mean to verify?
-ensuring the code produces the correct outputs from the inputs
-formatting code to make it readable and neat is helpful
What does it mean to validate?
-ensuring the code meets the clients requirements by functioning according to the criteria
-functionality
-performance
-usability
What are the three types of testing?
Component testing -
System testing - components integrated into a systems are tested
Customer testing - user testing in target environment which may reveal undetected bugs
Define unit testing and give an example
-A unit may be a class or function
-Call the function with test argument
-Compare result to expected result and report back
Define an edge case and give examples
unit test cases that are unexpected or rare
-Rare or old user platform
-Upper and lower limits of range
-heavy internet traffic
Give examples of corner cases
Multiple conditions in action
-Testing an unusual input (e.g. empty list)
What is useful in the edge testing code?
Using a docstring to explain what the programme should deliver
Define system testing
components integrated to create a complete system that are tested to find any faults by developers
-checking components and units are compatible
Define release testing
requirements based testing that focuses on performance, usage and scenario testing
In terms of debugging, why is testing important?
testing reveals bugs in the operation code.
-bugs are high risk as they can cause finincial loss or even loss of life
-it is cost effective to identify bugs in the early stages of testing/code development
How can we prevent bugs?
Code review and legibility
-Pair programming
-Defensive programming
Define version control
A system that tracks changes to software base files over time
How can primitive version control be enforced?
Consecutive file naming
Give examples of version control systems (VCS)
Git:
-decentralised VCS, links can be used to access files
-Subversion
-Mercurial
-Perforce
-Microsoft Team foundation VC
If there a multiple users on a VCS, how can users work offline?
By the use of local repositries, local changes are synced to the main VC server
Give the advantages of VCS
-No permanent work connection needed
-Every local repositry has the latest version of code base
-Whole projects can be restored
Summarise the waterfall method
Key distinct stages that are cascade from one to the other.
-SMART and risk managed
-Specification is frozen
-Used for systems that have a detailed upfront spec
Summarise the incremental method
A cyclic method
-Agile
-Regular team meetings
-Continuous validation
-fluid specification
-urgent solutions are prioritised
Describe agile
Agile is an iterative approach that emphasises flexibility and customer needs
-agile intends to minimise waste and maximise efficiency
What are the 5 key principles of agile?
Customer involvement - customers should evaluate new iterations
Embrace change - expect system requirements to change
Incremental delivery - software is developed in increments where spec is changed at every step
Maintain simplicity - work to eliminate complications
People not process- skills of the developement team should be organised