Introduction
is used to guide the principles and principles of the operations of the program design, and the design techniques of this. Sometimes it also refers to the study of these principles, principles, and technology. The goal of programming methodology is to design reliable, easy-to-read and costly procedures. Program design methods include project theory, research technology, support environment, engineering specifications and automatic programming, etc., making programming more scientific and engineered. The basic content is: structural programming; application theory in programming technology, and specifications and transform technology. The procedure theory is closely related to the development of program design methodology, and it enriches the method of thinking and promotes the development of programming technology.
Development History
Generating Background
In 1950-1 In the 1970s, handicraft-style programming method, Gaodener called the program as art.
In the late 1960s - early 1970s, the software crisis appears: one side requires a large number of software systems, such as operating systems, database management systems; on the other hand, software development cycle is long, reliable, and difficulty in maintenance. Programming: The program is clear, easy to read, easy to modify, easy to verify, and get a good structure.
In 1968, the Northern Atlantic Convention (NATO) held the first software engineering conference in West Germany, analyzed the situation of the crisis, studied the root cause of the problem, and the first proposed engineering The way solutions solve the problem of software development and production, this meeting can be counted as an important milestone in software development history.
In 1969, the International Information Processing Association (IFIP) established the "Procedural Design Methodology Working Group", specializing in research procedures design methodology, programming from hand-form-style ways to engineering. Study on Structured Program Design Method of Structured Program. Dijkstra proposes "GOTO is harmful", hoping to ensure the correctness of the program's dynamic operation of the program.
In 1969, WIRTH proposed to design the principle of "gradually seeking from the top down to seek essence, divided into force". Its basic idea is: from the original issue of solving, use the scientific abstract method to break down into a number of relatively independent small problems, sequentially refine until the various small problems have been solved.
Program correctness proves "
1967, Floyd proposed the correctness of the frame graph program with the" assertion method ".
1969, Hoare defines a small language and a logical system based on Floyd. This logic system contains procedural axioms and derivation rules, which is to prove part of the correctness of the program, which is the famous Hoare logic. His work laid the foundation for the study of ribology.
In 1973, Hoare and Wirth put most of the PASCAL language.
1975, an automatic verification system based on axiom and derive rules appeared for the first time.
1979, there is a programming language design language Euclid with axiom-based idea.
In 1976, Dijkstra proposed the concept of the weakest predicate and predicate converter for the correctness of the program and the formal derivation of the program.
1980, D. Gries combined with the proven system based on predicate calculations, called "Programming Science". For the first time, the program is designed from experience and technology.
1974, people use modal logic to verify the correctness of parallel programs.
About the proven of program correctness:
Doubt and opposition, reason: First, the form is too complex, who can guarantee that there is no mistake in itself! Second, the program is written, then prove its correctness, it is equivalent to "horse rear", that is, the error has been cast, how can I remedy?
Capsule: Write a program and prove while considering it. That is, the program design and correctness have proved simultaneously in parallel.
Constructs the correct program
Using Dijkstra's predicate converter and its calculation rule set, the correct program can be derived.
Utilize the program to construct the correct program. It applies a series of transformation rules that apply a series of protection correctness, eventually get executable programs. The program transformation is an important aspect of the "program design methodology" research since the 1970s, which is one of the promising ways of programming automation. Recursive program transformation is the most meaningful result of this period. Such as Burstall and Darlington's recursive program conversion system, etc.
logic program design and function program design represents a new research direction. ProLog is a form system based on the subset of predicate logic (Hoare clause). The execution process of ProLog is the process of performing logically digestion algorithms.
Research of Abstract Data Types
Abstract data type is an extremely important method in programming methodology. It is known as an important milestone in the history of programming methodology.
Research of the
Structured program
data abstraction and modular programming
Program correctness certificate
Program Transformation
Program Description and Defrive
Program Comprehensive and Analysis Technology
Object-Oriented Program Design Method
Development of large programs
and software engineering relationship
programming methodology is also closely related to software engineering. Methodology The development and maintenance of the software. Software Engineering requirements process standardization and establish new principles and technologies. The emergence of a new method requires the development of corresponding specifications. Methods and tools are two sides of the same problem. The study of tools is based on methodology, and the development of tools will be successfully influenced. Programming methodology also involves procedural derivation, program comprehensive, programming automation research, concurrent program design, distributed programming, functional programming, semantics, program logic, formal specifications, and proactive system.
Research Methods Different
Software Engineering Major Application Engineering Methods and Technical Research Software Development and Maintenance Method, Tools and Engineering Intersection of Computer Science and Engineering Design methodology mainly uses the nature of mathematical methods and the theory and method of programming;
research objects are different
software engineering research objects are software systems. The goal is to reduce the development cost of software, improve the quality of software, improve software maintainability, and improve software development efficiency. Focus on the macroscopic availability of the software. Programming methodology research object is a procedure. The goal is to ensure the correctness of the program. Focus on the microscopic correctness of the program. The boundaries of software engineering and programming methods have become more and more fuzzy programming methodology is the basis of software engineering.