- •Введение Цели и задачи курса «Технология программирования»
- •Классификация программного обеспечения
- •Тема 1.Понятие программного изделия
- •1.1.Основные требования к программному изделию как к продукции производственно-технического назначения
- •1.2.Жизненный цикл программных изделий
- •1.3.Методическая, технологическая, инструментальная и организационная поддержка процесса проектирования программных изделий
- •1.4.Этапы проектирования сложных программных изделий
- •Тема 2.Внешнее проектирование программных изделий
- •2.1.Разработка требований и внешнее проектирование программных изделий
- •2.2.Обеспечение целей создания программных изделий Цели проекта с точки зрения пользователя
- •Цели проекта с точки зрения разработчика
- •2.3.Разработка внешних спецификаций проекта
- •Тема 3.Внутреннее проектирование программных изделий
- •3.1.Понятие модуля. Характеристики качества модулей
- •3.2.Методы проектирования программ
- •Иерархическая декомпозиция и абстрактные машины (метод нисходящей декомпозиции)
- •Программирование на основе принципа пошагового совершенствования
- •Структурное программирование по нисходящему принципу
- •Программирование с использованием пошаговой реорганизации
- •Способы описания программ. Язык проектирования программ
- •Тема 4.Структурированные программы
- •4.1.Блок-схемы и управляющие структуры
- •4.2.Теорема о структурировании
- •4.3.Рекурсивные структурированные программы
- •Тема 5.Методы Доказательства правильности программ
- •5.1.Математический аппарат доказательства Принцип простой индукции
- •Принцип модифицированной простой индукции
- •Принцип обобщенной индукции
- •5.2.Методы доказательства правильности программ Метод индуктивных утверждений
- •Пример доказательства правильности программы методом индуктивных утверждений
- •Тема 6.Рекурсивные программы. Методы доказательства их правильности
- •6.1.Понятие рекурсивных программ. Способы их описания Язык описания рекурсивных программ
- •Примеры рекурсивных программ
- •6.2.Рекурсивные программы работы со списками Списки и операции над ними
- •Примеры программ работы со списками
- •6.3.Примеры доказательства правильности рекурсивных программ
- •Тема 7.Отладка программ
- •7.1.Типичные ошибки в программных комплексах
- •7.2.Задачи отладки программ
- •7.3.Методы разработки тестов Метод эквивалентных разбиений
- •Методы тестирования программ путем покрытия логики
- •Метод функциональных диаграмм
- •Предположения об ошибках
- •7.4.Задачи комплексной отладки программ
- •Библиографический список
1.2.Жизненный цикл программных изделий
Как и все изделия, программные изделия имеют свой цикл жизни, т.е. интервал времени от начального момента возникновения объективной необходимости в программном изделии до момента изъятия его из эксплуатации. Жизненный цикл программных изделий заканчивается в результате их морального, а не физического износа. Говорят, что программное изделие морально устарело, если оно перестает удовлетворять актуальным требованиям, а дальнейшая его модификация не представляется возможной или не выгодна, что влечет за собой разработку нового программного изделия.
1.3.Методическая, технологическая, инструментальная и организационная поддержка процесса проектирования программных изделий
Разработка высококачественных комплексов программ большого объема — сложный и длительный процесс труда коллектива специалистов различной квалификации. Этот труд необходимо организовать, упорядочить и автоматизировать, используя современные эффективные методы и средства. Их можно разделить на несколько видов поддержки процесса проектирования сложных ПС.
Методическая поддержка процесса проектирования программных изделий включает в себя комплекс стандартов, инструкций и методик, определяющих правила создания программ. Документы регламентируют построение объекта разработки и процесса его создания. В методиках и инструкциях конкретизируются языки проектирования программ, правила использования символов и обозначений, правила структурного построения программных компонентов и их взаимодействия и другие важнейшие методические принципы организации комплекса программ. Кроме того, в документах содержатся методические основы процесса создания программных изделий: правила программирования и отладки компонентов, правила их испытания и оценки качества и т. д.. На базе государственных и отраслевых стандартов, содержащих методические основы проектирования программ, для разработки конкретного программного изделия или группы программных изделий одного класса создаются стандарты предприятия и руководящие указания по проектированию (РУП). В совокупности эти документы отражают различные аспекты методологии создания конкретных программных изделий.
Технологическая поддержка процесса проектирования программных изделий является детализацией документов методической поддержки, регламентирующей конкретную технологию обеспечения жизненного цикла программ. Документы технологической поддержки разработки тесно связаны с технологией сопровождения и эксплуатации программ. Они определяют этапы проектирования, их результаты и методы контроля соблюдения предписанной технологии. Технология формализует методы и критерии оценки количества и качества программного продукта на различных этапах его создания. Для каждого этапа создания компонентов программных изделий регламентируются допустимая трудоемкость и длительность их выполнения с учетом характеристик объекта разработки. В технологии создания конкретных программных изделий определяется использование инструментальных средств автоматизации разработки программ. Для каждого средства автоматизации рекомендуется область его эффективного применения и взаимодействия с другими средствами. В результате технологический процесс представляется методами, документами и инструментальными средствами автоматизации, в совокупности обеспечивающими необходимое качество программных изделий при допустимых затратах различных ресурсов на их создание.
Инструментальная поддержка процесса проектирования программных изделий состоит из программных средств и средств вычислительной техники, обеспечивающих автоматизацию процесса создания комплекса программ. Уровень автоматизации и инструментальной поддержки зависит от оснащенности процесса разработки и сопровождения программных изделий, которая включает в себя: программные средства автоматизации технологических процессов разработки, изготовления и сопровождения программ, а также средства вычислительной техники, связи и тиражирования, используемые в типовой технологии.
Программная оснащенность разработчиков определяется функциональными возможностями программных систем автоматизации разработки программного обеспечения. Для каждого этапа разработки могут применяться методы и средства, различающиеся эффективностью, которая, в частности, зависит от особенностей проектируемого программного изделия. В первом приближении степень программной оснащенности можно характеризовать объемом программ, активно используемых в типовой технологии. Высокая степень оснащенности достигается при автоматизации всех этапов разработки, изготовления и сопровождения программ. При этом используются следующие средства: трансляции программных спецификаций и текстов программ с языков высокого уровня, планирования и контроля статического и динамического тестирования программ, программного моделирования объектов внешней среды, автоматизированного управления разработкой и конфигурационного контроля программных средств и большинство современных методов автоматизации создания сложных программ.
Аппаратурная оснащенность разработки сложных программных изделий определяется мощностью используемых ЭВМ и возможностью доступа к ним разработчиков программ, а именно: быстродействием ЭВМ, используемых при разработке ПС, приходящихся на одного разработчика; числом дисплеев, сопряженных с различными типами ЭВМ, доступных в среднем каждому разработчику программ.
Значительное улучшение всех показателей аппаратурной оснащенности обеспечивает применение профессиональных персональных ЭВМ в автономном режиме и в локальных сетях.
Организационную поддержку процесса проектирования программных изделий составляют документы, регламентирующие взаимодействие специалистов внутри коллектива разработчиков и с соисполнителями, а также с заказчиками и пользователями программных изделий. Они определяют права, обязанности и меру ответственности за программы конкретных специалистов и руководителей с учетом их должности и квалификации. На эти организационные положения и распределение их по специалистам влияют методологические и технологические принципы проектирования, а также характеристики объекта и этапов разработки. Особенно важна четкая организационная поддержка во всем жизненном цикле сложных программных изделий систем управления. В этом случае регламентирование коллективного труда большого числа специалистов и взаимодействие руководителей проекта с заказчиком и пользователями может практически полностью определять успех всего жизненного цикла программных изделий.
Все перечисленные виды поддержки процесса проектирования программных изделий имеют между собой глубокую связь и в совокупности прежде всего зависят от класса и объема объекта разработки — комплекса программ. Методологические, технологические и организационные документы, а также программные и аппаратные средства автоматизации полностью определяют технологию обеспечения жизненного цикла программных изделий.