Слайд 1Lecture 4
Software development methodology (continued)
Слайд 2Methodology imperative programming
Imperative programming methodology - an approach characterized by
the principle of progressive change in the state of the
calculator step by step manner. In this case, change management is fully defined and fully controlled.
Origin. This is historically the first hardware-supported methodology. It focuses on the von Neumann model, remained for a long time, hardware architecture, which received wide practical application.
Techniques and concepts. The method of changing states - is a logical state changes. Method is supported by the concept of the algorithm. The method of controlling the flow of execution - is to step through the control of management. Method is supported by the concept of the execution flow.
Слайд 3Methodology imperative programming
Computational model. Imperative programming is based on the
description of the serial changes in the state of the
calculator. The mathematical model of imperative programming uses a Turing machine - Lent - an abstract computing device, as proposed at the dawn of the computer age to describe algorithms.
Class of problems. The methodology is best suited to solve problems in which the sequential execution of any command is natural. With the increasing complexity of the mandatory programs are becoming less and less readable. Programming and debugging of large programs written on the basis of this methodology, can last for many years.
Слайд 4The methodology of object-oriented programming
The methodology of object-oriented programming -
an approach that uses the object decomposition, in which the
static structure of the system is described in terms of objects and relationships between them, and the behavior of the system - in terms of the exchange of messages between objects.
Origin. The occurrence of the object of thinking was influenced by modeling and reporting, graphical user interfaces and system programming (with the term "process"). Modeling real systems require natural description of entities - objects and events.
Techniques and concepts. The method of the object decomposition - is to allocate objects and relationships between them. Method is supported by the concepts of encapsulation, inheritance and polymorphism. The method of abstract data types - the method, the underlying encapsulation. Method is supported by the concept of abstraction. The method of sending messages - is to describe the behavior of the system in terms of the exchange of messages between objects. Method is supported by the concept of communication.
Слайд 5The methodology of object-oriented programming
Computational model. Model of pure OOP
support is clearly only one operation - sending a message
to an object. Messages can have parameters, which are objects. The message itself is also an object.
Class of problems. The methodology is a powerful tool to model the relationships between objects in almost any pro. Particularly convenient and easy to express the objects interaction between different elements of the graphical user interface.
Слайд 6Methodology for functional programming
Methodology for functional programming - an approach
under which the programs only action is to call a
function, the only way to separate the program into parts - the introduction of the name of the function and the task for this name expression that calculates the value of the function, and the only rule of composition - the composition operator functions.
Origin. The methodology is one of the oldest. In origin, it is closely related to the lambda calculus, invented in the early 30's. XX century. logician A. Church. For many, this methodology has become associated with the language Lisp, created by John McCarthy in the late 50's. XX century.
Techniques and concepts. Applicative method - is that the program is an expression consisting of the application of functions to arguments. The program consists of a set of function definitions, which are other function calls and proposals to control the sequence calls. Method is supported by the concept of function. Recursive behavior - is self-repeating behavior coming back to himself. Method is supported by the concept of recursion ..
Слайд 7Methodology for functional programming
Computational model. Functional programming has no concept
of time: the programs are expressions, and the execution of
the programs is to calculate these expressions. The mathematical model of functional programming uses Church's lambda calculus.
Class of problems. Methodology commonly used to solve those problems which are difficult to formulate in terms of successive operations. This category includes virtually all of the tasks associated with artificial intelligence. This tasks such as natural language processing, expert advising system, the problems of visual perception, and many others.
Слайд 8Methodology for logic programming
Methodology for logic programming - an approach
under which the program describes the problem in terms of
facts and logical formulas, and the answer is by inference.
Origin. The methodology begins its countdown to the end of the 60's. XX c., When K. Greene suggested to use the resolution as a basis for logic programming. A. Kolmeroe created the language of logic programming Prolog in 1971 based on logical languages usually is any logical calculus with the large-deduction rules.
Techniques and concepts. Uniform application of the method of logical proof mechanism for the program. Method is supported by the concept of proof. The method of unification - the mechanism of pattern matching to rebuild data structures. Method is supported by the concept of substitution.
Слайд 9Methodology for logic programming
Computational model. Logic programming - programming that
is in terms of facts and rules of inference.
Class of
problems. The class of problems of logic programming is almost the same as the class of the problems of methodology of functional programming.
Слайд 10Programming Methodology sentential
Sentential programming methodology - the approach that the
essence of the program is to restructure a clear and
fairly complex data structures within the given conditions.
Origin. The idea and framework approach - Markov normal algorithms. Based approach built two models based on the identification of different variants - specific and standardized. The method is based on the methodology specifying sentential programming language Refal created VF Turchin in 1986 unification method together with the formalism of mathematical logic was based on the methodology and logic programming language Prolog. Intuitively this language should be related to sentential programming, since the goal of its development were the problems of mathematical linguistics. Recursion instead of the identification results by the methodology of functional programming.
Techniques and concepts. The basic method - a method of identification. Method is supported by the concept of substitution.
Слайд 11Programming Methodology sentential
Computational model. Sentential programming - programming in this
form of treatment metavyrazheny.
Class of problems. The class of problems
sentential programming is almost identical with the class of problems of methodology of functional and logic programming, although more focused on character conversion.
Слайд 12Restrictive programming methodology
Restrictive programming methodology - an approach under which
the program is determined by the data type of decision
about the decision, and restrictions on the value of the desired solution and that is the system. A number of studies found the following names methodology: constraint programming and staging programming.
Origin. Methodology emerged in the early 80's. XX century. as a promising area of research at the intersection of symbolic computation, artificial intelligence, operations research and interval arithmetic.
Techniques and concepts. The method of descriptive model of computation is that the program in a programming language describes the concepts and tasks. Method is supported by the concept of the model.
Слайд 13Restrictive programming methodology
Computational model. Constraint programming - programming that is
in terms of the formulation of problems.
Class of problems. Restrictive
class of problems of programming - the problem of operations research and artificial intelligence. In such problems, using a space-making, which is achieved by narrowing the desired result. The restrictions can be naturally represented as a constraint.
Слайд 14Structured methodology [mandatory] programming
Structured methodology [mandatory] programming - the approach
of setting a good topology imperative programs, including the rejection
of the use of global data and operator unconditional transfer, development of modules with a strong connection and a weak grip. The approach is based on two main principles: Sequential decomposition algorithm to solve the problem from the top down and the use of structural coding. In contrast, the methodology of the PLO the methodology known as the methodology of procedure-oriented programming.
Origin. The methodology is a key development imperative methodology. Creator of the structural approach is Edsger Dijkstra Vibe. He also holds an attempt to combine structured programming techniques with proof of programs.
Слайд 15Structured methodology [mandatory] programming
Techniques and concepts. Algorithmic method of decomposition
down - is stepwise refinement of the task, starting with
the most common problem. Method is supported by the concept of the algorithm. The method of the modular organization of parts of the program - is to split the program for special components, called modules. The method supports the concept of a module. The method of structural coding - is to use when encoding the three basic control structures (the follow up, a fork, a repetition). Method is supported by the concept of management.
Class of problems. The class of problems for this methodology is a Class peremptory challenges to methodology. Thus able to develop more complex programs, because they are easy to take and analyze.
Слайд 16Methodology [mandatory] parallel programming
Methodology [mandatory] parallel programming - an approach
which proposes the use of explicit structures for parallel execution
of programs selected fragments.
Origin. Analysis of the effectiveness of complex computing tasks showed that the computing speed can be significantly improved by using not one, but multiple devices simultaneously. Create multiprocessor systems has led to a major study in this area. Another cause of the methodology associated with the emergence of complex programs that require support explicit parallelism (eg, operating systems).
Слайд 17Methodology [mandatory] parallel programming
Techniques and concepts. Synchronization method of executable
code - is the use of special operations for an
atomic interaction between both executable code snippets. Method is supported by the concept of synchronization primitives.
Class of problems. The methodology can be used very effectively for large homogeneous data sets. These arrays are often encountered in the implementation of computational and statistical methods. In addition, this methodology has been successfully applied in modeling, operating systems and real-time systems.
Слайд 18Logical methodology for parallel programming
Logical methodology for parallel programming -
an approach that generalizes the logical methodology for the parallel
execution of the evidence.
Origin. Language Concurrent Prolog, Ehud Shapiro proposed developing a logical approach to abstract specifications, and includes several ideas Dijkstra (including the idea of a protected supply). When this space is described as a formal theory in a logical-mathematical language.