НовостиСобытияКонференцииФорумыIT@Work
Идеи и практики автоматизации:

Блог

Быстрее — это медленнее

Сергей Бобровский
25.02.2014 12:40:45

Незыблемы ли законы программной инженерии?


начало тут: http://www.pcweek.ru/idea/blog/idea/6327.php

Jones's Law of Programming Language Utility #3
Каждое десятилетие менее 10% доступных языков программирования используется для создания 90% ПО.
Этот авторский закон стабильно соблюдается с 1965-го по 2014-й годы! Популярность языков программирования -- дама капризная, в среднем ЯП существует на рынке 3,5 года, после чего либо он становится мэйнстримом (таковых единицы за десятилетие), либо чаще всего о нем забывают. Пока все попытки понять это явление неуспешны.

Jones's Law of Software Defect Removal
Проекты, где выявляется 95% и более процентов ошибок, реализуются быстрее и дешевле, нежели проекты, где качество ниже 90%.
Если в процессе разработки применяется только тестирование, почти всегда в проекте остается более 10% ошибок. А вот когда используются инспекции кода и статический анализ перед тестированием, качество проекта удается довести до 99%, а завершается он быстрее. Плохая борьба с багами -- главная причина затяжек проектов.

Lehman/Belady Laws of Software Evolution
Программный продукт надо регулярно обновлять, иначе он становится все менее и менее полезным.
Программная «энтропия» (запутанность проекта) со временем возрастает.

Эти положения были сформулированы еще во времена разработки IBM OS/360. Первое правило интуитивно очевидно, да и второе тоже понятно и подтверждено практикой: по мере добавления в продукт новых возможностей растет его сложность, появляются новые баги, итп.

Senge's Law
Быстрее -- это медленнее.
Этот закон был выведен для бизнес-проектов -- чем быстрее пытаются проект завершить, тем дольше он затягивается. Главная ошибка связана с сокращением объемов тестирования и инспекций кода. Также вредны поспешный сбор и анализ требований, скорые прыжки от проектирования к кодированию.
Хотите реально ускорить девелоперский проект? Массово внедряйте дополнительные практики контроля качества кода до начала тестирования.

Wirth's Law
Производительность ПО замедляется быстрее, нежели растет вычислительная скорость компьютеров.
Этот закон Вирта был правильным во времена мэйнфреймов, однако для современных многоядерных и кластерных архитектур уже неверен.

Yannis' Law
Продуктивность программирования удваивается каждые шесть лет.
Как говорит Capers Jones, продуктивность разработки напоминает походку пьяного человека. Размеры проектов растут, рождаются новые архитектурные принципы под новые задачи. Однако если исключить проектирование, и оставить только кодинг, закон действительно выдерживается весьма точно! Так, современные языки C#, Go, Java, Ruby и им подобные позволяют программировать гораздо эффективнее, нежели Си или ассемблер.
Однако правильнее говорить скорее не столько о растущей человеческой скорости кодирования, сколько о снижении финальных объемов кода (из расчета на одинаковую функциональность) -- за счет более выразительных и более компактных средств программирования, развитых подходов к повторному использованию кода и т. п.

Комментариев: 0

Только зарегистрированные и авторизованные пользователи могут добавлять комментарии