Software Development Flashcards
What are the 5 main aims of software development?
- To enhance or add functionality
- Research and development
- To automate laborious processes
- To implement control systems
- To manage instruments
What counts as ‘software’?
Traditional programs
‘Simple’ spreadsheets
Scripts or macros to enhance applications
A ______ _________ _______ is required if developing a medical device and is good practice for any other software development.
Quality management system
What are the 3 prerequisites for software development?
1) Software planning
2) Requirements analysis
3) Architectural and detailed design
What are the 2 construction/planning/coding requirements for software development?
1) Unit implementation and verification
2) Integration and integration testing
What are the 6 maintenance and governance requirements for software development?
1) System testing
2) Software release
3) Maintenance plan
4) Risk management
5) Change control
6) Post market surveillance
What should be considered at every stage of software development?
The associated clinical risks
What is a unified modelling language?
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.
What are the 5 main steps in the software development process?
1) Requirement analysis
2) Design
3) Implementation
4) Testing
5) Evolution
Describe the traditional waterfall method for software development
Descrive the V model for software development
What is agile development?
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.
Name at least 5 types of testing
Verification
Validation
Usability testing
Compatability testing
Portability testing
Security testing
Compliance testing
Accessibility testing
Performance and stress testing
What question is being asked when completing verification testing?
Is the product working as planned?
Are we building the product right?
State 3 types of verification testing
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
What question is being asked when completing validation testing?
Is the product working as required?
Are we building the right product?
State 2 types of validation testing
1) User acceptance testing (UAT): system testing by the end user
2) Clinical validation testing
What is continuous integration?
A type of automated testing where a suite of tests are automatically run at each iteration of the software.
What is test-driven development?
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.
State the pros and cons of test-driven development
+ Less input required during maintenance
+ More robust software
- Increased input required during development
What are the two types of test-driven development?
Unit test: verifying the components of a system
Behaviour test: seeing the end user perspective
What documentation is required for each medical device software risk category during software development?
Class A (no injury or damage)
Class B (non-serious injury)
Class C (death or serious injury)
What documentation is generally required when developing and implementing new medical IT software?
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
Define pseudocode
An informal, natural language-like notation for precisely describing how an algorithm or a program will work.