Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 파이썬
- 프로그래머스
- 내일배움캠프
- 탐욕알고리즘
- java
- lol
- API
- 리그오브레전드
- 알고리즘
- 스파르타내일배움캠프TIL
- 라이엇
- 자바
- 그리디알고리즘
- 코딩테스트
- github
- greedy
- git
- 그리디
- drf
- python
- sort
- programmers
- Riot
- Django
- 스파르타내일배움캠프
- 백준
- 롤
- 장고
- 코딩테스트준비
- SQL
Archives
- Today
- Total
Lina's Toolbox
소프트웨어 문서 본문
SRS (Software Requirements Standards, 요구사항명세서)
소프트웨어가 만족해야하는 요구사항을 상세하게 명세한 문서
- 작성에 필요한 조치들
- 이해관계자들이 반드시 참여해야합니다.
- 비전공자도 이해할 수 있도록 언어를 정의하고 부록을 포함하여야 합니다.
- 소프트웨어 개발을 주도하는 기술진들도 반드시 참여야해야합니다.
- 여러가지 비용이 현실적으로 고려되어야합니다.
- 소프트웨어 개발방법론에 따라 문서는 항상 최신상태를 유지합니다.
- 국제 및 국내 표준을 따르도록 기획합니다.
- SRS에 담겨야하는 내용 예시
- 소프트웨어 개요
- 개발하고자하는 소프트웨어의 전반적인 내용을 요약
- 소프트웨어의 소개
- 소프트웨어의 목적
- 주 사용자에 대한 설명
- 개발하고자하는 소프트웨어의 전반적인 내용을 요약
- 유저 시나리오
- 사용자가 해당 소프트웨어를 사용하기 위한 일련의 과정
- 목표 시나리오: 개발자의 의도대로 목표까지 사용되는 시나리오
- 경험 시나리오: 사용자가 실제 소프트웨어를 사용하며 생성되는 여러가지 과정
- 사용자가 해당 소프트웨어를 사용하기 위한 일련의 과정
- 와이어프레임
- UX를 고려하여 만든 UI로 각 인터페이스가 어떤 역할을 하는지, 대략적인 모양, 색깔, 위치 등 기준을 나타내는 문서
- 소프트웨어 개요
- 구동 환경
- 해당 소프트웨어가 구동되기 위한 물리적, 논리적 조건을 설명합니다.
- 요구 성능
- 해당 소프트웨어가 원할하게 처리해야하는 목표 요구치를 의미합니다.
- 어떤 예시가 있을까요?
- ‘최대 10만명의 동시 접속자를 처리할 수 있어야한다.’
- ‘결과값은 최대 15초를 넘기지 않고 결과값을 도출해야한다.’
- ‘비교군 10,000개에 대해 예측률이 최소 95% 이상이여야한다.’
- ‘최대 2페타바이트의 데이터를 수용 및 처리할 수 있어야한다.’
- 어떤 예시가 있을까요?
- 해당 소프트웨어가 원할하게 처리해야하는 목표 요구치를 의미합니다.
- 제한 사항
- 해당 소프트웨어가 원할하게 사용되기 위한 제한 사항을 의미합니다. 이 사항에 대해서는 기술진들이 이해관계자들에게 제한 사항에 대해 충분히 납득할 수 있도록 설득해야하는 상황이 올 수도 있습니다.
- 어떤 예시가 있을까요?
- ‘해당 기기는 80°C 이하에서 작동해야한다.’
- ‘방수 터치 패드는 표면으로부터 수심 1m까지만 사용해야한다.’
- ‘쵀대 접속량은 8만명으로 제한한다.’
- ‘인터넷익스플로 브라우저를 통한 접속에 대해서는 지원하지 않는다.’
- 어떤 예시가 있을까요?
- 해당 소프트웨어가 원할하게 사용되기 위한 제한 사항을 의미합니다. 이 사항에 대해서는 기술진들이 이해관계자들에게 제한 사항에 대해 충분히 납득할 수 있도록 설득해야하는 상황이 올 수도 있습니다.
SDS (Software Design Standards, 소프트웨어 설계 사양서)
소프트웨어의 전반적인 설계에 대해 상세하게 명세한 문서
- 작성에 필요한 조치들
- 소프트웨어를 설계하기에 가장 적합한 핵심 기술진의 주도하에 SRS문서에 맞추어 SDS문서를 작성하도록합니다.
- 최소 비용과 최대 효율을 적절하게 계산하여 설계합니다.
- 목표 개발 일정을 고려하여 절차에 따라 설계합니다.
- 반드시 유지보수성을 고려하여 설계합니다.
- 기술진이 주도 하에 작성합니다.
- SDS에 담겨야하는 내용 예시
- 와이어프레임
- 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, 목적, 필요 매개변수 등 모든 사항을 표 형태로 기재합니다.
- UML (Unified Modeling Language, 통합 모델링 언어)
- 그림과 관계도를 그려서 누구나 쉽게 알아볼 수 있도록 하는 다이어그램입니다.
- 클래스 다이어그램
- 클래스간 어떤 관계를 나타내고 있는지, 어떤 객체를 왜 어떻게 사용하는지 표현하는 다이어그램을 의미합니다.
- 클래스 다이어그램
- 그림과 관계도를 그려서 누구나 쉽게 알아볼 수 있도록 하는 다이어그램입니다.
- ERD(Entity Relationship Diagram, 개체 관계 다이어그램)
- DB에서 각 개체 간에 어떤 관계를 나타내는지 표현한 다이어그램
- 파일 구조
- 소프트웨어의 전반적인 파일 구조를 설명합니다.
- 반드시 각 폴더 및 파일이 어떤 역할을 하는지 설명해야합니다.
- 예시
- 소프트웨어의 전반적인 파일 구조를 설명합니다.
├── static/
│ ├── css/
│ ├── js/
│ ├── images/
│ └── ...
├── media/
│ ├── profile_pictures/
│ ├── documents/
│ └── ...
SCS (Software Code Standards, 소프트웨어 코드 사양서)
소프트웨어를 개발하기 위한 작성할 코드에 대한 표준 문서를 의미해요.
- 작성에 필요한 조치들
- 철저하게 소프트웨어 개발진을 위한 문서가 되어야합니다.
- 유지보수를 고려하며 작성합니다.
- 인수인계를 고려하며 작성합니다.
- 국제 표준을 준수하도록 작성합니다.
- 최대한 간단하지만 명료하게 작성합니다.
- SCS에 담겨야하는 내용 예시
- 개발 환경, 프로그래밍 언어
- 개발 방식
- 보통 디자인 패턴과 파일 구조 등 개발 하기 위한 공통된 방식을 정의합니다.
- 코드 컨벤션
- 소스코드를 작성할 때 공통된 방식으로 작성하도록 정의합니다.
- 이슈 처리 방법
- 프로그램적인 문제가 발생하였을 때 어떻게 대응하는지에 대해 정의합니다.
- 형상 관리에 관한 전반적인 내용
- 형상 관리 주기, commit 컨벤션 등 전반적인 내용을 정의합니다.
WBS (Work Breakdown Structure, 업무 분류 체계)
프로젝트를 수행하기 위한 업무를 분류하여 정리한 문서
- 작성에 필요한 조치들
- 개발 목표 일정과 기한을 넘지 않도록 계획합니다.
- 개발 담당자를 통해 적절한 개발 기간을 확보합니다.
- 적절한 업무의 분배가 이뤄지도록 작성합니다.
- WBS에 담겨야하는 내용 예시
- 개발 일정
- 개발 항목
- 개발 항목은 기능단위로 대분류, 중분류, 소분류로 나누어 세분화합니다.
- 예시
- 대분류는 가장 큰 단위로 back-end, front-end 이런식으로 나눌 수 있고
- 중뷴류는 중간 단위로 back-end에서 DB, API, 이런식으로 나눌 수 있고
- 소분류는 가장 작은 단위로 최소 기능단위의 함수나 클래스, 또는 튜터 말 잘듣기 기능, 수강생 숙제시키기 기능 등 정말 최소단위의 기능을 의마합니다.
- 개발 항목은 기능단위로 대분류, 중분류, 소분류로 나누어 세분화합니다.
- KPI (핵심 성과 지표)
- 본래 KPI를 별도의 부서에서 별도의 문서로 작성 및 관리하기도 하지만 개발 일정에 맞춰서 KPI를 함께 내포하여 작성하기도 합니다.
Verification & Validation (검증 및 확인)
소프트웨어의 신뢰성과 성능을 보장하기 위해 작성하는 문서들의 모음 (하위에 있는 항목들은 프로젝트의 규모가 커질 수록 별도로 문서화가됩니다.)
Verification & Validation에 담겨야하는 내용
- TestPlan: 시험 계획
- TestCase: 시험 항목
- 사이버보안 check list: 사이버보안에 관련된 검증 및 확인 항목들
- 제한사항: 검증 및 확인을 하기 위한 제한 사항을 의미합니다.
- 예를 들어서 최대 동시 20만명에 대한 트래픽까지 시험을 진행해야하는데 100만명을 시험한다던지 그런 불필요한 일들을 방지하기 위한 항목입니다.
- UX 관련된 피드백 보고서
- 구현된 UI을 사용하며 사용자 경험에 대한 보고서들을 의미합니다.
그외 여러가지 문서들
사용자 설명서(User Manual)
- 사용자를 위한 소프트웨어 안내서/지침서/설명서를 의미합니다.
- 주로 어떻게 사용하는지에 대한 내용이 담겨있습니다.
관리자 안내서(Administrator Guide)
- 관리자를 위한 솦트웨어 안내서/지침서/설명서를 의미합니다.
- 주로 관리자가 해당 소프트웨어를 어떻게 제어하고 어느 권한까지 가능한지에 대한 내용이 담겨있습니다.
라이선스에 관한 문서
- 해당 소프트웨어에 대한 저작권을 표시합니다.
현업에서 문서 작성 능력은 정말 생각보다 많이 필요해요. R&D 분야라거나 거대한 프로젝트를 진행한다면 더더욱!
여기에 있는 문서들 외에도 정말 여러가지 문서들이있어요. 회사마다, 산업마다, 부서마다, 프로젝트마다 작성해야하는 문서들이 달라집니다. 위에 있는 모든 문서를 작성해야하는 것도 아니고 필요에 따라 적절하게 작성하면됩니다.
'스파르타 내일 배움 캠프 AI 웹개발 과정 > CS' 카테고리의 다른 글
HTTP와 URL 구조 (1) | 2024.08.29 |
---|---|
웹 심화 이해 / 앱과 서버의 차이점, 웹 보안, 웹 프레임워크 (0) | 2024.08.13 |
빅데이터와 AI (0) | 2024.07.30 |
네트워크 (0) | 2024.07.29 |
소프트웨어 설계 (0) | 2024.07.26 |