우아한테크코스

"프리코스 2일차" 기능 목록 작성(예외 생각하기), 프리코스 커뮤니티 참여

kanado 2024. 10. 16. 22:39

📝 오늘의 Todo 리스트 체크

     1. 기능 목록 작성
          - 기능 요구 정리 ✅
          - (학습) 유스케이스에 대해 공부하기
          - 유스케이스 다이어그램 그리기
     2. 우테코 프리코스 커뮤니티 참여
          - 커뮤니티 구경, 글 읽어보기


목차

- 기능 목록
     - "기능"에 기준점 잡기
     - 예외를 생각해보기

- Use Case
     - Use Case 시나리오
     - Use Case 다이어그램
- 우테코 프리코스 커뮤니티 참여
     - 다른 사람들의 글 읽기
     - 글 작성해보기

- 내일 Todo 리스트


 

1. 기능 목록

기능 목록을 작성하기 전에, 하나의 시스템 내에 포함될 수 있는 기능의 종류가 많고 다양하기 때문에 명확한 기준점을 설정하는 것이 중요하다고 생각했다. "소프트웨어 공학의 모든 것"이라는 책에서 읽었던 기능 요구와 비기능 요구에 대한 내용이 떠올라, 이를 따로 개념 정리하여 블로그에 올렸다.

 

기능 요구와 비기능 요구를 확실한 구분 방법

책에서 소프트웨어 개발을 시작할 때 기능 요구와 비기능 요구를 정의하는 것은 프로젝트의 성공을 위한 중요한 첫걸음이라고 강조한다. 이번 글에서는 기능 요구와 비기능 요구가 무엇인지,

kanado2000.tistory.com

 

약해서 말하자면 소프트웨어 프로젝트에서 기능 요구와 비기능 요구를 명확하게 정의하는 것은 시스템의 완성도와 품질을 높이는 데 필수적이다. 기능 요구는 시스템의 기본적인 동작을 정의하고, 비기능 요구는 그 동작을 보다 효과적이고 안전하게 만들기 위해 필요한 속성을 설정한다. 즉, 비기능 요구시스템의 안정성, 성능, 보안 등을 다루고, 기능 요구는 소프트웨어가 사용자와 상호작용하며 수행해야 하는 구체적인 작업이나 행동을 설명한다.

 

따라서 나는 기능 요구의 개념을 기준으로 기능 목록을 작성하기로 결정했다.

기능 목록에 크게 기능은 3가지 나왔다 -> 1) 양수로 구성된 문자열 입력 받기 2) 커스텀 구분자 여부 확인 3) 결과 출력

 

입력받을 때 발생할 수 있는 예외도 같이 기능 목록에 작성했다.

1) 양수로 구성된 문자열을 입력받을 때 발생할 수 있는 예외를 고려해본 결과, 문자열 내에서 구분자로 분리된 값이 양수(자연수)가 아닐 경우 모두 예외로 처리해야 한다고 판단했다. 이러한 경우 문자열, 공백, 빈 문자열, 음수가 해당되며, 이 모든 경우를 "자연수가 아니다"라는 하나의 조건으로 처리할 수 있을 것이라고 생각했다.

2) 커스텀 구분자를 확인하는 과정에서도 예외를 고려했다. 처음에는 특수 기호만 구분자로 생각했지만 문자열, 문자, 숫자도 구분자로 사용할 수 있을까?라는 의문이 생겼다. 그래서 먼저구분자의 개념을 명확히 하기 위해 조사를 진행했는데, 결과는 다음과 같았다. "구분자는 문자열에서 특정 대상을 다른 대상과 구분하기 위한 기호를 의미하며, 구분문자라고도 한다." 즉, 구분자는 문자특수 기호로 이루어질 수 있다는 것을 알게 되었다. 이에 따라 다음과 같이 예외를 정리했다.

- "//"와 "\n" 사이에 공백이 있을 경우

- "//"와 "\n" 사이에 빈 문자열이 있을 경우

- "//"와 "\n" 사이에 숫자가 있을 경우

- "//"와 "\n" 둘 다 없거나 둘 중 하나만 있을 경우

 

2. 유스케이스(Use Case)

"소프트웨어 공학의 모든 것" 책에서 읽은 유스케이스(Use Case)는 소프트웨어 설계에서 시스템이 사용자와 상호작용하는 방식을 설명하는 일종의 시나리오다. 유스케이스는 주로 시스템의 요구사항을 정의하고, 이를 기반으로 시스템의 기능적 요구를 명확히 하기 위해 사용된다. 예를 들어, "사용자가 로그인한다"라는 유스케이스는 사용자가 로그인 화면에 접근하여 아이디와 비밀번호를 입력하고, 시스템이 이를 인증하는 과정을 시나리오로 설명한다.
유스케이스 다이어그램은 시스템이 제공하는 기능(유스케이스)과 이를 사용하는 사용자(액터) 간의 관계를 시각적으로 표현한 UML 다이어그램이다. 1주차 미션에서는 간단한 다이어그램이 나왔지만 앞으로의 미션에서 도움이 될 것 같아 공부하고 그려보았다.

 

3. 우테코 프리코스 커뮤니티 참여

오늘 본격적으로 프리코스 커뮤니티에 참여해봤다. 우선 다양한 주제를 나눌 수 있는 채널들이 많아서 너무 좋았다. 같은 목표를 가진 많은 사람들과 함께 커뮤니티에 참여하고 있다는 사실이 신기했고, 이 긴 여정을 함께 달려간다는 느낌을 받았다.

 

나는 개인적으로 함께-나누기 채널토론하기 채널이 제일 좋았던 것 같아. 함께-나누기 채널에서 어떤 분이 올려주신 "Git Commit Message Conventions"글이 아주 흥미롭고 유익했다. 그리고 편소에는 공부할 때나 개발할 때 음악을 듣지 않는 편이지만 사람들이 올려주시는 개발할 때 듣는 플레이리스트가 너무 좋아서 지금도 듣고 있다. 🎶🎧

 

오늘 커뮤니티에서 첫날이지만 어떤 분이 올려주신 글을 읽고 내가 생각을 꼭 남기고 싶어서 용기 내어 답변글을 남겼다.

참고로 내 본명은 이바체슬라브ㅎㅎ


상수는 어떻게 관리해야 할까요?
라는 주제를 가진글이었는데, 'AdvICE' 웹서비스를 개발할 때 고민했던 주제였다. 당시 프로젝트 규모가 커지면서 상수가 많아지자, 이를 효율적으로 관리하는 방법에 대해 고민을 많이 했다. 상수가 많아지면 코드의 가독성과 유지보수성에 큰 영향을 미치기 때문에 효율적인 관리 방법이 필요하다.
내가 생각하는 상수를 효율적으로 관리하는 방식은 상수의 사용 범위와 중요도에 따라 관리 방식을 달리해야 한다는 것이다. 예를 들어, 특정 클래스에서만 사용되는 상수는 해당 클래스 내부에 두는 것이 적합하고, 프로젝트 전반에 걸쳐 사용되는 공통 상수는 별도의 상수 전용 클래스를 만들어 관리하는 것이 좋다.

내 의견에 많은 사람들이 동의해 주었고, 몇몇 사람들은 자신의 의견을 덧붙여 주기도 했다. 이를 보면서 내 지식이 누군가에게 도움이 되었다는 생각에 뿌듯함을 느꼈고, 이맛에 프리코스 코뮤니티를 하구나 생각이 들었다. 얼른 다른 사람들과 코드 리뷰도 해보고 싶다.🤩

 

4. 내일 Todo 리스트

1. MVC 구조 설계
     - (학습) MVC 구조에 대해 공부하기 🔳
     - MVC 구조 설계하기  🔳
2. 우테코 프리코스 커뮤니티 참여
     - "함께-나누기" 채널에서 지식 공유 🔳

 

참고 자료

 

구분자

Python 의 구분자에 대해 설명하는 영상. 구분자(區分字, Delimiter, Separator 파일:위키백과

namu.wiki

 

 

기능 요구사항 vs 비기능 요구사항

요구사항 (Requirement) : 시스템이 갖춰야 할 요건 요구사항 내용의 종류에 따라서 기능적 요구사항과 비기능적요구사항을 나눌 수 있다. 정산하기나 모임 관리처럼 시스템이 갖고 있는 기능은 기

ee-22-joo.tistory.com

 

 

[SW이론] 유스케이스

요구사항을 사용자 중심 시나리오 분석을 통해 흐름을 나타내는 것시스템의 동작을 모형화하는 것.시스템 사용의 사례로서 시스템의 사례들을 그려 놓은 것시스템의 외부에서 본 기능을 명확

velog.io

 

끝.