A software system (PS) in the life cycle (LC) of its use is subject to requirements for performance, stability, security, etc. According to statistics and tests, on average, 1000 lines of program code contain one error, which requires significant resources to search for and eliminate ( temporary, intellectual, machine, etc.).
This is a consequence of inefficient tools, technological imperfections, difficulties in the mathematical justification of correctness (verification), quality and reliability criteria.
The life cycle of the PS takes into account processes (actions), performers, data (objects) and models of the type:
- cascading, which is effective when the set of specifications is unchanged throughout the entire life cycle, for simple projects or for complex ones, but as a model for a low level (submodel);
- incremental, which is effective when dynamic refinement of the specification is needed, for projects with static specifications or with no risk;
- evolutionary («spiral»), which is effective for complex projects with specifications adaptable or implemented by technologies that themselves evolve.
Their advantages and disadvantages are:
- analysis of goals, resources and building the concept of life cycle, etc.;
- for performers — analysts;
- for objects — coordination of functions, roles, operational characteristics, etc.
According to the standard, the essential characteristics of the PS are classified into eight classes:
- functionality (completeness, accuracy, applicability);
- performance (functional, hardware-software, peak);
- compatibility (autonomous-functional, complex);
- reliability (performance, availability, fault tolerance, etc.);
- security (authentication, access control, non-repudiation of actions, etc.);
- friendliness (comprehensibility, ease of development, efficiency, protection from illiterate user actions, etc.);
- ease of maintenance, modification (modifiability, testability, documentability, etc.);
- portability (adaptability, cross-platform, interchangeability).
The quality characteristics of the PS are compared by certain criterial measures. For example, one of the following can be chosen as a measure of fault tolerance of the PS:
- average operating time;
- intensity and flow of failures;
- distribution of failure times, etc.
Quality indicators can be classified into three groups:
- internal (architecture, logic, code correctness);
- external (time of trouble-free problem solving, recoverability, throughput, etc.);
- use (comfort, quality of documentation, etc.).
It is necessary to build a metamodel suitable for validation, tools supporting it, or use an existing language or protocol:
- UML — structural modeling;
- MOF — descriptions of metamodels;
- XML — metadata exchange, Simulink, etc.
It takes four times as much to fix for the test phase as it does for the design phase. And twenty times — at the stage of specifications. The cost of correction at the operational stage is orders of magnitude higher than at the design and testing stages.