Заметки системного архитектора № 12: Программная инженерия

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

  1. Анализ и планирование требований:  определите потребности пользователей, поймите функциональные требования и требования к производительности программной системы и выполните системное планирование, включая объем проекта, оценку времени и распределение ресурсов.
  2. Разработка программного обеспечения:  в соответствии с требованиями и спецификациями выполнить проектирование архитектуры программного обеспечения и детальное проектирование, определить программные компоненты, модули, интерфейсы и структуры данных и т. д., чтобы реализовать функциональные требования и требования к производительности системы.
  3. Кодирование и реализация:  Используя язык программирования и инструменты разработки, в соответствии со спецификацией дизайна напишите код программного обеспечения и проведите модульное тестирование, интеграционное тестирование и системное тестирование, чтобы убедиться в правильности и надежности программного обеспечения.
  4. Обслуживание программного обеспечения.  Обслуживание программного обеспечения является важным аспектом разработки программного обеспечения, включая исправление ошибок, улучшение функций, оптимизацию производительности, обновления безопасности и т. д., чтобы обеспечить доступность и непрерывную работу программного обеспечения.
  5. Управление качеством:  разработка программного обеспечения связана с управлением качеством программного обеспечения, включая тестирование программного обеспечения, проверку кода, оценку производительности и измерение качества, чтобы обеспечить надежность, ремонтопригодность и масштабируемость программного обеспечения.
  6. Управление проектами  . В разработке программного обеспечения управление проектами включает в себя управление ресурсами, контроль графика, управление рисками и командную работу, чтобы гарантировать, что программные проекты выполняются вовремя и в рамках бюджета.

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

RUP (рациональный унифицированный процесс)

RUP (Rational Unified Process) — широко используемая модель процесса разработки программного обеспечения, разработанная и продвигаемая компанией IBM Rational Software. Он основан на итеративной и поэтапной методологии с упором на визуальное моделирование, документирование и командную работу в процессе разработки программного обеспечения. RUP предоставляет структуру, включающую передовой опыт, принципы, рекомендации и инструменты, помогающие командам разработчиков стандартизировать процесс разработки программного обеспечения и управлять им. Ниже приведены основные функции и компоненты RUP:

  1. Итеративная разработка:  RUP использует итеративный подход к разработке программного обеспечения и делит весь процесс разработки на ряд итерационных циклов, каждый из которых включает в себя такие действия, как анализ требований, проектирование, кодирование, тестирование и выпуск. Каждый итерационный цикл производит приращения программного обеспечения для постепенного улучшения системы.
  2. Варианты использования:  RUP берет варианты использования в качестве ядра и определяет функции и поведение системы посредством анализа и моделирования требований пользователей. Метод разработки на основе прецедентов делает упор на разработку, основанную на потребностях и функциях пользователей, чтобы гарантировать, что программное обеспечение соответствует ожиданиям пользователей.
  3. Центр архитектуры:  RUP фокусируется на общей архитектуре программной системы и обеспечивает стабильность, масштабируемость и ремонтопригодность системы, создавая и поддерживая представление архитектуры системы.
  4. Итеративное управление рисками:  RUP фокусируется на управлении проектными рисками и контроле над ними. В начале каждого цикла итерации проводите оценку рисков и формулируйте соответствующие стратегии управления рисками, чтобы снизить или избежать проектных рисков.
  5. Адаптивность и настраиваемость:  RUP предоставляет набор настраиваемой структуры процесса разработки, которую можно настроить в соответствии с характеристиками и потребностями проекта, адаптируя к различным масштабам и типам программных проектов.
  6. Командная работа и общение:  RUP поощряет тесное сотрудничество и хорошее общение между членами группы разработчиков программного обеспечения. Содействуйте эффективному сотрудничеству между членами команды, определяя роли, обязанности и задачи.

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

гибкая модель

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

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

  1. Люди и взаимодействие важнее процессов и инструментов:  гибкая модель фокусируется на сотрудничестве и общении между членами команды и считает, что человеческие возможности и отношения сотрудничества важнее, чем инструменты и процессы.
  2. Работающее программное обеспечение важнее исчерпывающей документации:  модель Agile подчеркивает, что наиболее важным результатом является действительно работающее программное обеспечение, а не чрезмерная документация.
  3. Сотрудничество с клиентами вместо переговоров по контракту (Сотрудничество с клиентами вместо переговоров по контракту):  гибкая модель делает упор на тесное сотрудничество и общение с клиентами, а также на удовлетворение потребностей клиентов за счет постоянной обратной связи и изменений спроса.
  4. Реагирование на изменения вместо следования плану:  модели Agile поощряют команды быстро реагировать на изменения и адаптироваться к меняющимся потребностям, гибко корректируя планы.

Модель Agile использует итеративный подход к разработке программного обеспечения, и каждый итерационный цикл обычно называется «итерацией» или «спринтом» и обычно длится от 1 до 4 недель. Каждая итерация имеет четкие цели и доставляемые приращения программного обеспечения. Команды проводят анализ требований, проектирование, кодирование, тестирование и поставку в каждой итерации, создавая программное обеспечение в быстрых итерациях.

Общие практики гибкой модели включают:

  1. Scrum (Scrum):  Scrum — это гибкая среда разработки, в которой особое внимание уделяется самоорганизации команды, итеративной разработке и непрерывной доставке. Он способствует командному сотрудничеству и повышению эффективности за счет определения ролей (таких как скрам-мастер, владелец продукта и команда разработчиков), ритуалов (таких как ежедневные стендапы, ретроспективы и встречи по планированию) и артефактов (таких как бэклог продукта и обзор спринта).
  2. Канбан (Kanban):  Канбан — это гибкий метод, оптимизирующий рабочий процесс и повышающий эффективность команды за счет визуализации Канбана и ограничения количества задач в рабочем процессе. Канбан делает упор на визуализацию процессов, ограничивает количество выполняемых задач и поощряет сотрудничество и постоянное совершенствование среди членов команды.
  3. Непрерывная интеграция и непрерывная доставка.  Гибкая модель побуждает команды применять методы непрерывной интеграции и непрерывной доставки для обеспечения частой и надежной доставки программного обеспечения за счет автоматизации процессов сборки, тестирования и развертывания.

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

Модель зрелости возможностей программного обеспечения (сокращенно CMM или SW-CMM) представляет собой основу для оценки и улучшения организационных возможностей разработки программного обеспечения. Первоначально он был разработан Институтом разработки программного обеспечения (SEI) Университета Карнеги-Меллона в США и выпущен в 1987 году.

Модель зрелости программных возможностей

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

Модель зрелости программных возможностей обычно включает следующие этапы:

  1. Начальная стадия (Уровень 1 — Initial):  На начальной стадии процесс организации разработки программного обеспечения является непредсказуемым и неконтролируемым. Процесс разработки часто неструктурирован и недисциплинирован, ему не хватает стандартизации и документации.
  2. Стадия повторяемости (уровень 2 — повторяемость):  на стадии повторяемости организация, занимающаяся разработкой программного обеспечения, начинает устанавливать основные процессы управления, чтобы гарантировать воспроизводимость и управляемость процесса разработки программного обеспечения. Организации используют некоторые стандартизированные процессы и инструменты и документируют ключевые действия и рекомендации.
  3. Определенная фаза (уровень 3 — определенная):  на определенной фазе организация по разработке программного обеспечения устанавливает набор стандартизированных процессов разработки программного обеспечения и гарантирует, что все проекты следуют этим процессам. Организации проводят подробную документацию процесса и проводят обучение, чтобы гарантировать, что разработчики соблюдают норму.
  4. Управляемая фаза (уровень 4 — управляемая).  На управляемой фазе организация, занимающаяся разработкой программного обеспечения, количественно оценивает и измеряет процесс разработки программного обеспечения для управления и повышения производительности процесса. Организации собирают и анализируют данные для информирования об улучшении процессов и обеспечения стабильности и предсказуемости процессов.
  5. Стадия оптимизации (уровень 5 — Оптимизация):  на стадии оптимизации организация, занимающаяся разработкой программного обеспечения, постоянно совершенствует процесс разработки программного обеспечения для достижения постоянного улучшения качества и повышения эффективности. Организации стремятся внедрять инновации и внедрять новые технологии и методологии для дальнейшей оптимизации процесса разработки программного обеспечения.

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

おすすめ

転載: blog.csdn.net/u010986241/article/details/131167122