Автор: Пользователь скрыл имя, 24 Января 2011 в 16:00, курс лекций
Основные темы.
Контроль качества - процесс раздельной систематической и полной проверки всех артефактов (начинаться вместе с запуском каждого проекта). В функции контроля качества входят: проверки, инспектирование и тестирование.
Методы контроля качества:
Инспектирование и обзоры
Инспектирование — это техника «белого ящика» для обеспечения качества: проверка частей проекта (требований, результатов проектирования, программного кода) на наличие дефектов.
Правила инспектирования:
Помимо инспектирования, применяются обзоры.
Обзор — это собрание, на котором обсуждается завершенная или текущая работа.
Верификация, валидация и системное тестирование
Верификация - правильность создаваемого приложения (создание именно тех артефактов, которые были специфицированы). Это проверяется с помощью инспектирования, обзоров и модульного тестирования.
Валидация - правильность результата (удовлетворяет ли продукт требованиям). Это проверяется с помощью системного тестирования.
Системное тестирование – это тестирование всей системы в целом.
Сопровождение и продолжающаяся разработка
Сопровождение программного продукта включает в себя все действия, выполняемые с
приложением после поставки продукта заказчику.
Сопровождение программы – это процесс изменения программной системы (компонента) после поставки с целью исправления ошибок, повышения производительности, а также для адаптации к изменившимся условиям. Сопровождение программы составляет от 40% до 90% стоимости всего жизненного цикла приложения.
Продолжающаяся разработка – это разработка новых и переработка имеющихся функций программы в процессе эксплуатации.
Проблемы сопровождения программ:
Работы по сопровождению:
12.
Дисциплина программирования,
Парадигмы программирования,
Циклы повышения
продуктивности
Дисциплина программирования – это совокупность различных технологических средств и приемов, применяемых программистами с целью повышения продуктивности своей индивидуальной работы.
Программирование можно рассматривать как:
Парадигмы программирования
Парадигма программирования — это собрание основополагающих принципов, которые
служат методической основой конкретных технологий и инструментальных средств программирования.
Структурное программирование
Исторически первая оформленная парадигма - структурное программирование (Э.Дейкстрой): любая структура управления может быть функционально выражена суперпозицией последовательного выполнения, ветвления по условию и цикла с предусловием.
Каждая из базовых
структур обладает свойством один вход
– один выход. Наличие свойства
один вход – один выход позволяет
решить первое противоречие: установить
простое соответствие между статическим
текстом программы и
Все системы программирования поддерживают понятие модуля (подпрограмма, функция, класс, модуль, компонента). Модульность - средство преодоления количественных ограничений. Модульное программирование является непосредственной реализацией принципа "разделяй и властвуй" в программировании.
Программирование сверху вниз – модульное программирование методом пошагового уточнения: задача разлагается на подзадачи до тех пор, пока подзадача не станет столь простой, что ее реализация становится очевидной.
Программирование снизу вверх - уровень языка программирования повышается, пока он не станет настолько высоким и близким к исходной задаче, что ее реализация станет очевидной.
Недостатки: при программировании сверху вниз отладка возможна только по завершении всего проектирования, при программировании снизу вверх велик риск создания невостребованных модулей. На практике всегда применяется комбинация этих подходов.
Программирование вширь (С.С. Лавров) - начиная с самого первого шага, создается и на всех последующих шагах поддерживается работоспособная версия будущей программы. В начале работы эта программа не умеет выполнять никаких нужных функций, но зато она не содержит и ненужных (ошибочных) функций и постоянно удовлетворяет требованию демонстрируемости. Такой стиль подразумевает проведение тестовых испытаний всех готовых модулей при добавлении или изменении любого модуля, но не откладывание отладки на окончание разработки.
Логическое программирование
Модель вычислимости — это формальное определение понятия вычислимой функции,
или алгоритма. Классическая модель вычислимости - машина Тьюринга, которая состоит из памяти и программы (процессора). Память разделена на ячейки, в которых могут быть записаны символы конечного алфавита. Машина работает дискретно, и всегда находится в одном из состояний, которых конечное число. За один шаг машина выполняет одну команду, которая определяется текущим состоянием и символом в текущей ячейке. Выполнение команды состоит в записи нового символа в текущую ячейку, перемещении к другой текущей ячейке и изменении состояния. Эта модель вычислимости отражена в архитектуре фон Неймана.
Во всех распространенных системах программирования имеются два фундаментальных понятия, индуцированные архитектурой машины:
Программирование,
в котором используются оба
этих ключевых понятия,
Программирование, в котором используется явное понятие управления, называется императивным, в противоположность декларативному программированию. Логическое программирование является декларативным.
Продукционное программирование тесно связано с нормальными алгоритмами Маркова.
Продукционная
программа состоит из набора продукций
(правил), которые применяются к
глобальной базе данных, пока не будет
удовлетворено условие
Функциональное программирование тесно связано с λ-исчислением Чёрча. Функциональная программа является композицией функционалов (т.е. функций, аргументами и результатами которых могут быть функционалы). В функциональной программе нет ни явного управления, ни явных переменных, а следовательно, нет и явного присваивания.
Объектно-ориентированное программирование
Центральной идеей парадигмы ОО программирования является инкапсуляция, т.е. структурирование программы на модули особого вида, объединяющего данные и процедуры их обработки, причем внутренние данные модуля не могут быть обработаны иначе, кроме как предусмотренными для этого процедурами. Каждый такой модуль имеет внутреннюю часть, называемую реализацией и внешнюю часть, называемую интерфейсом. Доступ к реализации возможен только через интерфейс. В интерфейсе различают свойства (переменные) и методы (процедуры или функции). Эту структуру называют объект. С ОО ассоциируются также понятия наследование и полиморфизм.
Важным элементом парадигмы ОО программирования является идея: класс может иметь методы конструкторы и деструкторы, позволяющие в время выполнения программы динамически порождать и уничтожать экземпляры (объекты) данного класса. Объекты одного класса сходны между собой (наследуют методы класса), но имеют различия (имеют разные значения свойств).