Software development Flashcards
What are the 5 stages of software development in the Software Development Life Cycle?
- Analysis
- Design
- Implementation
- Evaluation
- Maintenance
What is the analysis stage of the SDLC?
- this is where the problem to be solved is defined + system requirements
- for any problem takes into consideration: data to be used, procedures, problems with current solution and any future plans
- documentation produced = systems specification or user requirements - outlines what the system will do but not how to make it
- info gathered using interviews, questionnaires, observation at current system + looking at existing documentation
what is the feasibility study?
- part of analysis stage
- assessment of whether the project is practical and makes sense to do
- considers: is there appropriate tech, can it be operated + maintained easily after production, can it be financed, is it legal, does it have a market, can it be produced reasonably quick
- useful as it identifies any issues and resolves them or drops the project completely if it isn’t deemed worth it
what is requirements analysis?
- part of analysis stage
- outlines the requirements of the project
- gathered through interviews with users, questionnaires, observation of current system usage + looking at current system documentation
- important because it clearly and unambiguously defines what the user wants the software to do and creates a specification
- analyse strengths and weaknesses in the current system + consider inputs, outputs, stored data and amount of data
what is the design stage of the SDLC?
- it’s when info gathered during the analysis stage is translated into a blueprint for programmers to follow during implementation
- test plan is formed here
- key aspects: description, database format, inputs, outputs, security features, hardware features and user interface
- features high level and low level design
what is high level design?
- system architecture is defined
- components (modules) of the system are identified + relationships between them established
- descriptions of hardware + software interfaces + UI
what is low level design?
- detailed guide formed after high level design
- much more comprehensive - covers specifics of each module + goes through each one’s logic in detail
- addresses different algorithms, data structures + interfaces
- ensures accurate + efficient implementation of required functionality
what is the implementation stage of the SDLC?
- when code for the software is written, it is tested and installed on user’s machines
- can be very long or short depending on methodology used - complete when all code has been written to achieve required functionality
- problem is divided into modules that perform an individual task and assigned to a team member to code in the appropriate programming language
- code will continue to be edited until testing is complete
what are some testing strategies?
- black box testing
- white box testing
- alpha testing
- beta testing
what is black box testing?
- carried out independently of code (not using internal structure)
- produce and test a set of test data that covers all potential input and program functions based on specification and checks that outputs are valid
- done by company or end-users from user perspective
- good to check all requirements are satisfied + non-specialist can use it
what is white box testing?
- test data is derived from source code (focus on structure not function)
- tests that program logic works throughout and makes sure that every possible path through the code is tested at least once
- good to make sure program works and is at peak efficiency
- doesn’t help find missing functions - you can only test what has been written
what is alpha testing?
- done by in-house software development team + user
- reveals errors + omissions in system requirements definition or misunderstandings of requirements by the developer
- software might do something the user doesn’t want it to do
- aims to find and fix unspotted bugs before being released to the public
what is beta testing?
- used when commercial software is being tested (eg. Windows, Word, etc)
- testing an unreleased program with a teeny bit of the intended audience - users agree to report any issues to developers
- good because it exposes product to real world and find bugs programmers didn’t find
- afterwards product is modified + further beta testing until satisfied
- done towards the end of testing period
what is deployment?
- part of implementation stage
- done once other testing is complete to a satisfactory level
- product is installed on user systems + more testing is done
- any new issues are corrected
- may be done in a graduated manner so not all users face issues simultaneously
- do this when all target users get access to the product
what is the evaluation stage of the SDLC?
- aka acceptance testing
- often involves post-implementation review - 6 months after product release
- delay between deployment + evaluation to allow users to get used to the product
- this and month end reviews allow the chance to see whether the product has fulfilled original requirements + identifies any shortcomings
- product can be adjusted if any issues found
- solution should be evaluated based on effectiveness, usability and maintainability
What are the 3 types of maintenance?
- corrective maintenance
- adaptive maintenance
- perfective maintenance
What is corrective maintenance?
This is when any bugs found after software is released to the general public have to be patched - this will always happen no matter how much testing is done
What is adaptive maintenance?
This is when software is adapted to adjust to changing user requirements, for example as a result of development of new technology
What is perfective maintenance?
This is when software is improved in non-essential ways even if the software still works - for example by improving functionality, UI, etc
What is the waterfall software development methodology?
- one of the oldest models - not quite redundant but nearly there
- mainly used for small projects where requirements are well defined and there is no changing technology
- follows all the steps of the SDLC but only moves onto the next stage once the previous stage is done and documentation is produced
- it is possible to go back to a previous stage if needed but you can’t skip any
What are the advantages of the waterfall model?
- it’s simple to understand and straightforward to manage the project
- self contained stages mean team members clearly know what to do
What are the disadvantages of the waterfall model?
- time consuming + expensive to go back and fix an issue
- not much client input beyond analysis stage so they may end up with a product that doesn’t satisfy their requirements
- no working software produced until late into the cycle
What is the spiral model?
- made up of 4 basic steps: analyse, design, implement, evaluate
- repeatedly go through these steps and produce a prototype at the end of each iteration
- evaluating each prototype helps produce a plan for the next prototype
- requirements are defined at the start and each successive loop around the spiral produces a more refined product until it’s complete
- mainly used for medium to high risk objects with evolving or complex requirements and for long term projects
Advantages of the spiral model?
- well defined steps make it easy to manage
- software is produced at an early stage - issues identified quickly + easily
- user feedbacks fairly often - changes made early on + end result is closer to what they expected