appendix - APPENDIX A.0 Impact of Design and Coding...

Info iconThis preview shows pages 1–2. Sign up to view the full content.

View Full Document Right Arrow Icon
A-1 APPENDIX A.0 Impact of Design and Coding Techniques on Software Reliability . Software design characteristics and techniques are more dynamic for software than for hardware, however, just as with hardware, there is a definite correlation between design techniques and reliability. It makes sense to assume that the fewer the faults in a software system, the higher the reliability will be. Therefore, a developer should attempt to generate as few faults as possible (fault avoidance), should consider techniques to withstand faults (fault tolerance), and ensure that software is readily repairable when a fault is found (fault removal). To develop a system that is reliable, apart from performing any reliability analysis, a developer should consider those three elements. In the design process a general model can be used. In a sequential design process a series of steps are followed consisting of a specification phase followed by a realization phase. Realizations become less abstract as the system is decomposed into more detailed specifications. Since faults are the underlying cause of failures in software, controlling the number of faults introduced in each development step and the number of faults that propagate undetected to the next development step is important in managing product reliability. Faults must be managed across all phases of the life cycle. Many development practices affect fault management. A few of the more important ones are as follows: Practicing a development methodology . Using a common approach in translating high- level design into code, and in documenting it, is particularly important for larger projects. It facilitates good communication between project team members, helping to reduce faults. Constructing modular systems . A modular system consists of well-defined, simple and independent parts interacting through well-defined interfaces. Small, simple modules are easier for designers and programmers to build and thus less prone to faults being introduced in the design process. Also, modular designs are more maintainable, further increasing the chance that detected faults are properly repaired. Employing reuse . Reuse of software components that have been well tested for an operational profile that is close to that expected for the new system reduces fault introduction. The alternative is to develop new components, which will have to go through a complete fault introduction and removal process inherent to most software development projects. Unit and integration testing . Testing plays a major role in preventing faults from propagating to a next development step. Unit tests verify modules’ functions as specified in their low-level designs. Integration tests verify that modules interact as specified in the higher-level design (architecture).
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Image of page 2
This is the end of the preview. Sign up to access the rest of the document.

Page1 / 41

appendix - APPENDIX A.0 Impact of Design and Coding...

This preview shows document pages 1 - 2. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online