?
Инструментальная поддержка эволюционного расширения программ при инкрементальной разработке
Currently used a different approaches to the evolutionary software development. A number of them are widely used in practice and are embodied in various programming techniques and programming paradigms. The article discusses the features of software objects of modern programming languages that provide support for evolutionary software development. Among the many existing methods, we can distinguish those that are focused on supporting polymorphism, which allows changing the behavior of procedures or functions using a dynamic binding during execution. We compare the approaches which used in the procedural, object-oriented, procedural-parametric paradigms, as well as the use of interfaces in the Go programming language. With the exception of the procedural paradigm, all other approaches offer their own variants for the implementation of polymorphism, the comparison of which is of particular interest to developers of promising programming languages. We propose a set of basic situations of incremental program expansion, on the basis of which various approaches are compared. This are the extension of generalizations by using specializations; adding new procedures that provide additional functionality; adding new data fields to existing data types; adding new procedures designed to process only one of the specializations; creating a new generalization based on existing specializations; adding a multimethod to the program; change of multimethods when adding new specializations. The possibilities of using different methods of polymorphism are evaluated for the functional parallel programming language which using dataflow control.