Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Программное обеспечение и его историческое развитие

Содержание:

Введение

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

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

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

Объектом исследования является программное обеспечение и его историческое развитие. Предметом исследования являются разновидности программного обеспечения.

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

Задачами данной работы являются:

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

В основу изучения вопроса классификации программного обеспечения были положены работы Томаса ДеМарко и Бутенко Дмитрия Валентиновича, а также некоторых авторов журнала «Программные продукты и системы».

Том ДеМарко является профессиональным инженером-программистом, писателем и консультантом по программной инженерии США. Он также является членом Института инженеров электротехники и электроники и членом ACM. ДеМарко — автор 13 книг и более чем 100 статей, которые посвящены проблематике разработки программного обеспечения и управления проектами.

Дмитрий Валентинович Бутенко является кандидатом технических наук, и преподающим автором по множеству информационных дисциплин, в том числе в сфере программного обеспечения

1. Современное программное обеспечение персонального компьютера

1.1. Понятие программного обеспечения

Программное обеспечение, согласно стандарту ISO/IEC 2382-1:1993, представляет собой все или часть правил, процедур, программ и соответствующей документации системы обработки информации[1].

Также существуют и другие определения из российских и международных стандартов:

  • согласно стандарту IEEE Std 829—2008, программное обеспечение является компьютерными программами, процедурами и, возможно, соответствующей документацией и данными, которые относятся к функционированию компьютерной системы;
  • согласно тому же стандарту IEEE Std 829—2008, программное обеспечение является программой или множеством программ, которые используются для управления компьютером;
  • согласно стандарту ГОСТ 19781-90, программное обеспечение является совокупностью программ системы обработки информации и программных документов, которые необходимы для эксплуатации этих программ[2].

Программное обеспечение представляет один из видов обеспечения вычислительной системы, наряду с математическим, аппаратным, лингвистическим, информационным, методическим и организационным обеспечением[3].

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

Академическими областями, которые изучают программное обеспечение, являются программная инженерия и информатика.

В компьютерном сленге часто используется слово «софт», которое произошло от английского слова «software», впервые в этом смысле примененного в 1958 году в статье журнала American Mathematical Monthly Джоном Тьюки, математиком из Принстонского университета[5] [1, 4, 11].

1.2. История программного обеспечения

Первой программой считают алгоритм, который был написан для разностной машины Чарльза Бэббиджа Адой Лавлейс, но, учитывая, что, машина была не достроена, данные разработки имели чисто теоретический приннцип[6].

В 1936 году была предложена первая теория, которая касалась программного обеспечения. Она была выдвинута Аланом Тьюрингом, английским математиком в эссе «On computable numbers with an application to the Entscheidungsproblem», которое переводится как «О вычислимых числах с приложением к проблеме разрешения». Ананом Тьюрингом была создана математическая модель абстрактной машины, которая была способна выполнять последовательности рудиментарных операций, переводящих машину из одного фиксированного состояния в другое. Данная машина была названа машиной Тьюринга. Главная идея заключалась в математическом доказательстве факта, что любое наперед заданное состояние системы может быть всегда достигнуто последовательным выполнением конечного набора элементарных команд из фиксированного набора команд[7].

Первые ЭВМ 40—50-х годов 20 века перепрограммировались путем переподключения кабелей и переключения тумблеров, требуя глубокого понимания их внутреннего устройства. В качестве примера таких машин можно привести ENIAC[8].

Одним из наиболее важных шагов в сторону современных компьютеров является переход к архитектуре Джона фон Неймана, которая впервые была реализована в Великобритании, в компьютере, разработанном при участии Алана Тьюринга под руководством Дж. Р. Уомерзли, который назывался Марк I. 21 июня 1941 года на нем была запущена первая хранимая в памяти компьютера программа. Для облегчения программирования этой машины Тьюрингом была придумана система сокращенного кодирования, в которой использовалась последовательность выводимых на перфоленту телетайпных символов с целью представления двоичного машинного кода[9].

Один из сотрудников Алана Тьюринга, Джон Мочли, которой позднее стал руководителем и сооснователем компании Eckert–Mauchly Computer Corporation, разработавшей такие ЭВМ, как UNIVAC и BINAC, поручил своим сотрудникам создать транслятор алгебраических формул. Не смотря на то, что эта амбициозная цель в 40-х годах и не была достигнута, под руководством Мочли был разработан так называемый «Краткий код», реализованный с помощью интерпретатора, в котором переменные и операции кодировались двухсимвольными сочетаниями. Грейс Хоппер, работая с начала 50-х годов над набором математических подпрограмм для UNIVAC I, изобрела программу-компоновщик «A-0», осуществляющую по заданному идентификатору выборку нужной подпрограммы из библиотеки, которая хранится на магнитной ленте, и записывала ее в оперативную память[10].

В 50-е годы 20 века появились первые высокоуровневые языки программирования, Грейс Хоппер разработал COBOL, а Джон Бэкус — FORTRAN. Подобные разработки значительно упростили написание прикладного программного обеспечения, осуществляемого в то время каждой фирмой, которая приобретала вычислительную машину[11].

В начале 50-х годов 20 века понятие программного обеспечения еще не сложилось. Так не говорилось о нем ничего в статье «Office Robots», вышедшей в 1952 году в журнале Fortune, где были описаны компьютеры Univac. Но в статье уже упоминается компьютер в качестве универсального устройства, процесс программирования в этой статье был анахронически описан в виде переключения тумблеров[12]. Но к середине 50-х годов уже вполне сложилась разработка программного обеспечения на заказ, несмотря на то, что сам термин программного обеспечения еще не использовался, тогда говорили просто о программистском обслуживании или программировании на заказ. Первой программной фирмой стала созданная в 1956 году компания System Development Corporation, основанная на базе фирмы RAND Corporation, которая принадлежала Американскому правительству. На этом этапе заказчиками уникального и нетиражируемого программного обеспечения были государственные структуры и крупные корпорации, а стоимость в один миллион долларов за программу не была чем-то необычным[13].

Непосредственно сам термин программного обеспечения вошел в широкий обиход с начала 60-х годов 20 века, в то время, когда актуальным стало разграничение управляющих компьютером команд и аппаратного обеспечения, то есть его физических компонентов. В то же время и началось становление индустрии программного обеспечения в виде самостоятельной отрасли. Первой компанией по разработке программного обеспечения стала корпорация Computer Sciences Corporation, основанная Роем Наттом и Флетчером Джоунсом в 1959 году с начальным капиталом в 100 долларов. Первыми клиентами CSC и появившихся вслед за нею софтверных компаний были государственные организации и сверхкрупные корпорации, вроде НАСА, и фирма продолжала работать на рынке заказного программного обеспечения, как и другие первые программистские частные стартапы, такие как Computer Usage Company[14].

Первыми программными продуктами, выпущенными самостоятельно и не поставляемыми в комплекте с компьютерным оборудованием, были выпущенный в 1965 году фирмой Applied Data Research генератор компьютерной документации AUTOFLOW, который автоматически рисовал блок-схемы, и разработанный в 1960—1967 годах в Informatics Inc. транслятор языка программирования MARK-IV[15]. Становление рынка корпоративного программного обеспечения тесно связано с появлением семейства компьютеров IBM System/360. Достаточно массовые, относительно недорогие вычислительные машины, которые совместимы друг с другом на уровне программного кода, открыли дорогу тиражируемому программному обеспечению[16].

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

В 1966 году журнал Business Week впервые обратился к теме индустрии программного обеспечения. Статья имела название «Software Gap — A Growing Crisis for Computers» и рассказывала о перспективности этого бизнеса и о связанном с нехваткой программистов кризисе. Типичные программные продукты того времени служили для автоматизации общих для бизнеса задач, таких, как автоматизации бизнес-процессов или начисление заработной платы в таких предприятиях среднего бизнеса, как коммерческий банк или производственное предприятие. Стоимость такого программного обеспечения обычно была между пятью и ста тысячами долларов[17].

Появление в 70-х годах 20 века первых персональных компьютеров создало предпосылки и для зарождения массового рынка программного обеспечения. Изначально программы для персональных компьютеров распространялись в «коробочной» форме по почте или через торговые центры и имели цену 100—500 американских долларов[18].

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

  • электронную таблицу VisiCalc, идея которой пришла Дэниелу Бриклину, когда тот, будучи инженером-программистом в DEC и выпускником MIT, посещал курсы в Гарвардской школе бизнеса, хотел облегчить себе утомительные финансовые расчеты;
  • текстовый процессор WordStar, разработка которого была начата Сеймуром Рубинштейном после тщательного изучения потребностей рынка[19].

О VisiCalc впервые заговорили, как о killer application, то есть компьютерном приложении, самим фактом своего существования доказывающем необходимость и нужность покупки платформы, для которой реализована такая программа. Для WordStar и VisiCalc такой платформой стали персональные компьютеры, благодаря таким программам из богатой игрушки для гиков ставшие рабочим инструментом. С них началась микрокомпьютерная революция, а у этих программ появились конкуренты: электронные таблицы Lotus 1-2-3, SuperCalc, система управления базами данных dBase II, текстовый процессор WordPerfect и другие подобные. СУБД, электронные таблицы, текстовые процессоры, а также графические редакторы вскоре стали основными продуктами рынка программного обеспечения для персональных компьютеров[20].

Массовое тиражирование позволило снизить к середине 90 годов 20 века стоимость программного обеспечения для персональных компьютеров до ста — пятисот долларов, при этом бизнес производителей программного обеспечения приобрел определенное сходство с бизнесом звукозаписывающих компаний[21] [2, 9, 16].

1.3. Жизненный цикл программного обеспечения

Жизненный цикл программного обеспечения является периодом создания и использования программного обеспечения. Он начинается в момент возникновения потребности в программном обеспечении и заканчивается в момент полного выхода программы из эксплуатации[22].

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

Жизненный цикл программного обеспечения можно представить рядом событий, которые происходят с программой в процессе ее использования и создания[24].

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

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

По стандарту ГОСТ 34.601-90 предусматривается восемь стадий и этапов создания программного обеспечения.

Первый этап является формированием требований к программному обеспечению и включает обследование объекта с последующим обоснованием необходимости создания программного обеспечения, формированием требований пользователя к программному обеспечению и оформлением отчета о выполнении работ и заявки на разработку программного обеспечения[26].

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

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

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

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

Шестой этап представляет собой рабочую документацию, которая состоит из рабочей документации на программное обеспечение и его части, разработки и адаптации программ[29].

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

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

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

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

В настоящее время данный стандарт является не совсем актуальным, так как некоторые положения уже устарели и многие процессы отражены недостаточно полно[32].

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

Стандартом ISO/IEC 12207 не предлагаются методы разработки информационной системы и конкретная модель жизненного цикла. Регламенты данного стандарта являются общими для любых моделей жизненного цикла, технологий и методологий разработки. Стандарт ISO/IEC 12207 описывает структуру процессов жизненного цикла программного обеспечения, но не конкретизирует в деталях, как выполнить или реализовать задачи и действия, которые включены в эти процессы[33].

На сегодняшний день выделяют четыре основных модели жизненного цикла:

  • каскадная модель;
  • поэтапная модель с промежуточным контролем;
  • инкрементная модель;
  • спиральная модель[34] [2, 9, 10, 11, 13, 15].

1.3.1. Каскадная модель

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

Каскадная стратегия подразумевает линейную последовательность прохождения стадий создания информационной системы. Это обозначает выполнение перехода с одной стадии на следующую только после полного завершения работ на текущей стадии[35].

Каскадная схема разработки программного обеспечения представлена на рисунке 1.

Данный вид модели применяется при разработке программного обеспечения, для которого можно достаточно полно и точно сформулировать все требования в самом начале разработки[36].

Рис. 1. Каскадная схема разработки программного обеспечения

Достоинствами данной модель является формирование на каждой стадии законченного набора проектной документации, который отвечает критериям согласованности и полноты[37]. Также выполняемые в четкой последовательности в процессе данной модели стадии позволяют четко планировать сроки выполнения каждой работы и соответствующие людские, материальные и денежные ресурсы[38].

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

Каскадный подход хорошо зарекомендовал себя в построении программного обеспечения, имеющего возможность в самом начале разработки достаточно полной и точной формулировки всех требований для предоставления разработчикам свободы их лучшей реализации с технической точки зрения. В данную категорию попадают системы реального времени, сложные расчетные системы и другие подобные системы. Но при использовании этого подхода обнаруживается ряд его недостатков, которые вызваны отличиями реального процесса создания программного обеспечения от полного укладывания в такую жесткую схему. При создании программного обеспечения постоянно возникает потребность в пересмотре или уточнении ранее принятых решений и возврате к предыдущим этапам. В результате реальный процесс создания программного обеспечения принимал следующий вид поэтапной модели с промежуточным контролем[41] [9, 14, 17].

1.3.2. Поэтапная модель с промежуточным контролем

Для преодоления проблем каскадной модели была предложена поэтапная модель с промежуточным контролем[42].

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

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

Поэтапная схема разработки программного обеспечения с промежуточным контролем представлена на рисунке 2[45].

Рис.2. Поэтапная схема разработки программного обеспечения с промежуточным контролем

Основным недостатком каскадного и поэтапного подходов является существенное запаздывание с получением результатов. Согласование результатов с пользователями производится только в точках, которые планируются после завершения каждого этапа работы, требования к информационной системе фиксированы в виде технического задания на все время создания системы. Таким образом, пользователи могут внести свои замечания только после полного завершения работы над программой. В случае изменения требований или их неточного изложения в течение длительного периода создания программного обеспечения, пользователи получают программу, которая не удовлетворяет их потребностям. Модели объекта могут устаревать одновременно с их утверждением[46] [5, 16, 17].

1.3.3. Инкрементная модель

Инкрементная стратегия подразумевает разработку информационной системы с линейной последовательностью стадий, но в несколько версий или инкрементов, то есть с запланированным улучшением продукта[47].

Инкрементная схема разработки программного обеспечения представлена на рисунке 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].

2.2. Прикладное программное обеспечение

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

К прикладному программному обеспечению относятся компьютерные программы, которые написаны для пользователей или самими пользователями с целью задания компьютеру конкретной работы. В качестве примера прикладного программного обеспечения можно привести программы создания списков рассылки или обработки заказов. Программистов, пишущих прикладное программное обеспечение, называют прикладными программистами[77].

По типу программного обеспечения различают программное обеспечение общего назначения, программное обеспечение развлекательного назначения, программное обеспечение специального назначения и профессиональное программное обеспечение[78].

По сфере применения выделяют:

  • прикладное программное обеспечение организаций и предприятий. В качестве примеров можно привести сеть поставок, систему отношений с потребителями, финансовое управление. Также к данному типу относится ведомственное программное обеспечение предприятий малого бизнеса и программное обеспечение отдельных подразделений внутри большого предприятия;
  • программное обеспечение, которое обеспечивает доступ пользователя к устройствам компьютера[79];
  • программное обеспечение инфраструктуры предприятия, которое обеспечивает общие возможности для поддержки программного обеспечения предприятий. В качестве примеров можно привести управление безопасностью и сетью, серверы электронной почты и СУБД;
  • программное обеспечение информационного работника, которое обслуживает потребности индивидуальных пользователей в управлении и создании информации. В качестве примеров можно привести программы по управлению документацией, ресурсами, временем, такие как электронные таблицы, текстовые редакторы, программы-клиенты для блогов и электронной почты, медиаредакторы и персональные информационные системы[80];
  • программное обеспечение для доступа к контенту, которое используется с целью доступа к тем или иным ресурсам или программам без их редактирования. Предназначено для групп или индивидуальных пользователей цифрового контента. В качестве примеров можно привести вспомогательные браузеры, веб-браузеры, медиаплееры и другие подобные приложения[81];
  • образовательное программное обеспечение по содержанию близко к программному обеспечению для развлечений и медиа, но, в отличие от него, имеет четкие требования по тестированию знаний пользователя и отслеживанию прогресса в изучении того или иного материала. Многие образовательные программы включают функции многостороннего сотрудничества и совместного пользования[82];
  • имитационное программное обеспечение, используемое для симуляции абстрактных или физических систем в целях развлечения, обучения или научных исследований;
  • инструментальные программные средства в области медиа, обеспечивающие потребности пользователей, производящего электронные или печатные медиаресурсы для других потребителей, на образовательной или коммерческой основе. В качестве примеров можно привести программы полиграфической обработки, обработки мультимедиа, верстки, редакторы цифровой анимации, редакторы HTML, цифрового звука и другие подобные приложения[83];
  • прикладные программы для проектирования и конструирования, используемые при разработке программного и аппаратного обеспечения. Охватывают автоматизированную инженерию, автоматизированное проектирование, компилирование и редактирование языков программирования, программы интегрированной среды разработки[84] [8, 12, 17].

2.3. Другие классификации программного обеспечения

По степени тиражируемости все программное обеспечение делится на три такие категории, как:

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

По степени переносимости программы делят на такие, как:

  • кроссплатформенные;
  • платформозависимые[85].

По способу использования и распространения программы делят на такие, как:

  • свободные;
  • открытые;
  • несвободные, то есть закрытые[86].

По видам программы делят на такие, как:

  • комплекс, когда программа состоит из двух или более комплексов и компонентов, которые выполняют взаимосвязанные функции, и применяется в составе другого комплекса или самостоятельно;
  • компонент, когда программа рассматривается как единое целое, выполняет законченную функцию и применяется в составе комплекса или самостоятельно[87] [2, 10].

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

Заключение

В данной работе было рассмотрено понятие программного обеспечения с точки зрения многих стандартов. Согласно стандарту ISO/IEC 2382-1:1993, программное обеспечение представляет собой все или часть правил, процедур, программ и соответствующей документации системы обработки информации. Также была рассмотрена история развития программного обеспечения начиная с первых алгоритмов Ады Лавлейс и заканчивая массовых распространением программного обеспечения в 90-х годах 20 века.

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

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

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

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

  1. Батоврин В. К. Толковый словарь по системной и программной инженерии / В. К. Батоврин. — М.: ДМК Пресс, 2012. —280 с.
  2. Бодров О. А. Предметно-ориентированные экономические информационные системы / О. А. Бодров, Р. Е. Медведев. — М.: Горячая линия - Телеком, 2013. — 244 с.
  3. Бородакий Ю. В. Эволюция информационных систем (современное состояние и перспективы) / Ю. В Бородакий, Ю. Г. Лободинский. — М.: Горячая линия - Телеком, 2011. — 368 с.
  4. Бутенко Д. В. Алгоритм проведения предпроектных исследований и моделирования информационных систем/ Д. В. Бутенко // Программные продукты и системы – М., 2013. – №4. – С. 53-56.
  5. Бутенко Д. В. Методика концептуального проектирования программных информационных систем / Д. В. Бутенко // Программные продукты и системы – М., 2012. – №2. – С. 101.
  6. ДеМарко Т. Deadline. Роман об управлении проектами / Т. ДеМарко. — М.: Манн, Иванов и Фербер, 2013. — 352 с.
  7. ДеМарко Т. Человеческий фактор. Успешные проекты и команды / Т. ДеМарко, Т. Листер. — М.: Символ-Плюс, 2014. — 288 с.
  8. Емельянова Н. З. Проектирование информационных систем: Учебное пособие / Н. З. Емельянова, Т. Л. Партыка, И. И. Попов. - М.: Форум: НИЦ ИНФРА-М, 2014. – 432 с.
  9. Ефимов И. Н. Качественные и количественные характеристики открытых информационных систем / И. Н. Ефимов // Программные продукты и системы – М., 2012. – №4. – С. 80-83.
  10. Затонский А. В. Информационные технологии: разработка информационных моделей и систем: Учебное пособие / А. В. Затонский – ИНФРА-М, 2014. – 344 с.
  11. Исаев Г. Проектирование информационных систем / Г. Исаев. — М.: Омега-Л, 2012. — 432 с.
  12. Йордан Э. Путь камикадзе. Как разработчику программного обеспечения выжить в безнадежном проекте / Э. Йордан. — М.: Лори, 2012. — 290 с.
  13. Келим Ю. Вычислительная техника / Ю. Келим. — М.: Academia, 2013. — 368 с.
  14. Левин В. Информационные технологии в машиностроении / В. Левин. — М.: Academia, 2013. — 272 с.
  15. Майерс Г. Искусство тестирования программ / Г. Майерс, Т. Баджетт, К. Сандлер. — М.: «Диалектика», 2012. — 272 с.
  16. Марков А. С. Методы оценки несоответствия средств защиты информации / А. С. Марков, В. Л. Цирлов, А. В. Барабанов. - М.: Радио и связь, 2012. – 192 с.
  17. Мелехин В. Вычислительные машины / В. Мелехин, Е. Павловский. — М.: ДРОФА, 2013. — 384 с.
  18. Мелехин В. Вычислительные системы и сети / В. Мелехин, Е. Павловский. — М.: Academia, 2013. — 208 с.
  1. Батоврин В. К. Толковый словарь по системной и программной инженерии / В. К. Батоврин. — М.:ДМК Пресс, 2012. —280 с.

  2. Бутенко Д. В. Алгоритм проведения предпроектных исследований и моделирования информационных систем/ Д. В. Бутенко // Программные продукты и системы – М., 2013. – №4. – С. 53-56.

  3. Исаев Г. Проектирование информационных систем / Г. Исаев. — М.: Омега-Л, 2012. — 432 с.

  4. Исаев Г. Проектирование информационных систем / Г. Исаев. — М.: Омега-Л, 2012. — 432 с.

  5. Бутенко Д. В. Алгоритм проведения предпроектных исследований и моделирования информационных систем/ Д. В. Бутенко // Программные продукты и системы – М., 2013. – №4. – С. 53-56.

  6. Бодров О. А. Предметно-ориентированные экономические информационные системы / О. А. Бодров, Р. Е. Медведев. — М.: Горячая линия - Телеком, 2013. — 244 с.

  7. Бодров О. А. Предметно-ориентированные экономические информационные системы / О. А. Бодров, Р. Е. Медведев. — М.: Горячая линия - Телеком, 2013. — 244 с.

  8. Ефимов И. Н. Качественные и количественные характеристики открытых информационных систем / И. Н. Ефимов // Программные продукты и системы – М., 2012. – №4. – С. 80-83.

  9. Марков А. С. Методы оценки несоответствия средств защиты информации / А. С. Марков, В. Л. Цирлов, А. В. Барабанов. - М.: Радио и связь, 2012. – 192 с.

  10. Бодров О. А. Предметно-ориентированные экономические информационные системы / О. А. Бодров, Р. Е. Медведев. — М.: Горячая линия - Телеком, 2013. — 244 с.

  11. Ефимов И. Н. Качественные и количественные характеристики открытых информационных систем / И. Н. Ефимов // Программные продукты и системы – М., 2012. – №4. – С. 80-83.

  12. Марков А. С. Методы оценки несоответствия средств защиты информации / А. С. Марков, В. Л. Цирлов, А. В. Барабанов. - М.: Радио и связь, 2012. – 192 с.

  13. Марков А. С. Методы оценки несоответствия средств защиты информации / А. С. Марков, В. Л. Цирлов, А. В. Барабанов. - М.: Радио и связь, 2012. – 192 с.

  14. Бодров О. А. Предметно-ориентированные экономические информационные системы / О. А. Бодров, Р. Е. Медведев. — М.: Горячая линия - Телеком, 2013. — 244 с.

  15. Ефимов И. Н. Качественные и количественные характеристики открытых информационных систем / И. Н. Ефимов // Программные продукты и системы – М., 2012. – №4. – С. 80-83.

  16. Ефимов И. Н. Качественные и количественные характеристики открытых информационных систем / И. Н. Ефимов // Программные продукты и системы – М., 2012. – №4. – С. 80-83.

  17. Марков А. С. Методы оценки несоответствия средств защиты информации / А. С. Марков, В. Л. Цирлов, А. В. Барабанов. - М.: Радио и связь, 2012. – 192 с.

  18. Бодров О. А. Предметно-ориентированные экономические информационные системы / О. А. Бодров, Р. Е. Медведев. — М.: Горячая линия - Телеком, 2013. — 244 с.

  19. Марков А. С. Методы оценки несоответствия средств защиты информации / А. С. Марков, В. Л. Цирлов, А. В. Барабанов. - М.: Радио и связь, 2012. – 192 с.

  20. Бодров О. А. Предметно-ориентированные экономические информационные системы / О. А. Бодров, Р. Е. Медведев. — М.: Горячая линия - Телеком, 2013. — 244 с.

  21. Ефимов И. Н. Качественные и количественные характеристики открытых информационных систем / И. Н. Ефимов // Программные продукты и системы – М., 2012. – №4. – С. 80-83.

  22. Затонский А. В. Информационные технологии: разработка информационных моделей и систем: Учебное пособие / А. В. Затонский – ИНФРА-М, 2014. – 344 с.

  23. Бодров О. А. Предметно-ориентированные экономические информационные системы / О. А. Бодров, Р. Е. Медведев. — М.: Горячая линия - Телеком, 2013. — 244 с.

  24. Исаев Г. Проектирование информационных систем / Г. Исаев. — М.: Омега-Л, 2012. — 432 с.

  25. Затонский А. В. Информационные технологии: разработка информационных моделей и систем: Учебное пособие / А. В. Затонский – ИНФРА-М, 2014. – 344 с.

  26. Келим Ю. Вычислительная техника / Ю. Келим. — М.: Academia, 2013. — 368 с.

  27. Бодров О. А. Предметно-ориентированные экономические информационные системы / О. А. Бодров, Р. Е. Медведев. — М.: Горячая линия - Телеком, 2013. — 244 с.

  28. Затонский А. В. Информационные технологии: разработка информационных моделей и систем: Учебное пособие / А. В. Затонский – ИНФРА-М, 2014. – 344 с.

  29. Майерс Г. Искусство тестирования программ / Г. Майерс, Т. Баджетт, К. Сандлер. — М.:«Диалектика», 2012. — 272 с.

  30. Келим Ю. Вычислительная техника / Ю. Келим. — М.: Academia, 2013. — 368 с.

  31. Затонский А. В. Информационные технологии: разработка информационных моделей и систем: Учебное пособие / А. В. Затонский – ИНФРА-М, 2014. – 344 с.

  32. Бодров О. А. Предметно-ориентированные экономические информационные системы / О. А. Бодров, Р. Е. Медведев. — М.: Горячая линия - Телеком, 2013. — 244 с.

  33. Майерс Г. Искусство тестирования программ / Г. Майерс, Т. Баджетт, К. Сандлер. — М.:«Диалектика», 2012. — 272 с.

  34. Ефимов И. Н. Качественные и количественные характеристики открытых информационных систем / И. Н. Ефимов // Программные продукты и системы – М., 2012. – №4. – С. 80-83.

  35. Мелехин В. Вычислительные машины / В. Мелехин, Е. Павловский. — М.: ДРОФА, 2013. — 384 с.

  36. Левин В. Информационные технологии в машиностроении / В. Левин. — М.: Academia, 2013. — 272 с.

  37. Левин В. Информационные технологии в машиностроении / В. Левин. — М.: Academia, 2013. — 272 с.

  38. Ефимов И. Н. Качественные и количественные характеристики открытых информационных систем / И. Н. Ефимов // Программные продукты и системы – М., 2012. – №4. – С. 80-83.

  39. Мелехин В. Вычислительные машины / В. Мелехин, Е. Павловский. — М.: ДРОФА, 2013. — 384 с.

  40. Левин В. Информационные технологии в машиностроении / В. Левин. — М.: Academia, 2013. — 272 с.

  41. Мелехин В. Вычислительные машины / В. Мелехин, Е. Павловский. — М.: ДРОФА, 2013. — 384 с.

  42. Марков А. С. Методы оценки несоответствия средств защиты информации / А. С. Марков, В. Л. Цирлов, А. В. Барабанов. - М.: Радио и связь, 2012. – 192 с.

  43. Марков А. С. Методы оценки несоответствия средств защиты информации / А. С. Марков, В. Л. Цирлов, А. В. Барабанов. - М.: Радио и связь, 2012. – 192 с.

  44. Мелехин В. Вычислительные машины / В. Мелехин, Е. Павловский. — М.: ДРОФА, 2013. — 384 с.

  45. Бутенко Д. В. Методика концептуального проектирования программных информационных систем / Д. В. Бутенко // Программные продукты и системы – М., 2012. – №2. – С. 101.

  46. Мелехин В. Вычислительные машины / В. Мелехин, Е. Павловский. — М.: ДРОФА, 2013. — 384 с.

  47. Марков А. С. Методы оценки несоответствия средств защиты информации / А. С. Марков, В. Л. Цирлов, А. В. Барабанов. - М.: Радио и связь, 2012. – 192 с.

  48. Ефимов И. Н. Качественные и количественные характеристики открытых информационных систем / И. Н. Ефимов // Программные продукты и системы – М., 2012. – №4. – С. 80-83.

  49. Марков А. С. Методы оценки несоответствия средств защиты информации / А. С. Марков, В. Л. Цирлов, А. В. Барабанов. - М.: Радио и связь, 2012. – 192 с.

  50. ДеМарко Т. Deadline. Роман об управлении проектами / Т. ДеМарко. — М.: Манн, Иванов и Фербер, 2013. — 352 с.

  51. Мелехин В. Вычислительные системы и сети / В. Мелехин, Е. Павловский. — М.: Academia, 2013. — 208 с.

  52. Емельянова Н. З. Проектирование информационных систем: Учебное пособие / Н. З. Емельянова, Т. Л. Партыка, И. И. Попов. - М.: Форум: НИЦ ИНФРА-М, 2014. – 432 с.

  53. Мелехин В. Вычислительные машины / В. Мелехин, Е. Павловский. — М.: ДРОФА, 2013. — 384 с.

  54. Мелехин В. Вычислительные системы и сети / В. Мелехин, Е. Павловский. — М.: Academia, 2013. — 208 с.

  55. Мелехин В. Вычислительные системы и сети / В. Мелехин, Е. Павловский. — М.: Academia, 2013. — 208 с.

  56. ДеМарко Т. Deadline. Роман об управлении проектами / Т. ДеМарко. — М.: Манн, Иванов и Фербер, 2013. — 352 с.

  57. Емельянова Н. З. Проектирование информационных систем: Учебное пособие / Н. З. Емельянова, Т. Л. Партыка, И. И. Попов. - М.: Форум: НИЦ ИНФРА-М, 2014. – 432 с.

  58. Мелехин В. Вычислительные системы и сети / В. Мелехин, Е. Павловский. — М.: Academia, 2013. — 208 с.

  59. ДеМарко Т. Deadline. Роман об управлении проектами / Т. ДеМарко. — М.: Манн, Иванов и Фербер, 2013. — 352 с.

  60. Мелехин В. Вычислительные машины / В. Мелехин, Е. Павловский. — М.: ДРОФА, 2013. — 384 с.

  61. ДеМарко Т. Человеческий фактор. Успешные проекты и команды / Т. ДеМарко, Т. Листер. — М.:Символ-Плюс, 2014. — 288 с.

  62. Йордан Э. Путь камикадзе. Как разработчику программного обеспечения выжить в безнадежном проекте / Э. Йордан. — М.: Лори, 2012. — 290 с.

  63. Затонский А. В. Информационные технологии: разработка информационных моделей и систем: Учебное пособие / А. В. Затонский – ИНФРА-М, 2014. – 344 с.

  64. ДеМарко Т. Человеческий фактор. Успешные проекты и команды / Т. ДеМарко, Т. Листер. — М.:Символ-Плюс, 2014. — 288 с.

  65. Келим Ю. Вычислительная техника / Ю. Келим. — М.: Academia, 2013. — 368 с.

  66. Бутенко Д. В. Методика концептуального проектирования программных информационных систем / Д. В. Бутенко // Программные продукты и системы – М., 2012. – №2. – С. 101.

  67. Майерс Г. Искусство тестирования программ / Г. Майерс, Т. Баджетт, К. Сандлер. — М.:«Диалектика», 2012. — 272 с.

  68. Мелехин В. Вычислительные машины / В. Мелехин, Е. Павловский. — М.: ДРОФА, 2013. — 384 с.

  69. Бутенко Д. В. Методика концептуального проектирования программных информационных систем / Д. В. Бутенко // Программные продукты и системы – М., 2012. – №2. – С. 101.

  70. Левин В. Информационные технологии в машиностроении / В. Левин. — М.: Academia, 2013. — 272 с.

  71. ДеМарко Т. Человеческий фактор. Успешные проекты и команды / Т. ДеМарко, Т. Листер. — М.:Символ-Плюс, 2014. — 288 с.

  72. Мелехин В. Вычислительные системы и сети / В. Мелехин, Е. Павловский. — М.: Academia, 2013. — 208 с.

  73. Бородакий Ю. В. Эволюция информационных систем (современное состояние и перспективы) / Ю. В Бородакий, Ю. Г. Лободинский. — М.: Горячая линия - Телеком, 2011. — 368 с.

  74. Емельянова Н. З. Проектирование информационных систем: Учебное пособие / Н. З. Емельянова, Т. Л. Партыка, И. И. Попов. - М.: Форум: НИЦ ИНФРА-М, 2014. – 432 с.

  75. Бородакий Ю. В. Эволюция информационных систем (современное состояние и перспективы) / Ю. В Бородакий, Ю. Г. Лободинский. — М.: Горячая линия - Телеком, 2011. — 368 с.

  76. Емельянова Н. З. Проектирование информационных систем: Учебное пособие / Н. З. Емельянова, Т. Л. Партыка, И. И. Попов. - М.: Форум: НИЦ ИНФРА-М, 2014. – 432 с.

  77. Мелехин В. Вычислительные машины / В. Мелехин, Е. Павловский. — М.: ДРОФА, 2013. — 384 с.

  78. Емельянова Н. З. Проектирование информационных систем: Учебное пособие / Н. З. Емельянова, Т. Л. Партыка, И. И. Попов. - М.: Форум: НИЦ ИНФРА-М, 2014. – 432 с.

  79. Йордан Э. Путь камикадзе. Как разработчику программного обеспечения выжить в безнадежном проекте / Э. Йордан. — М.: Лори, 2012. — 290 с.

  80. ДеМарко Т. Человеческий фактор. Успешные проекты и команды / Т. ДеМарко, Т. Листер. — М.:Символ-Плюс, 2014. — 288 с.

  81. Мелехин В. Вычислительные машины / В. Мелехин, Е. Павловский. — М.: ДРОФА, 2013. — 384 с.

  82. Йордан Э. Путь камикадзе. Как разработчику программного обеспечения выжить в безнадежном проекте / Э. Йордан. — М.: Лори, 2012. — 290 с.

  83. Емельянова Н. З. Проектирование информационных систем: Учебное пособие / Н. З. Емельянова, Т. Л. Партыка, И. И. Попов. - М.: Форум: НИЦ ИНФРА-М, 2014. – 432 с.

  84. Емельянова Н. З. Проектирование информационных систем: Учебное пособие / Н. З. Емельянова, Т. Л. Партыка, И. И. Попов. - М.: Форум: НИЦ ИНФРА-М, 2014. – 432 с.

  85. Мелехин В. Вычислительные машины / В. Мелехин, Е. Павловский. — М.: ДРОФА, 2013. — 384 с.

  86. Бодров О. А. Предметно-ориентированные экономические информационные системы / О. А. Бодров, Р. Е. Медведев. — М.: Горячая линия - Телеком, 2013. — 244 с.

  87. Затонский А. В. Информационные технологии: разработка информационных моделей и систем: Учебное пособие / А. В. Затонский – ИНФРА-М, 2014. – 344 с.