Главная страница
Библиотека (скачать книги)
Скачать софт
Введение в программирование
Стандарты для C++
Уроки по C#
Уроки по Python
HTML
Веб-дизайн
Ассемблер в среде Windows
ActiveX
Javascript
Общее о Линукс
Линукс - подробно
Линукс - новое
Delphi
Паскаль для начинающих
Турбопаскаль
Новости
Партнеры
Наши предложения
Архив новостей





Стили разработки проекта

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

 

Широкое применение получили такие стили разработки программ, как модульный, структурный, надежный, причем они применяются, как правило, в совокупности, дополняя друг друга.

Другим важным понятием разработки программных проектов является понятие "технологии разработки". Каждая технология базируется на некотором стиле, является его конкретным воплощением, использует определенные программные инструменты и ориентирована на создание программных средств определенного вида.

Технология разработки проекта включает в себя:

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

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

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

Рассмотрим далее основные принципы и положения технологии разработки пользовательского проекта, которая поддерживает стили модульного, структурного и надежного программирования.

 

Модульное программирование

Суть модульного программирования состоит в разбиении сложной задачи на некоторое число более простых подзадач и составлении программ для их решения достаточно независимо друг от друга. Модульность является одним из основных принципов построения программных проектов.

В общем случае модуль - отдельная функционально законченная программная единица, некоторым образом идентифицируемая и объединяемая с другими, средство определения логически связанной совокупности объектов, средство их выделения и изоляции. Модуль является средством декомпозиции не только структур управления, но и структур данных. Этому в значительной мере способствовало развитие понятия "тип данных".

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

 

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

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

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

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

Все модули используют мнемонические имена для определяемых ими объектов (констант, переменных, типов и подпрограмм), что облегчает понимание их назначения и запоминание, удовлетворяет требованию наглядности текста программ.

 

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

 

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

Верификация программ складывается из двух этапов:

- проверка правильности применения модулей только на основе знания их спецификаций;
- установление соответствия спецификации и реализации модулей.

Модули служат также целям создания проблемно-ориентированного
контекста и локализации машинной зависимости.

 

Структурное программирование

Стиль структурного программирования регламентирует выполнение этапов проектирования, кодирования и тестирования программ. В структурном программировании важны форма представления программы и дисциплина ее разработки. Оно нацелено на повышение продуктивности программирования за счет повышения надежности программ.
Одним из главных способов повышения надежности является улучшение структуры программы, что позволяет понимать, сопровождать и модифицировать ее даже без участия автора. Модификация программ в процессе их сопровождения и адаптации неизбежна, а стоимость этой модификации обычно в 3-5 раз превышает стоимость создания программы.

 

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

Первое из них означает, что весь процесс разработки разбит на шаги, выполняемые последовательно.

Восходящий метод подразумевает разработку программы снизу вверх:

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

 

Вторым важнейшим принципом структурного программирования является структурное кодирование (на языке программирования).

Оно имеет два аспекта:

- структурирование (разбиение) программы на компоненты структурирования,
- структурность применяемых в программе управляющих конструкций (операторов).

 




 

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


Добавить свой комментарий:


Введите значение:
 









   
 

Библиотека программиста. 2009.
Администратор: admin@programmer-lib.ru