Добавил:
По своей натуре перфекционист. Поэтому люблю все аккуратно оформлять и упорядочивать, складывать по полочкам. Вот, не пропадать же добру, нажитому за четыре кропотливых семестра. Тут я выложил все мои ответы, курсовые, отчеты и некоторые ДЗ. Они могут вам помочь для получения зачета или сдачи экзамена. Если чего-то не нашли в папочках, то попытайте удачу в разделе НЕОТСОРТИРОВАННОЕ на моей страничке, там все 4 семестра разложены по папкам. ГРУППА КТ-43-15. Годы обучения 2015-2019. Коллекция будет пополняться. Что ж, удачки :З Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
61
Добавлен:
15.09.2017
Размер:
8 Кб
Скачать
Теория и практика программной инженерии
Теория помогает инженерам традиционных специализаций созда-вать и изучать методы, оценивать результаты и оптимизировать процессы. Играет ли теория аналогичную роль в программной инженерии?
Проблемы программной инженерии
Программная инженерия — это, по определению, прикладная область и частично практический предмет, однако научные открытия и знания не яв-ляются основными мерилами ее успеха: программные инженеры-практики главным образом занимаются созданием и развитием программных систем, стараясь придерживаться запланированных темпов, обеспечивать качество и оставаться в рамках бюджета. Мерой успеха здесь является объем созданных концепций, методик и процессов, позволяющих разработчикам решать задачу жизнеобеспечения программного продукта. Кроме разработки и со-провождения ПО, для данной задачи характерен еще ряд подзадач: анализ требований, разработка спецификаций, реализация, интеграция и аттестация.
Инженерные дисциплины, в отличие от программной инженерии, долж-ны базироваться на научных практических методах и обосновывающей их теории. В решении задачи такого обоснования могут помочь на-учные методы, в том числе анализ теоретических идей, эмпирические и экс-периментальные исследования, а также связанные концепции из области психологии, экономики и других дисциплин. Исследователи могут создавать, адаптировать и далее развивать эти научные методы, чтобы более полно обосновывать методы программной инженерии.
Может ли теория улучшить программную инженерию?
В недавней статье Ивара Якобсона и Яна Спенса по теории программ-ной инженерии говорится: «Наша важнейшая задача — понять, как строить качественное программное обеспечение». Но что именно подразумевается под словом «качественное»? Есть ли методы, помогающие отличить качест-венное ПО от не очень? Даже простые вопросы вроде этих опираются на критерий качества.
Если задача инженеров ПО — построить и далее развивать программ-ную систему и если методологическая и техническая зрелость программной инженерии недостаточна, то кто должен совершенствовать сами методы раз-работки? Исходящие от индустрии и научного сообщества инициативы ис-следований и усовершенствований, пытавшиеся улучшить методологию про-граммной инженерии, натолкнулись на ряд трудноразрешимых проблем:
• ввод точной и адекватной терминологии (например, более удачных тер-минов, чем "качественный", для указания качества ПО);
• разработка методов построения ПО достаточного качества;
• идентификация методов измерения и оценки как самого ПО, так и эффек-тивности процессов, концепций и инструментов, используемых для его разработки.

Предлагать новые инженерные методы без их тщательного обоснова-ния бессмысленно. К сожалению, исследователи нередко выступают за раз-личные методы, не выполнив достаточного анализа или не приведя свиде-тельств тому, насколько хорошо, при каких ограничениях и почему именно эти методы будут действенными. Например, «Манифест быстрой разработ-ки» перечисляет ряд на первый взгляд многообещающих методов, но не предлагает научного подтверждения того, что эти методы действительно обеспечат достаточное качество ПО. Программной инженерии нужна теория для оценки КПД и эффективности методов разработки, благодаря которой в конечном итоге возникли бы обоснованные и эмпирически проверенные ме-тодологические знания.
Ремесло, наука или инженерная дисциплина?
Ремесло применяет традиционные методы для изготовления изделий и предоставления услуг.
Наука собирает, проверяет, документирует знания и открытия с помощью исследований.
Инженерия применяет знания, научно обоснованные методы для разра-ботки и изготовления технических изделий.
Чтобы превратить ремесло в инженерию, нужно применять научные теории для анализа и обоснования методов и технологий. С точки зрения ре-месла не важно понимать, почему работают те или иные методы и как их можно обосновать и оптимизировать, достаточно того, что они дают удовле-творительный результат. Для инженерии же, напротив, ключевыми являются вопросы о том, как систематически создавать новые методы, почему те или иные технологии действенны и как с помощью научных методов обосновать, соотнести, доказать и оптимизировать их.
Во всем мире университеты разрабатывают курсы по программной ин-женерии, дополняющие существующие программы по информатике и ком-пьютерной инженерии.
Ремесло и инженерия имеют много общего, поскольку у них схожие цели: создание конструктивных решений практических проблем изготовле-ния изделий и предоставления услуг. Соответственно граница между ремес-лом и инженерией размыта, например, существует мнение, что разработка ПО сегодня в большой степени ремесло. Однако, согласно определению, ре-месло пользуется традиционными методами, а поскольку разработка ПО еще молодая область, у нее нет достаточного количества таких методов. В неко-торых отношениях данная дисциплина эмпирическая, опирающаяся на мето-дики, которые нельзя назвать хорошо проверенными. Эволюция традицион-ных методов требует времени, а сфера ПО все еще стремительно развивается.
Проявляются и другие различия. В противоположность традиционному ремесленничеству, в котором обычно участвуют малые группы исполните-лей, программные проекты и их бюджеты могут быть колоссальными. Кроме того, командами разработки больших сложных программных систем необхо-димо управлять с помощью организационных структур и процессов. Еще сложнее дело обстоит со стратегическим развитием больших семейств про-граммных систем, для этого нужно нечто более основательное, чем принци-пы ремесла, то есть необходима теория.
Без теории не обойтись в деле решения любых сложных задач. Чем сложнее инженерная дисциплина, тем важнее для нее теоретическая база, а программное обеспечение может быть чрезвычайно сложным.
Зачем нужна теория?
Для успеха программной инженерии требуется знание различных ас-пектов ПО и его эволюции: методологии, в том числе разработки требований, архитектурного проектирования, обеспечения качества кода, интеграции и верификации, внедрения и переноса, а также модификации и совершенство-вания программных систем; принципов организации работы и управления эволюцией ПО; знаний в конкретной предметной области; технических све-дений об аппаратном обеспечении; особенностей взаимодействия человека с машиной; экономических аспектов ПО, маркетинга и предпринимательства.
В программной инженерии также есть многочисленные абстрактные концепции, зачастую трудные в понимании из-за неточных терминов, напри-мер, «модульность», «совместимость» и «трассировка». Эти понятия часто встречаются в публикациях и используются на практике, но при этом нет общепринятых определений, позволяющих четко установить, что они озна-чают, и в каких областях и по какой причине важны. Именно поэтому теория имеет значение — она помогает определять и оценивать концепции, являю-щиеся базой для установления инженерной терминологии и методов.
Теория и методы
Инженерные дисциплины не могут существовать без теории, однако для программной инженерии также нужны методы, помогающие решать за-дачи разработки и эволюции программной системы. Чтобы эти методы были эффективными, исследователи должны оценивать, обосновывать и класси-фицировать их с целью определения их действенности и ограничений.
Как и другие дисциплины, программная инженерия имеет множество аспектов: люди, управление и команды; экономика и расходы; методология, инструменты и процессы разработки; факторы взаимодействия человека с машиной; технологии (оборудование, операционные системы и языки про-граммирования).
Исследователи могут применять теорию для интерпретации и разъяс-нения препятствий, мешающих инженерной практике, а также предлагать конструктивные обоснования инженерных методов и инструментов. То, на-сколько теория и методы важны для инженерии, очевидно на примере разра-ботки компиляторов. Благодаря системному применению теории в данной области, в том числе бесконтекстной грамматики и генераторов, эта область разработки ПО стала зрелой одной из первых.


Соседние файлы в папке Курсовая Информатика Стеценко