|
|
|
О частичном применении методов формальной разработки ПО
|
|||
|---|---|---|---|
|
#18+
см. https://www.researchgate.net/publication/404225388 Последний раз обсуждается пример Мартина по поводу нарушения принципа подстановки. С++ код программировался с библиотекой GSL -- Guidelines Support Library. Во - первых, получен результат, который противоречит Мартину, далее цитата: This leads us to a very important conclusion. A model, viewed in isolation, can not be meaningfully validated.
The validity of a model can only be expressed in terms of its clients.
Это ведет нас к очень важному выводу. Модель, которая рассматривается изолированно, не поддается
содержательной проверке. Корректность модели может быть выражена только в терминах её клиента. При правильном применении проектирования по контракту нарушение получено на стадии дымовых тестов.То есть, модель рассматривалась исключительно изолированно и поддалась содержательной проверке. Во- вторых, надо использовать окончательную редакцию принципа подстановки (а не предварительную, как делаем Мартин). .=
Пусть $f(r)$ -- некоторое свойство, выполняющееся (или утверждение, которое истинно)
на объектах $r$ типа $T$. Тогда свойство $f(s)$ должно выполняться на объектах типа $S$,
если $S$ является подтипом типа $T$.
.=
В качестве свойства $f(r)$ используем следующее утверждение:
.=
Для всех объектов $r$ класса $Rectangle$ выполнение функции $g$ достигает оператора $return$.
.=
Поскольку в первом, бесконтрактном, варианте классов на объекте $s$ класса $Square$
выполнение функции $g$ не достигало оператор $return$, становится
очевидным нарушение принципа подстановки без дополнительных аппеляций
автора примера (то есть, Мартина) к изменившемуся поведению функции $g$
и каким- то осмысленным предположениям разработчика этой функции $g$.
Разработчик ПО должен выполнять требования спецификации без собственных
предположений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.04.2026, 14:41 |
|
||
|
|

start [/forum/topic.php?fid=71&tid=2187379]: |
0ms |
get settings: |
6ms |
get forum list: |
14ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
53ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
25ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 320ms |

| 0 / 0 |
