소프트웨어 문서를 작성하는 이유?
소프트웨어 개발 과정에서 문서화는 성공적인 프로젝트를 위해 필수적이다. 개발 과정과 결과물을 명확하게 기록하여 팀원 간의 의사소통을 원활하게 하고, 유지보수를 용이하게 하기 때문이다. 설계 의도와 결정 사항을 명확히 기록함으로써 개발 팀 내외부 이해관계자들이 프로젝트의 방향성을 이해하고 필요한 조정을 할 수 있도록 돕는다. 또한 문서화는 프로젝트의 진행 상황을 추적하고, 발생할 수 있는 문제를 사전에 예방하는 데에도 중요한 역할을 한다. 문서를 통해 프로젝트의 현재 상태를 명확하게 파악할 수 있고, 이를 바탕으로 효율적인 의사결정을 할 수 있기 때문이다
소프트웨어 문서 종류
1. 요구사항 명세서 (SRS; Software Requirements Standards)
소프트웨어 개발을 주도하는 기술진과 이해 관계자들이 반드시 참여해야 하며, 비전공자도 이해할 수 있도록 언어를 정의하고 부록을 포함해햐 한다. 여러 가지 비용이 현실적으로 고려되어야 하며 문서는 항상 최신 상태를 유지해야 한다.
담겨야 하는 내용
- 소프트웨어 개요
개발하고자 하는 소프트웨어의 전반적인 내용을 요약하는 내용이다. 아래의 내용을 포함한다
- 소프트웨어의 소개
- 소프트웨어의 목적
- 주 사용자에 대한 설명 - 유저 시나리오
사용자가 해당 소프트웨어를 사용하기 위한 일련의 과정이다. 개발자의 의도대로 목표까지 사용되는 시나리오인 목표 시나리오와 사용자가 실제 소프트웨어를 이용하며 생성되는 여러 가지 과정인 경험 시나리오가 있다. - 와이어프레임
UX를 고려하여 만든 UI로 각 인터페이스가 어떤 역할을 하는지 대략적인 모양, 색깔, 위치 등 기준을 나타낸다 - 구동환경
해당 소프트웨어가 구동되기 위한 물리적, 논리적 조건을 설명한다 - 요구성능
해당 소프트웨어가 원활하게 처리해야하는 목표 요구치를 의미한다 - 제한사항
해당 소프트웨어가 원활하게 사용되기 위한 제한 사항을 의미한다.
- 해당 기능은 80도씨 이하에서 작동해야 한다
- 최대 접속량은 8만명으로 제한한다
2. 소프트웨어 설계 사양서
소프트웨어의 전반적인 설계에 대해 상세하게 명세한 문서이다. 소프트웨어를 설계하기에 가장 적합한 핵심 기술진의 주도하에 문서를 작성한다. 목표 개발 일정을 고려하여 설계하며 유지보수성을 고려하여 설계해야한다.
담겨야 하는 내용
- 와이어프레임
- 개발환경
- 해당 소프트웨어를 개발하기 위한 물리적/논리적 환경 - 디자인 패턴
- 어떤 구조로 구현할 것인지 정의한다. - 연계기술
- 함께 연계되는 기술들은 어떤 것이 있는지 작성한다. 주요 기술들과 함께 개발 언어와 버전, SQL에 대한 내용도 함께 포함하여 작성한다 - 구동환경
- API 명세서
- 사용되는 메소드에 대한 이름, 기능, url, end-point, 목적, 필요 매개변서 등 모든 사항을 표 형태로 기재한다 - UML
- 그림과 관계도를 그려서 누구나 쉽게 알아볼 수 있도록 하는 다이어그램
- 클래스 다이어그램, ERD 등이 있다 - 파일 구조
- 소프트웨어의 전반적인 파일 구조를 설명한다
3. 소프트웨어 코드 사양서(SCS; Software Code Standards)
소프트웨어를 개발하기 위한 작성할 코드에 대한 표준 문서이다. 소프트웨어 개발진을 위한 문서이며 유지보수, 인수인계를 고려하여 작성해야 한다. 간단하지만 명료하게 작성해야 한다.
담겨야 하는 내용
- 개발환경, 프로그래밍 언어
- 개발 방식
- 디자인 패턴과 파일 구조 등 개발 하기 위한 공통된 방식을 정의 - 코드 컨벤션
- 소스코드를 작성할 때 공통된 방기으로 작성하도록 정의 - 이슈 처리 방법
- 프로그램적인 문제가 발생했을 때 어떻게 대응하는지에 대해 정의 - 형상 관리에 대한 전반적인 내용
- 형상 관리 주기, commit 컨벤션 등 전반적인 내용 정의
'[내일배움캠프]스파르타코딩클럽 AI 웹개발 > Today I Learned' 카테고리의 다른 글
[내일배움캠프 30일차 TIL] SQL - 날짜 및 시간 (0) | 2024.08.02 |
---|---|
[내일배움캠프 29일차 TIL] SQL - NULL (0) | 2024.08.01 |
[내일배움캠프 27일차 TIL] 빅데이터 및 인공지능 (1) | 2024.07.30 |
[내일배움캠프 26일차 TIL] 프로토콜 (0) | 2024.07.29 |
[내일배움캠프 25일차 TIL] 소프트웨어 설계 (0) | 2024.07.26 |