Chapter 12 - Software Development Flashcards

(34 cards)

1
Q

What is the purpose of a development life cycle?

A
  • it is a structured process used to design, build, and test software solutions, where each stage of the cycle has a specific purpose
  • choice of program development cycle depends on the method required to produce the program
  • it ensures that programs are developed systematically, efficiently, and to a high standard
  • helps developers to solve real-world problems
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Describe the stages of the development life cycle in general.

A
  1. analysis: understanding the problem the product is being created to solve and gathering user requirements and needs
  2. design: planning how the product will work
  3. coding: translating the design into a usable product by writing code in modules using a suitable programming language (which one is best suited to control the production line)
  4. testing: thoroughly testing the code with a variety of test data to ensure it meets the original requirements, handles a variety of input correctly, and performs reliably under different conditions
  5. maintenance: ensures the program remains reliable over time
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Describe how the analysis stage uses abstraction.

A
  • used to ignore unnecessary information, makes the solution easier to design
    1. core functionality
    2. constraints (limits the product works within)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

How are requirement documents used in the analysis stage?

A
  • breaks down the problem into manageable parts
  • labels each requirement
  • describes what success looks like for each feature
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What tools are used to create blueprints for the solution during the design stage?

A
  • structure diagrams: breaks down the program into smaller components
  • flowcharts: shows the logical flow of processes
  • pseudocode: outlines how the logic will be written in code
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

How are code modules tested during the coding stage?

A
  • iterative testing is used, meaning that each module is tested and debugged individually as it’s created
  • they are retested whenever changes are made, to ensure no new errors are present
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What does the maintenance stage involve?

A
  • fixing bugs that were not present during testing
  • updating features to meet new requirements
  • improving performance or adapting to new systems
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is the waterfall model?

A
  • a sequential software development process divided into distinct phases
  • each phase must be completed before the next phase begins
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What situation is the waterfall model most suited for?

A
  • projects where requirements are well understood and likely to change
  • projects where high quality and compliance is required, with a clear goal of the project’s goals and constraints
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Describe the steps of the waterfall model.

A
  1. requirement gathering and analysis: all possible system requirements to be developed are recorded clearly
  2. system design: the requirements are translated into a design, with the overall architecture and main components identified
  3. implementation: actual code written based on the designs
  4. integration and testing: all components and modules are integrated and tested to ensure the whole system works as expected
  5. deployment: software handed over to the market/client
  6. maintenance: regular maintenance done post-release for fixing bugs, improving performance or adding features
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Describe the advantages of the waterfall model.

A
  • simple and linear
  • clear stages and milestones
  • ideal for well-defined projects
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Describe the disadvantages of the waterfall model.

A
  • inflexible, difficult to make changes once development begins
  • expensive to fix late problems
  • long development cycle: no working software until late in the life cycle so slower to market than competitors
  • needs high involvement of the client
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

What is the iterative (agile) model?

A
  • a type of agile software development methodology that promotes adaptability and high customer involvement
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What situation is the iterative model most suited for?

A
  • small to medium sized projects where requirements can change
  • high customer involvement
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Describe the steps of the iterative model.

A
  1. identify user requirements: gather functional and non-functional requirements (usually stories) from stakeholders
  2. sprint planning: select a set of tasks broken down from the requirements to complete during the current sprint (short time-boxed period); outline the sprint goal
  3. design solution: decide how the tasks will be built, focusing on simplicity and adaptability
  4. develop features: write code, in pairs/groups
  5. test continuously: ongoing unit, integration, and accepting testing
  6. sprint review: demo to stakeholders for feedback
  7. sprint retrospective: team post-mortem, focusing on team performance and process optimisation
  8. release: deploy working software to users/staging environment after every sprint/set of sprints
  9. repeat: continue to next sprint with new knowledge and feedback
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Describe the benefits of the iterative model.

A
  • highly adaptable; responds quickly to changing requirements
  • promotes constant collaboration
  • encourages good design and continuous testing
  • ensures products meet real needs
17
Q

Describe the disadvantages of the iterative model.

A
  • requires experienced team members
  • risk of burnout
  • may lock documentation
  • scope creep: changing goals may lead to uncontrolled growth
18
Q

What is the Rapid Application Development (RAD) model?

A
  • form of agile software development methodology that emphasises fast and iterative development
19
Q

What situation is the RAD model most suited for?

A
  • projects where rapid delivery is needed
  • projects where requirements can be developed and refined as the project progresses
20
Q

Describe the steps of the RAD model.

A
  1. the general system requirements, constraints and assumptions are gathered
  2. develop prototypes, ensuring they match user requirements
  3. build the system incrementally with rapid construction, feedback, and adaptation
  4. deploy the product into a live environment
  5. provide maintenance based on user feedback and needs
21
Q

Describe the advantages of the RAD model.

A
  • rapid development and delivery at a relatively low cost
  • high user involvement shaping the system throughout
  • adaptable to changing requirements
  • incremental development
22
Q

Describe the disadvantages of the RAD model.

A
  • requires skilled and cohesive teams
  • potential quality issues such as documentation issues due to speed
  • too complex for small projects
  • scope creep risk
23
Q

What is scope creep?

A
  • uncontrolled or unapproved expansion of a project’s requirements, goals, or deliverables after the project has already begun
  • occurs in small, seemingly insignificant increments
  • doesn’t consider the projects time, budget, and resources
24
Q

what are structure charts and their purpose?

A
  • a modelling tool used in the design stage of program development that decomposes a problem into smaller sub-problems, representing each as a module
  • it focuses on what the program will do, not how it does it
25
what are state-transition diagrams and their purpose?
- they show how a system moves between different states based on inputs
26
what are the common types of error
- syntax: error that breaks the grammatical rules of a programming language and stops it from running - logic: incorrect code is used that causes the program to run, but produces an incorrect output - runtime: error that causes a program to crash
27
what are some examples of runtime errors
- dividing by 0 - calling an index out of array bounds - stack overflow - unable to read or write a drive
28
what are some examples of logic errors
- incorrect use of operators - logical operator confusion - indexing arrays incorrectly - infinite loops
29
what are some examples of syntax errors
- typos and spelling errors - missing/extra brackets or quotes - misplaced or missing semicolons - invalid variable or function names
30
what is testing?
- process of checking for logic errors, unexpected behaviour, and operational integrity during the testing stage of the program development life cycle once the program has been written and compiled - a detailed test plan should be made that outlines the test cases and expected results during the analysis stage
31
describe the common methods of testing
- dry run: manually trace through the code to predict output and track variables - walkthrough: step by step review of the code with others to identify issues early on - white-box: tests the internal logic and code structure, the tester knows how the program works - black-box: tests the inputs and expected outputs without knowing the internal workings - integration: checks that different components work correctly together - alpha: performed in-house by the developers during early testing - beta: performed by external users in real-world environments - acceptance: final check to ensure the program meets the original client requirements - stub: uses temporary components called stubs to stimulate missing components during early testing
32
describe the types of test data
- normal: data that should be accepted as an input - abnormal: wrong data type - extreme: maximum and minimum values of normal data that are accepted - boundary: tests data on either side of the maximum and minimum values
33
what is program maintenance?
- process of updating or improving a program after it has been delivered to the user - it is needed to fix errors that were missed during testing; to improve performance based on user feedback; to adapt the software to new uses or platforms
34
describe the types of program maintenance
- corrective: fixes bugs or errors found during real-world use - adaptive: modifies the program to support new environments or requirements - perfective: improves performance or adds small enhancements