Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Понятия «программирование», «программа»




Основные понятия программной инженерии

В конце 60-х - начале 70-х годов прошлого века произошло событие, которое вошло в историю как первый кризис программирования. Событие состояло в том, что стоимость программного обеспечения стала приближаться к стоимости аппаратуры («железа»), а динамика роста этих стоимостей позволяла прогнозировать, что к середине 90-годов все человечество будет заниматься разработкой программ для компьютеров. Тогда и заговорили о программной инженерии (или технологии программирования, как это называлось в России) как о некоторой дисциплине, целью которой является сокращение стоимости программ.

На сегодняшний день нет единого определения понятия «программная инженерия». Сам термин программная инженерия впервые был озвучен в октябре 1968 года на конференции подкомитета НАТО по науке и технике (г.Гармиш, Германия). Присутствовало 50 профессиональных разработчиков ПО из 11 стран. Рассматривались проблемы проектирования, разработки, распространения и поддержки программ. Там.впервые и прозвучал термин «программная инженерия» как некоторая дисциплина, которую надо создавать и которой надо руководствоваться в решении проблем, возникших в области разработки ПО.

Как и любая другая дисциплина, программная инженерия имеет свой предмет изучения, а также свои цели и задачи. В первом приближении можно сказать, что предметом изучения дисциплины программная инженерия ($о/Ьмаге еп§теепп§) является процесс производства программного обеспечения (ПО).

Для определения целей и задач дисциплины необходимо определить ряд понятий.

Целью программирования является описание процессов обработки данных (в дальнейшем - просто процессов).

Согласно 1РТР (Международная федерация по обработке информации): данные (Ла1а) - это представление фактов и идей в формализованном виде, пригодном для передачи и переработке автоматизированным способом, с использованием технических средств.

Обработка данных (йаШ ргосеззт^) - это выполнение систематической последовательности действий с данными.

Данные представляются и хранятся на носителях данных. Совокупность носителей данных, используемых при какой-либо обработке данных, будем называть информационной средой (аа1а тесИит). Набор данных, содержащихся в какой-либо момент в информационной среде, будем называть состоянием этой информационной среды. Тогда процесс обработки данных можно представить как последовательность сменяющих друг друга состояний некоторой информационной среды.

Следовательно, описать процесс это значит определить

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

Понятие «программный продукт»

Человеку (программисту], прежде чем состанпп. программу на удобном для него языке программирования, приходная проделывать большую подготовительную работу:

- уточнить постановку задачи

- выбрать метод ее решения

- выяснить специфику применения требуемой прш раммы

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

понимания программы человеком, поэтому необходимо ее фиксировать в виде отдельных документов (часто не формализованных, рассчитанных только для восприятия человеком).

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

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

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

- коробочные продукты (§епепс ргоёисй - общие продукты или зпппк-\лтаррес! зой\уаге - упакованное ПО);

- заказные продукты (Ьезроке - сделанный на заказ или сш^огшгес! ргоёисЬ-настроенный продукт).

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

Понятие «программная инженерия»

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

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

Таким образом, программная инженерия - это инженерная дисциплина. Что это означает?

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

Инженеры — это те специалисты, которые выполняют практическую работу и добиваются практических результатов.

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

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

- инженеры работают в условиях ограниченных ресурсов: временных, финансовых и организационных (оборудование, техника, люди). <Иными словами, продукт должен быть создан в установленные сроки, в рамках выделенных средств, оборудования и людей. Хотя это в первую очередь относится к созданию заказных продуктов (оговаривается в условиях контракта), но при создании коробочных продуктов эти ограничения имеют не меньшее значение, т.к. здесь они диктуются условиями рыночной конкуренции;».

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

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

В чем отличие программной инженерии от других инженерных дисциплин?

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

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

- стоимость программы = стоимости ее проектирования;

- стоимость проектирования коробочных продуктов «размазывается» по копиям;

- стоимость заказных продуктов остается высокой.

Второе существенное отличие заключается в том, что компьютерная программа - искусственный объект в том смысле, что для нее нет объективных законов, которым подчинялось бы ее поведение. <Например. у инженера—строителя есть объективные законы строительной механики: равновесия моментов и сил. устойчивости механических систем и т.д. Инженер-строитель может проверить свои архитектурные решения на соответствие этим законам и тем самым обеспечить удачу проекта. Эти законы объективны, они будут действовать всегда. У программного инженера на первый взгляд также есть типовые, проверенные временем архитектурные решения (например, клиент-серверная архитектура). Но эти решения определяются уровнем развития вычислительной техники (и адекватным им уровнем требований). С появлением техники с принципиально новыми возможностями программному инженеру придется искать новые решения. >

Прямым следствием отсутствия возможности «теоретического» контроля проекта является то, что тестирование продукта это

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

Ну и наконец, программная инженерия - молодая дисциплина, опыт которой насчитывает всего несколько десятков лет. По сравнению с опытом строительной инженерии (тысячелетия) это конечно очень мало. <Программную инженерию иногда сравнивают с ранней строительной, когда законы строительной механики еще не были известны и строительные инженеры действовали методом проб и ошибок, накапливая бесценный опыт. > Несмотря на МОЛОДОЙ возраст, программная инженерия также накопила определенный опыт, который позволяет (при разумном его применении) делать удачные проекты. Этот опыт выражен в основных принципах программной инженерии, которые мы с вами сейчас рассмотрим.




Поделиться с друзьями:


Дата добавления: 2014-11-29; Просмотров: 1612; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.026 сек.