Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на госы бакалавриат комета.doc
Скачиваний:
403
Добавлен:
22.09.2018
Размер:
6.32 Mб
Скачать

8. Распределение затрат по фазам и видам работ программной разработки.

http://www.monographies.ru/ru/book/section?id=4633

Затраты на создание ПО можно разделить на три фазы.

  1. Создание оборудования на котором данное ПО будет функционировать.

  2. Разработка ПО

  3. Сопровождение ПО

Можно рассмотреть изменения этих затрат с течением времени. Так, на заре информационных технологий, в 50-е 60-е и 70-е, основной статьей затрат являлась разработка оборудования, занимавшая 80-90% бюджета проекта, втрое место было за разработкой ПО, на которую уходило порядка 10-15% и оставшаяся сумма, до 5% от бюджета, уходило на сопровождение. Такая динамика вызвана отсутствием стандартизации в производстве оборудования и софта и низкими возможностями машин того времени. Каждая система выполняла свою обособленную задачу, для которой должен был быть разработан собственный программный комплекс.

С началом 80-х и входом в широкий обиход стандарта IBM PC фокус в рассматриваемом процессе сместился в сторону разработки ПО. В большинстве случаев, кроме специфичных случаев производственных и бортовых ВС потребность в разработке оборудования просто отпала. Примерная оценка затрат по фазам может выглядеть так: 15-20% - разработка оборудования, 65-75% - разработка ПО, 5-20% - сопровождение после разработки. Такая динамика сохранялась вплоть до середины - конца 90-х кодов 20-го века.

Импульсом следующего смещения соотношения затрат можно считать дальнейшее развитие технологий разработки, таких как ООП, активное использование шаблонов итд, удешевившая и ускорившая процесс разработки практически полная гегемония стандарта IBM и мобильных на основе UNIX-подобных операционных систем в сфере создания ВС, практически полностью избавившая разработчиков от необходимости создания собственного оборудования и развитие коммуникационных технологий, и в первую очередь сети интернет, позволившее не только обеспечить устойчивый поток обновлений для существующих программных продуктов, но и создать обратную связь между пользователем и разработчиком, на основе которых данные обновления могут создаваться. Таким образом, на рубеже XXI века соотношение частей бюджета при разработке ПО можно оценить, как: 5-10% на создание систем, 10-20% на разработку софта, 70-85% на поддержку уже созданных программных решений. С течением лет данная динамика демонстрирует смещение в сторону увеличения затрат на поддержку.

Дополнение: фотка

9. Компилятор в языках высокого уровня. Функции. Виды компиляторов.

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

Языки высокого уровня делятся на:

  • процедурные = алгоритмические (Basic, Pascal, C), которые предназначены для однозначного описания алгоритмов; для решения задачи процедурные языки требуют в той или иной форме явно записать процедуру её решения;

  • логические (Prolog, Lisp), которые ориентированы не на разработку алгоритма решения задачи, а на систематическое и формализованное описание задачи с тем, чтобы решение следовало из составленного описания;

  • объектно-ориентированные (Object Pascal, C++, С#, Java), в основе которых лежит понятие объекта, сочетающего в себе данные и действия над нами. Программа на объектно-ориентированном языке, решая некоторую задачу, по сути описывает часть мира, относящуюся к этой задаче. Описание действительности в форме системы взаимодействующих объектов естественнее, чем в форме взаимодействующих процедур.

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

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

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

К таким средам разработки относятся уже устаревшие или устаревающие Турбо-Паскаль, Турбо-Си, Basic, Visual Studio-6, ранние версии Delphi.

Усложнение задач программирования привело к превращению сред разработки в технологии разработки. Одна из первых технологий под названием Java была предложена известной фирмой Sun Microsystems. Она позволила программистам впервые не учитывать архитектурных особенностей процессоров. Немного позже корпорацией Microsoft была изобретена технология .NET.

Эта технология представляет собой единую универсальную платформу (базу) программирования, одинаково пригодную для разработки любых программ, будь-то обычные Windows-приложения, приложения для работы с базами данных, Web-приложения или приложения для мобильных устройств.