четверг, 10 декабря 2009 г.

[comp.prog] Статьи Мэтью Уилсона о качестве ПО в журнале Overload

Статья первая: Quality Matters: Introductions, and Nomenclature
Статья вторая: Quality Matters: Correctness, Robustness and Reliability

Кто такой Мэтью Уилсон? Программист, разработчик таких OpenSource проектов, как STLSoft, Pantheios, FastFormat, recls и др. Автор книг “Imperfect C++: Practical Solutions for Real-Life Programming” (вот ее русский перевод) и “Extended STL, Volume 1: Collections and Iterators” (ее русский перевод). А так же автор статей в различных журналах.

Кому-то очень не нравится, как пишет Страуструп. А у меня таким невоспринимаемым автором является Мэтью Уилсон. Пытался читать его Imperfect C++, как на английском, так и на русском – в районе половины книги сдался. Пишет он, пишет, читаешь его, читаешь… Потом пытаешься осознать, а что же ты прочитал, и оказывается, что вспомнить нечего. С его статьями похожая ситуация.

Библиотек я его так же не использовал никогда. Раньше несколько раз смотрел на STLSoft. Забавная там идея – все только в h-файлах, ничего не нужно компилировать. Этакая большая header-only библиотека. Но вот не понял как же с STLSoft писать кроссплатформенные приложения, поскольку STLSoft представляет из себя сборище из каких-то модулей под названиями WinSTL, UNIXSTL, COMSTL, ACESTL. Как все это упрятать под общий фасад? Вроде как есть там что-то под названием PlatformSTL, которое как раз для этих целей предназначено, но беглый просмотр документации не позволил понять, что же это за зверь и с чем его едят.

А FastFormat хочется посмотреть. Должна быть интересная штука. Может когда-нибудь руки дойдут.

Так вот, о статьях. Поскольку о писательских способностях Уилсона я не высокого мнения, то и о его статьях, соответственно, так же. Но в данном случае очень понравились две фразы из второй статьи.

Первая описывает имеющий место быть парадокс:

Парадокс непредсказуемой точности: программные компоненты являются верными и действуют именно так, как они были запрограммированы действовать, тогда как поведение (нетривиальной) компьютерной системы не может быть с точностью понято, предсказано или обосновано за счет отсутствия проявлений неправильной работы.

(за точность перевода я очень сильно не ручаюсь, поэтому вот оригинал: Software entities are exact and act precisely as they are programmed to do, yet the behaviour of (non-trivial) computer systems cannot be precisely understood, predicted, nor relied upon to refrain from exhibiting deleterious behaviour).

Особенно ярко этот парадокс проявляется при агентно-ориентированном подходе. Логика поведения каждого агента понятна, но вот в совокупности они производят такие эффекты, что временами вообще невозможно понять, что и как работает.

Небольшое лирическое отступление. Первая байка на эту тему связана с птичьими стаями. Вроде как ученые установили, что каждая птица в стае придерживается нескольких простых правил (первое -- все особи знают только о своих ближайших соседях; второе -- все особи стремятся выстроиться в линию; третье -- все они притягиваются друг к другу, но все же держат некоторую дистанцию). Но при этом птичья стая демонстрирует очень сложное и труднопредсказуемое поведение. Вторая байка связана с фильмом “Властелин колец.” Вроде бы режиссер решился на съемку после того, как ему показали новую программу для моделирования и анимирования батальных сцен. Программу настолько крутую, что она могла задавать характеристики для отдельных бойцов. Так вот когда с ее помощью начали делать сражения для фильма, то оказалось, что часть орков просто сбегает с поля боя непонятно по чему. Разбор “полетов” показал – это были дезертиры. Их настолько “впечатлило” происходящее, что они решили просто сбежать с поля боя. Что стало сюрпризом не только для съемочной группы, но и для разработчиков программы.

Вторая фраза декларирует, что может считаться спецификацией программы:

Спецификация: спецификация программного компонента – это сумма всех пройденных компонентом unit-тестов.

и/или

Спецификация: спецификацией программного компонента является сумма всех его ненарушенных контрактов.

Вот такой вот взгляд на мир. Не то, чтобы я его разделял, но задуматься заставляет.

Отправить комментарий