본문 바로가기

프로그래밍/System Engineering

1. Introduction

1. Introduction

 

해당 내용은 Alexander Kossiakoff의 Systems engineering principles and practice - 3th edition을 정리한 것입니다.

 

앞으로 진행할 프로젝트는 여러가지 시스템이 통합된 형태가 될 것이다. 물론 온갖 나의 망상의 결과물이지만...! 데이터 수집 시스템, 데이터 분석 시스템, 데이터 관리 시스템, 데이터 리포팅 시스템 등등..... 여러가지 시스템와 연계과정들을 생각해보았는데, 이들을 모두 독립적인 시스템으로 만들고, 높은 일반화수준을 갖도록 설계할 예정이다. 목표는 'Too' long-life cycle system 이다. 이를 위해서는 물론, 플랫폼 독립적이며 유지보수성을 매우 높게 고려하면서, 신뢰성을 극대화 시켜야 한다. 아무튼 이런 시스템을 구현하고자하는 장대한(?) 목표가 있기 때문에.... 시스템 엔지니어링을 공부하면서 좀 더 넓은 관점에서 볼 것이고, 동시에 적용하면서 프로젝트를 진행할 것이다...! 개인적으로 이러한 접근방식을 선호하는 편이다.

 

이전에 나는 Software engineering에 대해서 공부해 보았는데, System engineering은 이를 일반화한 것이다. 이것은 Mechanical, Eletronical, Software 등등 여러 traditional engineering을 일반화한다. System engineering이 특히나 중요한 이유는 현대의 시스템이 갈수록 복잡해지고, 그에 따라서 여러 시스템의 통합이 필요해졌기 때문이다. 특히나, AI와 같은새로운 기술의 발전은 기존의 엔지니어링 영역과는 완전히 새로운 영역을 만들어 내었다. 일반화된 엔지니어링 모델을 이용한다면 새로운 영역을 엔지니어링 할 수 있을 것이다.

 

System이란 다음과 같이 정의될 수 있다.

A set of interrelated components working together toward some sommon objective

한가지 제약사항은, 충분히 복잡해야하고 엔지니어링이 가능해야 한다는 것이다. Ecosystem은 충분히 복잡하지만 엔지니어링 가능하지 않다 Washing machine은 엔지니어링 가능하지만 충분히 복잡하지 않다. 따라서 모두 system으로 볼 수 없다.

 

System engineering은 시스템의 전체에 대해 초점을 맞춘다. 시스템을 바깥에서 보면서 외부와의 상호작용을 고려하는 것이다. 물론, 내부의 상호작용도 고려한다. 

System engineering의 주된 목적은 Guide이다. 하지만 단순히 가이드만 하는 것이 아닌, 여러가지 중요한 결정상황에서 중요한 역할을 한다.

System engineering은 traditional engineering의 bridge이다. Complex system은 여러가지 element를 포함하고, 이는 각각 다른 engineering방식을 사용할 수 있다. 그들 사이의 호환성과, 상호작용을 가이드하고 조정하는 역할을 한다.

 

System Engineering은 Project Management(PM)의 본질적인 부분이다. 물론 PM은 재무, 계약, 고객과의 관계 등 다른 역할들 또한 수행한다.

 

2. The system engineering landscape

 

System Engineering은 2차세계대전을 통해 급격히 성장했다. 굉장한 기술의 발전이 있었고, 여러 복잡한 요소들을 통합해야만했다. 미래의 시스템은 점점 더 빠른 속도로 복잡해질 것이고, 새로운 기술은 매우 빠른 속도로 발전하고 있다. 

현대의 Risk는 바로 새로운 기술을 도입하지 않음으로서 발생하는 리스크이다. 따라서, 업계는 서로 경쟁적으로 새로운 기술을 도입하여 시스템을 개발할 것이다. 이러한 환경에서 새로운 기술의 도입은 어쩌면 필수적이며, system engineering은 갈수록 중요해질 것이다.

 

Complex system의 component들은 여러 다른 Specialized engineering을 사용할 수 있다. 이러한 완전히 다른 방식으로 엔지니어링 되는 것들을 통합하기 위해서는 component간의 boundary인 Interface가 필요하다. System engineering을 통해서 우리는 높은 수준의 moduarity를 달성하면서 interface, interaction을 만들 것이다.

 

3. System engineering view point

 

성공적인 시스템은 시스템이 원하는 기능을 완벽하게 수행하며, 미래의 변화를 수용할 수 있어야 한다.

실제로 많은 상황에서, system engineer는 best가 아닌 good enough를 목표로 하여야 한다. 즉, 완벽한것이 아닌 여러가지 상황, 여러가지 조건들을 충족시키는 best balance를 찾야아 한다. System engineer는 각 컴포넌트를 구현하기 위한 모든 세부사항을 알 필요는 없지만, 각각의 분야에서 소통을 하고 가이드할 수 있을 충분한 지식과 경험을 필요로 한다.

'프로그래밍 > System Engineering' 카테고리의 다른 글

4. Systems Engineering Management  (0) 2024.03.31
3. The system development process  (0) 2024.03.30
2. Structure of Complex systems  (0) 2024.03.26