Architecture Software Engineering [SDLC] 소프트웨어 생명주기

[SDLC] 소프트웨어 생명주기

소프트웨어 개발 생명주기(Software Development Life Cycle, SDLC)는 소프트웨어를 개발하기 위한 일련의 단계이며 개발 프로세스를 설명하는 개념이다.

일반적으로 6단계로 구성되며, 각 단계에서 특정한 목표를 달성하기 위해 활동을 수행한다.

Image

계획(Planning)

  • 문제의 범위와 목표를 설정하고, 개발 일정과 예산을 계획
  • 프로젝트 팀 구성과 역할 및 책임을 명확하게 정의

분석(Analysis)

소프트웨어를 만들기 위해 필요한 요구사항을 수집하고 분석

  • 요구사항 수집 및 분석을 통해 문제를 해결하는데 필요한 시스템의 요구사항을 파악
  • 요구사항 명세서를 작성하고, 사용자와 개발자 간의 의사소통을 원활하게 함

설계(Design)

요구사항을 바탕으로 소프트웨어의 구조와 설계를 계획

  • 시스템 구조와 기능을 설계
  • 상세한 시스템 설계, 데이터베이스 설계, 인터페이스 설계 등을 진행

구현(Implementation)

설계된 소프트웨어를 실제로 개발하고 코딩

  • 설계된 시스템을 실제로 개발
  • 코딩, 프로그래밍, 테스트 등의 활동을 수행

테스트 및 통합(Test & Integration)

개발된 소프트웨어를 테스트하여 오류를 찾고 수정

  • 시스템 테스트를 통해 개발된 소프트웨어가 요구사항에 부합하는지 확인
  • 다른 시스템과의 통합 테스트를 수행

유지보수(Maintenance)

소프트웨어를 지속적으로 유지보수하며 업그레이드 및 수정을 수행

  • 소프트웨어가 개발된 이후에도 사용자의 요구에 따라 소프트웨어를 지속적으로 유지보수 진행
  • 버그 수정, 기능 추가, 성능 개선 등을 수행

소프트웨어의 유지보수를 쉽게 할 수 있는 방법

버그를 해결하기 위해 다른 사람이 만든 코드를 보고 분석하는 시간이 많았다. 새로운 요구사항도 마찬가지다. 기존 스펙파악과 만들어진 코드를 분석하여 새로운 기능과 유기적으로 동작할 수 있도록 설계/구현이 필요하다.

처음부터 잘 만들어진 코드는 거의 없다.

시간이 지날수록 소프트웨어는 진화하고 새로운 패러다임을 통해 변화하기 마련인데, 이전에 만들어진 코드가 꾸준한 관리/유지보수가 되지 않으면 코드를 보고 파악하는 시간이 점점 더 오래 걸릴 수 있다.

Image

그럼 이러한 과정을 쉽게 할 수 있는 방법은 어떤 것들이 있을까?
아래의 방법을 적용하여 소프트웨어를 개발하면, 소프트웨어의 유지보수를 더 쉽게 할 수 있다.

주석(comment) 작성

소스 코드에 주석을 추가하여 코드의 작동 방식 및 목적을 설명
이를 통해 코드를 이해하고 수정하는 데 필요한 정보를 제공할 수 있다.

  • 코드에 설명을 추가하여 이해하기 쉽게 만듦.
  • 코드를 이해하기 위해 필요한 정보를 추가

항상 느끼는 것이지만, 코드를 작성하는 것보다 주석을 다는 것이 더 어렵다.😭

모듈화(Modularization)

  • 소프트웨어를 작은 모듈 단위로 분리하여 각 모듈을 독립적으로 작동하도록 설계
  • 이를 통해 코드의 재사용성이 높아지며, 유지보수 및 수정이 용이

테스트(Testing)

  • 소프트웨어를 개발하면서 지속적으로 테스트를 수행하여 코드의 버그를 찾고 수정
  • 이를 통해 소프트웨어가 안정적으로 동작하고, 유지보수 및 수정이 더 쉬워짐

문서화(Documentation)

소프트웨어의 설계와 구현 과정에서 문서화를 수행

  • 이를 통해 소프트웨어의 기능과 작동 방식에 대한 설명을 제공
  • 개발자나 유지보수 담당자들이 소프트웨어를 쉽게 이해할 수 있음

코드에 대한 문서를 작성

  • 이는 코드의 구조, 작동 방식, 주요 기능 등을 설명
  • 새로운 개발자가 코드를 이해하는 데 큰 도움이 됨

Xcode는 문서화 툴 docC가 있으며, GitPages/Website를 통해 배포할 수도 있다.

리팩토링(Refactoring)

  • 코드를 수정하여 읽기 쉽고 이해하기 쉬운 형태로 만든다.
  • 함수를 분리하거나 클래스를 재구성하는 등의 작업을 수행하여 코드의 가독성 향상

Refactoring은 TDD가 매우 좋다.

코드 표준(Coding standards)

일관된 코딩 스타일과 가이드라인을 정의

  • 모든 코드가 일관성 있게 작성되도록 함
  • 코드의 가독성이 높아지고, 유지보수 및 수정이 더 쉬워 짐
  • 기계적인 스타일은 Lint Tool을 사용

코드리뷰

  • 코드를 다른 개발자에게 검토 요청
  • 코드 리뷰는 코드의 오류나 버그를 찾아내는 것뿐만 아니라 가독성과 유지보수성을 향상시키는 데도 도움이 됨

새로 작성하기

  • 코드를 처음부터 다시 작성하는 것이 가장 좋은 방법일 수 있다.
  • 이전 코드를 참고하여 새로 작성하면서, 더 나은 구조와 가독성을 갖춘 코드를 만들 수 있다.

필자는 Objective-C를 Swift 언어로 변경하는 일을 많이 했다. 목적은 유지보수를 좋게 하기 위함이었다.
간단한 코드는 바로 변경이 가능하지만, 단위가 큰 덩어리들인 대부분의 코드는 예전에 작성된 코드이기 때문에, 문서나 테스팅 코드가 없어 어려움이 있었다.

코드를 새로 작성할 때 스펙 자체를 모르고 무작정 단순 변환만 하며 코드를 새로 작성하는 것은 큰 리스크가 따른다.
해당 스펙, 기존 설계/분석이 된 이후에 진행하는 것이 비즈니스 로직 파악, 업무에 도움이 되며, 코드 분석도 원활했으며, 새로 작성하기 수월했다.

Image

댓글남기기