- •2. Основные характеристики программного модуля по г. Майерсу: размер, прочность, сцепление, рутинность
- •3. Общие принципы моделирования жизненного цикла программных средств…
- •5. Внешнее описание программного средства и процесс его разработки…
- •6. Структурное программирование и основные конструкции структурного программирования
- •7. Метод таблиц решений
- •8. Метод пошаговой детализации н. Вирта и понятие о псевдокоде
- •9. Пользовательский интерфейс с точки зрения разработчика и пользователя...
- •10. Методология функционального моделирования idef0. Основные элементы и понятия idef0. Принципы ограничения сложности idef0-диаграмм. Дисциплина групповой работы над разработкой idef0-модели
- •11. Основные принципы тестирования программных средств…
- •12. Основы методологии idef1x…
- •13. Основы методологии idef3. Назначение и два типа диаграмм в idef3
- •14. Оценка показателей качества программных средств в соответствии гост 28195-89
- •15. Диаграммы потоков данных. Нотации Йордона-Де Марко и Гейна-Сарсона. Понятие о мини-спецификациях и словарях данных
- •16. Надежность программных средств. Количественные показатели надежности. Оценка показателей надежности на основе различных моделей
- •17. Оценка размеров программных средств на начальных стадиях проектирования. Метрики количества строк исходного кода и функциональных точек. Метод функциональных точек
- •19. Оценка трудоемкости и сроков реализации программных проектов с помощью модели cocomo
- •20. Модель зрелости процессов разработки программных средств (смм). Уровни зрелости в соответствии с моделью смм. Сертификация на основе модели смм
- •Дополнение к 15 Мини-спецификация и словари данных
6. Структурное программирование и основные конструкции структурного программирования
При программировании модуля следует иметь в виду, что программа должна быть понятной не только компьютеру, но и человеку. И разработчик модуля, и лица, проверяющие модуль, и те, кто готовит тесты для отладки модуля, и программисты, осуществляющие сопровождение ПС, т.е. вносящие изменения в модуль, вынуждены будут многократно разбирать логику его работы. Поэтому необходимо принимать меры для выбора подходящих языковых средств и следовать определенной дисциплине (методологии) программирования. В связи с этим Э. Дейкстра и предложил строить программу как композицию из нескольких типов управляющих конструкций (структур), которые позволяют сильно повысить понимаемость логики работы программы. Программирование с использованием только таких конструкций назвали структурным.
Основные
конструкции структурного прогр-я:
следование, разветвление и повторение.
Компонентами этих конструкций являются
так называемые обобщенные операторы
или узлы обработки S, S1, S2, а также условие
(предикат) P. В качестве обобщенного
оператора может быть либо простой
оператор используемого языка
программирования (например, операторы
присваивания, ввода, вывода, обращения
к процедуре и т.п.), либо фрагмент
программы, являющийся композицией
основных управляющих конструкций
структурного программирования.
Существенно, что каждая из этих конструкций
имеет по управлению только один вход и
один выход. Тем самым, и обобщенный
оператор имеет только один вход и один
выход.
Весьма важно также, что эти конструкции являются уже математическими объектами. Доказано, что для каждой неструктурированной программы можно построить функционально эквивалентную (т.е. решающую ту же задачу) структурированную программу. Для структурированных программ можно математически доказывать некоторые их свойства, что позволяет обнаруживать в программе ошибки. Этому вопросу будет посвящена отдельная лекция.
Структурное программирование иногда называют еще "программированием без GO TO". Однако дело здесь не в операторе GO TO, а в его беспорядочном использовании. Запутывают программу "неструктурные" операторы перехода, особенно переход к оператору, расположенному в тексте модуля выше (раньше) выполняемого оператора перехода. Тем не менее, попытка избежать оператора перехода в некоторых простых случаях может привести к слишком громоздким структурированным программам, что не улучшает их ясность и содержит опасность появления в тексте модуля дополнительных ошибок. Поэтому можно рекомендовать избегать употребления оператора перехода всюду, где это возможно, но не ценой ясности программы.
К полезным случаям использования оператора перехода можно отнести выход из цикла или процедуры по особому условию, "досрочно" прекращающего работу данного цикла или данной процедуры, т.е. завершающего работу некоторой структурной единицы (обобщенного оператора) и тем самым лишь локально нарушающего структурированность программы.
7. Метод таблиц решений
Метод табл решений базируется на использовании таблиц следующего вида
-
Переменные/
условия
Ситуации
(комбинации значений)
x1a[1,1]
a[1,2]
...
a[1,m]
x2
a[2,1]
a[2,2]
...
a[2,m]
. . .
. . .
хn
a[n,1]
a[n,2]
...
a[n,m]
s1
u[1,1]
u[1,2]
...
u[1,m]
u[1,m+1]
s2
u[2,1]
u[2,2]
...
u[2,m]
u[1,m+1]
. . .
. . .
sk
u[k,1]
u[k,2]
...
u[k,m]
u[k,m+1]
Действия
Комбинации выполняемых действий
Верхняя часть этой табл-ы опред-ет разл-ые ситуации, в кот-х треб-ся вып-ять некот-е действия (операции). Каж строка этой части задает ряд значений некот-й переменной или некоторого условия. Первый столбец этой части пред соб список переменных или условий, от значений кот-х зависит выбор определяемых ситуаций. В каждом след-м столбце указ-ся комбинация знач-й этих переем-х (условий), опред-щая конкретную ситуацию. При этом последний столбец опред-т ситуацию, отличную от предыд-х, т.е. для любых других комб-й знач-й (будем обозначать их ), отличных от первых, опред-ся как одна и та же, (m+1)-ая, ситуация. Впрочем, в некот табл-х решений этот столбец может отсутствовать.
Нижняя часть таблицы решений опред-ет действия, кот-е треб-ся вып-ить в той или иной ситуации, опред-мой в верхней части таб-цы решений. Она также сост из нескольких (k) строк, каждая из которых связана с каким-либо одним конкретным действием, указанным в первом поле (столбце) этой строки. В остальных полях (столбцах) этой строки (т.е. для u[i, j], i=1, ..., m+1, j=1, ..., k) указывается, следует ли выполнять (u[i, j]= '+') это действие в данной ситуации или не следует (u[i, j]= ''). Т.о, первый столбец нижней части этой таб-ы пред собой список обоз-й действий, кото-е могут вып-ся в той или иной ситуации, опред-мой этой таблицей. В каждом след-ем столбце этой части указ-ся комб-я действий, кот-е следует вып-ить в ситуации, опред-ой в том же столбце верхней части табл-ы решений. Для ряда таблиц решений эти действия могут вып-ся в произв-м пор-ке, но для некот таблиц решений этот пор-к м/б предопределен, zb, в порядке следования соответствующих строк в нижней части этой таблицы.
