반응형
현재 당신은 소프트웨어 하나를 책임지고 있습니다.
그것의 동작에 대한 그림/문서가 있나요?

 

 

 공학이란, 특정 공업 분야의 응용 과학기술을 연구하는 학문을 말한다. 예를 들어, 컴퓨터공학은 컴퓨터 기술을 연구하는 학문이다. 그렇다면 소프트웨어에서 요구공학은 무엇인가?

 요구공학을 아주 쉽게 설명하면, 요구사항을 연구하는 학문이라고 할 수 있다. 소프트웨어 측면에서 요구사항은 우리가 익히 들어왔다. 결국, "고객이 소프트웨어에 어떤 것을 요구하는가?"라는 질문에 대한 답들이 요구사항이라고 할 수 있다.

 생각해보면, 소프트웨어의 역사가 꽤 오래되긴 했다. macOS는 2002년부터 등장했고, 심지어 상용 UNIX는 1990년 전부터 출시되었다. 그러면 여기서 질문하나를 던질 수 있다. "사이즈가 있는 소프트웨어를 만들 때, 기존 사람들(선배님들)은 어떤 식으로 접근하여 소프트웨어를 만들었을까?" 그러한 접근에 대한 경험들을 학문으로 정리한 것을 요구공학이라고 할 수 있다. 물론, 이 요구공학 또한 다른 학문과 마찬가지로 완벽한 학문은 아니다. 결국, 선배님들의 지식을 체계화하고 학문화한 것이다.

 

요구공학에 해당하는 활동들

 요구공학은 영어로 Requirements engineering이고 줄여서 RE라고도 부른다.

결국, 요구공학은 아래의 활동들을 체계화한 학문이라고 말할 수 있다.

 

1. 요구사항 문서를 생성하는 활동

2, 요구사항 문서를 검증하는 활동

3. 요구사항 문서를 관리하는 활동

 

 다시 말해, 위를 수행하기 위해 구조화된 활동의 모음을 요구공학이다.


결국 요구사항을 쓰는 방법(생성), 그리고 더 잘, 꼼꼼히 쓰기 위한 방법(검증)을 위한, 공학기법이라고 생각하면 된다.

정리하면, 요구공학을 잘 실천하기 위해,

  (1) UML 다이어그램 등 도식화하는 방법,

  (2) 글쓰는 방법이 필요하다.

 

잠깐, 왜 요구사항을 작성하는가?

 그 이유는 사공이 많으면 배가 산으로 가기 때문이다. 원점으로 돌아가보자, 요구공학은 학문이고, 어떤 지식을 체계화한 것이다. 그 지식을 체계화한 이유는 결국 실수와 오해를 줄이기 위해 지식을 체계화 한 것이다.

 

  선배님들이 겪은 그 실수와 오해들이 무엇이 었을까?  다음은 요구공학을 활용하지 못했을 때 발생하는 실수와 오해이다.

 

1) 요구사항이 문서로 정리가 안되어 있어, 무엇을 구현해야 하는지 모른 채, 소프트웨어를 만들려다보니까 뭘 구현해야하는 지 서로가 모른다.

 

2) 정확한 소프트웨어의 동작이 그림으로 나타나지 않아서, 다른 사람들이 이 소프트웨어가 뭐하는 지 모른다.

프로젝트 마지막에 그걸 깨달았다.

 (요구공학 측면에서 해결방법 => 다이어그램을 그려서 파트원들/이해관계자들한테 공유해라)

 

 그래, 한마디로 말해보자. 우리가 뭘 하고 있는 지 체계적으로 정리가 안 되어있으니, 요구사항을 작성하는 거다.

 

 

요구공학이 중요한 이유

 결국, 요구공학은 요구사항을 작성하기 위한 지식들의 모음이다. 

 

 기준 없이, 여러 명이 요구사항 작성하면, 나중에 설계/구현 시, 큰 시간과 자원을 소모할 수 있다.

요구공학을 이용한 방법으로 요구사항 명세서를 작성할 시,

1. 의사소통 문제를 해결할 수 있다. 요구사항에 대해, 사람마다 추상화 정도 (디테일의 정도)가 다 다르기 때문이다.

 어떤 사람은 "대용량 트래픽이 가능하게 해주세요"라고 말할 수 있고, 어떤 사람은 "10000만 명의 트래픽을 감당할 수 있는 시스템을 만들어 주세요" 라고 할 수 도 있다.

 하지만, 이 요구공학 기법을 통해, 요구사항 명세서를 만든다면, 이러한 오해를 줄일 수 있다.


2. 소프트웨어 보안 등과 같은 놓치기 쉬운 부분 (비기능적인 요구사항)을 파악할 수 있고, 소프트웨어의 예외적인 이벤트 or 케이스에 대해 알 수 있다.

 요구사항을 작성하다보면, 소프트웨어가 겪을 수 있는 여러 경우의 수를 고려하고 작성하게 되는데, 이때 우리는 소프트웨어가 가질 예외사항, 예외케이스 그리고 보안적으로 취약한 부분을 알 수 있다.

(이것은 중요하다, 인스타그램이 하나의 예외사항을 처리하지 않아 심각한 개인정보 보안사고가 생긴다고 생각해 보아라.)

 

 

요구공학의 최종 산출물은?

 요구사항 명세서이다.

요구공학은 결국 정돈된 요구사항 명세서를 작성하기 위한 학문이다.

 

 

요구공학 관리 기법

1. 시나리오/Goal 기반 요구사항 작성하기
2. Use Case를 이용한 요구사항 모델링하기
- 유스케이스 다이어그램 + 유스케이스 명세서 + 기타 등등

추가로 + 품질 요구사항을 위한 자동분류, 유사도측정
분류언어와 유사도를 이용하여 2단계 분류 기법.

 

소프트웨어 요구사항 명세서란? (Software Requirement Specification, SRS)

 소프트웨어 요구사항 명세서(SRS)소프트웨어가 어떤 동작을 요구하는 지를 명시한 문서이다.

 

 이것은 "사용자" - "사용자"가 원하는 서비스를 만드는 사람, 이 둘이 다르게 이해하지 않도록, 작성하는 것이 중요하기 때문에 요구사항 명세서는 필요하다.

 

 아래는 SRS의 예시이다.

요구사항 명세서 예시,  출처 : https://sluamor.com/blog/tips-for-writing-software-requirements-specifications

 

 

 그러한 맥락으로, 요구사항 명세서는 다음과 같은 작성방법은 도움이 될 수 있다.

 

요구사항 명세서 잘 작성하는 방법

- 소프트웨어의 scope를 정해라.

- 체크리스트를 활용하는 것도 좋다.

- 어떤 내용이 포함되어야 할지 구체적으로 기술한 문서나 템플릿을 참고해라.

 

출처/인용자료

https://sujinnaljin.medium.com/software-engineering-%EC%9A%94%EA%B5%AC%EA%B3%B5%ED%95%99-requirement-engineering-12c43988de07

 

https://sluamor.com/blog/tips-for-writing-software-requirements-specifications

 

 

반응형