[SDLC] 소프트웨어 생명주기
소프트웨어 개발 생명주기(Software Development Life Cycle, SDLC)는 소프트웨어를 개발하기 위한 일련의 단계이며 개발 프로세스를 설명하는 개념이다.
일반적으로 6단계로 구성되며, 각 단계에서 특정한 목표를 달성하기 위해 활동을 수행한다.
계획(Planning)
- 문제의 범위와 목표를 설정하고, 개발 일정과 예산을 계획
- 프로젝트 팀 구성과 역할 및 책임을 명확하게 정의
분석(Analysis)
소프트웨어를 만들기 위해 필요한 요구사항을 수집하고 분석
- 요구사항 수집 및 분석을 통해 문제를 해결하는데 필요한 시스템의 요구사항을 파악
- 요구사항 명세서를 작성하고, 사용자와 개발자 간의 의사소통을 원활하게 함
설계(Design)
요구사항을 바탕으로 소프트웨어의 구조와 설계를 계획
- 시스템 구조와 기능을 설계
- 상세한 시스템 설계, 데이터베이스 설계, 인터페이스 설계 등을 진행
구현(Implementation)
설계된 소프트웨어를 실제로 개발하고 코딩
- 설계된 시스템을 실제로 개발
- 코딩, 프로그래밍, 테스트 등의 활동을 수행
테스트 및 통합(Test & Integration)
개발된 소프트웨어를 테스트하여 오류를 찾고 수정
- 시스템 테스트를 통해 개발된 소프트웨어가 요구사항에 부합하는지 확인
- 다른 시스템과의 통합 테스트를 수행
유지보수(Maintenance)
소프트웨어를 지속적으로 유지보수하며 업그레이드 및 수정을 수행
- 소프트웨어가 개발된 이후에도 사용자의 요구에 따라 소프트웨어를 지속적으로 유지보수 진행
- 버그 수정, 기능 추가, 성능 개선 등을 수행
소프트웨어의 유지보수를 쉽게 할 수 있는 방법
버그를 해결하기 위해 다른 사람이 만든 코드를 보고 분석하는 시간이 많았다. 새로운 요구사항도 마찬가지다. 기존 스펙파악과 만들어진 코드를 분석하여 새로운 기능과 유기적으로 동작할 수 있도록 설계/구현이 필요하다.
처음부터 잘 만들어진 코드는 거의 없다.
시간이 지날수록 소프트웨어는 진화하고 새로운 패러다임을 통해 변화하기 마련인데, 이전에 만들어진 코드가 꾸준한 관리/유지보수가 되지 않으면 코드를 보고 파악하는 시간이 점점 더 오래 걸릴 수 있다.
그럼 이러한 과정을 쉽게 할 수 있는 방법은 어떤 것들이 있을까?
아래의 방법을 적용하여 소프트웨어를 개발하면, 소프트웨어의 유지보수를 더 쉽게 할 수 있다.
주석(comment) 작성
소스 코드에 주석을 추가하여 코드의 작동 방식 및 목적을 설명
이를 통해 코드를 이해하고 수정하는 데 필요한 정보를 제공할 수 있다.
- 코드에 설명을 추가하여 이해하기 쉽게 만듦.
- 코드를 이해하기 위해 필요한 정보를 추가
항상 느끼는 것이지만, 코드를 작성하는 것보다 주석을 다는 것이 더 어렵다.😭
모듈화(Modularization)
- 소프트웨어를 작은 모듈 단위로 분리하여 각 모듈을 독립적으로 작동하도록 설계
- 이를 통해 코드의 재사용성이 높아지며, 유지보수 및 수정이 용이
테스트(Testing)
- 소프트웨어를 개발하면서 지속적으로 테스트를 수행하여 코드의 버그를 찾고 수정
- 이를 통해 소프트웨어가 안정적으로 동작하고, 유지보수 및 수정이 더 쉬워짐
문서화(Documentation)
소프트웨어의 설계와 구현 과정에서 문서화를 수행
- 이를 통해 소프트웨어의 기능과 작동 방식에 대한 설명을 제공
- 개발자나 유지보수 담당자들이 소프트웨어를 쉽게 이해할 수 있음
코드에 대한 문서를 작성
- 이는 코드의 구조, 작동 방식, 주요 기능 등을 설명
- 새로운 개발자가 코드를 이해하는 데 큰 도움이 됨
Xcode
는 문서화 툴 docC가 있으며, GitPages/Website를 통해 배포할 수도 있다.
리팩토링(Refactoring)
- 코드를 수정하여 읽기 쉽고 이해하기 쉬운 형태로 만든다.
- 함수를 분리하거나 클래스를 재구성하는 등의 작업을 수행하여 코드의 가독성 향상
Refactoring은 TDD가 매우 좋다.
코드 표준(Coding standards)
일관된 코딩 스타일과 가이드라인을 정의
- 모든 코드가 일관성 있게 작성되도록 함
- 코드의 가독성이 높아지고, 유지보수 및 수정이 더 쉬워 짐
- 기계적인 스타일은
Lint Tool
을 사용
코드리뷰
- 코드를 다른 개발자에게 검토 요청
- 코드 리뷰는 코드의 오류나 버그를 찾아내는 것뿐만 아니라 가독성과 유지보수성을 향상시키는 데도 도움이 됨
새로 작성하기
- 코드를 처음부터 다시 작성하는 것이 가장 좋은 방법일 수 있다.
- 이전 코드를 참고하여 새로 작성하면서, 더 나은 구조와 가독성을 갖춘 코드를 만들 수 있다.
필자는 Objective-C를 Swift 언어로 변경하는 일을 많이 했다. 목적은 유지보수를 좋게 하기 위함이었다.
간단한 코드는 바로 변경이 가능하지만, 단위가 큰 덩어리들인 대부분의 코드는 예전에 작성된 코드이기 때문에, 문서나 테스팅 코드가 없어 어려움이 있었다.
코드를 새로 작성할 때 스펙 자체를 모르고 무작정 단순 변환만 하며 코드를 새로 작성하는 것은 큰 리스크가 따른다.
해당 스펙, 기존 설계/분석이 된 이후에 진행하는 것이 비즈니스 로직 파악, 업무에 도움이 되며, 코드 분석도 원활했으며, 새로 작성하기 수월했다.
댓글남기기