TIL

👀Today I Learn

SRS(Software Requirement Specification)

  • Software Requirement Standards / ‘요구사항명세서’라고도 함
  • 작성 주체자는 주요 이해관계자(고객사, 기술소장, SW부장(팀장/PM), HW부장(팀장/PM), 전략부장 등)이 함께 참여하여 작성

주요 내용

  • Word/Excel/한글 등 문서형태로 작성
  • 소프트웨어 개요
    • 개발하고자하는 소프트웨어의 전반적인 내용을 요약
      • 소프트웨어의 소개
      • 소프트웨어의 목적
      • 주 사용자에 대한 설명
  • 유저 시나리오
    • 사용자가 해당 소프트웨어를 사용하기 위한 일련의 과정
      • 목표 시나리오: 개발자의 의도대로 목표까지 사용되는 시나리오
      • 경험 시나리오: 사용자가 실제 소프트웨어를 사용하며 생성되는 여러가지 과정
  • 와이어프레임
    • UX를 고려하여 만든 UI로 각 인터페이스가 어떤 역할을 하는지, 대략적인 모양, 색깔, 위치 등 기준을 나타내는 문서
    • 예시

      Image

  • 구동 환경
    • 해당 소프트웨어가 구동되기 위한 물리적, 논리적 조건을 설명
  • 요구 성능
    • 해당 소프트웨어가 원할하게 처리해야하는 목표 요구치를 의미
    • 예시

        - 최대 10만명의 동시 접속자를 처리할 수 있어야한다.
        - 결과값은 최대 15초를 넘기지 않고 결과값을 도출해야한다.
        - 비교군 10,000개에 대해 예측률이 최소 95% 이상이여야한다.
        - 최대 2페타바이트의 데이터를 수용 및 처리할 수 있어야한다.
        - 해당 기기는 50도 이상에서도 정상작동 해야한다.
      
  • 제한 사항
    • 해당 소프트웨어가 원할하게 사용되기 위한 제한 사항을 의미
    • 이 사항에 대해서는 기술진들이 이해관계자들에게 제한 사항에 대해충분히 납득할 수 있도록 설득해야하는 상황이 올 수도 있음
    • 예시

        - 해당 기기는 80°C 이하에서 작동해야한다.
        - 방수 터치 패드는 표면으로부터 수심 1m까지만 사용해야한다.
        - 최대 접속량은 8만명으로 제한한다.
        - 인터넷익스플로 브라우저를 통한 접속에 대해서는 지원하지 않는다.
      


SDS (Software Design Specification)

  • Software Design Standards / ‘설계사양서’ 라고도 함
  • 작성 주체자 SW부장(팀장/PM)과 SW부서원(팀원)이 함께 작성
  • 다른 사람도 이해할 수 있게 작성하여야 함

주요 내용

  • Word/Excel 등 문서형태로 작성
  • 와이어프레임
    • UX를 고려하여 만든 UI로 각 인터페이스가 어떤 역할을 하는지, 대략적인 모양, 색깔, 위치 등 기준을 나타내는 문서
    • 단, 여기서는 최대한 개발자의 의도보다 SRS문서에 따른 와이어프레임의 내용을 적용
  • 개발 환경
    • 해당 소프트웨어를 개발하기위한 물리적/논리적 환경을 의미
    • 예시 ```
      • 프로그래밍 언어는 python 3.10.8을 적용한다.
      • IDE는 vscode 또는 pycharm을 사용한다.
      • SQL은 SQLite 3.46을 적용한다. ```
  • 디자인 패턴
    • 어떤 구조로 구현할것인지 정의
      • MTV 패턴을 적용
      • SDS는 기술진을 위한 문서이기에 자세한 설명을 작성하지 않아도 될 것같지만 반드시 각 명칭에 대해 옳바른 정의 및 설명을 거의 전부 써주어야 함
  • 연계 기술
    • 함께 연계되는 기술들은 어떤것들이 있는지 작성
      • Tensorflow 2.0
      • ChatGPT-4
      • 주요 기술들과 함께 개발 언어와 SQL에 대한 내용도 함께 포함하여 작성
  • 구동 환경
    • 본 소프트웨어가 구동되기 위한 환경에 대해 설명
      • Windows 8~10
      • IOS 15.1~17.5
  • API 명세서
    • 사용되는 메소드에 대한 이름, 기능, url, end-point, 목적, 필요 매개변수 등 모든 사항을 표 형태로 기재
    • 표 형식의 작성 폼에는 반드시 ID 값이 들어가야 하며 이 ID 값은 분류 CODE를 의미
      • 분류 CODE는 문서상에서 해당 항목을 식별하기 위한 식별자
    • 대분류, 소분류 등등 세세할수록 좋음!!
  • UML (Unified Modeling Language, 통합 모델링 언어)
    • 그림과 관계도를 그려서 누구나 쉽게 알아볼 수 있도록 하는 다이어그램
    • 클래스 다이어그램
      • 클래스간 어떤 관계를 나타내고 있는지, 어떤 객체를 왜 어떻게 사용하는지 표현하는 다이어그램을 의미

        Image

    • ERD(Entity Relationship Diagram, 개체 관계 다이어그램)
      • DB에서 각 개체 간에 어떤 관계를 나타내는지 표현한 다이어그램

        Image

  • 파일 구조
    • 소프트웨어의 전반적인 파일 구조를 설명
    • 예시
        ├── 📂static/
        │   ├── 📂css/
        │   ├── 📂js/
        │   ├── 📂images/
        │   └── ...
        ├── 📂media/
        │   ├── 📂profile_pictures/
        │   ├── 📂documents/
        │   └── ...
      
      • 반드시 각 폴더 및 파일이 어떤 역할을 하는지 설명해야 함


SCS (Software Code Standards)

  • ‘표준코딩지침서’라고 하지만 한국말로는 불리는 이름이 회사마다 다름
    • ’표준코딩규칙’, ‘코딩지침서’ 등등 → 의미는 전부다 동일
  • 코딩 스타일에 대해 통일시키는 것

  • 작성 주체자는 SW부장(팀장/PM)이 작성
    • SCS문서는 오로지 SW부서를 위한 문서이므로 일반적으로 타 부서의 이해를 돕기위한 문구는 작성하지 않아도 됨

주요 내용

  • Word/Excel 등 문서형태로 작성
  • 개발 환경, 프로그래밍 언어
  • 개발 방식
    • 보통 디자인 패턴과 파일 구조 등 개발 하기 위한 공통된 방식을 정의
  • 코드 컨벤션
    • 소스코드를 작성할 때 공통된 방식으로 작성하도록 정의
  • 이슈 처리 방법
    • 프로그램적인 문제가 발생하였을 때 어떻게 대응하는지에 대해 정의
  • 형상 관리에 관한 전반적인 내용
    • 형상 관리 주기, commit 컨벤션 등 전반적인 내용을 정의



💡Today I Thought

오늘의 체크리스트

  • 알고리즘 코드카타 317
  • SQL 코드카타 112
  • LangChain 코드 Streamlit 구현
  • 로그인 인증 기능 추가
  • 사이드바 UI 변경
  • TIL 작성
  • WIL 작성

회고

 오늘도 이렇게 저렇게 하루 마무리! 어제 잠을 제대로 못잤는지 너무 피곤해서 아침부터 커피☕ 드링킹해버렸다. 하루종일 LangChain 코드에 몰입해서 아직도 눈앞에 코드가 아른아른..ㅎㅎ

댓글남기기