Программирование - это просто
Advertisement
Главная arrow Биржевые роботы arrow Методика программной инженерии. arrow Методика программной инженерии. Урок 1. Введение.
26.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
Я принимаю Яндекс.Деньги