Programming Methodologies: Advanced Coding Skills, Techniques, and Ideas
- Length: 203 pages
- Edition: 1
- Language: English
- Publication Date: 2020-10-10
- ISBN-10: B08L22G86Y
When programs are developed to solve real-life problems like inventory management, payroll processing, student admissions, examination result processing, etc. they tend to be huge and complex. The approach to analyzing such complex problems, planning for software development and controlling the development process is called programming methodology.
This book discusses issues pertinent to producing all high-quality software and, in particular, issues pertinent primarily to producing software designed to resist attack. Both application and system-level software are considered. Although there are differences between how the two are produced, the similarities dominate the differences.
Of the several factors that govern the difficulty of producing software, one of the most important is the level of quality to be attained, as indicated by the extent to which the software performs according to expectations. High-quality software does what it is supposed to do almost all the time, even when its users make mistakes. For the purposes of this study, software is classified according to four levels of quality: exploratory, production quality, critical, and secure. These levels differ according to what the software is expected to do (its functionality) and the complexity of the conditions under which the software is expected to be used (environmental complexity).
Exploratory software does not have to work; the chief issue is speed of development. Although it has uses, exploratory software is not discussed in this report.
Production-quality software needs to work reasonably well most of the time, and its failures should have limited effects. For example, we expect our spreadsheets to work most of the time but are willing to put up with occasional crashes, and even with occasional loss of data. We are not willing to put up with incorrect results.
Critical software needs to work very well almost all of the time, and certain kinds of failures must be avoided. Critical software is used in trusted and safety-critical applications, for example, medical instruments, where failure of the software can have catastrophic results.
In producing critical software the primary worries are minimizing bugs in the software and ensuring reasonable behavior when nonmalicious users do unexpected things or when unexpected combinations of external events occur. Producing critical software presents the same problems as producing production-quality software, but because the cost of failure is higher, the standards must be higher. In producing critical software the goal is to decrease risk, not to decrease cost.