Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПРАКТИЧЕСКИЕ РАБОТЫ ПО ОСНОВАМ ИНЖЕНЕРИИ.doc
Скачиваний:
133
Добавлен:
09.02.2016
Размер:
1.51 Mб
Скачать

2.4. Архитектурное и детальное проектирование

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

14 Эта аналогия является излюбленной у многих авторитетных авторов книг по технологии программирования.

Между тем с сожалением приходится отметить, что очень многие начинающие програм­мисты пытаются «проскочить» или предельно сократить фазу проектирования. Обычно это мотивируют необходимостью сокращения сроков и трудозатрат. Это принципиальная ошибка: сокращение сроков и трудозатрат на проектирование не только не сократит сум­марных сроков и трудозатрат на разработку, а, наоборот, в лучшем случае существенно увеличит их, а в худшем случае приведет к краху проекта. В настоящее время всю фазу проектирования обычно подразделяют на две части: архитек­турное проектирование и детальное проектирование.

2.4.1. Архитектурное проектирование

Архитектура программы - это очень и в то же время трудно определимое понятие техно­логии программирования. Приведем определение из Википедии.15

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

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

Шоу и Гарлан классифицировали архитекту­ры программного обеспечения с точки зрения практики [2]. Другими словами, они собра­ли вместе образцы программного обеспечения для различных архитектур. Их классифика­ция, немного адаптированная, показана в табл. 2. Приведенная в табл. 2 классификация архитектур довольно поверхностна. На практике обычно используют комбинацию нескольких архитектурных идей, настраивая их с учетом особенностей проекта.