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


Скачать 3.64 Mb.
Название Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных
страница 1/47
Тип Документы
rykovodstvo.ru > Руководство эксплуатация > Документы
  1   2   3   4   5   6   7   8   9   ...   47
Программная инженерия

Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных контекстах. Можно программировать для удовольствия, для того, чтобы научиться (например, на уроках, на семинарах в университете), можно программировать в рамках научных разработок. А можно заниматься промышленным программированием. Как правило, это происходит в команде, и совершенно точно – для заказчика, который платит за работу деньги. При этом необходимо точно понимать, что нужно заказчику, выполнить работу в определенные сроки и результат должен быть нужного качества – того, которое удовлетворит заказчика и за которое он заплатит. Чтобы удовлетворить этим дополнительным требованиям, программирование "обрастает" различными дополнительными видами деятельности: разработкой требований, планированием, тестированием, конфигурационным управлением, проектным менеджментом, созданием различной документации (проектной, пользовательской и пр.).

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

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

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

Все эти и другие дополнительные виды деятельности, выполняемые в процессе промышленного программирования и необходимые для успешного выполнения заказов и будем называть программной инженерией (software engineering)1). Получается, что так мы обозначаем, во-первых, некоторую практическую деятельность, а во-вторых, специальную область знания. Или другими словами, научную дисциплину. Ведь для облегчения выполнения каждого отдельного проекта, для возможности использовать разнообразный положительный опыт, достигнутый другими командами и разработчиками, этот самый опыт подвергается осмыслению, обобщению и надлежащему оформлению. Так появляются различные методы и практики (best practices) – тестирования, проектирования, работы над требованиями и пр., архитектурных шаблонов и пр. А также стандарты и методологии, касающиеся всего процесса в целом (например, MSF, RUP, CMMI, Scrum). Вот эти-то обобщения и входят в программную инженерию как в область знания.

Необходимость в программной инженерии как в специальной области знаний была осознана мировым сообществом в конце 60-х годов прошлого века, более чем на 20 лет позже рождения самого программирования, если считать таковым знаменитый отчет фон Неймана "First Draft of a Report on the EDVAC", обнародованный им в 1945 году. Рождением программной инженерии является 1968 год – конференция NATO Software Engineering, г. Гармиш (ФРГ), которая целиком была посвящена рассмотрению этих вопросов. В сферу программной инженерии попадают все вопросы и темы, связанные с организацией и улучшением процесса разработки ПО, управлением коллективом разработчиков, разработкой и внедрением программных средств поддержки жизненного цикла разработки ПО. Программная инженерия использует достижения информатики, тесно связана с системотехникой, часто предваряется бизнес-реинжинирингом. Немного подробнее об этом контексте программной инженерии.

Информатика (computer science) – это свод теоретических наук, основанных на математике и посвященных формальным основам вычислимости. Сюда относят математическую логику, теорию грамматик, методы построения компиляторов, математические формальные методы, используемые в верификации и модельном тестировании и т.д. Трудно строго отделить программную инженерию от информатики, но в целом направленность этих дисциплин различна. Программная инженерия нацелена на решение проблем производства, информатика – на разработку формальных, математизированных подходов к программированию.

Системотехника (system engineering) объединяет различные инженерные дисциплины по разработке всевозможных искусственных систем – энергоустановок, телекоммуникационных систем, встроенных систем реального времени и т.д. Очень часто ПО оказывается частью таких систем, выполняя задачу управления соответствующего оборудования. Такие системы называются программно-аппаратными, и участвуя в их создании, программисты вынуждены глубоко разбираться в особенностях соответствующей аппаратуры.

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

Связь программной инженерии (как области практической деятельности) с информатикой, системотехникой и бизнес-реинжинирингом показана на рис. 1.1.

 

Программное обеспечение

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

Это определение, данное Харальдом Милсом, известным специалистом в области программной инженерии из компании IBM, заключает в себе следующее.

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

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

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

  4. ПО развивается во времени – исправляются ошибки, добавляются новые функции, выпускаются новые версии, меняется его аппаратная база.


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

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

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

  3. Изменяемость – ПО легко изменить и, как следствие, требования к нему постоянно меняются в процессе разработки. Это создает много дополнительных трудностей при его разработке и эволюции.

  4. Нематериальность2) – ПО невозможно увидеть, оно виртуально. Поэтому, например, трудно воспользоваться технологиями, основанными на предварительном создании чертежей, успешно используемыми в других промышленных областях (например, в строительстве, машиностроении). Там на чертежах в схематичном виде воспроизводятся геометрические формы создаваемых объектов. Когда объект создан, эти формы можно увидеть. А на чем мы основываемся, когда изображаем ПО?
  1   2   3   4   5   6   7   8   9   ...   47

Похожие:

Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon Кодекс этики и профессиональной деятельности в области программной инженерии (версия 2)

Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon Рассказ о почве воспитателя
Динозаврик отличается от слона тем, что у него длинная шея, короткие ноги, длинный и толстый хвост, а ещё он зелёного цвета
Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon Содержание
ПО. По данным Института программной инженерии (Software Engineering Institute, sei) в последние годы до 80% всего эксплуатируемого...
Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon Национальный исследовательский университет «высшая школа экономики»...
Библиотека распространяется как проект на C#. Для ее использования необходимо добавить этот проект в существующее решение
Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon Эрнест Цветков Ловушка для человека, или Путеводитель по внутренним...
В последнее время как-то сама собой стерлась грань | между тем, что я пишу, тем, что я говорю и тем, что я делаю
Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon 1. Спецификация метамодели программной и системной инженерии процессов, версия 0 (spem 0)
В данном сокращенном переводе приведены те фрагменты текста, которые соответстсвуют понятийной части метамодели и не затрагивают...
Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon Что это такое рпд?
В роторном же двигателе каждый процесс выполняется в отдельном отсеке камеры. Эффект мало чем отличается от разделения цилиндра на...
Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon Законодательство об охране труда
Мы осуществляем печать учебных плакатов различной тематики, а также изготовление стендов. Наша продукция отличается высоким качеством...
Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon Инструкция по применению и техническому обслуживанию порошковых огнетушителей...
Огнетушители порошковые ручные опу-5, 10; опг- 5, 7; оп-5Ф, 7Ф, 10Ф предназначены для тушения загораний различных веществ, горение...
Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon Илии Шугаева "Один раз на всю жизнь"
В книге рассматриваются основы семейной жизни и решается целый ряд вопросов: чем отличается любовь от влюбленности, что такое первая...
Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon Программа психологического сопровождения и подготовки выпускников...
Егэ как форма экзамена появился сравнительно недавно и ввиду внедрения каждый год меняются требования к проведению экзамена, и с...
Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon “Бизнес и Евангелие” с незамысловатой идеей о том, что только истинно-евангельская...
От того, кто призывает к жизненной серьезности, слушатель требует не менее дотошного обоснования выводов, чем требуется от соискателя...
Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon Рцмо в 2014/15 учебном году предлагает проведение мониторингов
Данный мониторинг отличается от предыдущих тем, что третий этап (итоговый) проводится по аналогии с гиа и егэ (индивидуальные пакеты,...
Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon Законы. 100
Каково же христианское понимание брака? Чем оно отличается от других религий и верований? Как совмещаются идеалы девства и супружества?...
Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon Мы благодарим Вас за поддержку! Сделав выбор в пользу нашего оборудования,...
Олее важным качеством данной машины является то, что она может использоваться для упаковывания в вакууме или при подкачке азота при...
Чем программирование отличается от программной инженерии? Тем, что первое является некоторой абстрактной деятельностью и может происходить во многих различных icon 2. Инструкции по технике безопасности
Генератор может использоваться во многих областях и является превосходной поддержкой для работы осветительного оборудования

Руководство, инструкция по применению




При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск