본문 바로가기

프로그래밍/System Engineering

3. The system development process

앞서 배운것은 complex system의 구조에 관한 것이었다. 이번에는 complex system의 개발과정을 볼 것이다.

 

1. System life cycle

 

System의 life cycle을 나타내는 model은 여러가지가 있고, 모든상황, 모든곳에서 통용되는 단일 모델은 존재하지 않는다.

 

우리는 다음의  System life cycle model을 사용할 것이다.

Concept development -> Engineering development -> Post-development
1) Needs analysis
2) Concept exploration 
3) Concept definition
1) Advanced development
2) Engineering design
3) Intergration and evaluation
1. Production
2. Operations and support

 

Concept development단계는 system concept를 정의하고 공식화하는 첫번째 단계이다. 이 단계에서, 새로운 시스템의 필요성에 대해 분석하고 그것이 정말 실현가능성이 있는지 경제적인 부분, 기술적인 부분을 고려하여 분석한다. 성능요구사항이 타당한지 검증하며, 최종적으로 system functional specification을 생성한다.

Engineering development단계는 system functional specification을 이용하여 그것을 수행하는 시스템을 엔지니어링하여 실제로 구현하고 테스트 및 통합하는 단계이다. 성능, 신뢰성, 유지보수성, 안전성 요구사항에 맞는 프로토타입의 개발을 수행한다. 최종적으로 system production specification을 생성한다.

Post-develeopment단계는 운영상의 테스트 단계를 성공한 이후의 단계이며,  이후에 발생하는 예상치 못한 문제들에 관한 활동들이다. 최종적으로 Operational and maintenance document를 생성하고, 시스템이 운영에 설치된다.

 

세부적으로 보면,

Need Analysis 단계는, 정말로 새로운 시스템이 필요한지, 그러한 필요성을 충족시키는 실제적인 방법이 존재하는지를 분석한다. 최종적으로 새로운 시스템에 요구되는 capability, operational effectiveness에 대한 설명을 얻는다.

Concept Exploration 단계는, 어떤 성능이 그러한 요구사항을 만족시키기 위해 필요한지, 그러한 성능이 주어진 비용으로 충분히 실현가능한지 여부를 탐색한다. 최종적으로, 공식적인 performance 요구사항을 얻으며, 필요성을 충족시키는 여러가지 가능한 system concept 후보들을 생성한다.

Concept definition은 capability, operational life, cost 간의 최적의 balance를 충족시키는 system concept을 후보들 중에서 선정하며, 최종적으로 functional specifications, defined system concept을 얻는다.

 

Advanced development 단계는, 개발의 Risk를 찾아 감소시키려는 목적이 있다. 최총적으로 system design specification과 validated development model을 얻는다. 특히 완전히 새로운 시스템을 개발 할 때, Risk 관리를 위해 중요하다. 이 단계에서 component level의 system design specification을 얻는다.

Engineering design단계는, system design에 대해 세부적인 엔지니어링을 수행하는 단계이다. 즉, 기능 및 다른 요구사항을 구현하는 개별 component를 엔지니어링 한다. 최종적으로, Test & Evaluation plan과 prototype을 얻는다.

Intergration and Evaluation단계는, 각각의 엔지니어링된 component를 통합하고, 실제적인 환경에서 system의 operation을 평가한다. component interaction은 functional requirement에 부합해야 한다. 최종적으로 Production specification과 production system을 얻는다.

 

Production단계는 실제 생산되어 배치되는 단계이다.

Operation and Support단계는, 유지보수 인사나 operator에게 훈련프로그램을 지원하거나, 그들에게 예상치 못하게 발생할 수있는 문제에 대해 알려주거나, 어떤 문제가 생겼을 때 지원하는 활동들을 포함한다. 

 

2. Evolutionary characteristics of the development process

 

완전히 새로운 시스템을 만드는 것은 어려운 일이지만, 기존에 존재하는 시스템이 있다면 기존의 concept이나 architecture을 참고해서 활용할 수 있다.  새로운 시스템을 개발하는 과정은 규칙적으로 진행되는 materialization이라고 볼 수 있다. 앞서 보았듯, 시스템은 system, subsystem, component, subcomponent, part의 level로 decomposition될 수 있다. 개발과정이 진행됨에따라, 상위 level에서 하위 level으로 관심이 이동하고, 그에 따라서 개발의 참여자가 변경되기도 하고 참여자의 수가 변경되기도 한다. 다음단계에서 정의된 일련의 문서들은 이전단계에서 정의된 문서를 대체하는 것이 아니고 그것을 보충하여 설명한다. 

 

3. System engineering method

 

시스템 개발의 각 단계에서 일어나는 engineering process는 단계마다 반복되는 경향이 있다.

이러한 반복적인 활동들을 system engineering method라고 한다.

 

총 4개의 세부단계으로 이루어져있다.

1) Requirement analysis : 이전 개발 단계의 input들(requirement, plans, milestones, models)을 정리하고, requirement에 대한 이유를 식별해낸다. 시스템이 무엇을 해야하고, 어떻게 해야하며, 어떻게 제한해야하는지 requirement를 더 명확하게 한다. requirement에서 부정확한 부분을 수정하고, 가능하면 정량화시킨다.

2) Functional definition : requirement를 시스템이 수행해야하는 function으로 변환시킨다. functional building block으로 partitioning한다. functional element간의 interface를 정의한다.

3) Physical definition : functional design을 hardware/software component로 변환하고, integration of component을 수행한다. 

4) Design validation : 다음 개발 단계가 진행되기 이전에 design을 명확하게 검증한다. 외부 환경을 모델링하고 테스트한다.

 

이러한 일련의 과정은 이전 개발 단계보다 더 높은 수준의 requirement와 specifiction을 만들어낸다. 그리고 그것은 다음 계발 단계의 기초가 된다. 따라서, 초기단계가 잘못되거나 의사소통이 제대로 되지 않으면 성공적인 개발이 될 수 없다. 성공적인 시스템 개발을 위해서 다양한 이해관계자와의 의사소통과 협력은 굉장히 중요하다.

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

4. Systems Engineering Management  (0) 2024.03.31
2. Structure of Complex systems  (0) 2024.03.26
1. Introduction  (0) 2024.03.25