Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ИНФОРМАТИКА_И_ЯЗЫКИ_ПРОГРАММИРОВАНИЯ_шпора.doc
Скачиваний:
12
Добавлен:
15.04.2015
Размер:
478.72 Кб
Скачать

ИНФОРМАТИКА И ЯЗЫКИ ПРОГРАММИРОВАНИЯ

Часть I

  1. Технология программирования. Понятие о жизненном цикле программного обеспечения. Анализ требований и внешние спецификации. Структурное и модульное проектирование. Кодирование. Автономное и комплексное тестирование. Сопровождение.

Программирование — сравнительно молодая и быстро развивающаяся отрасль науки и техники. Опыт ведения реальных разработок и совершенствования имеющихся программных и технических средств постоянно переосмысливается, в результате чего появляются новые методы, методологии и технологии, которые, в свою очередь, служат основой более современных средств разработки программного обеспечения. Исследовать процессы создания новых технологий и определять их основные тенденции целесообразно, сопоставляя эти технологии с уровнем развития программирования и особенностями имеющихся в распоряжении программистов программных и аппаратных средств.

Технологией программирования называют совокупность методов и средств, используемых в процессе разработки программного обеспечения. Как любая другая технология, технология программирования представляет собой набор технологических инструкций, включающих:

  • указание последовательности выполнения технологических операций;

  • перечисление условий, при которых выполняется та или иная операция;

  • описания самих операций, где для каждой операции определены исходные данные, результаты, а также инструкции, нормативы, стандарты, критерии и методы оценки и т. п.

Кроме набора операций и их последовательности, технология также определяет способ описания проектируемой системы, точнее модели, используемой на конкретном этапе разработки.

Различают технологии, используемые на конкретных этапах разработки или для решения отдельных задач этих этапов, и технологии, охватывающие несколько этапов или весь процесс разработки. В основе первых, как правило, лежит ограниченно применимый метод, позволяющий решить конкретную задачу. В основе вторых обычно лежит базовый метод или подход (парадигма), определяющий совокупность методов, используемых на разных этапах разработки, или методологию.

Жизненный цикл программного обеспечения (ПО) — период времени, который начинается с момента принятия решения о необходимости создания программного продукта и заканчивается в момент его полного изъятия из эксплуатации. Этот цикл — процесс построения и развития ПО.

Жизненный цикл создания и использования компьютерных программ отражает различные их состояния, начиная с момента возникновения необходимости в данном программном изделии и заканчивая моментом его полного выхода из употребления у всех пользователей. Традиционно выделяют следующие основные этапы жизненного цикла программного обеспечения:

  • анализ требований,

  • проектирование,

  • кодирование (программирование),

  • тестирование и отладка,

  • эксплуатация и сопровождение.

Особенностью разработки программного продукта является принятие решений на начальных этапах с их реализацией на последующих этапах. Ошибки в требованиях к программному продукту способны привести не только к потерям на этапах разработки и эксплуатации, но и к провалу проекта. Внесение изменений в спецификацию программного продукта чаще всего вызывает необходимость повторить все следующие этапы проектирования и создания программного продукта.

В коммерческом программном обеспечении жизненный цикл определяется моментом начала его продаж.

Разработчики стремятся сделать максимально возможным период жизненного цикла информационных продуктов и услуг. Для большинства современных компьютерных программ длительность жизненного цикла равна двум–трём годам, хотя встречаются программы, существующие десять и более лет.

Для увеличения этого периода необходимо постоянно осуществлять маркетинговые и иные мероприятия по их поддержке. Падение продаж и интереса к информационным продуктам и услугам является сигналом к:

а) изменению программного продукта и услуг,

б) изменению цены на них,

в) проведению модификации или снятию с продажи и предоставления.

Графическая модель жизненного цикла продукта или услуги, предложенная зарубежными специалистами в 1991 году, приведена на рис. 1.

Рис. 1. Графическая модель жизненного цикла продуктов и услуг.

Обычно, под термином “программный продукт” для компьютерных информационных технологий принято понимать необходимое им программное обеспечение (ПО).

Основной нормативный документ, регламентирующий ЖЦ ПО – международный стандарт ISO/IEC 12207 (ISO, International Organization of Standardization – Международная организация по стандартизации, IEC, International Electrotechnical Commission – Международная комиссия по электротехнике). Он определяет структуру ЖЦ, содержащую процессы, действия и задачи, выполняемые во время создания ПО.

Согласно этому стандарту, структура ЖЦ ПО базируется на трёх группах процессов:

1) основные процессы ЖЦ ПО (приобретение, поставка, разработка, эксплуатация, сопровождение);

2) вспомогательные процессы (документирование, управление конфигурацией, обеспечение качества, верификация, аттестация, оценка, аудит, решение проблем);

3) организационные процессы (управление проектами, создание инфраструктуры проекта, определение, оценка и улучшение самого ЖЦ, обучение).

Разработка ПО – это, как правило, анализ, проектирование и реализация (программирование). Она включает все работы по созданию ПО и его компонент в соответствии с заданными требованиями, в том числе оформление проектной и эксплуатационной документации, подготовку материалов, необходимых для проверки работоспособности и соответствующего качества программных продуктов, материалов, для организации обучения персонала и т.д.

Эксплуатация включает работы по внедрению компонентов ПО в эксплуатацию, в том числе конфигурирование БД и рабочих мест пользователей, обеспечение эксплуатационной документацией, проведение обучения персонала и т.д., и непосредственно эксплуатацию, в том числе локализацию проблем и устранение причин их возникновения, модификацию ПО в рамках установленного регламента, подготовку предложений по совершенствованию, развитию и модернизации системы.

Управление проектом связано с вопросами планирования и организации работ, создания коллективов разработчиков; контроля за сроками и качеством выполняемых работ.

Техническое и организационное обеспечение проекта включает выбор методов и инструментальных средств для реализации проекта, определение методов описания промежуточных состояний разработки, разработку методов и средств испытаний ПО, обучение персонала и т.п.

Обеспечение качества проекта связано с проблемами верификации, проверки и тестирования ПО.

Верификация – это процесс определения насколько текущее состояние разработки, достигнутое на данном этапе, отвечает требованиям этого этапа.

Оценка качества (ГОСТ 28195-89) осуществляется на всех этапах жизненного цикла программных средств (ПС) при:

  • планировании показателей качества ПС;

  • контроле качества на отдельных этапах разработки (техническое задание, технический проект, рабочий проект);

  • контроле качества в процессе производства ПС;

  • проверке эффективности модификации ПС в процессе сопровождения.

Проверка позволяет оценить соответствие параметров разработки с исходными требованиями. Проверка частично совпадает с тестированием, связанным с выявлением различий между действительными и ожидаемыми результатами, а также оценкой соответствия характеристик ПО исходным требованиям.

Под тестированием понимается процесс исполнения программы с целью обнаружения ошибок.

В процессе реализации проекта важное место занимают вопросы идентификации, описания и контроля конфигурации отдельных компонентов и всей системы в целом.

Управление конфигурацией – один из вспомогательных процессов, поддерживающих основные процессы жизненного цикла ПО, прежде всего процессы разработки и сопровождения ПО ИС.

Управление конфигурацией позволяет организовать, систематически учитывать и контролировать внесение изменений в ПО на всех стадиях ЖЦ. Общие принципы и рекомендации конфигурационного учёта, планирования и управления конфигурациями ПО отражены в проекте стандарта ISO/IEC 12207.

Жизненный цикл информационных продуктов и услуг составляет основу жизненного цикла информационных технологий и, соответственно, информационных систем. Следовательно, всё сказанное выше относится и к информационным системам.

Одним из базовых понятий проектирования ИС является понятие жизненного цикла её программного обеспечения (ЖЦ ПО) – это непрерывный процесс, начинающийся с момента принятия решения о необходимости создания ПО и заканчивается в момент его полного изъятия из эксплуатации.

ИС входят в состав СУБД и являются специфическим инструментальным и прикладным (пользовательским) программным обеспечением.

Жизненный цикл ИС представляет собой модель её создания и использования. Модель отражает различные состояния ИС, начиная с момента возникновения необходимости в данной ИС и заканчивая моментом её полного выхода из употребления у всех пользователей.

Анализ требований — это процесс сбора требований к программному обеспечению (ПО), их систематизации, документирования, анализа, выявления противоречий, неполноты, разрешения конфликтов в процессе разработки программного обеспечения. В англоязычной среде также говорят о дисциплине «инженерия требований» (англ. Requirements Engineering). В процессе сбора требований важно принимать во внимание возможные противоречия требований различных заинтересованных лиц, таких как заказчики, разработчики или пользователи.

Полнота и качество анализа требований играют ключевую роль в успехе всего проекта. Требования к ПО должны быть документируемые, выполнимые, тестируемые, с уровнем детализации достаточным для проектирования системы. Требования могут быть функциональными и нефункциональными.

Анализ требований включает три типа деятельности:

  • Сбор требований: общение с клиентами и пользователями, чтобы определить, каковы их требования.

  • Анализ требований: определение, являются ли собранные требования неясными, неполными, неоднозначными, или противоречащими, и затем решение этих проблем.

  • Документирование требований: Требования могут быть задокументированы в различных формах, таких как простое описание, сценарии использования, пользовательские истории, или спецификации процессов.

Анализ требований может быть длинным и трудным процессом, во время которого вовлечены много тонких психологических навыков. Новые системы изменяют окружающую среду и отношения между людьми, таким образом важно определить все заинтересованные лица, принять во внимание все их потребности и гарантировать, что они понимают значения новых систем. Аналитики могут использовать несколько методов, чтобы выявить требования от клиента такие, как проведение интервью, или использование фокус-групп и создание списков требований. Более современные методы включают создание прототипов и сценариев использования. Где необходимо, аналитик будет использовать комбинацию этих методов, чтобы выявить точные требования заинтересованных лиц, таким образом, чтобы была создана система, которая удовлетворяет деловые потребности.

Модульное проектирование основано на понятии модуля - логически взаимосвязанной совокупности функциональных элементов, оформленных в виде отдельных программных модулей.

Модуль характеризуют:

  • один вход и один выход - на входе программный модуль получает определенный набор исходных данных, выполняет содержательную обработку и возвращает один набор результатных данных, т.е. реализуется стандартный принцип IPO (Input - Process - Output) - вход-процесс-выход;

  • функциональная завершенность - модуль выполняет перечень регламентированных операций для реализации каждой отдельной функции в полном составе, достаточных для завершения начатой обработки;

  • логическая независимость - результат работы программного модуля зависит только от исходных данных, но не зависит от работы других модулей;

  • слабые информационные связи с другими программными модулями - обмен информацией между модулями должен быть по возможности минимизирован;

  • обозримый по размеру и сложности программный элемент.

Таким образом, модули содержат определение доступных для обработки данных, операции обработки данных, схемы взаимосвязи с другими модулями.

Каждый модуль состоит из спецификации и тела.Спецификации определяют правила использования модуля, а тело - способ реализации процесса обработки.

При определении набора модулей, реализующих функции конкретного алгоритма, необходимо учитывать следующее:

  • каждый модуль вызывается на выполнение вышестоящим модулем и, закончив работу, возвращает управление вызвавшему его модулю;

  • принятие основных решений в алгоритме выносится на максимально "высокий" по иерархии уровень;

  • для использования одной и той же функции в разных местах алгоритма создается один модуль, который вызывается на выполнение по мере необходимости. В результате дальнейшей детализации алгоритма создается функционально-модульная схема (ФМС) алгоритма приложения, которая является основой для программирования.

Структурное проектирование основано на модульной структуре программного продукта и типовых управляющих структурах алгоритмов обработки данных различных программных модулей

В любой типовой структуре блок, кроме условного, имеет только один вход и выход, безусловный переход на блок с нарушением иерархии запрещен (оператор типа GoTo в структурном программировании не используется).

Виды основных управляющих структур алгоритма приведены в табл

Типы управляющей структуры

Применение управляющей структуры

Последовательность

Блок 1

Блок 2

Конец

Последовательность включает фиксированный перечень блоков (операторов). Каждый очередной блок обрабатывается после завершения предыдущего без дополнительных условий.

Для изменения порядка обработки блоков редактируется последовательность выполняемых

Альтернатива (условие выбора)

Начало

Да Условие Нет

Альтернатива1 Альтернатива2

Конец

В блоке Условие содержится условие выбора альтернативы обработки. Каждая альтернатива выполняется 1 раз; выполнение одной из двух альтернатив - обязательно.

Развитие данного типа структуры является множественная альтернатива, когда последовательно проверяются условия выполнения определенных альтернатив. Если очередное условие истинно, обрабатывается соответствующая ему альтернатива, после чего происходит выход. В противном случае - переход к проверке условия следующей альтернативы.

Если ни одно из условий не выполнилось, происходит выход.

Цикл ("пока")

Начало

Условие

Нет Да

Тело цикла

Конец

В блоке Условие задается условие тела цикла - определенной обработки. Если условие не выполняется, цикл прерывается и осуществляется выход.

Условие может содержать счетчик повторений тела цикла либо логическое условие.

Тело цикла - произвольная последовательность блоков (операторов) обработки

Коди́рование — процесс написания программного кода, скриптов, с целью реализации определённого алгоритма на определённом языке программирования.

Некоторые путают такие понятия, как программирование и непосредственно кодирование. Кодирование является лишь частью программирования, наряду с анализом, проектированием, компиляцией, тестированием и отладкой, сопровождением.

В узких кругах кодирование также может называться «кодинг» (англ. coding). Однако в литературе этот термин используется редко.

“Тестирование — процесс, подтверждающий правильность программы и демонстрирующий, что ошибок в программе нет.” Основной недостаток подобного определения заключается в том, что оно совершенно неправильно; фактически это почти определение антонима слова “тестирование”. Читатель с некоторым опытом программирования уже, вероятно, понимает, что невозможно продемонстрировать отсутствие ошибок в программе. Поэтому определение описывает невыполнимую задачу, а так как тестирование зачастую все же выполняется с успехом, по крайней мере с некоторым успехом, то такое определение логически некорректно. Правильное определение тестирования таково: Тестирование — процесс выполнения программы с намерением найти ошибки.

Тестирование модуля, или автономное тестирование (module testing, unit testing) контроль отдельного программного модуля, обычно в изолированной среде (т. е. изолированно от всех остальных модулей). Тестирование модуля иногда включает также математическое доказательство.

Тестирование сопряжении (integration testing) контроль сопряжении между частями системы (модулями, компонентами, подсистемами).

Тестирование внешних функций (external function testing)контроль внешнего поведения системы, определенного внешними спецификациями.

Комплексное тестирование (system testing) контроль и/или испытание системы по отношению к исходным целям. Комплексное тестирование является процессом контроля, если оно выполняется в моделируемой среде, и процессом испытания, если выполняется в среде реальной, жизненной.

Тестирование приемлемости (acceptance testing) проверка соответствия программы требованиям пользователя.

Тестирование настройки (installation testing) — проверка соответствия каждого конкретного варианта установки системы с целью выявить любые ошибки, возникшие в процессе настройки системы.

Сопровожде́ние программного обеспечения — процесс улучшения, оптимизации и устранения дефектов программного обеспечения (ПО) после передачи в эксплуатацию. Сопровождение ПО — это одна из фаз жизненного цикла программного обеспечения, следующая за фазой передачи ПО в эксплуатацию. В ходе сопровождения в программу вносятся изменения, с тем, чтобы исправить обнаруженные в процессе использования дефекты и недоработки, а также для добавления новой функциональности, с целью повысить удобство использования (юзабилити) и применимость ПО.

В модели водопада, сопровождение ПО выделяется в отдельную фазу цикла разработки. В спиральной модели, возникшей в ходе развития объектно-ориентированного программирования, сопровождение не выделяется как отдельный этап. Тем не менее, эта деятельность занимает значительное место, учитывая тот факт, что обычно около 2/3 жизненного цикла программных систем занимает сопровождение.

Сопровождаемость программного обеспечения — характеристики программного продукта, позволяющие минимизировать усилия по внесению в него изменений:

  • для устранения ошибок;

  • для модификации в соответствии с изменяющимися потребностями пользователей.