Software Engineering

sealm

Турист
Регистрация
31 Дек 2005
Сообщения
14
Реакции
0
Credits
8
Сейчас в области Software Engineering все движеться в направлении развития надежных средств тестинга для исправления создавшихся ошибок по в процессе разработки. А нет ли каких то наработок в обратном направлении : создание надежных средств разработки с жесткими правилами не допускающих ошибок (предотвращение вместо исправления).
 

Unsiker

Турист
Регистрация
19 Фев 2007
Сообщения
40
Реакции
0
Credits
72
незнаю, ничего такого не слышал
 

ploki

Местный
Регистрация
16 Май 2005
Сообщения
237
Реакции
180
Credits
0
Такие наработки есть, причём очень много.

Сначала отвлечение.
Первый тезис не совсем верен, Software Engineering движется во все стороны.
Сам вопрос тоже сформулирован слишком строго. Средств разработки, не допускающих ошибок, быть не может. А вот средства разработки, предотвращающие или снижающие число ошибок отдельных классов, разрабатываются непрерывно.
Всё развитие инструментальных средств - это борьба в том числе и с большим объёмом неконцептуальных ошибок. Один язык Ада со соответствующей инфраструктурой чего стоит. Но всё в мире взаимосвязано, а понятие "ошибки" настолько сложно, что борясь с некоторыми классами ошибок, мы теряем что-то другое. Поэтому важен компромисс. Навскидку рекомендую посмотреть некоторые эссе Джоэла Сполски, особенно про дырявые абстракции, "Мифический человекомесяц" Брукса, "Совершенный код" Макконнелла, историю создания Ады и Оберона.

Непосредственно сабжем занимаются огромные разделы теории алгоритмов, семантики и прагматики языков программирования, теории трансляции. Сюда же - методологии проектирования, модели ЖЦ, построение СПЖЦ.

Причём сколько всего конкретного придумано!
Принудительное проектирования, объектно-ориентированная парадигма в своём первоначальном виде, логическое и функциональное программирование и вообще декларативный подход к решению стандартных задач, шаблоны проектирования (от банды четырёх и далее). Программирование по контракту (предусловия и постусловия, автоматическая проверка инвариантов и т.д.), модульное программирование. Строгая типизация, сборщики мусора, умные указатели, виртуализация ресурсов. Автоматическая геннерация кода по модели. Автоматическая оптимизация. Автоматическая верификация и т.п.