- •Сущность и актуальность дисциплины «Технологии программирования», основные понятия и определения дисциплины.
- •Жизненный цикл программного средства.
- •Модели жизненного цикла по.
- •Модель с промежуточным контролем
- •Спиральная модель
- •Спиральная или итерационная схема разработки программного обеспечения
- •Изменение жизненного цикла программного обеспечения при использовании case-технологий.
- •Качество программного обеспечения.
- •Модели качества по
- •Метрики качества программного обеспечения.
- •Измерение и оценка качества по, стандартный метод оценки значений показателей качества.
- •Управление качеством пс.
- •Требования стандарта к организации системы качества
- •Диалоговые программы, типы диалога, формы диалога.
- •Спецификация пс.
- •Определение требований к программному средству.
- •Спецификация качества программного средства.
- •Функциональная спецификация программного средства.
- •Методы контроля внешнего описания программного средства.
- •Способы записи алгоритмов.
- •Представление основных структур алгоритмов.
- •Псевдокоды.
- •Flow-формы.
- •Диаграммы Насси-Шнейдермана.
- •Классификация структур данных.
- •Файловые структуры, физическая организация файлов.
- •Логическая организация файлов.
- •Документирование файлов.
- •Модульные программы, модули и их свойства.
- •Сцепление и связность модулей.
- •Нисходящая и восходящая разработка программного обеспечения.
- •Программирование «с защитой от ошибок».
- •Основные подходы программирования, «стихийное» программирование.
- •Основные подходы программирования, структурный подход к программированию.
- •Основные подходы программирования, объектный подход к программированию.
- •Основные подходы программирования, компонентный подход и case-технологии.
- •36. Процедурное (императивное) программирование
- •37.Функциональное программирование.
- •38. Декларативное программирование
- •39. Объектно-ориентированное программирование
- •40.Объектно-ориентированные языки программирования.
- •41. Спецификация программного обеспечения при структурном подходе.
- •42.Диаграммы переходов состояний.
- •43. Функциональные диаграммы
- •44. Диаграмма потоков данных
- •45. Моделирование управляющих процессов с помощью диаграмм потоков данных
- •46. Структуры данных и диаграммы отношений компонентов данных
- •47. Диаграммы Джексона.
- •48. Скобочные диаграммы Орра
- •49. Сетевая модель данных
- •50. Проектирование программного обеспечения при структурном подходе
- •54. Метод пошаговой детализации для проектирования структуры по
- •55. Структурные карты Констайна.
- •56. Проектирование структур данных
- •57. Представление данных в оперативной памят
- •60. Проектирование программного обеспечения, основанное на декомпозиции данных Методикой Варнье-Орра
- •61. Case-технологии, основанные на структурных методологиях анализа и проектирования
- •63. Определение «вариантов использования»
- •64. Диаграммы вариантов использования
- •65. Построение концептуальной модели предметной области
- •69. Проектирование программного обеспечения при объектном подходе
- •70. Разработка структуры программного обеспечения при объектном подходе
- •Определение отношений между объектами.
- •Диаграммы последовательностей этапа проектирования.
- •Диаграммы кооперации.
- •Уточнение отношений классов.
- •Интерфейсы в uml.
- •Проектирование классов.
- •Проектирование методов класса.
- •Компоновка программных компонентов.
- •Проектирование размещения программных компонентов для распределенных программных систем.
- •Методы доказательства правильности программ.
- •Метод индуктивных утверждений Флойда.
- •Метод Хора доказательства правильности программ.
- •Виды контроля качества разрабатываемого программного обеспечения.
- •Формирование тестовых наборов, основные подходы.
- •Ручной контроль программного обеспечения, методы ручного контроля.
- •I. Контроль обращений к данным
- •2. Контроль вычислений
- •3. Контроль передачи управления
- •4. Контроль межмодульных интерфейсов
- •Структурное тестирование, критерии формирования тестовых наборов.
- •Функциональное тестирование, методы формирования тестовых наборов.
- •Тестирование модулей и комплексное тестирование.
- •Оценочное тестирование.
- •Отладка программного обеспечения.
- •Классификация ошибок программного обеспечения.
- •Методы отладки программного обеспечения.
- •Методы и средства получения дополнительной информации об ошибках.
- •Общая методика отладки программного обеспечения.
- •Документирование и стандартизация.
- •Виды программных документов.
- •Основные правила оформления программной документации.
- •Основные инженерные подходы к созданию программ.
- •Классификация технологических подходов к созданию программ.
- •Классификация технологических подходов к созданию программ, подходы со слабой формализацией.
- •Классификация технологических подходов к созданию программ, строгие каскадные подходы.
- •Классификация технологических подходов к созданию программ, строгие каркасные подходы.
- •Классификация технологических подходов к созданию программ, генетические подходы.
- •Классификация технологических подходов к созданию программ, подходы на основе формальных преобразований.
- •Классификация технологических подходов к созданию программ, ранние подходы быстрой разработки.
- •Классификация технологических подходов к созданию программ, адаптивные технологические подходы.
- •Классификация технологических подходов к созданию программ, подходы исследовательского программирования.
- •Особенности и компоненты case-средств.
- •Объектно-ориентированные case-средства анализа и проектирования.
- •Структурные case-средства анализа и проектирования.
- •Case-средства компании ibm Rational Software, средство визуального моделирования Rational Rose.
- •Системы автоматизированного проектирования и их место среди других автоматизированных систем.
- •Структура сапр.
- •Разновидности сапр.
- •Понятие о cals-технологиях.
Проектирование размещения программных компонентов для распределенных программных систем.
При физическом проектировании распределенных программных систем необходимо определить наиболее оптимальный вариант размещения программных компонентов на реальном оборудовании в локальной или глобальной сетях. Для этого используют специальную модель UML – диаграмму размещения.
Диаграмма размещения отражает физические взаимосвязи между программными и аппаратными компонентами системы. Каждой части аппаратных средств системы, например, компьютеру или датчику, на диаграмме размещения соответствует узел. Соединения узлов означают наличие в системе соответствующих коммуникационных каналов. Внутри узлов указывают размещенные на данном оборудовании программные компоненты разрабатываемой программной системы, сохраняя указанные на диаграмме компонентов отношения зависимости.
С точки зрения диаграммы размещения локальная и глобальная сети – это тоже узлы, которые обладают некоторой спецификой. На рис. 14.27 показаны условные обозначения узлов (процессора и устройства) на диаграмме размещения.
Рис. 14.27. Условные обозначения диаграммы размещения: а – процессор (компьютер). б – устройство
Пример 14.9. Разработать диаграмму размещения для системы учета успеваемости студентов.
Локальная сеть деканата связывает сервер деканата и компьютеры декана, его заместителей и сотрудников деканата, отвечающих за занесение информации в базу данных. Серверную часть системы и базу данных целесообразно поместить на сервер деканата. На компьютерах локальной сети в этом случае будут функционировать соответствующие клиентские части приложения (рис. 14.28).
Рис. 14.28. Диаграмма размещения в локальной сети системы учета успеваемости студентов
Методы доказательства правильности программ.
В общем случае проблема построения алгоритма, доказывающего правильность произвольной программы, не разрешима. Этим объясняется подход к ее решению, ориентированный на разработку методов верификации конкретных классов программ. Несмотря на большое разнообразие современных методов доказательства ПП, можно проследить их связь со ставшими классическими аксиоматическим подходом, методом индуктивных выражений и др. Остановимся подробнее на каждом из них.
Метод индуктивных утверждений Флойда.
Исторически первой системой верификации программ явился метод ИУ Р.Флойда. Аналогичные мысли о верификации в те же годы высказал П. Наур.
Идея метода состоит в следующем: программа в некоторых точках снабжается утверждениями относительно состояния ее переменных. Такими точками являются вход в программу (утверждение в этой точке называется входным предикатом), выход (здесь формулируется выходной предикат), промежуточные точки, утверждения в которых выполняются тогда, когда управление их достигает. Совокупности таких утверждений, заданные для всевозможных путей в программе, называются условиями верификации. Суть метода заключается в демонстрации того, что из входного предиката и преобразования, выполняемого на первом шаге, следует истинность утверждения, сформулированного в следующей точке, и т. д., вплоть до выполнения выходного предиката. Противоречие на любом шаге служит сигналом о наличии ошибки. Доказать ПП по Флойду — значит показать, что истинность выходного предиката вытекает из истинности входного предиката в цепочке истинности всех промежуточных импликаций. Такой индуктивный процесс верификации программы и дал название методу.
Метод Флойда ориентирован на доказательство ПП из класса стандартных схем и стандартных схем с массивами. Объектом верификации выступают программы, представленные в виде блок-схем.
Метод ИУ Флойда, будучи исторически первой системой верификации, ориентирован на доказательство ПП довольно узкого класса и применим только для этой цели: он не позволяет в случае появления противоречия определить, является ли оно следствием ошибки в программе, или же ошибка содержится в самом доказательстве или в индуктивных утверждениях. Процесс демонстрации истинности условий верификации и их генерация осуществляется вручную и неудобен для автоматизации. Тем не менее с помощью этого метода удалось доказать правильность нескольких нетривиальных алгоритмов. Наиболее интересны доказательство Р. Лондоном алгоритма сортировки дерева, а также многочисленные числовые и нечисловые примеры Э Дейкстры. Подход Флойда используется при проектировании программ обработки данных методом формализованных технических заданий. В процессе проектирования обосновывается правильность результатов посредством установления соответствия между техническим заданием и его реализацией и приводятся определения различных свойств проектируемых объектов. Анализ результатов проектирования выполняется путем математического исследования и доказательства соответствующих утверждений.
Предложенные Флойдом идеи и введенные понятия служат основой большинства современных систем верификации программ, проведение которой в последние годы становится все более традиционным. В частности, необходимыми этапами процесса верификации являются следующие:
Формулировка утверждений о состоянии переменных программы в некоторых ее точках.
Генерация условий верификации по программе, снабженном указанной информацией (такую программу в дальнейшем будем называть аннотированной).
Доказательство непротиворечивости полученных условий верификации.
Доказательство завершимости программы (в процессе доказательства правильности или отдельно).