Module - Advanced Development and Management Environments (HBI127)
Aim of this module
A key part of developing software is evaluating and choosing how software should be created and managed. In the clinical environment, it is essential to understand the methodology in making the right choice in relation to programming and maintenance to deliver software in a safe and appropriate way to support improved patient outcomes. These can be influenced by many factors such as data considerations, financial cost and time constraints.
By the end of this module the Clinical Scientist in HSST will be able to analyse, synthesise and apply their expert knowledge and understanding of advanced development and management environments. They will be able to develop and review new software, critically assessing the quality and the development process. They will be able to design and synthesise a database, including advanced features.
The Clinical Scientist in HSST will also be expected to consistently demonstrate the attitudes and behaviours necessary for the role of a CCS.
Knowledge and understanding
By the end of this module the Clinical Scientist in HSST will be able to analyse, synthesise, evaluate and critically apply their expert knowledge of:
- A range of different types of programming language, e.g. object-oriented, event-driven, procedural.
- Developments in software engineering tools, e.g. version control, issue tracking, tool chain and software stack.
- Software development methods.
- Data design and analysis.
- Planning, configuring and problem solving involving clinical relational databases (e.g. in response to changing national reporting requirements or to increase their in-service utility).
- Management of software and database development applied to the Physical Sciences.
- Firmware and embedded systems, real-time and non-real-time systems.
- Likely long-term stability, portability and support, good mechanism for dealing with language/framework version updates.
- User community.
- Availability of libraries (built in or community provided).
- Language features (e.g. supporting concurrency, array operations, graphics visualisation, statistics, etc.).
- Availability of associated language tools, such as syntax highlighting editors, debuggers, static code analysers and run-time profilers.
- Usage scenario, e.g. user interface requirement, run-time environment, interoperability, etc.
- Previous knowledge and experience.
- Licensing requirements (either for development or deployment of applications).
- Programming paradigms: object-oriented, imperative, procedural, event-driven, etc.
- Pass by reference, address or value.
- Iteration and recursion.
- Overloading and polymorphism.
- Inheritance (including multiple) and encapsulation.
- Functions and libraries.
- Software quality and readability.
- Secure coding.
- Version control.
- Performance analysis, for example profiling tools.
- Code optimisation.
Management and maintenance
- Software development process.
- User interface design.
- Testing procedures.
- User documentation.
- Software commissioning.
- Software monitoring and upgrading.
Advanced testing methodologies
- Test-driven development.
- Acceptance test-driven development.
- Behaviour-driven development.
- Automated testing environments.
The identification, planning, commissioning and involvement in the provision of a computing solution to a physical science problem involving:
- Relational database theory using a suitable SQL DB for exercises.
- Database design and schema.
- Database normalisation and refactoring.
- Database programming, including views and procedures.
- Business intelligence/analysis tools, e.g. Crystal Reports, Infomaker.
- Database administration, optimisation and performance management.
- Data modelling and ontologies.
- Tools and methods for structured and unstructured data.
- Advanced SQL.
- Support/expertise available for database within the organisation.
- Licensing issues.
- Type of data, e.g. structured/unstructured, documents/binary data.
- Size of database, e.g. can consistency can be relaxed.
- Analysis tools, e.g. business intelligence.
- Web programming languages, e.g. HTML and CSS.
- Licensing issues.
- Web standards, interoperability and security.
- Web servers, client-side/server-side scripting.
- Web frameworks.
- Mobile content.
- Content management systems.
- Service-oriented architectures.
- Web services.
Technical and Clinical Skills
By the end of this module the Clinical Scientist in HSST will be able to demonstrate a critical understanding of advanced development and management environments in their area of clinical practice and will be able to:
- Assess the demand for, and specify the development of bespoke software in Physical Sciences with users, clinical colleagues and other relevant stakeholders.
- Critically evaluate the need for developing new software against commercially available or pre-existing in-house software.
- Perform advanced development, and manage implementation and monitoring and supervision of junior colleagues undertaking these activities.
- Provide a high level of scientific expertise in the development of bespoke software.
- Ensure that the needs of the wider service users are considered in the development of clinical and scientific computing systems.
They will also be able to apply their knowledge in their area of clinical practice, performing and mastering the following technical and clinical skills, and will be able to:
- Lead the development of software solutions to address a clinical or research requirement and/or solve problems involving methods such as:
- procedural and/or object-oriented languages;
- image acquisition and processing;
- software scripting;
- the use of virtual systems to test development software;
- creating or modifying firmware in a real-time or embedded system;
- use, construction and procurement of libraries.
- Solutions should be justified, assessing advantages and disadvantages, including other possible solutions.
- Remain up to date with relevant standards, guidelines and legislation related to medical devices, the safeguarding of data, the use of quality systems and the use of medical devices on IT networks.
- Employ software development, testing and management best practice skills to:
- participate in software development project(s) as part of a team;
- lead the development of software solutions to address a clinical or research requirement and/or solve problems involving database design and implementation, including advanced SQL features and report generation where applicable, following formal design methodology such as UML and making use of the local software development quality management system.
- Critically analyse bespoke software using performance analysis tools and, if applicable, use code optimisation to improve performance.
- Develop interconnectivity solutions to medical physics and clinical engineering problems, involving methods such as:
- automated image processing and analysis;
- medical data exchange using recognised standards and anonymisation/pseudonymisation;
- real-time systems monitoring.
- Critically evaluate the use of real-time systems in the clinical environment and their benefits in safety-critical environments.
- Critically assess the suitability of database products for a clinical application.
- Report on the usage of NoSQL-based software locally or at an organisational level and assess how service improvements could be gained from it.
- Synthesise a web application or make use of a content management system to perform logging of management activity and operational data exchange for service improvement.
- Comply with quality assurance and governance procedures to ensure software developments are introduced and critically evaluated to identify, actively manage and mitigate risk to patients.