Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
по.doc
Скачиваний:
14
Добавлен:
07.03.2015
Размер:
1.58 Mб
Скачать
  1. Избыточная функциональность

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

  1. Купить или создавать самим?

Самый радикальный подход к созданию ПО - не создавать его вообще, а купить или загрузить из Интернета бесплатное ПО с открытым исходным кодом. Вы можете приобрести элементы управления GUI, менеджеры БД, процессоры изображений, компоненты для работы с графикой и диаграммами, компоненты для коммуникации по Интернету,

компоненты обеспечения безопасности и шифрования, обработки электронных таблиц и текста и др. Если архитектура не подразумевает применение готовых компонентов, она должна объяснять, в каких аспектах компоненты, которые будут разработаны, окажутся лучше готовых библиотек и компонентов.

Проектирование по

Под «проектированием ПО» понимают разработку или изобретение схемы преобразования спецификации приложения в готовое приложение. Проектирование — это тот процесс, который связывает выработку требований с кодированием и отладкой.

1. Существенные и несущественные проблемы.

В философии существенными называют свойства, которыми объект должен обладать, чтобы быть именно этим объектом. Несущественными (акцидентными) свойствами называют свойства, которыми объект обладает в силу случайности, — свойства, не влияющие на его суть.

2. Сложность

На уровне архитектуры ПО сложность проблемы можно снизить, разделив систему на подсистемы. Несколько несложных фрагментов информации понять проще, чем один сложный. В разбиении сложной проблемы на простые фрагменты и заключается цель всех методик проектирования ПО. Чем более независимы подсистемы, тем безопаснее сосредоточиться на одном аспекте сложности в конкретный момент времени. Грамотно определенные объекты разделяют аспекты проблемы так, чтобы вы могли решать их по очереди.

Подход к управлению сложностью:

- старайтесь свести к минимуму объем существенной сложности, с которым придется работать в каждый конкретный момент времени;

- сдерживайте необязательный рост несущественной сложности.

  1. Простота сопровождения

Проектируя приложение, не забывайте о программистах, которые будут его сопровождать (проектируйте систему так чтобы ее работа была очевидной). Слабое сопряжение (loose coupling) предполагает сведение к минимуму числа соединений между разными частями программы. Расширяемостью системы называют свойство, позволяющее улучшать систему, не нарушая ее основной структуры. Изменение одного фрагмента системы не должно влиять на ее другие фрагменты.

  1. Возможность повторного использования

Проектируйте систему так, чтобы ее фрагменты можно было повторно использовать в других системах. Высокий коэффициент объединения по входу (система предусматривает интенсивное использование вспомогательных низкоуровневых классов.) Низкий или средний коэффициент разветвления по выходу (конкретный класс обращается к малому или среднему числу других классов).

  1. Стратификация

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

  1. Уровни проектирования

Проектирование программной системы требует нескольких уровней детальности.

Рис.3 - Уровни проектирования программы. Систему A) следует разделить

на подсистемы B), подсистемы - на классы C), а классы - на методы и данные D);

методы также необходимо спроектировать E).

Список использованной литературы

1. Гудлиф П. Ремесло программиста. Практика написания хорошего кода. / Пер. с англ. - СПб.: Символ-Плюс, 2009. - 704 с., ил.

2. Макконнелл С. Совершенный код. Мастер-класс. / Пер. с англ. - М.: Издательско-торговый дом «Русская Редакция»; СПб.: Питер, 2005. - 896 стр.: ил.

3. Учебное пособие «Принципы разработки алгоритмов и программ для решения прикладных задач» http://revolution.allbest.ru/programming/00055669_0.html

4. Gilb T. Principles of Software Engineering Management. - Addison Wesley, Reading MA, 1988. - 464 p.