Download A Flexible 3D-Visualisation Engine With Force
Transcript
The 'Flight' Simulator Page 62 of 117 17 Appendix B - Risk Analysis Document 17.1 Risk Planning Risk planning should play an important part in any software engineering process. Due to the nature of the project (the author has never before used the OpenGL or DirectX APIs, and has never used Microsoft Visual C++ 6.0), risk analysis and planning was considered a serious part of the project. After each major requirements or design stage, the risks to the project were assessed, and where possible, methods to mitigate these risks were devised. This document described the complete risk analysis undertaken for the project. However, this analysis was performed in three phases. The first was performed after the initial Requirements Specification, and investigated the high-level risks to the project. The second phase was performed after the detailed Requirements Definition, and investigated specific risks in more detail. The last phase was performed after design and before the implementation phase. Here, risks specific to implementation matters were addressed. Throughout the project, this risk document was continually monitored and updated. New risks, and methods to combat them were added as discovered. This ensured that no unforeseen problems would arise, or that countermeasures would be available should they arise. 17.2 Requirements Risks Due to the nature of the system, and the fact that useful feedback could only be obtained after a prototype was available for demonstration, the risk that the requirements would be incorrect during much of the design and implementation was extremely high. This risk was mitigated in two ways. First, an ongoing process of requirements elicitation allowed comments and suggestions from the project supervisor and any other interested party to be incorporated into the requirements. Further, demonstrations were held to interested parties in order to gather their comments and suggestions. Secondly, the design of the system was carried out in an extremely modular fashion. This meant that small changes to the requirements required no redesign and very little re-implementation. Large changes to the requirements meant only alterations to the interfaces between components, and only small amounts of implementation. 17.3 Design Risks The risk of errors occurring during design was considered small, due to the author's experience in object-oriented design and programming. However, since new technologies and languages were being employed, it was possible that mishaps could happen. Although the choice of implementation technologies should not influence the design process, in reality this choice constrains the design, specifying what can and cannot be designed with a particular language. For example, C++ treats a function as a first class value (its address can be taken) while this is impossible in Java, and this can affect control and data flow through a system. As such, available options may be overused or neglected by the author during design. In order to mitigate this risk, an extensive study of the C++, OpenGL and DirectX language references was undertaken to familiarise the author with these technologies and their uses. Also, the architectural design was performed (using the requirements specification) before any detailed component design, in order that the design was feasible with the technologies chosen for its implementation. 17.4 Implementation Risks Due to the fact that the author had no experience in many of the technologies in use in the project, there was a high risk that problems would be encountered during implementation. As mentioned above, this risk would be partially mitigated by reading the language references for these technologies. When implementation began, this risk was carefully monitored. Douglas Currie