Based on the special situation that the healthcare software system has, such as the confidentiality, reliability, compatibility with external systems and the complexity of the system. Formal software process is required. The spiral software process model could be used when dealing with complex software system like health care software system.
The spiral model is an evolution of software development process, it includes the nature of rapid prototyping model and iterative model, and also conclude the features of systematic and stricted monitoring from waterfall model. It allows us to release the product incrementally and address any issues that could cause the failure of development before it happens. This is a great advantage when we deal with this type of system.
The spiral model is a cyclical model, which consists of four phases:
The spiral model is quite suitable, since if the requirement of significant change appeared, the change may not affect the development of this project. The requirement for health care software system could be very complex, so that the customer feedbacks and evaluations are highly valuable and increase the accuracy to match customer requirements for the next development design.
In this health care project, first is to identify the objectives, constraints and risks. The main objective of this product is to provide user-friendly and quality service for doctors to store and tack patient information, reduce practical cost. When dealing with typical doctors who are in different types of clinic, their requirement could be different. In practical environment, for a specialist in a teaching hospital, well-managed scheduling, details in every consulting section and records researching could be valuable for future use. Some of the study for a particular disease could be recorded and analysed, if the doctor is interested in. In smaller health care unit, the consulting details may or may not be necessary to kept in the database, but only some major issues. One solution is that, keep regular communication with the end user or customer representative from the field, and enhance requirement gathering phase. For example, in details, present prototype of the product to the doctors in a way that they can understand, and explain with examples. This could help them to understand their needs as well.
The complicated part of the project is that the software is required to map the existing actual processes in the hospital, however, the processes that involved in a hospital are huge and complex. For example, the registration process of a patient, diagnosis process and treatment process etc. These processes must be fully understood by the development team, in order to form correct business processes in software point of view. And to understand these processes, it may require the managers who have well understanding on organisational processes to explain all the details for development team. The workflow must be completed with the expert’s supervise accurately, if there is any issue not matching the process in practices, it may cause some serious problems for the system.
Another issue is that doctors are very busy in a practical environment, they are not going to use a software that is not saving any time for them and slows them down, as a software developer, it is necessary that time restriction must be considered for the end users. This health care software product should help users to finish their job as efficiently as possible. In order to avoid this issue, it is necessary to increase system productivity, improve system response time and reduce system downtime. When sending data and communicating with external system, for instance, sending closed case report to other systems like billing system or management system, users should be indicated with system progress accurately and response time should be kept in minimum, and again this may determined by system hardware and the compatibilities with external system. When system error occurs, the data transaction process must rollback, to prevent any damage to the data. Also error handling mechanisms is required in the system to prevent it from failure and recover system automatically when it is necessary.
When end users are using this product in practice, input validation could be very random depends on what the circumstances are. During the process of registration of a patient, some fields are required to be fill out, however, when comes to emergency situation, the patient may not be able to fulfill the request base on the patient’s conditions. Therefore, solutions must be provided such as minimise the required field of input, only submit the important information, ,provide temporary references, or the option is given to the user to skip the field. In short, users should not be blocked from submitting a form.
Although it is known that health care software system is complex and huge, the design of database is required to be flexible enough to face the challenge of changing environment. Current design of the database is likely to be changed and extended in the future base on improving requirements. The profile of patients may need to be expanded in order to gather more information for future use. One of the solution is to create a generic data model in database and increase its flexibility. In addition, hospital processes are highly asynchronous, and one case would require the involvement of many staff members, perform as a team. So the system should be able to recognise the history of the case been modified, who and what. More importantly, because the different role of each member played in the team, their schedules are much different from others, one could complete a task but another has not complete the previous, to increase the efficiency of the team, the staff can do other things once he has complete the task in one case, and get notification if there is another case come in. The asynchronous processes should be well understood by development team to form the proper business process.[1]
During the development of a software, the awareness of management risks are also a critical factor that could influence the development process of the software. Not having enough employees could be the most common and prior risk that has to be taken care of. The managers have to pre-schedule key people, searching for people who have the best fit skills for the project, and decide the suitable structure for the team. Secondly, schedules and budgets sometimes are unrealistic. The schedule should be well evaluated, explained in details and estimated base on the development process. The cost needs to be decided base on various of requirements or past experience from other project. Sometimes the developed functionality could not be able to match the requirements from customers, and cause trouble on software development. Therefore efficient and productive communication between customers is critical to eliminate this risk.[2] When the risks are reduced to minimum, and the development should move to next phase with well designed plan and model. When the product is constructed, the software should go through standard unit testing, integration testing and acceptance testing, before the release of this product. After product has been released to the market and used by customers in a certain amount of time, the feedback and evaluation of this product from the end-users is required in order to plan next iteration of the development of this product.
To sum up, there are so much benefit that the organisation can gain from it. As the sqiral software development model is risk-driven, the risks on developing this software could be reduced to minimum which gives the organisation's ability to decrease the cost, and also the changing requirements can be addressed accordingly with minimum effect for other components in the software during development process. However, no processes are perfect, the management of this project could be very complex and the development of this project could be infinite etc.
References:
[1] Didier Thizy, Quintin Armour, 10 lessons for Health Care software, http://info.macadamian.com/rs/macadamian/images/Mac_10_Healthcare_Lessons.pdf(Accesse on 15/03/2015)
[2] Barry W Boahm, A Spiral Model of Software Development and Enhancement http://csse.usc.edu/csse/TECHRPTS/1988/usccse88-500/usccse88-500.pdf (Accesse on 15/03/2015)
The spiral model is an evolution of software development process, it includes the nature of rapid prototyping model and iterative model, and also conclude the features of systematic and stricted monitoring from waterfall model. It allows us to release the product incrementally and address any issues that could cause the failure of development before it happens. This is a great advantage when we deal with this type of system.
The spiral model is a cyclical model, which consists of four phases:
- Identification, determine objectives, alternative and constraints. Business requirements have to be determined. The requirements and project constraints must be specified in details. Communication between customers and the system analysts is needed to complete this phase.
- Planning, this phase involves the planning on project schedule, costs and resource using.
- Risk analysis, analysis the feasibility of the product in technical aspect, and the risks in management level.
- Engineering, this phase should include the requirements of this project, such as the system requirements, unit requirements and requirements for its subsystem. Also the design of the system, architectural design, logical design of module, physical product design and final design.
- Construct, build and release, this phase includes the actual development on the product, coding. Testing also has to be done in this phase, which determined by SQA manager. Finally, the product should be delivered and deployed to the customer system.
- Evaluation and feedback, this phase includes the evaluation and feedback provided by customers. Then the implementation details should be constructed based on the evaluation for the next iteration of project development.
The spiral model is quite suitable, since if the requirement of significant change appeared, the change may not affect the development of this project. The requirement for health care software system could be very complex, so that the customer feedbacks and evaluations are highly valuable and increase the accuracy to match customer requirements for the next development design.
In this health care project, first is to identify the objectives, constraints and risks. The main objective of this product is to provide user-friendly and quality service for doctors to store and tack patient information, reduce practical cost. When dealing with typical doctors who are in different types of clinic, their requirement could be different. In practical environment, for a specialist in a teaching hospital, well-managed scheduling, details in every consulting section and records researching could be valuable for future use. Some of the study for a particular disease could be recorded and analysed, if the doctor is interested in. In smaller health care unit, the consulting details may or may not be necessary to kept in the database, but only some major issues. One solution is that, keep regular communication with the end user or customer representative from the field, and enhance requirement gathering phase. For example, in details, present prototype of the product to the doctors in a way that they can understand, and explain with examples. This could help them to understand their needs as well.
The complicated part of the project is that the software is required to map the existing actual processes in the hospital, however, the processes that involved in a hospital are huge and complex. For example, the registration process of a patient, diagnosis process and treatment process etc. These processes must be fully understood by the development team, in order to form correct business processes in software point of view. And to understand these processes, it may require the managers who have well understanding on organisational processes to explain all the details for development team. The workflow must be completed with the expert’s supervise accurately, if there is any issue not matching the process in practices, it may cause some serious problems for the system.
Another issue is that doctors are very busy in a practical environment, they are not going to use a software that is not saving any time for them and slows them down, as a software developer, it is necessary that time restriction must be considered for the end users. This health care software product should help users to finish their job as efficiently as possible. In order to avoid this issue, it is necessary to increase system productivity, improve system response time and reduce system downtime. When sending data and communicating with external system, for instance, sending closed case report to other systems like billing system or management system, users should be indicated with system progress accurately and response time should be kept in minimum, and again this may determined by system hardware and the compatibilities with external system. When system error occurs, the data transaction process must rollback, to prevent any damage to the data. Also error handling mechanisms is required in the system to prevent it from failure and recover system automatically when it is necessary.
When end users are using this product in practice, input validation could be very random depends on what the circumstances are. During the process of registration of a patient, some fields are required to be fill out, however, when comes to emergency situation, the patient may not be able to fulfill the request base on the patient’s conditions. Therefore, solutions must be provided such as minimise the required field of input, only submit the important information, ,provide temporary references, or the option is given to the user to skip the field. In short, users should not be blocked from submitting a form.
Although it is known that health care software system is complex and huge, the design of database is required to be flexible enough to face the challenge of changing environment. Current design of the database is likely to be changed and extended in the future base on improving requirements. The profile of patients may need to be expanded in order to gather more information for future use. One of the solution is to create a generic data model in database and increase its flexibility. In addition, hospital processes are highly asynchronous, and one case would require the involvement of many staff members, perform as a team. So the system should be able to recognise the history of the case been modified, who and what. More importantly, because the different role of each member played in the team, their schedules are much different from others, one could complete a task but another has not complete the previous, to increase the efficiency of the team, the staff can do other things once he has complete the task in one case, and get notification if there is another case come in. The asynchronous processes should be well understood by development team to form the proper business process.[1]
During the development of a software, the awareness of management risks are also a critical factor that could influence the development process of the software. Not having enough employees could be the most common and prior risk that has to be taken care of. The managers have to pre-schedule key people, searching for people who have the best fit skills for the project, and decide the suitable structure for the team. Secondly, schedules and budgets sometimes are unrealistic. The schedule should be well evaluated, explained in details and estimated base on the development process. The cost needs to be decided base on various of requirements or past experience from other project. Sometimes the developed functionality could not be able to match the requirements from customers, and cause trouble on software development. Therefore efficient and productive communication between customers is critical to eliminate this risk.[2] When the risks are reduced to minimum, and the development should move to next phase with well designed plan and model. When the product is constructed, the software should go through standard unit testing, integration testing and acceptance testing, before the release of this product. After product has been released to the market and used by customers in a certain amount of time, the feedback and evaluation of this product from the end-users is required in order to plan next iteration of the development of this product.
To sum up, there are so much benefit that the organisation can gain from it. As the sqiral software development model is risk-driven, the risks on developing this software could be reduced to minimum which gives the organisation's ability to decrease the cost, and also the changing requirements can be addressed accordingly with minimum effect for other components in the software during development process. However, no processes are perfect, the management of this project could be very complex and the development of this project could be infinite etc.
References:
[1] Didier Thizy, Quintin Armour, 10 lessons for Health Care software, http://info.macadamian.com/rs/macadamian/images/Mac_10_Healthcare_Lessons.pdf(Accesse on 15/03/2015)
[2] Barry W Boahm, A Spiral Model of Software Development and Enhancement http://csse.usc.edu/csse/TECHRPTS/1988/usccse88-500/usccse88-500.pdf (Accesse on 15/03/2015)