Software Development Flashcards

1
Q

What are the 5 main aims of software development?

A
  • To enhance or add functionality
  • Research and development
  • To automate laborious processes
  • To implement control systems
  • To manage instruments
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

What counts as ‘software’?

A

Traditional programs
‘Simple’ spreadsheets
Scripts or macros to enhance applications

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

A ______ _________ _______ is required if developing a medical device and is good practice for any other software development.

A

Quality management system

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

What are the 3 prerequisites for software development?

A

1) Software planning
2) Requirements analysis
3) Architectural and detailed design

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What are the 2 construction/planning/coding requirements for software development?

A

1) Unit implementation and verification
2) Integration and integration testing

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

What are the 6 maintenance and governance requirements for software development?

A

1) System testing
2) Software release
3) Maintenance plan
4) Risk management
5) Change control
6) Post market surveillance

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

What should be considered at every stage of software development?

A

The associated clinical risks

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What is a unified modelling language?

A

A standardised ‘graphical language’ with its own syntax and semantics. It provides a set of formalised graphical representations for design entities and relationships that can be used for different applications.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

What are the 5 main steps in the software development process?

A

1) Requirement analysis
2) Design
3) Implementation
4) Testing
5) Evolution

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Describe the traditional waterfall method for software development

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Descrive the V model for software development

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What is agile development?

A

A quick software development cycle that involves incremental improvements with regular testing. These improvements require a ‘scrum’ where ideas for change are discussed and a ‘sprint’ cycle where these ideas are implemented.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Name at least 5 types of testing

A

Verification
Validation
Usability testing
Compatability testing
Portability testing
Security testing
Compliance testing
Accessibility testing
Performance and stress testing

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What question is being asked when completing verification testing?

A

Is the product working as planned?
Are we building the product right?

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

State 3 types of verification testing

A

1) Unit tests: testing a single block of code with a limited and clear purpose
2) Integration testing: testing if modules work together
3) System testing: testing a whole system against expected use cases

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What question is being asked when completing validation testing?

A

Is the product working as required?
Are we building the right product?

17
Q

State 2 types of validation testing

A

1) User acceptance testing (UAT): system testing by the end user
2) Clinical validation testing

18
Q

What is continuous integration?

A

A type of automated testing where a suite of tests are automatically run at each iteration of the software.

19
Q

What is test-driven development?

A

Development that begins by writing a test verifying that an intended outcome is achieved. The development then continues until this test is passed, as this confirms that the software works.

20
Q

State the pros and cons of test-driven development

A

+ Less input required during maintenance
+ More robust software
- Increased input required during development

21
Q

What are the two types of test-driven development?

A

Unit test: verifying the components of a system
Behaviour test: seeing the end user perspective

22
Q

What documentation is required for each medical device software risk category during software development?

A

Class A (no injury or damage)
Class B (non-serious injury)
Class C (death or serious injury)

23
Q

What documentation is generally required when developing and implementing new medical IT software?

A

Organisational requirements:
- Software development policy
- Style guide
- Training records
Project-specific requirements:
- Justification document
- Medical device assessment
- Risk assessment/hazard log
- Software requirements specification
- Software-specific design documentation
- Verification/validation evidence
- Version tracking/version control
- User documentation/manual
- Clinical safety report

24
Q

Define pseudocode

A

An informal, natural language-like notation for precisely describing how an algorithm or a program will work.

25
What is the pseudocode programming process (PPP)?
A specific approach to using pseudocode to streamline the creation of code within routines.
26
What are the 5 key reccomendations for writing pseudocode?
1) Use natural language-like statements that precisely describe specific operations 2) Avoid syntactic elements from the target programming language 3) Write pseudocode at the level of intent 4) Write pseudocode at a low enough level that generating code from it will be nearly automatic 5) Build the code around the pseudocode and turn the pseudocode into programming language comments
27
What makes well layed-out code?
Variables should be self-documenting. The code should be syntactically correct. The layout should be structured well and allow functional units and process flows to be clearly identified. Code should be written in easily navigated files.
28
Define debugging
The process of identifying the root cause of an error and correcting it.
29
How is debugging different to testing?
Testing is the process of detecting an error initially, however, debugging involves identifying the root cause of this error and fixing it.
30
Why is debugging important in a clinical setting?
As finding the root cause of an error and fixing it can prevent them from causing patient injury or fatality.