Файл: Программное обеспечение и его историческое развитие.pdf
Добавлен: 04.07.2023
Просмотров: 1026
Скачиваний: 8
СОДЕРЖАНИЕ
1. Современное программное обеспечение персонального компьютера
1.1. Понятие программного обеспечения
1.2. История программного обеспечения
1.3. Жизненный цикл программного обеспечения
1.3.2. Поэтапная модель с промежуточным контролем
2. Классификация программного обеспечения
2.1. Системное программное обеспечение
2.1.2. Встроенное программное обеспечение
2.2. Прикладное программное обеспечение
Инкрементная схема разработки программного обеспечения представлена на рисунке 3[48].
Рис. 3. Инкрементная схема разработки программного обеспечения
В начале работы над проектом определяются все основные требования к информационной системе, затем выполняется разработка данной системы в виде последовательности версий. При этом каждая версия представляет собой работоспособный и законченный продукт. Первая версия реализует отдельную часть запланированных возможностей, последующие версии реализуют дополнительные возможности. Данный процесс продолжается до получения полной системы[49].
Данный вид модели жизненного цикла характерен при разработке комплексных и сложных систем, имеющих четкое видение, как со стороны разработчика, так и со стороны заказчика, конечного результата информационной системы. Разработка версиями обычно ведется по причинам отсутствия у заказчика единовременного финансирования всего дорогостоящего проекта; отсутствия у разработчика необходимых ресурсов, необходимых для реализации сложного проекта в короткие сроки или при требовании поэтапного освоения и внедрения продукта конечными пользователями. Внедрение всей системы единовременно может вызвать неприятие у пользователей данной системы и только замедлить процесс перехода на новые технологии[50].
Недостатки и достоинства данной стратегии совпадают с каскадной моделью. За исключением более ранней видимости результатов заказчиком. Уже после результатов разработки и внедрения первой версии он имеет возможность незначительно изменять требования к разработке, предлагать разработку более совершенного продукта при заключении нового договора или совсем отказаться от нее[51] [6, 9, 16, 18].
1.3.4. Спиральная модель
Спиральная модель, также называемая эволюционной или итерационной моделью, была изобретена Барри Боэмом в 1988 году. Данная модель подразумевает разработку в виде последовательности версий, но при начале проекта требования определены не окончательно, и они уточняются в результате разработки версий[52].
В спиральной модели делается упор на начальные этапы жизненного цикла: проектирование и анализ. На данных этапах возможность реализации технических решений проверяется через создание прототипов. Каждый отдельный виток спирали соответствует созданию версии или фрагмента автоматизированной информационной системы, на котором уточняются характеристики и цели проекта, определяется его качество и планируются работы на следующем витке спирали. Таким образом, последовательно конкретизируются и углубляются детали проекта, а в результате выбирается доводимый до реализации обоснованный вариант[53].
Итерационная разработка отражает объективно существующий спиральный цикл создания информационной системы. Неполное завершение работ на каждом отдельном этапе позволяет переходить на следующий этап, не дожидаясь полного завершения работы на текущем. В итеративном способе разработки недостающая работа имеет возможность быть выполненной в процессе следующей итерации. Главная задача модели заключается в наибыстрейшем выводе к пользователям системы работоспособного продукта, тем самым активизируя процесс дополнения и уточнения требований[54].
Основной проблемой спирального цикла является определение момента перехода на следующий этап. Для ее решения необходимо вводить временные ограничения в каждый из этапов жизненного цикла. Переход осуществляется, соответствуя плану, даже если не вся запланированная работа закончена. План составляется на основе полученных в предыдущих проектах статистических данных и личного опыта разработчиков[55].
Спиральная модель жизненного цикла была предложена для преодоления перечисленных проблем. На этапах проектирования и анализа реализуемость технических решений и степень удовлетворения потребностей заказчика проверяется путем создания прототипов. Каждый виток спирали соответствует созданию работоспособной версии системы или фрагмента[56]. Это позволяет определить качество разработки, уточнить характеристики, цели и требования проекта и спланировать работы следующего витка спирали. Таким образом, последовательно конкретизируются и углубляются детали проекта и в результате выбирается обоснованный вариант, удовлетворяющий действительным требованиям заказчика и доводящийся до реализации[57].
Спиральная схема разработки программного обеспечения представлена на рисунке 4.
Рис. 4. Спиральная схема разработки программного обеспечения
Основными достоинствами данной модели является быстрое предоставление пользователям программы работоспособного продукта, тем самым, активизируя процесс дополнения и уточнения требований; появление возможности изменения требований в процессе разработки информационной системы, что характерно для большинства разработок, в том числе и типовых; обеспечение большей гибкости в управлении проектом; получение более надежной и устойчивой системы; обнаружение и исправление слабых мест и ошибок на каждой итерации по мере развития системы; совершенствование процесса разработки за счет анализа, проводимого в каждой итерации и позволяющего проводить оценку того, что должно быть изменено в организации разработки, и улучшать ее на следующей итерации; уменьшение рисков заказчика, за счет возможности завершения развития неперспективного проекта заказчиком с минимальными для себя финансовыми потерями[58].
Недостатками данной модели является увеличение неопределенности у разработчика в перспективах развития проекта и затруднение операции ресурсного и временного планирования всего проекта в целом[59]. Для решения данной проблемы вводятся временные ограничения на каждый этап жизненного цикла, и переход осуществляется в соответствии с планом, даже если не вся запланированная работа закончена. Планирование производится на основе полученных в предыдущих проектах статистических данных и личного опыта разработчиков[60] [3, 6, 8, 17, 18].
По итогам данной главы можно сделать вывод, о том, что программное обеспечение является популярной на сегодняшний день сферой и развивается согласно требованиям пользователей. На данный момент для программного обеспечения сформирован отлаженный цикл разработки и последующего сопровождения, который развивался параллельно понятию и разновидностям программного обеспечения, которые, в свое очередь, развивались исходя из возможностей аппаратного обеспечения и запросов заказчиков.
2. Классификация программного обеспечения
2.1. Системное программное обеспечение
По назначению программы делят прикладные и системные[61].
В общем виде место системного программного обеспечения отображена на рисунке 5[62].
Рис. 5. Место системного программного обеспечения в многоуровневой схеме вычислительной системы
Системное программное обеспечение является комплексом программ, обеспечивающих управление компонентами компьютерной системы, такими как оперативная память, процессор, сетевое оборудование, устройства ввода-вывода, выступая в виде межслойного интерфейса, с одной стороны которого приложения пользователя, а с другой — аппаратное обеспечение. В отличие от прикладного программного обеспечения, системное не решает конкретных практических задач, а только обеспечивает работу других программ, за счет предоставления им сервисных функций, которые абстрагируют детали микропрограммной и аппаратной реализации вычислительной системы, и управляет аппаратными ресурсами вычислительной системы[63].
Создание системного программного обеспечения называется системным программированием. Программист, который специализируется на системном программировании называется системным программистом[64].
Отнесение того или иного программного обеспечения к системному условно, и зависит от соглашений, которые используются в конкретном контексте. Обычно к системному программному обеспечению относятся утилиты, операционные системы управления базами данных, системы, системы программирования, широкий класс связующего программного обеспечения[65] [7, 10, 12, 13].
2.1.1. Операционная система
В основе системного программного обеспечения лежит операционная система, представляющая собой комплекс системных программ, который расширяет возможности вычислительной системы, а также обеспечивает управление ее ресурсами, выполнение и загрузку прикладных программ, а также взаимодействие с пользователями. В большинстве вычислительных систем операционные системы являются основной, наиболее важной частью системного программного обеспечения[66].
Основными функциями операционной системы как системного программного обеспечения являются:
- стандартизованный доступ к периферийным устройствам ввода-вывода;
- управление доступом к данным на энергонезависимых носителях, которые организованы в той или иной файловой системе;
- загрузка приложений в оперативную память и их выполнение;
- поддержка стека протоколов, сетевые операции;
- управление оперативной памятью, то есть распределение между процессами и виртуальная память;
- пользовательский интерфейс[67].
Существуют две группы определений операционных систем:
- совокупность управляющих другими программами программ;
- совокупность управляющих оборудованием программ.
Обе данные группы имеют свой точный технический смысл, становящийся ясным только при более детальном рассмотрении вопроса о том, зачем вообще нужны операционные системы[68].
Существуют приложения вычислительной техники, для которых операционные системы излишни. В качестве примеров таких устройств можно привести встроенные микрокомпьютеры, которые содержатся сегодня во многих сотовых телефонах, автомобилях, бытовых приборах и другой подобной технике. Часто такой компьютер постоянно исполняет лишь одну программу, которая запускается по включении. Также простые игровые приставки представляют собой специализированные микрокомпьютеры и могут обходиться без операционной системы, при включении запуская программу, которая записана на вставленном в устройство носителе. Тем не менее, некоторые игровые приставки и микрокомпьютеры все же работают под управлением особых собственных операционных систем. В большинстве случаев, это UNIX-подобные системы.
Помимо операционных систем к системному программному обеспечению относят встроенное программное обеспечение и утилиты[69] [5, 15, 17].
2.1.2. Встроенное программное обеспечение
Встроенные программы называют также firmware. Они представляют собой программы, которые зашиты в цифровые электронные устройства. В ряде случаев они по сути являются частью операционной системы, которая хранится в постоянной памяти. В достаточно простых устройствах вся операционная система может быть встроенной. Многие устройства современных компьютеров имеют собственные прошивки, которые осуществляют управление этими устройствами и упрощают взаимодействие с ними[70].
Термином прошивка иногда называют образ посеянного запоминающего устройства, который предназначен для записи в память соответствующего устройства с целью обновления его микропрограммы, а также собственно процесс записи этого образа в энергонезависимую память устройства[71].
Прошивка памяти осуществляется при изготовлении устройства различными способами. В качестве примеров таких способов можно привести установку микросхемы памяти с записанным содержимым. Большинство устройств допускает замену содержимого памяти[72] [7, 14, 18].
2.1.3. Утилиты
Утилитами называют программы, которые предназначены для решения узкого круга вспомогательных задач. Иногда утилиты относят к классу сервисного программного обеспечения[73].
Утилиты используются для мониторинга производительности оборудования и показателей датчиков, расширения возможностей, контроля показателей и управления параметрами оборудования.
Утилиты могут распространяться отдельно, идти в комплекте со специализированным оборудованием или входить в состав операционных систем.
В качестве типов утилит можно назвать утилиты работы с реестром, тесты оборудования, утилиты мониторинга оборудования и дисковые утилиты[74].
В качестве примеров дисковых утилит можно назвать:
- утилиты проверки диска, которые осуществляют поиск неправильно записанных или различным путем поврежденных участков диска и файлов и их последующее удаление с целью эффективного использования дискового пространства;
- дефрагментаторы;
- утилиты разметки диска, которые осуществляют деление диска на логические диски, которые могут иметь различные файловые системы и восприниматься операционной системой как несколько различных дисков;
- утилиты очистки диска, которые осуществляют удаление ненужных и временных файлов и чистку корзины;
- утилиты сжатия дисков, которые осуществляют сжатие информации на дисках для увеличения вместимости жестких дисков;
- утилиты резервного копирования, которые осуществляют создание резервных копий отдельных файлов и целых дисков, а также восстановление из этих копий[75] [3, 7, 8].