Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
29_Textovyy_redaktor_Memo_ekzamen.docx
Скачиваний:
8
Добавлен:
16.04.2019
Размер:
100.24 Кб
Скачать

Модули и их свойства

Термин «модуль» используется в двух смыслах. Первоначально – это подпрограммы (они компилировались отдельно). В настоящее время - это набор программных ресурсов (констант, переменных, описаний типов, классов и подпрограмм) компилируемый автономно.

Чем выше степень независимости модулей, тем:

  • легче разобраться в модуле, тестировать, отлаживать и модифицировать его;

  • меньше «волновой» эффект - новые ошибки при исправлении старых

  • проще организовать разработку ПО группой программистов.

Таким образом, уменьшение зависимости модулей улучшает технологичность проекта.

Степень независимости модулей (как подпрограмм, так и библиотек) оценивают двумя критериями: сцеплением и связностью.

Сцепление модулей

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

Различают пять типов сцепления модулей:

  • по данным - модули обмениваются только скалярными данными ;

  • по образцу - модули обмениваются структурами данных;

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

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

Связность модулей

Связность – степень взаимосвязи элементов, реализуемых одним модулем.

Размещение сильно связанных элементов в одном модуле уменьшает межмодульные связи и взаимное влияние модулей.

Размещение же сильно связанных элементов в разные модули усиливает межмодульные связи и усложняет понимание их взаимодействия.

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

Различают следующие виды связности (в порядке убывания уровня):

•  функциональную - все объекты модуля предназначены для выполнения одной функции ;

•  последовательную - выход одной функции служит исходными данными для другой функции ;

•  информационную - связанными считают функции, обрабатывающие одни и те же данные ;

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

  временную - функций подразумевает, что эти функции выполняются параллельно или в течение некоторого периода времени;

•  логическую - объединении данных или функций в одну логическую группу;

•  случайную - если связь между элементами мала или отсутствует.

53 Структурное программирование. Стиль оформления программы. Правила именования объектов программы. Правила оформления модулей. Стиль оформления текстов модулей.

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

Слово «структурное» в данном названии подчеркивает тот факт, что при программировании использованы только перечисленные конструкции (структуры). Отсюда и понятие «программирование без go to».

Стиль оформления программы

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

Хороший стиль оформления программы включает:

  • правила именования объектов программы (переменных, функций, типов, и т.п.);

  • правила оформления модулей;

  • стиль оформления текстов модулей.

Правила именования объектов программы.

Имя объекта должно соответствовать его содержанию. Например: Maxltem - максимальный элемент. Если позволяет язык программирования, можно использовать символ «_» для визуального разделения имен, состоящих из нескольких слов Max_ltem, Next_Item. Необходимо избегать близких по написанию имен, например: Index и InDec.

Правила оформления модулей

Каждый модуль должен предваряться комментарием, который, содержит: - название модуля; - краткое описание его назначения; - краткое описание входных и выходных параметров; - краткое описание алгоритма (метода) и ограничений; - ФИО автора программы, идентифицирующую информацию (номер версии и/или дату последней корректировки).

Стиль оформления текстов модулей

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

Пропуски строк и комментарии используют для визуального разделения частей модуля.

Комментарии должны содержать цели выполнения тех или иных действий и некоторую дополнительную (неочевидную) информацию.

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

54 Сквозной структурный контроль

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

Термин «сквозной» в названии отражает выполнение контроля на всех этапах разработки. Термин «структурный» означает наличие четких рекомендаций по выполнению контролирующих операций на каждом этапе.

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

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

55 Эффективность и технологичность.

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

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

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

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

56 Предпроектные исследования предметной области

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

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

Существуют два варианта неопределенности:

  • неизвестны методы решения формулируемой задачи – такого типа неопределенности обычно возникают при решении научно-технических задач;

неизвестна структура автоматизируемых информа-ционных процессов – обычно встречается при построении автоматизированных систем управления предприятиями

57 Разработка технического задания. Последовательность разработки ТЗ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]