- •Технология программирования. Основные этапы ее развития. (и 2 вопрос тут же)
- •Этапы развития технологии программирования. (см. Пункт первый)
- •Технологии com и corba.
- •Проблемы, возникающие при разработке сложных программных систем.
- •Блочно-иерархический подход к созданию сложных систем.
- •Жизненный цикл и этапы разработки программного обеспечения. Кратко охарактеризуйте основные этапы.
- •Постановка задачи, анализ требований и определение спецификаций.
- •Проектирование, реализация и сопровождение.
- •Модели жизненного цикла программного обеспечения.
- •Case-технологии.
- •Оценка качества процессов создания программного обеспечения.
- •Использование cmm при оценке качества процессов создания программного обеспечения.
- •Использование стандартов iso 9000 и spice при оценке качества процессов создания программного обеспечения.
- •Понятие технологичности программного обеспечения.
- •Модули и их свойства.
- •Сцепление модулей.
- •Связность модулей.
- •Нисходящая и восходящая разработка программного обеспечения.
- •Структурное программирование.
- •Средства описания структурных алгоритмов.
- •Стиль оформления программы.
- •Эффективность и технологичность программного обеспечения.
- •Программирование с «защитой от ошибок».
- •Сквозной структурный контроль
- •Классификация программных продуктов по функциональному признаку.
- •Эксплуатационные требования к программным продуктам.
- •Предпроектные исследования предметной области.
- •Техническое задание. Основные разделы.
- •Архитектура программного обеспечения.
- •Тип пользовательского интерфейса.
- •Выбор языка и среды программирования.
- •1). Выбор языка программирования.
- •Спецификация программного обеспечения при структурном подходе.
- •Язык описания разработки программных продуктов uml.
- •Тестирование программного обеспечения.
Сцепление модулей.
Сцепление является мерой взаимозависимости модулей, которая определяет, насколько хорошо модули отделены друг от друга. Модули независимы, если каждый из них не содержит о другом никакой информации. Чем больше информации о других модулях хранит модуль, тем больше он с ними сцеплен.
пять типов сцепления модулей: 1по данным; 2по образцу; 3по управлению;
4по общей области данных; 5по содержимому.
Сцепление по данным - модули обмениваются данными, представленными скалярными значениями. При небольшом кол-ве передаваемых пар-ов этот тип обеспечивает наилучшие технологические характеристики ПО.
Например, функция Мах предполагает сцепление по данным через параметры скалярного типа:
Function Max(a, b: integer):integer;
Begin
if a>b then Max:=a else Max: =b;
end;
Сцепление по образцу - модули обмениваются данными, объединенными в структуры. обеспечивает неплохие хар-ки, но они хуже, чем у предыдущего типа, тк конкретные передаваемые данные «спрятаны» в структуры, и потому уменьшается «прозрачность» связи м/у модулями. Кроме того, при изменении структуры передаваемых данных необходимо модифицировать все использующие ее модули.
Так, функция MaxEl,предполагает сцепление по образцу (параметр а – открытый массив).
Function МахEl(а:array of integer):integer;
Var i:word;
Begin MaxEl: =a[0]; for i:=l to High(a) do if a[i]>MaxEl
then MaxEl: =a[i]; end;
При сцеплении по управлению один модуль посылает другому некоторый инф-ый объект (флаг), предн. для управления внутренней логикой модуля. Таким способом часто выполняют настройку режимов работы ПО. Подобные настройки снижают наглядность взаимодействия модулей и потому обеспечивают еще худшие хар-ки технологичности разрабатываемого ПО по сравнению с пред типами связей.
Например, функция MinMax предполагает сцепление по управлению, тк значение параметра flag влияет на логику программы: if функция MinMax получает значение пар-ра flag, = true, то возвращает максимальное значение из двух, а если false, то минимальное:
Function MinMax(a, b:integer; flag:boolean):integer;
begin
if (a>b) and (flag) then MinMax: =a
else MinMax: =b; end;
Сцепление по общей области данных - модули работают с общей областью данных. Этот тип считается недопустимым, тк:
-программы, использующие данный тип сцепления, очень сложны для понимания при сопровождении программного обеспечения;
-ошибка одного модуля, приводящая к изменению общих данных, может проявиться при выполнении другого модуля, что существенно усложняет локализацию ошибок;
-при ссылке к данным в общей области модули используют конкретные имена, что уменьшает гибкость разрабатываемого программного обеспечения.
Например, функция МахА, использующая глобальный массив А, сцеплена с основной программой по общей области:
Function MaxA:integer;
Var i:word;
Begin МахА: =a[Low(a)];
for i:= Low(a)+1 to High(a) do
if a[i]>MaxA then MaxA:=a[i]; end;
«подпрограммы с памятью», действия которых зависят от истории вызовов, используют сцепление по общей области, что делает их работу в общем случае непредсказуемой. Именно этот вар-т исп-т стат-ие переменные С и C++.
В случае сцепления по содержимому один модуль содержит обращения к внутренним компонентам другого (передает управление внутрь, читает и/или изменяет внутренние данные или сами коды), что полностью противоречит блочно-иерархическому подходу. Отдельный модуль в этом случае уже не является блоком («черным ящиком»): его содержимое должно учитываться в процессе разработки другого модуля. Современные универсальные языки (Pascal), данного типа сцепления в явном виде не поддерживают, но для языков низкого уровня, (Ассемблер), такой вид сцепления остается возможным.
модули сцепляются м/у собой нес-ми способами. => кач-во ПО принято определять по типу сцепления с худшими характеристиками.