Software engineering Flashcards
Plan Driven WaterFall Model
Separate and distinct phases of specification and development
- used for large system engineering projects
and when safety is critical?
waterfall model issuess
-if outsoruced is used, hard for development team to check quailty of outsourced stage
-Only appropriate when the requirements are well understood and changes are limited. This is unlikely as few businesses have truly stable conditions
Why is plan driven less used like waterfall and when would they be still relevant
Difficult to handle unknown problems using a model that forces you to planeverything in advance
* Places a lot of emphasis on testing behaviour at the end
* Limits stakeholder interactions to beginning and end
Still relevant in large scale development where lots of coordination needed
Safety critical systems requiring certification
V-Model
Advantages and Disadvantages
Waterfall model with emphasis on testing(plan driven)
-Helps ensure legitamacy of testing leading to higher chance of success than waterfall
-Changes to specification midway require changes to past phases
-inefficient in ill-understood situations
Incremental development
ad dis
Develop systems in parts where each part provides a useful function to the customer
-Debugging is easier for each increment and easier to recieve feedback
-Rapid Delivery and development possible. Allows customers to gain value from software earlier
-Reduce cost of change for future incremenets from feedback.
Increased cost of change for past incremeents
More complex for manangement.
Iterative development
adv dis
Refining and improving the same functionality.
-Good for prototyping risky functions
-potential for ongoing feedback
-Not cost effective to proudce documents that reflect every version of system
-System Structure can degrade
Prototype advantage and disadvantage
Improved system usability
allows for improved design quality
closer match to users real needs
Costs of developing prototypes
Prototypes leave out many functionality
Specifying written requirements
Description - Short statement of purpose(system will provide print faacilitiy, website will support multiple languages)
ID- unique numerical number
Rationale- why is the requirement important(maximise users who can operate a website)
fit criteria- tells you how to go abt something. how to check it.
for example - a system supporting multiple file formats could have fit criteria system will be tested against pdf,jpeg
Owner- assigning an owner confers responsibility
Requirement classifications
Furps
Functionality
Usability
reliability
performance
supportability
Enduring vs volatile requirements
Enduring - Stable requirements derived from core activity(hospital will always have doctors)
Volatile requirements - requirements which change during development or when system is in use
Agile development applicability
Ensuring it isint a safety critical development
Ensuring it isint in a heavily regulated industry
If project contains uncertain elements at the time of starting
small medium size projects around 3-18 months
Agile development technique XP
takes extreme approach to iterative development
New software versions may be built several times per day
small increments are delivered to customers frequentyl
ALl test must be ran for every build
Key practices of XP
User stories- user requirements are expressed as scenarios then broken into task( AS A ? I WANT TO? , SO THAT I ?)
collective ownership- anyone can change it if bug spotted
refactoring - programming teeam look 4 possible software improvements. e.g renaming methods to make them more understandbable
Pair programming- developing code in pairs
More efficient as each line of code looked at by 2
Test Driven Development
Test are written before the code and code is developeed incrementally along with a test for that increment
how to go about running a TDD
identity functionality to test
write automated test for this functionality
Run the test(should fail as code not written yet)
implement the functionality and re-run test
Once successful, implement next chunk of functionality
Benefits of TDD > Poblems
Writing the tests before the code itself clarifies the
requirements to be implemented
Code Covereage as every code segment has at least one associated test
Test are simple so debugging should be simple
Testing emergent features is tricky such as security
Hard to determine when a set of test is complete
Agile development technique : SCrum
A daily meeting of the Scrum team that reviews progress and prioritizes work to be done that day.
nitial phase: outline planning phase (objective)
Sprints Phase: Where each sprint develops an increment of the system.(shippable piece of functionality)
Closure: Documentatin and lessons learned
Scrum Master
backlog
faciliator who arranges daily meetings
-Tracks the work to be done
-measures progress
communicates with customers and management outside the team
this is a list of ‘to do’ items which the Scrum team must tackle
A backlog is maintained containing the set of
user stories still to be implemented.
Scrum benefits
Product broken down into a set of managable chunks
Unstable requirements do not hold up progress
Customers see benefits with every increment
Daily meetings take up valuable resources restricting team size
Scrum master is challeniging
Close ties depend on team co-location
Feasibility study
Decides whether or not the propsed system is worthwhile
-risk of project
how will system help