본문 바로가기
정보처리기사

20. 소프트웨어 유지 보수 - 1과목 소프트웨어 구축

by 공불러 2024. 3. 28.
728x90
반응형

20. 소프트웨어 유지 보수 - 1과목 소프트웨어 구축

유지보수에 대한 내용을 담은 이번 파트는 앞서 자주 이야기한 파트들에 일부를 다시 설명하게 되는 파트이므로 상세히 읽고 갈 것 없이, 아~ 앞에서 유지보수 종류 이야기했었지, 클린코드를 만들고 리팩토링을 한다고 했었지와 같이 확인하면서 읽어주시면 됩니다.

 

목차

    소프트웨어의 유지보수

    유지보수는 소프트웨어가 개발된 이후에 발생하는 변경, 보완, 수정 등의 작업을 의미합니다. 즉, 소프트웨어가 처음에 개발되고 배포된 후에도 지속적으로 관리되고 발전되는 과정을 말합니다.

    유지보수의 중요성

    요구사항 변경 대응: 비즈니스 요구사항이 변화하거나 사용자 요구가 변경될 때, 소프트웨어를 업데이트하여 신규 기능을 추가하거나 기존 기능을 수정해야 합니다.

    1. 버그 수정: 소프트웨어에 발생한 버그를 해결하여 시스템의 안정성을 유지하고 사용자 경험을 향상시킵니다.
    2. 보안 강화: 보안 취약점이 발견되거나 새로운 보안 요구사항이 발생할 경우, 소프트웨어를 업데이트하여 보안을 강화해야 합니다.
    3. 기술적 부채 관리: 초기 개발 단계에서 미루어진 기술적 부채를 관리하고 해결함으로써 소프트웨어의 품질을 유지하고 개선합니다.

    유지보수의 어려움

    1. 복잡성 증가:시간이 흐름에 따라 소프트웨어의 코드베이스는 점점 복잡해집니다. 초기 설계와 구현의 결함으로 인해 복잡성이 증가하고 이해하기 어려워집니다
    2. 문서화 부족: 소프트웨어의 변경 이력, 아키텍처, 기능 등에 대한 충분한 문서화가 부족하면 유지보수 과정에서 이해하기 어려움을 겪을 수 있습니다.
    3. 의존성과 상호 연결성: 다양한 모듈이나 컴포넌트 간의 의존성이 높아지면 변경이 한 모듈에 영향을 미치는 경우가 발생하여 유지보수가 어려워집니다.
    4. 역량 부족: 초기 개발자가 이질적인 코드를 작성하거나 충분한 문서화를 제공하지 않으면 후속 유지보수 담당자들은 코드를 이해하기 어려워집니다.

    유지보수는 소프트웨어 생명주기에서 가장 비용이 많이 드는 부분 중 하나이며, 소프트웨어의 성공과 장기적인 사용에 있어서 핵심적인 부분입니다. 따라서 초기에 클린하고 유지보수 가능한 소프트웨어를 개발하는 것이 중요합니다.

     

    유지보수의 구분

    각 유지보수 유형은 소프트웨어의 생명 주기 동안 발생하는 다양한 요구사항에 대응하여 소프트웨어를 유지하고 발전시키는데 사용됩니다.

    유지보수 구분 설명
    수정 보수 소프트웨어에 발생한 버그를 수정하거나 오작동을 해결하여
    시스템의 안정성과 기능을 회복시키는 보수 작업입니다.
    적응 보수 외부 환경이나 요구사항의 변화에 대응하여 소프트웨어를 수정하여
    기능을 추가하거나 변경하는 보수 작업입니다.
    향상 보수 소프트웨어의 성능, 사용성, 효율성 등을 향상시키기 위해 변경하는 보수 작업입니다.
    예방 보수 잠재적인 문제를 예방하기 위해 소프트웨어의 구조나 설계를 개선하는 보수 작업입니다.

     

    유지보수 관련 용어

    관련 내용은 앞의 Part 19. 애플리케이션 성능 개선에 대한 글을 보시는 것을 권유드립니다.

    2024.03.28 - [정보처리기사] - 19. 애플리케이션 성능 개선 - 1과목 소프트웨어 구축

    1. 레거시 시스템 (Legacy System)
      • 레거시 시스템은 오래된 기술이나 아키텍처로 개발된 소프트웨어 시스템을 의미합니다.
      • 주로 오래된 기술 스택으로 개발되어 유지보수가 어렵고, 새로운 요구사항에 대응하기 어려운 문제를 가지고 있습니다.
    2. 외계인 코드 (Alien Code)
      • 외계인 코드는 개발자가 이해하기 어려운 혹은 낯선 코드를 가리킵니다.
      • 주로 레거시 시스템이나 다른 팀이나 개발자에 의해 작성된 코드를 가리킵니다.
    3. 스파게티 코드 (Spaghetti Code)
      • 스파게티 코드는 복잡하고 얽힌 코드를 의미합니다.
      • 주로 제어 흐름이 복잡하게 꼬여있고, 가독성이 낮아 유지보수가 어려운 코드를 가리킵니다.
    728x90
    반응형

    댓글