Глобальные переменные и структуры
Тема 2.4. Техническое проектирование
Цель изучения темы:ознакомится с этапом техническое проектирование, его особенностями.
Цель этапа разработки: составить техническую спецификацию (техническое задание) программного продукта
Участники данного этапа разработки
Со стороны разработчиков на данном этапе участвуют:
· менеджеры по разработке;
· проектировщики.
Представители заказчика на данном этапе не участвуют.
Понятие технической спецификации (технического задания)
Техническое проектирование - это мост между функциональной спецификацией и кодированием на языке программирования. Функциональная спецификация определяет, что должен делать программный продукт, а техническая спецификация (или техническое задание) определяет, как это будет делаться.
Часто команда разработчиков пытается сократить и объединить стадию разработки функциональной спецификации и техническое проектирование и разработать один документ. Это ошибка. Во-пеpвых, вы принудите пользователя читать документ с большим количеством технических подробностей, ему не понятных. Это приведет к тому, что пользователь вскоре отбросит ваш документ, что может привести к недостаточной его законченности.
Во-втоpых, функциональная спецификация концентрирует внимание на требованиях и пожеланиях пользователя, а техническое проектирование должно ориентироваться на создание методов реализации данных требований. Только после того, как обе эти фазы завершены и акценты расставлены, программист может приступать к непосредственному кодированию. Когда обе эти стадии объединены, разработчик не может сконцентрироваться на каком-либо одном направлении мышления, и в результате этого получается неясный и плохо отработанный документ. Или, что еще хуже, программист начинает реализовывать идею, которая еще не определена до конца пользователем.
Лучшая характеристика хорошего технического документа, это возможность пpогpаммистy формировать систему без специфических знаний о проекте, а только руководствуясь технической спецификацией.
Техническая спецификация (техническое задание) – документ, описывающий методы и способы реализации требований заказчика к разрабатываемому программному продукту.
Техническая спецификация разрабатывается на основе функциональной спецификации.
Разработка технической спецификации
1 этап – горизонтальное проектирование (на данном этапе создается горизонтальная архитектура проекта):
шаг 1) все основные функции программного продукта разбиваются на несколько групп по степени важности (обычно по 3-4 функции в каждой);
шаг 2) каждая группа функций формируется в отдельный подпроект; все подпроекты будут разрабатываться последовательно;
2 этап – вертикальное проектирование (на данном этапе создается вертикальная архитектура проекта):
шаг 3) для работы в подпроектах назначаются небольшие команды разработчиков, которые работают параллельно и максимально автономно (для этого определяется график работы всех групп и ресурсы, необходимые для работы в подпроетах).
Формат документа технической спецификации
Техническая спецификация должна быть разделена на спецификацию всей системы в целом и низкоуровневое проектирования каждого важного модуля. Документ должен состоять из одной или нескольких следующих компонент.
Схема данных
Обычно применяется для описания структуры базы данных.
Схема - уникальный способ для неинфоpмиpованного пpогpаммиста получить быстрый краткий обзор того, что система делает. Эта диаграмма показывает все объекты системы (обычно таблицы) и связи междy ними (один ко многим, один к одному и т.д.) Она может также показывать спецификации ключевых полей и другие связи по мере необходимости.
Схема модулей (техническое проектирование высокого уровня)
Это высокоуровневое пpоектиpование программных модулей и связи междy ними, начиная с главного модуля и основных модyлей, опpеделенных ранее в функциональной спецификации (например, главное меню). Детализированная структурная диаграмма может также включать информацию о передаваемых между модулями параметрах. Эта диаграмма - хороший способ отдельным членам команды программистов быстро выяснить общую структуру программы и решить все проблемы по интеграции отдельных модулей в систему. Это "моментальный снимок" разрабатываемой системы.
Детализация модулей и псевдокод (техническое проектирование низкого уровня)
Когда техническое проектирование высокого уровня закончено, выполняется в деталях проектирование низкого уровня. Для каждого модуля проектировщик должен определить все требования, включая передаваемые параметры, глобальные структуры и переменные, вызываемые подпрограммы и т.д. Эта информация важна для тех членов команды программистов, которые реализуют модули, взаимодействующие друг с другом. хорошо спроектированная техническая спецификация снимает все проблемы, возникающие при соединении отдельных модулей программы в единое целое.
Вторая часть проектирования низкого уровня - создание псевдокода, является трудной, но очень важной частью процесса. Псевдокод - это способ описания алгоритма, при котором используется некоторое количество слов обычного языка.
Многие программисты не любят писать псевдокод, поскольку им кажется, что непосредственное кодирование осуществить быстрее. Для небольших моделей это действительно так. Модуль проще написать сразу на языке программирования и не тратить время на переписывание одних и тех же строк дважды. Но в тех случаях, когда модуль имеет достаточно большой размер, псевдокод часто снимает много проблем. В процессе проработки псевдокода может вскрыться ранее не учтенная проблема, решение которой на стадии технического проектирования значительно упрощает дальнейшую разработку и написание непосредственного кода. Тем более, если рассматриваемый модуль некоторым образом связан с другими модулями, решение проблемы на уровне псевдокода сэкономит время, которое потребуется на изменение уже написанного другими членами команды разработчиков кода на стадии непосредственного кодирования.
Глобальные переменные и структуры
Данная информация требуется для всех членов команды разработчиков. Чрезвычайно трудно формировать глобальные структуры "на летy" и одновременно сообщать о них остальным членам команды, принуждая их подстраиваться под Вас. Hеобходимо, насколько это возможно, как можно раньше описать все структуры данных, задействyемые несколькими членами команды одновременно.
Среда разработки системы
Среда разработки позволяет всем членам команды знать размещение всех файлов проекта, библиотек, документов и другой связанной с проектом информации. Она должна быть создана таким образом, чтобы все члены команды разработчиков с минимальными затратами времени могли обратиться к любой информации, относящейся к проекту.