Слайд 1Лекция 1
Сложность программного обеспечения. Пути ограничения сложности программного обеспечения. Эволюция
технологий программирования
Слайд 2Технология программирования
Технология программирования — это совокупность методов и средств, применяемых
в процессе разработки программного обеспечения. Как любая другая технология, технология
программирования представляет собой набор технологических инструкций, включающих:
указание последовательности выполнения технологических операций;
перечисление условий, при которых выполняется та или иная операция;
описания самих операций, где для каждой операции определены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки и т. п.
Слайд 4Эволюция технологий программирования
Первый этап — «стихийное» программирование.
Слайд 5Второй этап — структурный подход к программированию (60—70-е годы XX
в.).
Слайд 6Второй этап — структурный подход к программированию (60—70-е годы XX
в.).
Слайд 7Третий этап — объектный подход к программированию (с середины 80-х
до конца 90-х годов XX в.).
Слайд 8Четвертый этап — компонентный подход и CASE-технологии (с середины 90-х
годов XX в. до наших дней).
Слайд 9Процесс создания программ
постановка задачи; (точная формулировка решения задачи на компьютере
с описанием входной и выходной информации);
алгоритмизация решения задачи. Алгоритм —
система точно сформулированных правил, определяющая процесс преобразования допустимых исходных данных (выходной информации) в желаемый результат (выходную информацию) за конечное число шагов;
программирование - теоретическая и практическая деятельность, связанная с созданием программ.
Слайд 10Варианты легального распространения программных продуктов:
Традиционный коммерческий продукт;
freeware — бесплатные
программы, свободно распространяемые, поддерживаются самим пользователем, который правомочен вносить в
них необходимые изменения;
shareware некоммерческие (условно-бесплатные) программы, которые могут использоваться, как правило, бесплатно.
OEM-программы (Original Equipment Manufacturer), т. е. встроенные программы, устанавливаемые на компьютеры или поставляемые вместе с компьютерами.
программы
программные продукты
утилитарные
Слайд 11Сложность программного обеспечения
Почему программному обеспечению присуща сложность?
Как говорит Брукс,
«сложность программного обеспечения - отнюдь не случайное его свойство». Сложность
вызывается четырьмя основными причинами:
сложностью реальной предметной области, из которой исходит заказ на разработку;
трудностью управления процессом разработки;
необходимостью обеспечить достаточную гибкость программы;
неудовлетворительными способами описания поведения больших дискретных систем.
необходимостью увеличения степени повторяемости кодов.
Слайд 12Признаки сложной системы (по Бучу, со ссылками на других авторов):
Иерархичность
(состоят из взаимозависимых подсистем, которые в свою очередь также могут
быть разделены на подсистемы, и т.д.);
Выбор, какие компоненты в данной системе считаются элементарными, относительно произволен и в большой степени оставляется на усмотрение исследователя;
Связи внутри компонент сильнее, чем связи между компонентами;
Сложные системы содержат одинаковые структурные части, по-разному скомбинированные и организованные;
Сложная система является результатом развития более простой системы (объекты, считавшиеся сложными, в процессе развития становятся элементарными).
Слайд 13Пути ограничения сложности программного обеспечения
Алгоритмическая декомпозиция – в ее основе
лежит разбиение по действиям — алгоритмам
Объектно-ориентированная декомпозиция - обеспечивает разбиение
по автономным лицам — объектам реального (или виртуального) мира.
Слайд 14Почему возрастает роль технологии при разработке программного обеспечения
Увеличение потребностей
в программном обеспечении. Рост размеров программных систем.
Ужесточение требования к безопасности,
так называемых, критических программных средств, которые в основном встречаются в классе систем реального времени.
Тенденция роста стоимости ПО по отношению к стоимости соответствующего аппаратного обеспечения.
Перераспределение средств и затрат в ходе выполнения программных проектов с этапов непосредственного проектирования и программирования на этапы тестирования и сопровождения.
Дороговизна исправления ошибок, выявленных на поздних этапах разработки ПО.
Слайд 15Принципы работы со сложными системами
Абстракция и уточнение
Модульность
Выделение интерфейсов и
сокрытие информации
Адекватность, полнота, минимальность и простота интерфейсов
Разделение ответственности
Разделение политик и алгоритмов
Разделение интерфейса и реализации
Слабая связность (coupling) модулей и сильное сродство (cohesion) функций в одном модуле
Переиспользование
Слайд 16Литература
Гради Буч, Роберт А Максимчук, Объектно-ориентированный анализ и проектирование с
примерами приложений (3-е издание), М., Вильямс, 2008
Гагарина Л.Г., Кокорева Е.В.,
Виснадул Б.Д. Технология разработки программного обеспечения: Учебное пособие. Россия ИНФРА-М, ИД ФОРУМ 2009, 400 c.
Кулямин В.В. Технологии программирования. Компонентный подход : учеб. пособие /, М. : Интернет-Ун-т Информ. Технологий : БИНОМ. Лаборатория знаний, 2007
Иванова Г.С. Технология программирования: Учебник для вузов. М.: Изд-во МГТУ им. Баумана, 2002