Курсовая работа по ПИ. пояснительная записка. 1 Общая часть 1 Классификация программных средств
![]()
|
![]() 1.1 Классификация программных средств Совокупность программ и сопровождающей их документации, предназначенная для решения задач на ПК, называется программным обеспечением (ПО) (software). Программное обеспечение делится на системное и прикладное. Программное обеспечение, необходимое для управления компьютером, для создания и поддержки выполнения других программ пользователя, а также для предоставления пользователю набора всевозможных услуг, называется системным программным обеспечением (system software). Системное программное обеспечение можно классифицировать следующим образом: операционные системы, сервисные системы, программно-инструментальные средства и системы технического обслуживания (Схема 1). ![]() ![]() Схема 1 – Классификация ПО ЭВМ В наборе системных программных продуктов главное место занимают операционные системы (operating system). Операционная система (ОС) - совокупность программ, управляющих работой всех устройств ПК и процессом выполнения прикладных программ. ОС берет на себя выполнение таких операций, как контроль работоспособности оборудования ПК; выполнение процедуры начальной загрузки; управление работой всех устройств ПК; управление файловой системой; взаимодействие пользователя с ПК; загрузка и выполнение прикладных программ; распределение ресурсов ПК, таких, как оперативная память, процессорное время и периферийные устройства между прикладными программами. ![]() Главными отличительными чертами современных операционных систем являются: многозадачность - способность обеспечивать выполнение нескольких программ одновременно; развитый графический пользовательский интерфейс; использование всех возможностей, предоставляемых современными микропроцессорами; устойчивость в работе и защищенность; полная независимость от аппаратуры (поддержка всех видов дисплеев и принтеров); совместимость со всеми видами приложений, разработанных для MS DOS. 1.2 Жизненный цикл прикладной программы Жизненным циклом программы (ЖЦП) на отрезок времени от принятия решения о необходимости разработки программы до снятия программы с эксплуатации. ЖЦП делится на фазы разработки и использования. Первой фазе соответствует разработка документации, а второй сопровождение. Под сопровождением понимают два вида работ: 1. Модификация программы за счет изменения модели предметной области. 2. Нахождение и исправление ошибок, которые есть в программе. В свою очередь фаза разработки делится на 4 под фазы: 1. Анализ задачи. 2. Проектирование. 3. Кодирование. ![]() Каждый период заканчивается своей документацией. 1. Техническое задание. 2. Эскизный, технический проекты, пояснительная записка. 3. Распечатка программы и статическое тестирование. 4. Сборка программы, программа тестирования, результаты 5. Тестирования. Разработка ПО может вестись с использованием лавинообразной (Схема 2) или итеративной (Схема 3) моделей разработки. Лавинообразная модель (модель "водопада") может быть использована для разработки ПО небольшого размера с хорошо определенной алгоритмической базой. ![]() Схема 2 – Лавинообразная модель Итеративный подход в разработке программного обеспечения - это выполнение работ параллельно с непрерывным анализом полученных результатов и корректировкой предыдущих этапов работы. Проект при этом подходе в каждой фазе развития проходит повторяющийся цикл: ![]() реализация; проверка; оценка. ![]() Схема 3 – Итеративная модель Преимущества итеративного подхода: снижение воздействия серьёзных рисков на ранних стадиях проекта, что ведет к минимизации затрат на их устранение; организация эффективной обратной связи проектной команды с потребителем (а также заказчиками, стейкхолдерами) и создание продукта, реально отвечающего его потребностям; акцент усилий на наиболее важные и критичные направления проекта; непрерывное итеративное тестирование, позволяющее оценить успешность всего проекта в целом; раннее обнаружение конфликтов между требованиями, моделями ![]() эффективное использование накопленного опыта; реальная оценка текущего состояния проекта и, как следствие, большая уверенность заказчиков и непосредственных участников в его успешном завершении. 1.3 Методология и технология разработки ПП Методология - это система принципов и способов организации и построения теоретической и практической деятельности, а также учение об этой системе. Самой важной целью методологии программирования является изучение и внедрение таких методов проектирования программ, которые облегчают задачу сопровождения программ. Легкость сопровождения - это такое качество программы, которое нельзя улучшить после ее разработки никакими другими способами, кроме перепрограммирования. ![]() Сформировалось три стратегии разработки программных продуктов: 1. Линейная последовательность этапов разработки, предполагающая однократный проход этапов процесса разработки; поддерживается "водопадной" моделью жизненного цикла программного продукта. 2. Инкрементная стратегия, когда определенные в полном объеме бизнес-требования к программному продукту реализуются постепенно, в виде последовательности версий, расширяющих функциональность программного продукта. ![]() ![]() Схема 4 – Этапы разработки ПО водопадной модели Модифицированные модели водопада - Agile Software Development, гибкая или "живая" методология разработки, нацелена на минимизацию рисков путем сведения разработки к серии коротких циклов, называемых итерациями, длительностью не более двух недель. Каждая итерация обеспечивает прохождение всех фаз проекта, обеспечивая инкремент (прирост) функциональности. Однако итерация, как правило, недостаточна для выпуска новой версии продукта. По окончании итерации команда разработчиков оценивает и выбирает приоритеты разработки. Эта модель предусматривает: инструментальную поддержку процесса разработки, минимизацию времени и трудозатрат; использование прототипа для уточнения требований заказчика; ![]() постепенное расширение функциональности; распределение ролей в команде разработчика, возможность их совмещения; управление проектом создания программного продукта. Модель RAD может принимать одну из трех форм: макет (в виде чертежа формы документа, схемы диалога), работающий макет для ограниченного набора функций или типовой программный продукт, подлежащий настройке. Макетирование основывается на многократном повторении итераций, в которых участвуют заказчик и разработчик, и начинается со сбора и уточнения требований к создаваемому программному продукту. Инкрементная модель объединяет элементы последовательной водопадной модели с итерационной основой макетирования. ![]() Схема 5 – Модель RAD Спиральная модель объединила свойства классического жизненного цикла и макетирования, но дополнила их анализом риска. Эта модель включает в себя четыре обязательные фазы: ![]() 2. Анализ риска - анализ вариантов и распознавание (выбор) риска; 3. Конструирование - разработка продукта следующего уровня; 4. Оценивание - оценка заказчиком текущих результатов разработки. Очередной цикл по спирали выполняется в направлении от центра к периферии, постепенно создаются полные версии программного продукта. Решения принимаются на актуальной информации о состоянии разработки. К достоинствам спиральной модели относят: эволюционное развитие разработки программного продукта, учет рисков на каждом витке спирали, использование методов моделирования для анализа рисков. Спиральная модель ориентирована на большие, дорогостоящие и сложные проекты. При этом требуется: 1. Постоянное взаимодействие с потенциальными пользователями, выяснение изменяющихся требований к программной системе; 2. Разработка архитектуры системы, определяющей концепцию построения программного продукта, открытой для изменений; 3. Наличие разработчиков высокой квалификации, инструментария разработки, соответствующего масштабу и сложности программного продукта. ![]() ![]() Схема 6 – Спиральная модель 1.4 Тестирование программных средств Многие организации, занимающиеся созданием программного обеспечения, до 50% средств, выделенных на разработку программ, тратят на тестирование, что составляет миллиарды долларов по всему миру в целом. И все же, несмотря на громадные капиталовложения, знаний о сути тестирования явно не хватает, и большинство программных продуктов неприемлемо, ненадежно даже после «основательного тестирования». О состоянии дел лучше всего свидетельствует тот факт, что большинство людей, работающих в области обработки данных, даже не могут правильно определить понятие «тестирование», и это на самом деле главная причина неудач. Если попросить любого профессионала определить понятие «тестирование» либо открыть (как правило, слишком краткую) главу о тестировании любого учебника программирования, то скорее всего можно встретить такое определение: ![]() Тестирование — процесс выполнения программы с намерением найти ошибки. Тестирование оказывается довольно необычным процессом (вот почему оно и считается трудным), так как это процесс разрушительный. Ведь цель проверяющего — заставить программу сбиться. Он доволен, если это ему удается; если же программа на его тесте не сбивается, он не удовлетворен. Невозможно гарантировать отсутствие ошибок в программе; в лучшем случае можно попытаться показать наличие ошибок. Если программа правильно ведет себя для значительного набора тестов, нет оснований утверждать, что в ней нет ошибок; со всей определенностью можно лишь утверждать, что неизвестно, когда эта программа не работает. Конечно, если есть причины считать данный набор тестов способным с большой вероятностью обнаружить все возможные ошибки, то можно говорить о некотором уровне уверенности в правильности программы, устанавливаемой этими тестами. О тестировании говорить довольно трудно, поскольку, хотя оно и способствует повышению надежности программного обеспечения, его значение ограничено. Надежность невозможно внести в программу в результате тестирования, она определяется правильностью этапов проектирования. Наилучшее решение проблемы надежности — с самого начала не допускать ошибок в программе. ![]() |