Русские документы
Ежедневные компьютерные новости RSS rusdoc.ru  Найти :
Новости
Последние поступления
Книжный магазин
  Hardware:
Видеоустройства
Системные платы
Процессоры
Мобильные устройства
Аудиосистема
Охлаждение системы
Накопители информации
КПК и ноутбуки
Телефоны и связь
Периферия
Система
Сети
Разные устройства
 
  Programming:
Web-разработка
Языки программирования
Технологии и теория
Разработка игр
Программная инженерия
 
  Software:
Операционные системы
Windows 7
Базы данных
Обзоры программ
Графика и дизайн
   
  Life:
Компьютерная жизнь
Разные материалы
   
Партнеры
Публикация
Правовая информация
Реклама на сайте
Обратная связь
Экспорт в RSS Экспорт в RSS2.0
    Читать в Яндекс.Ленте



Монолитные системы – наследие

Раздел: Programming / Теория разработки @ 21.08.2008 | Ключевые слова: проблемы разработки версия для печати

Автор: Kaaboeld
Источник: habrahabr

Большие проекты, с долгой историей — уходящей своими корнями в 90-е, в большинстве случаев основываются на монолитной архитектуре (не касательно web — корни тянуться еще глубже). В работе я часто сталкиваюсь с подобными системами и у них всех практически одни и те же проблемы, об этом и хотелось бы рассказать сейчас.

Основная проблема

При создании не предполагает наращивания функционала. Создается «раз и на всегда» — любая «новая кровь» — не той группы и вызывает отторжение. Любое хирургическое вмешательство рано или поздно приводит к появлению «Франкенштейна» — сущности Множеств — объеденных синтетическими связями.

Со временем в любом проекте наступает этап, когда базового функционала становиться не достаточно.
Основываясь на первом тезисе – существует несколько вариантов решений:

Инъекции
«—Я не знаю, как это работает — сделаю поверх»
Так как у Системы много пап (мам) — новые ее родители, часто экономят свое время и нервы – не пытаются разобраться в кусках чужого «наследия» и просто работают «поверх» того, что есть. Многим знакомы симптомы подобного отношения:<!-- Я не знаю как это работает, но если удалить то все падает — НЕ УДАЛЯТЬ!!! --> или превентивные инъекции кода черед replace после генерации. Основная проблема, если проекту предположим 10+ лет, то подобные «методы» наслаиваются друг на друга.

Внести изменений в ядро
Свойственны вышеприведенные проблемы, но на более «низком» уровне. Вырезаются целые сегменты системы и встраиваются новые, независимые, с нарушенными, синтетическими связями, что в целом влечет расщепление на независимые подсистемы (некое извращенное подобие модульности), разреженность и усложнение архитектуры.

Чистый лист
Создание новой системы, подразумевает колоссальные затраты времени и финансов – которые только приумножаются с каждым днем работы текущей «версии». Так как за это время происходит ее развития (наращивание функционала) иными способами. Полная остановка работы системы на время создания новой, в большинстве случае — невозможна, так как ведет за собой потерю потенциальной прибыли.

Это интересно:








версия для печатиРаспечатать статью


Вернуться в раздел: Programming / Теория разработки


Реклама:
Читать наc на:

Add to Google
Читать в Яндекс.Ленте






Rambler's Top100
© Copyright 1998-2012 Александр Томов. All rights reserved.