Методика программной инженерии. Урок 1. Введение. |
Автор megabax | |
14.11.2020 г. | |
Методика программной инженерии. Урок 1. Введение.Для начала давайте определимся с тем, что вообще такое программная инженерия. Программная инженерия (англ. software engineering) — это приложение систематического, дисциплинированного, измеримого подхода к развитию, функционированию и сопровождению программного обеспечения, а также исследованию этих подходов; то есть, приложение дисциплины инженерии к программному обеспечению (ISO/IEC/IEEE 24765-2010). Программная инженерия это также применение научных знаний, методов и опыта к разработке, тестированию и документированию программного обеспечения. К программной инженерии относиться и исследование этих принципов. Иными словами, это приложение инженерного подхода к программному обеспечению. Не стоит путать программную инженерию с разработкой программного обеспечения - это совершенно разные вещи. Разница состоит в том, что разработка программного обеспечения - это сам процесс написания программ, а также отладка, тестирования, документирование и прочее. А программная инженерия - это оптимизация разработки программ, наука о том, как писать программы лучше и качественнее. Вообще, программная инженерия - это довольно таки хитрая дисциплина. В частности, существует порядка 79 стандартов разработки ПО. Например, ГОСТ 34.601-90 и ISO/IEC 12205:1995 описывают каскадную модель жизненного цикла ПО. Программная инженерия предполагает консолидацию принципов математики, информатики, а также различных компьютерных наук. Кроме того, это системный подход к анализу, оценке, реализации, тестированию, обслуживанию и модернизации программного обеспечения. Основываясь на математике и компьютинге, программная инженерия занимается разработкой систематических моделей и надёжных методов производства высококачественного программного обеспечения. Данный подход распространяется на все уровни — от теории и принципов до реальной практики создания программного обеспечения, которая лучше всего заметна сторонним наблюдателям. Термин «программная инженерия» появился впервые в 1968 году
на конференции НАТО и предназначался, чтобы спровоцировать поиск решений для
происходившего в то время «кризиса программного обеспечения». С тех пор это
переросло в профессию программного инженера (англ. software engineer) и область
исследований, посвящённых созданию программного обеспечения, более
качественного, доступного, лучше поддерживаемого и быстрее разрабатываемого.
Money Magazine и Salary.com оценили профессию разработчика программного
обеспечения как лучшую работу в Америке в 2006 году Итак, программная инженерия - это научная дисциплина. Значит, она имеет предмет исследования. Предметом исследования программной инженерии является круг вопросов и проблем, возникающих при промышленной разработке программных продуктов. Особенности такой разработки связаны с коммерческим характером разрабатываемых программ, их конструктивной сложностью, коллективным характером работы и рядом других специфических характеристик. Программная инженерия (или промышленное программирование) обычно ассоциируется с разработкой больших и сложных программ коллективом программистов. Появление такой области деятельности, как программная инженерия было связано с тем, что при разработке программного обеспечения связано с рядом проблем, в частности, таких как высокая стоимость разработки программного обеспечения, сложностью его создания, необходимостью управления и прогнозирования процессов разработки. Сама идея программной инженерия возникла далеко не на пустом месте. сначала были некоторые предпосылки возникновения этой дисциплины. Перечислю их:
Может возникнуть вопрос: а в чем отличие информатики от программной инженерии? Информатика занимается теорией и методами вычислительных и программных систем, а программная инженерия рассматривает практические проблемы создания программного обеспечения. Но это вовсе не значит, что программный инженер не должен знать информатику. Еще как должен. Дело в том, что программная инженерия базируется на теоретических знаниях информатики, но по своей сути являясь практической наукой. К сожалению, в некоторых случаях, программные инженеры пренебрегают теоретическими знаниями, поэтому они используют приемы, которые могут быть использованы только в конкретных условиях, но не могут быть обобщены для других случаев. Кроме того, информатика - это не единственная теоретическая база программной инженерии. Дело в том, что круг проблем, стоящих перед программными инженерами гораздо шире, чем простое написание программы. Это и взаимодействие с заказчиком, и организация работ в коллективе, и управление финансами. Все это требует знаний, выходящих за рамки информатики. И, в заключении, отличие программной инженерии от других инженерий. Прежде всего отметим, что жизненный цикл продукта любой инженерии в упрощенном виде включает следующие фазы:
Компьютерная программа - это не материальный объект. Отсюда следует самое главное отличие, которое проявляется на этапе производства , которое состоит в копировании программы на другие носители. в отличии от создания материальных объектов стоимость этой фазы крайне мала. Если сам процесс кодирование программы считать элементом проектирования, то отсутствует также и фаза создания образца, так как программа строиться компилятором и линковщиком. Отсюда следующие выводы:
Другое отличие состоит в том, что программа - это искусственный объект. Иными словами, для программы нет объективных законов, которым бы она подчинялась. Поясню сказанное. Для строителей, например, объективным законом является строительная механика: условия равновесия, моменты сил, устойчивость механических систем. Инженер строитель может проверить соответствие своих архитектурных решений на соответствие этим законам и тем самым обеспечить удачу проекта. Эти законы объективны и они действуют перманентно. Казалось бы, у инженера программиста есть типовые проверенные временем архитектурные решения, например, клиент-серверные технологии. Но эти решения определяться уровнем развития вычислительной техники, с появлением новых принципиальных технических возможностей программному инженеру придется искать новые решения. Прямым следствием отсутствия возможностей теоретического контроля является тот факт, что единственным способом проверить качество решения - это тестирование готового программного продукта. Именно поэтому стоимость тестирования и последующей отладки является существенной частью стоимости ПО. Но с другой стороны, возможность тестирования - это в какой то мере и плюс. Инженер строитель, например, лишен возможности протестировать свой продукт перед его сдачей в эксплуатацию. Кроме того, программная инженерия - относительно молодая дисциплина. опыт которой насчитывается всего несколько десятков лет, а это довольно мало. |
« След. |
---|