Обзор программной инженерии

Давайте сначала поймем, что означает программная инженерия. Этот термин состоит из двух слов: программное обеспечение и инженерия.

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

Engineering с другой стороны, это все о разработке продуктов с использованием четко определенных научных принципов и методов.

Software engineeringинженерная отрасль, связанная с разработкой программного продукта с использованием четко определенных научных принципов, методов и процедур. Результатом разработки программного обеспечения является эффективный и надежный программный продукт.

Определения

IEEE определяет программную инженерию как:

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

(2) Изучение подходов, как в приведенном выше утверждении.

Фриц Бауэр, немецкий ученый-компьютерщик, определяет программную инженерию как:

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

Эволюция программного обеспечения

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

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

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

Законы эволюции программного обеспечения

Lehman дал законы эволюции программного обеспечения. Он разделил программное обеспечение на три разные категории:

  • S-type (static-type) - Это программное обеспечение, которое работает строго по определенным спецификациям и решениям. Решение и метод его достижения сразу же понятны перед написанием кода. Программное обеспечение s-типа меньше всего подвержено изменениям, поэтому оно является самым простым из всех. Например, программа-калькулятор для математических вычислений.
  • P-type (practical-type) - Это программа с набором процедур. Это определяется тем, что именно могут делать процедуры. В этом программном обеспечении можно описать спецификации, но решение не сразу становится очевидным. Например, игровой софт.
  • E-type (embedded-type) - Это программное обеспечение работает в соответствии с требованиями реальной среды. Это программное обеспечение имеет высокую степень развития, поскольку в реальных ситуациях происходят различные изменения в законах, налогах и т. Д. Например, программное обеспечение для онлайн-торговли.

Эволюция программного обеспечения E-Type

Lehman дал восемь законов эволюции программного обеспечения E-Type:

  • Continuing change - Программная система E-типа должна продолжать адаптироваться к изменениям реального мира, иначе она станет все менее полезной.
  • Increasing complexity - По мере развития программной системы E-типа ее сложность имеет тенденцию к увеличению, если не будет проведена работа по ее обслуживанию или уменьшению.
  • Conservation of familiarity - Знакомство с программным обеспечением или знания о том, как оно было разработано, почему оно было разработано именно таким образом, и т. Д. Должны быть сохранены любой ценой для внесения изменений в систему.
  • Continuing growth- Для того, чтобы система электронного типа была предназначена для решения некоторых бизнес-задач, размер ее внедрения изменений увеличивается в соответствии с изменениями образа жизни в бизнесе.
  • Reducing quality - Качество программной системы E-типа снижается, если ее не поддерживать и не адаптировать к меняющейся операционной среде.
  • Feedback systems- Программные системы E-типа представляют собой многоконтурные, многоуровневые системы обратной связи и должны рассматриваться как таковые для успешного изменения или улучшения.
  • Self-regulation - Процессы развития систем E-типа являются саморегулирующимися, при этом распределение продуктов и показателей процесса близко к нормальному.
  • Organizational stability - Средняя эффективная глобальная активность в развивающейся системе E-типа неизменна на протяжении всего срока службы продукта.

Программные парадигмы

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

Парадигма программирования - это подмножество парадигмы проектирования программного обеспечения, которое также является подмножеством парадигмы разработки программного обеспечения.

Парадигма разработки программного обеспечения

Эта парадигма известна как парадигма программной инженерии, в которой применяются все инженерные концепции, относящиеся к разработке программного обеспечения. Он включает в себя различные исследования и сбор требований, которые помогают разрабатывать программный продукт. Это состоит из -

  • Сбор требований
  • Разработка программного обеспечения
  • Programming

Парадигма дизайна программного обеспечения

Эта парадигма является частью разработки программного обеспечения и включает:

  • Design
  • Maintenance
  • Programming

Парадигма программирования

Эта парадигма тесно связана с программным аспектом разработки программного обеспечения. Это включает в себя -

  • Coding
  • Testing
  • Integration

Потребность в разработке программного обеспечения

Потребность в разработке программного обеспечения возникает из-за более высокой скорости изменения требований пользователей и среды, в которой работает программное обеспечение.

  • Large software - Легче построить стену, чем дом или здание, поскольку размер программного обеспечения становится большим, инженеры должны сделать шаг, чтобы придать ему научный процесс.
  • Scalability- Если бы процесс разработки программного обеспечения не основывался на научных и инженерных концепциях, было бы легче воссоздать новое программное обеспечение, чем масштабировать существующее.
  • Cost- Поскольку аппаратная промышленность показала свои навыки, и огромное производство снизило цены на компьютерное и электронное оборудование. Но стоимость программного обеспечения остается высокой, если не адаптировать соответствующий процесс.
  • Dynamic Nature- Постоянно растущий и адаптирующийся характер программного обеспечения во многом зависит от среды, в которой работает пользователь. Если природа программного обеспечения постоянно меняется, необходимо внести новые улучшения в существующее. Именно здесь программная инженерия играет важную роль.
  • Quality Management- Более совершенный процесс разработки программного обеспечения обеспечивает лучший и качественный программный продукт.

Характеристики хорошего ПО

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

  • Operational
  • Transitional
  • Maintenance

Ожидается, что хорошо спроектированное и созданное программное обеспечение будет иметь следующие характеристики:

Оперативный

Это говорит нам о том, насколько хорошо программное обеспечение работает в процессе эксплуатации. Его можно измерить:

  • Budget
  • Usability
  • Efficiency
  • Correctness
  • Functionality
  • Dependability
  • Security
  • Safety

Переходный

Этот аспект важен при переносе программного обеспечения с одной платформы на другую:

  • Portability
  • Interoperability
  • Reusability
  • Adaptability

Обслуживание

Этот аспект кратко описывает, насколько хорошо программное обеспечение способно поддерживать себя в постоянно меняющейся среде:

  • Modularity
  • Maintainability
  • Flexibility
  • Scalability

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