Синтаксические методы в разработке программного обеспечения
Syntactic methods
Синтаксические методы в разработке ПО: обнаружение и предотвращение ошибок на уровне структуры кода. Альтернатива формальным методам – проще и дешевле.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
В разработке программного обеспечения синтаксические методы — это техники создания корректных программ. Эти техники стремятся выявлять и, таким образом, предотвращать определенные виды дефектов (ошибок) путем анализа структуры создаваемого кода на синтаксическом, а не семантическом уровне.
In software engineering, syntactic methods are techniques for developing correct software programs. The techniques attempt to detect, and thus prevent, certain kinds of defects (bugs) by examining the structure of the code being produced at its syntactic rather than semantic level.
Использование
Синтаксические методы часто используются, когда формальные методы невозможны, и зачастую представляют собой более простое и, что более важно, более дешевое решение. В системах, не критичных к безопасности, применение формальных методов может оказаться слишком затратным по сравнению с получаемой выгодой. Затраты на моделирование, персонал, реализацию и разработку часто превышают преимущества, полученные от предотвращения возможных сбоев. Данный подход основан на использовании абстрактного графа зависимостей, который строится на основе анализируемой системы. Абстрактный граф зависимостей – это ориентированный граф, состоящий из вершин, соединенных однонаправленными ребрами. Чаще всего вершины и ребра графа отражают входные и выходные данные функций или компонентов системы. Анализируя построенный абстрактный граф зависимостей, разработчик может выявлять синтаксические аномалии (или аномалии Приса) в системе. Хотя аномалии не всегда являются дефектами, они часто указывают на возможные дефекты в системе. Таким образом, аномалии в системе помогают разработчику определить направление поиска дефектов.
Syntactic methods are often used when formal methods are not an option, and are often a simpler and, more importantly, cheaper alternative. In non mission critical systems, formal methods may prove to be too expensive for the benefit they provide. The costs of modelling, personnel, execution and development may often outweigh the benefits gained by preventing possible failures. This approach revolves around the use of an abstract dependency graph which is created from the system in question. An abstract dependency graph is a directed graph, a graph of vertices connected by one way edges. Most often, the vertices and edges of the graph represent the inputs and outputs of functions in or components of the system. By inspecting the created abstract dependency graph, the developer can detect syntactic anomalies (or Preece anomalies) in the system. While anomalies are not always defects, they often provide clues to finding defects in a system. Therefore, the anomalies in a system help point the developer in the right direction in finding defects.
Общие ссылки
"Синтаксическая теория архитектуры программного обеспечения". Dean, Thomas R., Cordy, James R. IEEE Transactions on Software Engineering 21 (4), с. 302–313 (1995)
"Синтаксическая абстракция типов" Grossman, D., Morrisett, G., Zdancewic, S. ACM Transactions on Programming Languages and Systems 22 (6), с. 1037–1080
"Новый алгоритм для выделения подпрограмм из неструктурированных программ". Harman, M., Danicic, S. Журнал технического обслуживания и эволюции программного обеспечения 10 (6), с. 415–441
"Реинжиниринг встроенного программного обеспечения с использованием синтаксического распознавания образов" Fournigault, M., Liardet, P. Y., Teglia, Y. Trémeau, A. Robert Inacio, F. Lecture Notes in Computer Science (включая подсерии Lecture Notes in Artificial Intelligence и Lecture Notes in Bioinformatics) Том 4277 LNCS, I, 2006, с. 527–536. (2006)
"Syntactic theory of software architecture." Dean, Thomas R., Cordy, James R. IEEE Transactions on Software Engineering 21 (4), pp. 302–313 (1995)
"Syntactic type abstraction" Grossman, D., Morrisett, G., Zdancewic, S. ACM Transactions on Programming Languages and Systems 22 (6), pp. 1037–1080
"A new algorithm for slicing unstructured programs." Harman, M., Danicic, S. Journal of Software Maintenance and Evolution 10 (6), pp. 415–441
"Reverse engineering of embedded software using syntactic pattern recognition" Fournigault, M., Liardet, P. Y., Teglia, Y. Trémeau, A. Robert Inacio, F. Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) Volume 4277 LNCS I, 2006, Pages 527–536. (2006)