Collection
zero Useful+1
zero

Software specification

Software Program Requirements
Software researchers often limit and require software specifications according to their own research objects and research scope. For example, the traditional view of software engineering assumes that software requirements specifications are generated on the basis of requirements analysis, and software design specifications are generated on the basis of software design. However, according to the viewpoint of programming methodology, the requirements for programs are simply called program specifications.
Chinese name
Software specification
Design specifications
Explain the design of software
Interface
Between software and its environment, software
Description
Specify the functions that the software should have

brief introduction

Announce
edit
A document that makes a complete and accurate statement of the requirements that the software should meet in a verifiable manner. The term "specifications" has a similar meaning to the "specifications" of other industrial products. However, in the field of software, it has become a specific technical term. The relationship between software products and the use environment, and the interfaces between the internal components of software products are often very complex, and software products have to undergo multiple transformations in the development process, appearing in different forms at different stages. Therefore, the interface relationship between the components of the software and between the development stages should be specified very accurately. Software specifications must be written in a language. Ambiguity often exists in natural language statements, which is easy to cause misunderstanding. Therefore, it is better to use artificial language or a mixture of artificial language and natural language to write software specifications. This language is called specification language. The specification of large software is often very lengthy, so it is hoped that this language can be easily processed by computer, so that the machine can check whether there is any omission or contradiction in the software specification. The content of software specifications can be emphasized according to the needs of different occasions.

Functional specifications

Specify the functions that the software should have;

Performance specifications

Specify the performance that the software should have, such as calculation accuracy, response speed and the size of the occupied storage space;

Interface specification

Stipulate the interface relationship between software and its environment, and between software components;

Design specifications

Explain the design of the software. Typical contents include the algorithm used, control logic, data structure, interface relationship between modules, and input output format.

Description standard

Announce
edit
Users of software specifications include users, designers, programmers, managers, etc., which involve product identification, quality assurance, configuration management, software maintenance, personnel training, market analysis, software copyright, and many other issues. The software specification can be regarded as an information base with overview, diagrams, examples and other perspectives. It is not only an agreement between users and developers, but also a basis for guiding the development, testing and maintenance of software.
The standardized software specifications provide all kinds of relevant personnel with the information they need in a unified form. Practice has shown that the widespread implementation of software specification standards can help improve the efficiency and quality of software development. Software engineering can become a real engineering discipline only after various standardized technologies are widely used.
But there are so many standards related to software specifications that people are at a loss. From the static and dynamic point of view, the standardization of software specifications should be carried out from both product and process aspects. According to the characteristics of software development, software specification standards should increase the proportion of software process standardization. However, at present, the standard of software Liuge's description is often the standard of software products. In recent years, the standardization work of software process models (and rapid prototyping models, incremental development models, object-oriented fountain development models) newly proposed is very weak.
The international or national standards for software specifications are widely used and have high theoretical value. In contrast, according to the characteristics of the application field, the software specification standards formulated in combination with specific development methods are more practical. Therefore, many large foreign companies have developed their own software specification standards. Some departments and units in China have also carried out similar work. The following issues should be considered when developing software specification standards used by such specific departments.
1 Meet the requirements of the national standard for software specification, and can supplement the contents not covered by the national standard, but cannot violate the principles of software engineering.
2 Provide required information for different users. For example, provide users with a specification equivalent to the user manual, and provide developers with a specification equivalent to the design specification.
3 Easy to use and change.
4 There are objective means to measure the quality of software specifications.
5 Combine the characteristics of the application field and the specific development methods, and comprehensively use the cost (such as the time for maintaining consistency) and benefit (such as the improvement of reliability and maintainability) of the standard. [1]

Software specification method

Announce
edit
At present, the depth of understanding of software specifications is far less than that of software design and program development. Therefore, although most people believe that software specifications should be fully separated from software design and implementation, many viewpoints in software specifications inevitably inherit the experience of software design and implementation. The problem of software specification method research is how to generate software specification. The software specification can be examined in terms of space and time.
1. From the perspective of space
From the perspective of space, in a broad sense, software specifications describe the entire software system; In a narrow sense, software specifications describe the components of a software system.
The software specification method mainly provides the means of decomposition and refinement. For example, both the structural analysis and design method and the stepwise refinement method provide this means. Conversely, software specification methods also provide abstract means. In the process of generating software specifications, its components need to be abstracted Otherwise, if each component operates in its own way and different components are intertwined, the software specification may be as complex as the software implementation. In this way, the significance of software specifications is lost. Process abstraction and data abstraction are two useful abstraction methods. Process abstraction maps a set of inputs to a set of outputs, including data abstraction, and is defined by the behavior of data abstraction. Data abstraction provides a set of data and the operations imposed on it. Although these operations can also be regarded as a process abstraction, the data abstraction as a whole can better reflect its corresponding relationship with real world entities.
2. From the perspective of time
From the perspective of time, in a broad sense, the software specification method is applicable to the entire software life cycle; In a narrow sense, the software specification method is only applicable to specific stages of the software life cycle.
In some stages of the software life cycle, the use of software specification methods often has to wait until later stages when China shows its promotion. For example, the software design specification divides the responsibilities of software module users and implementers, avoiding possible confusion in the coding phase. Therefore, the research on software specification methods should not only take into account the characteristics of specific development stages, but also integrate the whole software life cycle and make overall planning. The traditional view of software engineering is that the software specification method is only for the demand analysis and software design at the early stage of development. At present, software process is a very active research field. The software process model is formed by decomposing the software life cycle into a series of software processes. Different decomposition methods correspond to different process models. The research on the combination of software specification method and software process is more conducive to improving the overall effect. This extends the traditional view of software specification. The expanded software specification methods shall include:
① Source specification
② Target specification
③ Methods for developing target specifications from source specifications
④ The method to verify whether the replacement from the source specification to the target specification is correct.
Application domain and program are two extremes of abstract level of software specification. The software specifications are examined from these two extremes.
(1) Investigation from application field
The starting point of software development is to generate software requirement specifications according to user requirements. This is a difficult point in the software specification method. The application fields include dynamic and static, data flow and control flow, decision and calculation, serial processing and parallel processing, etc. We can start from specific application fields and explore software specification methods suitable for specific application fields. Therefore, the concept of "requirements engineering" came into being. Commercial applications are always impatient. A variety of application generators (i.e. ilc at io n ge en arot sr) have been launched This tool develops a special problem description language by analyzing the characteristics of application fields, and provides algorithms to solve the problems described by the language. Current application generators mainly include report generator, screen window menu generator, query language, etc.
(2) From the perspective of program, program is the description of software at the lowest level of abstraction. The software specification cannot be developed without considering the possibility of implementation on the computer. Most high-level languages (such as F O R T R A N, P as ed) are process based computing models. This model reflects the processing mechanism of computer hardware. The new computing model proposed by modern society focuses on reflecting the characteristics of people's thinking mode. For example, functional model, logical model, object-oriented model, etc. It can be seen that the programming language is absorbing the essence of the software specification, and constantly improving its abstraction level. The fourth generation language (4GL) has improved the efficiency of software development to a certain extent, and has been widely used in various decision support systems, computer-aided software development environments, expert systems, databases, etc. However, the existing fourth generation language tools often have the shortcomings of weak versatility and low level of abstraction, so they are not suitable as software specification languages.
Software maintenance and reuse should be carried out at a higher level than the program. Starting from the original program, the main work of reverse engineering is to reverse derive software specifications. This research is also conducive to deepening the understanding of software specification methods. [1]

Representation

Announce
edit
The communication between software developers and users as well as between software developers determines the quality of software specifications to a considerable extent. The way of expression is the medium of such communication. This is a controversial topic about software specification. At present, it is believed that the representation of software specifications should be:
① Applicable to different application fields
② Have a good mathematical foundation
③ It is allowed to represent different aspects of software specifications and combine them into a complete software specification
④ It is able to retain the pending problems and express them in a way that does not force the design decision that is unwilling or unable to be made. Formal software specification and graphical software specification are two very active fields at present.
1 Formal software specification
Formal software specifications have precisely defined syntax and semantics, which can be used for consistency and integrity checks. They are conducive to automatic program generation and are highly praised by the academic community At present, many formal specification languages have been developed. These formal software specification languages can be divided into the following two categories according to semantic methods:
(1) Model oriented language. This kind of formal software specification language can describe the behavior model of the system according to the mathematical structure (such as set, sequence, function). There are VDM language and Z language in serial system, PetriNets, CCS and CSP in parallel system and distributed system.
(2) Feature oriented language. This kind of formal software specification language allows to describe the minimum constraints of system behavior, and can be divided into two types: ① axiomatic language, which uses first-order logic to describe the pre and post assertions about abstract data type operations Including Larch and Anna. ② Algebraic languages, based on multi order algebra, describe the behavior characteristics of the system with the equivalent relationship of algebraic entities. In serial systems, there are Clear and Act One. In parallel and distributed systems, feature oriented languages include Temporary Logic and LOTOS.
These formal specification languages focus on functional description. The research on the formalization of non functional specifications is very insufficient.
While fully affirming the formal software specification, we should also recognize that the informal representation also contains formal elements, and the formal representation also contains informal understanding. The formal description method can only be used when a deep understanding of the software system has been formed. Formal software specifications cannot completely replace informal software specifications. Formal software specifications and informal software specifications should complement each other. Clean house technology should use both informal and formal software specifications.
2 Specification of graphic software
The text software specification contains a lot of character stream information, which makes it difficult to form an overall structural framework. Graphics have more visual effects than text, such as shape, size, direction, distance, position, etc. It is not only in recent years that graphics are used in computer language. Flowchart, which appeared in the 1960s, is an early graphic language. Graphical description of software specifications can do better than text. Jhon 5M and K arl GB have proposed a style of software graphic design. This method solves the problems of analysis, design, coding, maintenance and document management in software development with graphical description based on a meta model.
Many software specification methods introduce some graphics and symbols. The drawing specification shall use the widely accepted drawing specification.
The specification of graphic software cannot express semantics as freely as using text language. Therefore, the specification of graphic software is at least a semi formal representation. The hardware barriers to realizing the specification of graphics software are gradually disappearing, and the commercialized graphics workstation has very powerful functions, which further stimulates the interest in studying the specification of graphics software.
Petri net is a systematic mathematical and graphical description and analysis tool. Compared with other system models, Petri net has the following main characteristics: it can accurately represent the causality and independence in a certain set of events, including concurrency; Systems suitable for describing non sequential functions; It is easy to express the system with the same description language at different abstract levels; It is easy to verify the nature and correctness of the system. Because of these characteristics, Petri nets have become an important research topic and tool in computer science. The specification of graphics software based on Petri net is expected to make a difference.
The research work on other aspects of graphic software specification is: definition of graphic portrait and graphic vocabulary, graphic syntax and semantics, human-computer interaction mode, language and environment of special graphic software specification, etc. [1]