Инженерия программных систем — различия между версиями

м
 
(не показано 5 промежуточных версий этого же участника)
Строка 1: Строка 1:
'''Инженерия программных систем''' (Software Systems Engineering) - термин, предложенный Уинстоном Ройсом (Winston Royce), подчеркивающий тот факт, что '''Программная инженерия''' (Software Engineering) и '''Системная инженерия''' (Systems Engineering) имеют много общего. Так, например, принципы и методики системной инженерии применимы к программной, а многие концепции из программной инженерии дали начало появлению их в системной. Например, [[MBSE#Стандарты MBSE| OOSE]] (Object-oriented software engineering).
+
'''Инженерия программных систем''' (Software Systems Engineering) - термин, предложенный Уинстоном Ройсом (Winston Royce), подчеркивающий тот факт, что '''[[Программная инженерия]]''' (Software Engineering) и '''[[Системная инженерия]]''' (Systems Engineering) имеют много общего. Так, например, принципы и методики системной инженерии применимы к программной, а многие [[:Категория:Концепции|концепции]] из программной инженерии дали начало появлению их в системной. Например, [[MBSE#Стандарты MBSE| OOSE]] (Object-oriented software engineering).
  
 
== Концепции ==
 
== Концепции ==
'''Программное обеспечение''' - это совокупность трех компонентов:
+
'''[[Программное обеспечение]]''' - это совокупность трех компонентов:
 
* ''Команды'' (компьютерная программа, код). Команды различаются по уровню детальности, синтаксису и языку.
 
* ''Команды'' (компьютерная программа, код). Команды различаются по уровню детальности, синтаксису и языку.
 
* ''Структуры данных'' - информация, подлежащая обработке и преобразованию посредством команд.
 
* ''Структуры данных'' - информация, подлежащая обработке и преобразованию посредством команд.
Строка 9: Строка 9:
 
'''[[Программная система]]''' - это программное обеспечение, которое к тому же удовлетворяет определению [[система|системы]].
 
'''[[Программная система]]''' - это программное обеспечение, которое к тому же удовлетворяет определению [[система|системы]].
  
== Классификация ПО ==
+
== Виды описания ==
* ''Системное ПО'' - предоставляет службы (услуги) другим программам
+
Идеологи объектноориентированного-движения задали два основных структурированных вида описания хода инженерной [[Разработка|разработки]] (development process, engineering methodology):
* ''Встроенное ПО'' - является частью более крупной системы и реализует конкретные функции или задачи
+
* использование “[[Паттерны|языков паттернов]]” (ищутся некоторые “паттерны” — неформально определяемые способы решения задач, при этом каждый паттерн описывается по заранее известному шаблону, в который обычно входит описание проблемы и типовой способ её решения). Паттерны — это чистой воды эвристики, никаких попыток выйти на какие-то более-менее формальные “языки паттернов” не делалось.
* ''Прикладное ПО'' - автономная программа, удовлетворяющая конкретную потребность
+
* дисциплина “[[Ситуационная инженерия методов]]” (situational method engineering). Стандарты описания метода в такой дисциплине обычно представляет собой “мета-модель”: описание языка, используемого для моделирования способов работы.
  
== Классификация программных систем ==
+
== Стандарты ==
* ''Встроенные программные системы'' (software-embedded systems), их также называют системы реального времени (real-time systems) или социотехнические системы (sociotechnical systems)
+
''Основная статья'': [[:Категория:Стандарты программной инженерии|Стандарты программной инженерии]]
* ''Программно насыщенные системы'' (software-intensive systems)
+
* ''Вычислительно-ориентированные системы'' (computing-intensive systems)
+
 
+
{| class="wikitable"
+
! style="font-weight: bold;" | Характеристика
+
! style="font-weight: bold;" | Встроенные программные системы
+
! style="font-weight: bold;" | Программно насыщенные системы
+
! style="font-weight: bold;" | Вычислительно-ориентированные системы
+
|-
+
| Цель
+
| Автоматизация сложных подсистем для достижения более высокого быстродействия и точности
+
| Манипуляции большими массивами информации для [[СППР|поддержки решений]] или [[Инженерия знаний|приобретения знаний]]
+
| Решение трудных задач, [[моделирование]] сложных систем путем расчетов и [[имитационное моделирование|имитации]]
+
|-
+
| Функции
+
| Алгоритмические, логические
+
| Транзакционные
+
| Вычислительные
+
|-
+
| Входы
+
| Данные от датчиков, регуляторов
+
| Информация, объекты
+
| Численные данные
+
|-
+
| Обработка
+
| Вычисления в реальном масштабе времени
+
| Манипуляция, графический интерфейс пользователя, обмен данными по сети
+
| Вычисления не в реальном масштабе времени
+
|-
+
| Выходы
+
| Действия, продукция
+
| Информация, объекты
+
| Информация
+
|-
+
| Временные характеристики
+
| Реальное время, непрерывно
+
| Нерегулярно
+
| По расписанию
+
|-
+
| Примеры
+
| Управление воздушным движением, системы вооружений, аэронавигация и управление летательным аппаратом
+
| Банковские сети, системы резервирования авиабилетов, веб-приложения
+
| Прогноз погоды, математическое и имитационное моделирование
+
|-
+
| Оборудование
+
| Мини- и микропроцессоры
+
| N-уровневые архитектуры
+
| Суперкомпьютеры
+
|-
+
| Типичные пользователи
+
| Операторы
+
| Руководители различных уровней
+
| Научные работники, аналитики
+
|}
+
  
 
== См. также ==
 
== См. также ==

Текущая версия на 17:34, 13 декабря 2017

Инженерия программных систем (Software Systems Engineering) - термин, предложенный Уинстоном Ройсом (Winston Royce), подчеркивающий тот факт, что Программная инженерия (Software Engineering) и Системная инженерия (Systems Engineering) имеют много общего. Так, например, принципы и методики системной инженерии применимы к программной, а многие концепции из программной инженерии дали начало появлению их в системной. Например, OOSE (Object-oriented software engineering).

Концепции

Программное обеспечение - это совокупность трех компонентов:

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

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

Виды описания

Идеологи объектноориентированного-движения задали два основных структурированных вида описания хода инженерной разработки (development process, engineering methodology):

  • использование “языков паттернов” (ищутся некоторые “паттерны” — неформально определяемые способы решения задач, при этом каждый паттерн описывается по заранее известному шаблону, в который обычно входит описание проблемы и типовой способ её решения). Паттерны — это чистой воды эвристики, никаких попыток выйти на какие-то более-менее формальные “языки паттернов” не делалось.
  • дисциплина “Ситуационная инженерия методов” (situational method engineering). Стандарты описания метода в такой дисциплине обычно представляет собой “мета-модель”: описание языка, используемого для моделирования способов работы.

Стандарты

Основная статья: Стандарты программной инженерии

См. также