소프트웨어 과정
- 요구 공학(Requirements Engineering)
- 시스템 모델링(System Modeling)
- 시스템 아키텍처(System Architecture)
- 시스템 디자인(System Design)
이 네 가지 과정은 소프트웨어 개발의 전반적인 과정에서 중요한 역할을 수행하며, 다양한 측면에서 소프트웨어 개발을 지원합니다.
왜 중요한가요?
모델링은 복잡한 시스템을 적절한 수준의 추상화된 모델로 단순화하여 이해하기 쉽게 만들어줍니다. 이를 통해 시스템의 구조, 기능, 동작 등을 파악하고, 문제를 예측하고 해결하기 위한 기초를 제공합니다. 따라서 모델링은 소프트웨어 개발 프로세스에서 매우 중요한 역할을 합니다.
모델링이란?
어떤 시스템의 대해서 추상화되어서 표현된 모델을 개발하는 과정
각각의 모델은 다른 뷰와 관점에서 나타냅니다:
예를 들어, 고객 관리 시스템을 모델링할 때, 고객 정보를 관리하는 부분은 데이터베이스 모델링에서 관리할 수 있으며, 주문 처리와 배송 처리는 프로세스 모델링에서 관리할 수 있습니다
소프트웨어 개발의 대부분의 실패 이유
요구사항 이해 부족으로 인한 실패: 소프트웨어 개발 프로젝트에서 요구사항을 충분히 이해하지 못하거나, 요구사항 수집 및 관리 과정에서 오류가 발생할 경우 개발된 소프트웨어가 요구사항을 충족하지 못하거나, 사용자 또는 고객 요구에 부합하지 않아 실패할 가능성이 큽니다.
문제를 개발 이후에 발견하는 경우: 소프트웨어 개발 과정에서 테스트가 부족하거나, 충분한 검증을 거치지 않은 채로 제품을 출시하는 경우 개발 이후에 발견되는 결함이 많아지며, 이는 소프트웨어 제품의 품질을 떨어뜨리고 사용자 불만족을 초래할 수 있습니다.
복잡한 소프트웨어 시스템을 개발하는 경우: 복잡한 소프트웨어 시스템을 개발하는 경우에는 설계 및 구현 과정에서 예상치 못한 문제가 발생할 가능성이 큽니다. 이는 소프트웨어 시스템의 구조가 복잡해지고, 여러 요소들 간의 상호작용이 복잡해질수록 더욱 큰 문제가 발생할 수 있습니다. 따라서 소프트웨어 개발 과정에서는 이러한 복잡성을 최소화하고, 문제를 예방하도록 노력해야 합니다.
시스템 모델링(System modeling)
시스템 모델링은 시스템의 구성요소와 그들 간의 상호작용을 설명하기 위해 추상화된 모델을 개발하는 과정입니다. 이 모델은 다양한 그래픽적 표기법으로 표현되며, UML은 이러한 표기법 중 가장 널리 사용됩니다. 시스템 모델링은 개발자들이 시스템의 기능과 구조를 파악하고 이해하는 데 도움을 주며, 이를 토대로 소비자와 소통하는 과정에서도 활용됩니다.
시스템 분석가란?
시스템 분석가는 시스템 개발 과정에서 사용자의 요구사항을 수집하고, 분석하여 이를 바탕으로 시스템의 명세를 작성하는 역할을 수행합니다. 또한, 사용자와 개발자 간의 커뮤니케이션을 원활하게 하고, 시스템 설계와 구현을 지원하는 역할도 합니다.
분석가는 사용자들의 문제를 이해하고 해결책을 제공하여 비즈니스 문제를 해결하도록 돕습니다. 이를 위해 사용자들과 함께 일하며, 사용자가 원하는 결과를 만들기 위한 가장 적절한 기술과 시스템 설계를 결정합니다.
또한 분석가는 기술적인 문제에 대한 이해도와 기술적인 문제를 해결하는 능력이 있어야 합니다. 이러한 기술적인 능력은 팀 내에서 소프트웨어 개발자와 함께 일하면서 발전해나가야 합니다.
이러한 역할들로 인해, 시스템 분석가는 프로그래머와 사용자 간의 중간 역할을 수행합니다.
모델의 용도
- 상세 요구사항을 이끌어낸다
- 모델은 기존 시스템 또는 새로운 시스템을 위한 요구사항을 이끌어내는 데 사용됩니다.
- 기존 시스템의 모델은 요구사항 엔지니어링 과정에서 사용됩니다.
- 시스템의 강점과 단점을 파악하고, 개선을 위한 제안을 할 수 있습니다. - 시스템을 구현할 엔지니어에게 설명
- 새로운 시스템의 모델은 시스템 이해 관계자에게 제안된 요구사항을 설명하는 데 도움이 됩니다.
- 엔지니어는 모델을 사용하여 설계 제안을 논의하고 시스템을 구현합니다.
- 모델 중심 엔지니어링 프로세스에서는 모델로부터 시스템을 생성하거나 수정할 수 있습니다.
시스템의 관점
- 외부 관점
시스템의 환경과 전반적인 구조(context)를 모델링
- 상호작용 관점
시스템과 그 환경 사이 혹은 시스템의 요소 사이의 상호작용을 모델링
- 구조 관점
시스템 구성이나 시스템에 의해서 처리되는 데이터의 구조를 모델링
- 동작 관점
시스템의 동적인 행동을 모델링
그래픽 모델링과 그 용도
- 그래픽적 모델은 시스템을 쉽게 이해할 수 있도록 시각화하는 데 사용됩니다. 기존 시스템에 대한 논의나 새로운 시스템에 대한 제안을 할 때, 그래픽 모델을 사용하여 시스템의 구조, 상호작용, 구성, 동작 등을 설명하고 문서화할 수 있습니다. 그래픽 모델링 기법 중 대표적으로 사용되는 것은 UML(Unified Modeling Language)입니다.
- 콘텍스트 모델은 시스템의 운영환경을 기술합니다. 시스템 경계와 시스템과 연동되는 외부를 보여주며, 시스템 경계를 어디에 배치할 것인지에 대한 결정에 영향을 미칠 수 있는 사회적 및 조직적 우려를 고려하여 설계해야 합니다.
- 건축 모델은 시스템과 다른 시스템과의 관계를 보여주며, 시스템 경계의 위치는 시스템 요구사항의 큰 영향을 미칩니다.
- 상호작용 모델은 사용자 상호작용이나 시스템 간 상호작용을 모델링하는 것입니다. 사용자 상호작용 모델은 사용자의 요구사항을 파악하는 데 도움을 주며, 시스템 간 상호작용 모델은 시스템 간 커뮤니케이션 문제 발생 가능성을 해결합니다. 컴포넌트 간 상호작용 모델은 시스템의 구조가 성능과 확실성을 제공할 수 있는지 이해하는데 도움이 됩니다. 유스 케이스 다이어그램과 시퀀스 다이어그램은 상호작용 모델링을 위해 사용되는 대표적인 그래픽 모델입니다.
이어서
2023.03.28 - [소프트웨어 공학 Software engineering] - [소프트웨어 공학] UML 다이어그램 | Use case diagram | 5 - 2
[소프트웨어 공학] UML 다이어그램 | Use case diagram | 5 - 2
UML 다이어그램 종류(UML diagram types) Activity diagrams: 프로세스나 데이터 처리를 포함한 활동(activities)을 보여준다. Use case diagrams: 시스템과 그 환경 사이의 상호작용(interaction)을 보여준다. Sequence diag
jelong.tistory.com