Программирование - это просто
Advertisement
Главная arrow Математика и информатика arrow Методика программной инженерии. arrow Методика программной инженерии. Урок 1. Введение.
27.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Методика программной инженерии. Урок 1. Введение. Печать E-mail
Автор megabax   
14.11.2020 г.
New Page 1

Методика программной инженерии. Урок 1. Введение.

Для начала давайте определимся с тем, что вообще такое программная инженерия. Программная инженерия (англ. software engineering) — это приложение систематического, дисциплинированного, измеримого подхода к развитию, функционированию и сопровождению программного обеспечения, а также исследованию этих подходов; то есть, приложение дисциплины инженерии к программному обеспечению (ISO/IEC/IEEE 24765-2010). Программная инженерия это также применение научных знаний, методов и опыта к разработке, тестированию и документированию программного обеспечения. К программной инженерии относиться и исследование этих принципов. Иными словами, это приложение инженерного подхода к программному обеспечению. Не стоит путать программную инженерию с разработкой программного обеспечения - это совершенно разные вещи. Разница состоит в том, что разработка программного обеспечения - это сам процесс написания программ, а также отладка, тестирования, документирование и прочее. А программная инженерия - это оптимизация разработки программ, наука о том, как писать программы лучше и качественнее.

Вообще, программная инженерия - это довольно таки хитрая дисциплина. В частности, существует порядка 79 стандартов разработки ПО. Например,  ГОСТ 34.601-90 и ISO/IEC 12205:1995 описывают каскадную модель жизненного цикла ПО.

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

Термин «программная инженерия» появился впервые в 1968 году на конференции НАТО и предназначался, чтобы спровоцировать поиск решений для происходившего в то время «кризиса программного обеспечения». С тех пор это переросло в профессию программного инженера (англ. software engineer) и область исследований, посвящённых созданию программного обеспечения, более качественного, доступного, лучше поддерживаемого и быстрее разрабатываемого. Money Magazine и Salary.com оценили профессию разработчика программного обеспечения как лучшую работу в Америке в 2006 году
 

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

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

Сама идея программной инженерия возникла далеко не на пустом месте. сначала были некоторые предпосылки возникновения этой дисциплины. Перечислю их:

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

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

  • Изменение программ. При создании сложных программ не всегда удается точно поставить задачи, иногда постановки задачи приходиться изменять уже тогда, когда программу начали писать. Для решения этой проблемы придумали ООП-подход (объектно-ориентированное программирование). См. так же C# и ООП для профессионалов (платный раздел), особенно C# и ООП для профессионалов. Урок 1. Основы проектирования SOLID.

Может возникнуть вопрос: а в чем отличие информатики от программной инженерии? Информатика занимается теорией и методами вычислительных и программных систем, а программная инженерия рассматривает практические проблемы создания программного обеспечения.  Но это вовсе не значит, что программный инженер не должен знать информатику. Еще как должен. Дело в том, что программная инженерия базируется на теоретических знаниях информатики, но по своей сути являясь практической наукой. К сожалению, в некоторых случаях, программные инженеры пренебрегают теоретическими знаниями,  поэтому они используют приемы, которые могут быть использованы только в конкретных условиях, но  не могут быть обобщены для других случаев.  Кроме того, информатика - это не единственная теоретическая база программной инженерии. Дело в том, что круг проблем, стоящих перед программными инженерами гораздо шире, чем простое написание программы. Это и взаимодействие с заказчиком, и организация работ в коллективе, и управление финансами. Все это требует знаний, выходящих за рамки информатики.

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

  • Проектирование.

  • Создание образца.

  • Испытание.

  • Производство.

  • Эксплуатация.

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

  • Стоимость программы - это только стоимость ее проектирования и разработки исходного кода.

  • Стоимость проектирования коробочных продуктов "размазывается" по копиям.

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

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

 
« След.
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги