|
|
|
О частичном применении методов формальной разработки ПО
|
|||
|---|---|---|---|
|
#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&gotonew=1&tid=2187379]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
171ms |
get topic data: |
10ms |
get first new msg: |
5ms |
get forum data: |
4ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 478ms |

| 0 / 0 |
