본문 바로가기
2023-2/소프트웨어 공학

8. 유지보수

by 철없는민물장어 2023. 12. 18.
728x90
반응형

소프트웨어 개발에서 유지보수는 67%나 차지함

 

유지보수 타입

- Corrective 20%: 오류 수정

- Adaptive 20%: 환경변화 반영

- Perfective 60%: 새 기능 추가, 성능 개선을 위한 확장 활동

- Preventive: 미래의 유지보수를 용이하게 함

 

유지보수라고 하면 defect fix를 생각하지만 Corrective는 고작 20%에 불과함

 

 

Lehman의 원리

- SW는 계속 변경됨

- SW 복잡도도 계속 증가함

- 대규모 SW 유지보수에는 일정한 방향이 있음

- 대규모 SW는 안정화 상태인 경우가 많음

- 유지보수 수행시 기존 SW에 대한 친근성을 유지하려고 함

 

유지보수에 영향을 주는 요소

- 사용자: 불편, 오류의 개선을 위한 변경 요청

- 환경: 운용환경,조직환경 변화 등

- 유지보수 프로세스: 변경요청, 이해, 변경 효과 분석

- 소프트웨어 제품: 지속적인 사용과 변경

- 유지보수 인력

 

유지보수 작업의 문제점과 한계

- SW에 대한 변경이 수시로 일어남: 문서에 반영하지 않는 경우 추적이 불가능

- 다른사람이 작성한 코드를 이해하기 쉽지 않음: 문서화, 주석이 달려있지 않으면 매우 심각

- 변경을 가정하여 설계되는 경우는 드물다

- 관리적인 측면에서 유지보수를 담당하는 프로그래머에게 동기부여를 하지 못함

- Alien Code의 발생: 아주 오래되거나 참고 문서 또는 개발자가 없어 유지보수가 어려운 프로그램

 

유지보수 작업 도구

- 시스템을 운영하고 지원하는 단계에 도움을 제공하는 자동화 도구

- 성능 모니터링 도구

- 프로그램 분석

- 디버깅 분석

- 자동 문서화 도구

 

SW 형상관리 (SCM: Software Configuration Management)

- 소프트웨어를 이루는 부품의 baseline(변경통제시점)을 정하고 변경을 철저히 통제하는 것

- 개발 중 발생하는 모든 산출물들이 변경됨으로써 점차 변해가는 소프트웨어 형상을 체계적으로 관리하고 유지하는 기법

- 소프투어ㅔ어 개발 생명주기 전바에 걸쳐 생성되는 모든 산출물들의 종합 및 변경 과정을 체계적으로 관리하고 유지하는 일련의 개발 관리 활동

 

예시) -시스템 버전을 추적, 유지보수 작업 후 업데이트 설치, 시스템의 모든 버전이 제대로 작동하는지 확인

 

형상관리 항목의 예

- 요구 분석서

- 설계 문서

- 원시/목적/실행 코드

- 매뉴얼

 

형상관리의 주 역할

- 변경되는 부분이 SW 전체에 어떤 영향을 미치는지 확인해줌

- 개발자가 해야할 일의 방향을 알려줌

 

형상관리가 제 역할을 하기 위해서는 프로젝트이 특성을 고려하여 관리하고자 하는 형상 항목과 시점을 명확하고 효율적으로 계획해야 함

 

버전 관리(version control)

개발 단계 또는 순서를 번호로 표시한 것

 

버전 관리의 필요성

각 버전의 정보를 데이터베이스화 하여 언제라도 과거의 release된 파일을 가지고 작업할 수 있도록 관리함

파일의 이력이나 차이점을 관리해 애플리케이션의 버전과 각 원시 파일이나 문서를 유용하게 활용하기 위함

 

1. 형상 식별

- 형상 관리의 가장 밑바탕이 되는 활동

형상 항목 선정, 식별자 규칙 선정, 베이스라인 기준 선정

 

2. 형상 통제

-형상 목록의 변경 요구를 검토 및 승인하여 현재 SW기준선에 반영될 수 있도록 통제하는 일련의 과정

- 변경 요청, 변경 심사, 변경 확인

 

3. 형상 상태 보고

- 프로젝트에서의 변경 횟수, 최근 SW항목의 버전, 릴리즈 식별자, 횟수, 비교 내용, 베이스라인의 상태, 변경 제어 상태, 형상통제위원회 활동 내역

 

4. 형상 감사

- 승인된 변경 요청이 제대로 반영되었는지 검증, 승인되지 않은 내용이 혹시 반영되었는지 검증, 승인된 변경과 관련된 항목들이 갱신되었는지 검증

 

 

형상관리의 목표 및 필요성

- SW의 라이프사이클 동안 제품의 무결성을 유지하고, 개발 프로젝트를 통제하여 생산성을 극대화하는 것

 

형상관리 SCM의 효과

- 언제라도 특정 시간대에 가장 안정적인 버전의 소프트웨어를 유지할 수 있도록 SW제품이 변경되어가는 상태에 대한 가시성을 확보

- 누가 변경, 뭐가 변경, 언제, 왜 변경했는지 알기쉬움

- 궁극적으로 생산성과 안전성을 높여 좋은품질의 SW생산하고 유지보수도 용이하게함

 

리팩터링

- 코드를 겉으로 보이는 동작의 변화 없이 내부구조를 변경하는 작업

- SW를 이해하기 쉽고 수정하기 쉽게 만드는것

- 기능을 변경하지 않음

 

리팩터링 하는 이유

- SW디자인을 개선: 중복된, 적절하지 않은 코드 제거.

- SW를 더 이해하기 쉽게 만듦

- 버그를 발견할 수 있게 도움

- 개발의 작업시간을 줄여준다: 설계된 SW디자인에 맞추면 쉽게 개발

=> SW개발 속도를 어느정도 유지하기 위해서는 좋은 디자인이 필수이며 이를 위해서는 리팩터링이 선행되어야함

 

리팩터링을 수행할 수 없을 때

- 현재 설계된 구조가 보안,성능등 문제가 있을때

- 코드를 첨부터 짜는게 낫다 싶을때

- 코드가 현재 작동하지 않을 때

- 마감일이 가까울 때

 

728x90
반응형

'2023-2 > 소프트웨어 공학' 카테고리의 다른 글

9. 소프트웨어 품질  (0) 2023.12.18
7. testing  (1) 2023.12.18
6. Implementation  (0) 2023.12.17
5. 설계  (0) 2023.12.17
4. 요구 사항 분석  (0) 2023.12.17

댓글