System Engineering

시스템 엔지니어링: 애자일 시스템 엔지니어링, 접근방식, 개발원리, 생애 주기 모델 (ASELCM)

habana4 2024. 9. 15. 02:00
반응형
 

복잡한 시스템 개발의 유연성/효율성을 높이는 건 누구나 갖는 목표일거에요.

그치만, 변화하는 요구에 신속히 대응하면서도 일관성을 유지하는 것은 큰 도전이에요.

이번 포스팅에서는 반복적 개발과 피드백을 통해 시스템을 점진적으로 개선하고,

팀 간 협업과 계획으로 효율성을 극대화 하는 방법에 대해 알아 볼게요.

 

 

 

시스템의 생애 주기와 애자일 시스템 엔지니어링 접근 방식

시스템의 생애 주기는 일반적으로 개념 정의 단계에서 시작하여 여러 단계를 거쳐 시스템이 완성되는 시점까지 진행됩니다. 생애 주기의 모델은 시스템의 모든 단계를 물리적, 데이터 또는 그래픽적으로 표현할 수 있으며, 이 모델은 시스템 개발 전반에 걸쳐 사용됩니다. 생애 주기 내에서 수행되는 프로세스는 각 단계에서 무엇을 입력하고 출력할 것인지를 구체적으로 설명하며, 각 단계의 목표를 달성하기 위한 절차를 명시합니다.

 

현대의 복잡하고 상호 연결된 시스템들은 기술적 변화, 환경적 변화, 그리고 급변하는 미션 요구로 인해 빠른 노후화를 경험합니다. 이와 같은 변화 속에서도 시스템이 유연하고 강건하게 유지되려면 애자일하게 적응할 수 있도록 설계되어야 합니다. 이를 위해서는 시스템이 어떤 프로세스를 적용해야 할지 평가하는 과정이 필수적입니다. 시스템, 하위 시스템, 또는 관심 시스템(SOI)에 맞는 프로세스를 선택함으로써 시스템의 효율성과 안정성을 확보할 수 있습니다.

 

개념 정의 단계 초기에 SOI에 적합한 생애 주기를 결정하는 것이 중요합니다. 특히, 애자일 방식이나 하이브리드 모델을 적용하는 프로젝트에서는 시스템 개발의 통합 지점을 명확히 정의하고, 여러 생애 주기 모델 간의 상호 조화를 이루는 것이 필수적입니다. 하드웨어 성숙도 또는 장기적 리드 타임이 필요한 구성 요소를 기준으로 주요 통합 지점을 설정해야 합니다. 예를 들어, 남아프리카 전파천문대(SARAO) 사례는 여러 구성 요소 간의 생애 주기를 관리하고 통합하는 방법론을 보여주는 좋은 사례로, 맞춤형 프로세스 적용의 중요성을 강조합니다.

 

애자일 시스템 엔지니어링 접근 방식

애자일 시스템 엔지니어링반복적이고 점진적인 방식으로 시스템 개발을 진행합니다. 시스템 엔지니어는 시스템의 요구사항아키텍처 모델을 지속적으로 모델링, 분석, 개발, 검토하며, 이를 통해 시스템 솔루션의 정의를 구체화합니다. 이 과정에서 엔지니어는 상위 요구사항하위 요구사항 간의 연계를 유지 및 분석해야 하며, 시스템이 발전함에 따라 요구사항과 아키텍처 간의 인터페이스정의하고 검증하는 역할을 맡습니다.

 

시스템 엔지니어링에서 이러한 책임은 생애 주기가 달라지더라도 기본적으로 동일하게 유지되지만, 생애 주기에 따라 작업의 순서조직 방식은 달라질 수 있습니다. 예를 들어, 애자일 방식에서는 반복적으로 작업을 수행하면서 점진적으로 요구사항을 발전시키는 반면, 다른 생애 주기 모델에서는 더 일괄적인 방식으로 요구사항을 처리할 수 있습니다.

 

애자일 마인드 셋

애자일 시스템 엔지니어링에서 중요한 또 하나의 요소는 애자일 마인드셋입니다. 애자일 마인드셋애자일 가치에서 비롯된 신념과 행동으로, 시스템 개발 과정에서 신속하게 작동 가능한 기능을 제공하고, 팀원들의 자율성을 신뢰하며, 정기적인 시연회고를 통해 제품과 프로세스를 개선하는 문화를 지향합니다. 또한, 계획과 피드백을 반복적으로 수행하여 프로젝트를 적응적으로 운영합니다.

 

프로그램 리더십, 시스템 엔지니어링 팀, 개발팀 등 모든 팀원들은 이러한 애자일 마인드셋을 공유하며, 이를 기반으로 협력하여 복잡한 시스템 개발을 효과적으로 수행합니다. 이를 통해 시스템은 빠르게 변화하는 요구에 대응할 수 있으며, 지속적으로 개선되고 적응할 수 있습니다.

 

시스템의 생애 주기는 개념 정의 단계에서 시작하여 여러 단계를 거치며, 시스템 엔지니어링 프로세스는 각 단계에서 어떤 작업을 해야 하는지 명확하게 정의합니다. 애자일 시스템 엔지니어링은 반복적이고 점진적인 방식으로 시스템 솔루션을 정의하고, 요구사항과 아키텍처 모델 간의 연계성을 유지하며, 인터페이스를 검증하는 작업을 수행합니다. 또한, 애자일 방식에서는 애자일 마인드셋을 공유하여 팀원들이 신속하게 기능을 제공하고, 정기적인 회고를 통해 제품과 프로세스를 개선하는 문화를 형성합니다.

 

애자일 개발 원리

애자일 개발 원리시스템 엔지니어소프트웨어 엔지니어가 포함된 교차 기능 팀 간의 작업 관계를 형성하는 기초를 제공합니다. 이러한 원리들은 애자일 매니페스토(Beck, 2001)에서 기원하여, 시스템 엔지니어링에 맞게 확장된 것입니다. 이 원리들을 채택하면 팀 간 협력을 통해 고가치 기능을 점진적으로 개발할 수 있습니다.

 

애자일 개발 원리는 작동 가능한 기능에 집중하고, 작업 진행을 작고 관리 가능하게 유지하는 것을 강조합니다. 이 원리들은 전통적인 시스템 엔지니어링 원리와 상호 보완적이며, 일부는 매우 유사합니다. 또한, Agile Systems Engineering Life Cycle Model(Dove, 2019)은 운영적 민첩성을 촉진하는 Sense, Respond, Evolve(SRE) 원리를 설명합니다. 이 원리는 대규모 프로그램에서 효과적으로 적용될 수 있습니다. 또한, Scaled Agile Framework® (SAFe®)는 대규모 팀이 애자일 방식을 따를 수 있도록 하는 Lean-Agile 원리를 설명하며, 이는 시스템 엔지니어링에서도 사용됩니다.

 

애자일 마인드셋을 사용하여 애자일 개발의 원리와 SAFe Lean-Agile 원리를 애자일 시스템 엔지니어링 생애 주기 모델(ASELCM)에 적용할 수 있습니다. 일반적인 생애 주기 모델정의(Definition) 단계, 실현(Realization) 단계, 폐기(Retirement) 단계로 구성되며, 각 단계에는 추가 세부 단계들이 포함됩니다. 시스템의 생애 주기 단계에서는 Vee 모델, 반복적 모델, 애자일 모델을 사용할 수 있으며, 각 SOI의 평가에 따라 가장 적합한 프로세스가 선택됩니다.

 

ISO/IES/IEEE 24748-1에 따르면, 일반적으로 6개의 시스템 생애 주기 단계가 존재하지만, Dove(2019)는 상황 인식(Situational Awareness) 단계를 추가하여 7개의 생애 주기 단계를 제시합니다. 이 모델에서 상황 인식 단계는 개발 진행 중 시연, 검토, 지속적인 개선을 가능하게 하며, 시스템 개발 과정에서 지속적으로 피드백을 반영할 수 있게 합니다.

 

애자일 시스템 엔지니어링 생애 주기 모델 (ASELCM)

이 모델은 상황 인식개발 단계를 반복하며, 시스템의 개념에서 개발, 그리고 상황 인식으로 돌아가면서 지속적인 개선을 이뤄나가는 순환 구조로 되어 있습니다. ASELCM 패턴은 S 패턴 클래스 계층 구조로도 시각적으로 표현할 수 있습니다. 이 계층 구조는 시스템을 모델링하기 위한 최소 개념적 내용을 포함하며, 점점 구체적인 모델 표현으로 발전해 나갑니다. 일반 ASELCM 패턴은 시스템 개발 시 타겟 시스템(SOI) 뿐만 아니라 이를 개발하는 프로세스혁신 시스템도 고려해야 함을 보여줍니다. 이러한 상호 영향을 주는 시스템 2와 시스템 3은 시스템 1의 설계, 개발, 운영에 영향을 미치는 요소들입니다.

The Agile Systems Engineering Life Cycle Model (ASELCM). (Dove and Schindel 2019, Used with Permission)

 

Agile Systems Engineering Life Cycle Model (ASELCM) Pattern (Schindel and Dove 2016, Used with Permission)

 

ASELCM 모델 외에도 전통적인 워터폴 모델, Vee 모델, 점진적 모델, 나선형 모델 등 다양한 시스템 엔지니어링 모델들이 존재하며, 이들에 대한 설명은 SEBoK 문서에서 다루어집니다.

 

애자일 개발 원리는 시스템 및 소프트웨어 엔지니어 간의 협력을 촉진하며, 애자일 시스템 엔지니어링 생애 주기 모델(ASELCM)은 반복적이고 상황 인식 기반으로 시스템을 개발하고 개선하는 과정을 제공합니다. 상황 인식 단계는 개발 과정에서 피드백과 개선을 지속적으로 반영할 수 있게 하며, 다양한 생애 주기 모델과 함께 사용할 수 있습니다.

 

애자일 시스템 엔지니어링 프레임워크 개요

애자일 시스템 엔지니어링(Agile SE) 과정은 개발 단계마다 일련의 프로세스를 따릅니다. 각 단계에서 수행되는 주요 단계는 다음과 같습니다:

  1. 우선순위 또는 위험이 가장 높은 항목 정의: 우선순위가 가장 높은 작업 항목부터 작업을 시작하며, 가능한 마지막 순간까지 설계 옵션을 열어 둡니다. 이로 인해 작업 항목 목록이 생성되며, 최상위 항목이 가장 중요한 항목이 됩니다. 이 우선순위 목록 프로그램 백로그라고 부릅니다.
  2. 개발 반복(Iteration): 개발 주기 동안 엔지니어들은 요구사항을 분석하고, 이를 충족하기 위한 해결책을 설계하며, 제품을 개발하고 테스트하여 작동 가능한 제품을 시연합니다. 시스템 엔지니어링 기록은 요구사항 관리 도구, 모델 기반 시스템 엔지니어링(MBSE) 도구, 구성 관리 저장소와 같은 도구에 기록하는 것이 바람직합니다. 개발 반복은 보통 2주에서 4주의 짧은 기간 동안 이루어집니다.
  3. 대규모 제품 개발: 여러 팀이 각자의 작업 항목을 통합해 시연 가능한 제품을 만들 때, 반복(Iteration)이 필요할 수 있습니다. 이 여러 반복 주기는 증분(Increment)이라고 하며, 보통 3개월 정도 걸립니다.
  4. 증분 계획(Program Increment Planning): 증분을 시작하기 전에, 모든 팀은 협력 작업을 계획하고, 팀 간의 의존성을 식별하며, 계획을 충족할 수 있도록 약속을 설정해야 합니다. 이 계획은 사용되는 프레임워크에 따라 다르게 불리기도 하며, 빅 룸 계획(Big Room Planning) 또는 프로그램 증분 계획으로 불립니다.
  5. 제품 릴리스 및 차기 증분 계획: 일련의 반복 끝에 시연 가능한 제품이 이해관계자에게 릴리스될 수 있습니다. 이후 모든 팀원들이 모여 다음 증분 작업을 계획합니다.

이와 같은 애자일 시스템 엔지니어링 프레임워크는 Scaled Agile Framework (SAFe)와 일치하며, 팀들이 프로그램 및 팀 백로그를 활용해 반복적 개발을 수행하는 방식을 나타냅니다. SAFe는 대규모 시스템에서 다중 생애 주기 프로세스가 동시에 진행되는 상황을 설명하며, 여러 생애 주기 프로세스 간의 핵심 결정 지점을 일치시키는 것이 중요합니다.

 

다양한 애자일 접근 방식

프로그램은 도메인 요구에 맞춰 다양한 애자일 접근 방식을 사용할 수 있습니다. AgileAlliance(2017)는 여러 애자일 접근 방식을 지침의 깊이생애 주기의 폭에 따라 설명하며, 애자일 접근 방식이 시스템 요구 사항의 변화에 어떻게 대응하는지 보여줍니다.

 

복잡한 시스템의 경우, 요구 사항이 변화함에 따라 증분적, 반복적 접근 방식을 사용하는 것이 적절할 수 있습니다. 프로그램은 일반적으로 비전, 예산, 기간으로 시작하며, 이해관계자들은 가장 가치가 높은 기능을 먼저 개발하기로 결정합니다. 기능 목록은 우선순위에 따라 나열되지만, 작업 진행 상황에 따라 우선순위는 변경될 수 있습니다.

 

시간이 지나면서 명확히 정의된 요구사항아키텍처 표현을 가진 항목들은 계속 개발되고, 개념적 요구사항과 설계는 점진적으로 발전해 나갑니다. 이러한 점진적 개발 방법오픈 시스템 아키텍처, 모델 기반 시스템 엔지니어링(MBSE) 도구, 세트 기반 설계, 디자인 사고(Design Thinking), 지속적 통합(Continuous Integration), 지속적 개발(Continuous Development), 아키텍처 패턴, 마이크로서비스 아키텍처, 린 엔지니어링(Lean Engineering)을 통해 가능해집니다.

 

애자일 시스템 엔지니어링 프레임워크우선순위 설정, 반복적 개발, 증분적 통합을 통해 복잡한 시스템 개발을 관리합니다. 프로그램의 단계별 작업은 팀 간 협업계획 수립을 통해 조정되며, SAFe와 같은 프레임워크를 통해 효율적으로 운영됩니다. 또한, 지속적 개선피드백 루프를 반영하여 복잡한 시스템의 요구 변화에 대응할 수 있는 유연한 개발 방식을 채택합니다.

 

반응형