본문 바로가기

카테고리 없음

시스템의 유지 및 보수를 알아보자

소프트웨어 유지 및 보수란 개발프로그램 및 자료를 항상 최신의 것으로 정상적인 상태로 유지시켜 두는 것을 말한다. 즉 소프트웨어 제품이 사용자에게 인도된 후에 발생하는 여러 가지 이유로 발생하는 변동사항이나 문제를 해결하거나 관리를 하는 작업으로 시스템의 생명을 연장하는 소프트웨어 공학적인 모든 행위를 말한다. 따라서 시스템을 개발하는 비용보다 유지 및 보수에 들어가는 비용이 더 많이 차지한다. 그러므로 체계적이고 이해하기 쉬우며, 수정이 용이한 시스템을 개발해야 한다.

 

1. 유지 및 보수의 중요성

소프트웨어 개발 및 유지 보수비용은 매년 급증하여 하드웨어 비용을 훨씬 능가할 뿐만 아니라 소프트웨어 유지 보수에 사용되는 비용은 전체 비용의 70퍼센트 이상을 차지하는 실정이다. 또한 소프트웨어는 고정적인 형태가 아니고 늘 개선되어야하는 특성을 가지고 있다. 따라서 요구사항이 변경되는 경우, 필수 불가결하게 소프트웨어가 수정되어야 하는 경우 등 여러가지 원인에 의해 소프트웨어는 수시로 유지 보수를 필요로 한다.

 

2. 유지 보수의 문제점

소프트웨어 유지 및 보수에 관한 문제점의 대부분은 소프트웨어를 계획 개발한 방법의 결여에 기인한다고 볼 수 있다. 따라서 소프트웨어 유지 보수에 관한 전형적인 문제점을 살펴보면 다음과 같다.

(1) 소프트웨어에 대한 변경 작업은 수시로 발생하는 문제

(2) 이미 만들어져 있는 소프트웨어를 역추적 하면서 유지 보수하기 어려운 문제

(3) 다른 사람이 작성한 프로그램을 이해하기 어려운 문제

(4) 이직률이 높은 경우 설명해줄 수 있는 사람이 없다는 문제

(5) 처음부터 변경될 것을 예상하고 소프트웨어가 작성되지 않는다는 문제

(6) 대부분 문서가 존재하지 않아 참고할 만한 내용이 없는 것이 문제

(7) 유지 보수자는 중요한 업무를 담당하고 있다는 인식을 심어주어야 하는문제

(8) 유지 보수를 지원하는 도구를 사용하지 않는다는 문제

 

3. 유지 보수 절차

소프트웨어의 유지 및 보수는 최근까지 관심이 매우 적은 분야중에 하나였다. 그 이유는 여러 가지가 있겠으나 소프트웨어가 더욱 복잡한 기능을 갖게 되면서 그 이해에 어려움이 따른다는 것이다. 방대한 분량의 코드를 이해하기 위해서는 문서화뿐만 아니라 여러 가지 도구가 필요하나 이를 갖추지 못하고 유지 및 보수를 하고 있기 때문이다. 따라서 다음과 같은 절차에 의해서 유지 보수를 진행한다

(1) 현재 운용중인 시스템의 이해

(2) 동작 불능이나 오류 발생의 원인 파악

(3) 수정할 내용을 조사

(4) 수정에 따른 파급 효과를 고려

(5) 수정 및 테스트

(6) 수정 내용에 대한 통제 및 문서화

 

4. 유지 보수의 종류

우리가 사용하고 있는 오래된 소프트웨어는 프로그램의 크기와 작동에만 관심을 두고 작성되었으며 오늘날 널이 사용되는 분석, 설계, 코딩, 문서화 기법을 사용하지 못하였기 때문에 많은 결함을 지니고 있다. 따라서 다음과 같은 유지 보수의 종류에 대하여 살펴보자.

 

수정 유지 및 보수 또는 하자 유지 및 보수라고도 하며, 소프트웨어의 운영 중 발견되는 오류를 제거하기 위해 행하여지는 유지 및 보수 노력을 의미한다. 따라서 오류를 발견하고 수정하는 작업, 또는 필요로 인하여 수정하는 작업으로 결함의 원인을 발견하고 제거하는 작업을 말한다.

 

기능개선 유지 및 보수라고도 하며 현재 운영중인 소프트웨어에 내포된 비효율적인 처리 과정을 제거하고 효율적인 처리방법을 이용하도록 함으로써 성능 향상을 도모하고 유지 및 보수성을 높이기 위해 행하여지는 유지 및 보수 노력을 의미한다. 즉 새로운 성능과 기능을 추가하거나 이해력을 향상시키고 요구사항을 충족할 수 있도록 개선하는 작업을 말한다.

 

환경유지 및 보수는 소프트웨어 운영 중 발생하는 주변 환경의 변화에 대처하기 위한 수정 노력을 의미한다. 즉 새로운 하드웨어나 운영체제의 도입, 사용 중인 프로그래밍 언어나 데이터구조의 벼경 등 다른 운영체제나 하드웨어 환경에도 잘 적응될 수 있도록 변경하는 작업을 말한다.

 

예방 유지 및 보수는 예방 조치라고도 하며, 보다 나은 성능이나 신뢰도를 부여하기 위하여 사전에 소프트웨어나 하드웨어의 약점을 찾아 보완하는 것으로서, 예방 유지 보수는 하드웨어 분야에서 널리 이용되고 있을 뿐 소프트웨어 유지 및 보수를 위해서는 거의 사용되지 않는 실정이다. 즉 미래의 유지 보수나 신뢰성을 향상시키기 위한 기본 기능을 제공하는 작업으로, 문제점이 발생하기 전에 유지 및 보수성과 신뢰성을 향상시킬 수 있도록 하는 작업을 말한다.

 

[코드설계에 대해 알아보자]

우리의 생활 주변에 불규칙하게 존재라는 여러 종류의 많은 데이터를 취급하는데 있어서 그 실체를 파악하고 구분, 정리하고자 할 때 코드화의 필요성을 가지게 된다. 코드는 컴퓨터로 처리할 때 데이터의 분류나 대조, 확인등을 용이하게 하기 위하여 사용되는 일정한 방식에 따라서 작성된 기호를 말하며, 코드 설계는 정보처리 시스템에 적다한 코드 체계를 설정하는 것이 목적이다. 우리 주위에서도 그 사용의 예를 흔히 볼 수 있다. 도서에 번호를 붙여 열람을 용이하게 한 것, 극장에 지정석을 정하는 것, 운동선수의 등에 번호를 분여 선수를 식별해 내는 것 등의 여러 가지가 있다.

 

코드는 데이터를 사용 목적에 따라 쉽게 구분할 수 있도록 분류, 배열, 집계 등을 위해서 분여진 숫자, 문자, 또는 기호라고 정의할 수 있다. 즉 시스템을 구축하는 데 있어서 사물을 표현하는 기호 또는 부호화 된 정보를 말한다. 따라서 코드 설계란 코드화 할 필요가 있는 대상이 되는 정보처리 시스템의 항복들을 결정하여 그 코드 체계를 구축하는 것으로, 정보처리의 효율이나 처리된 정보의 이용 가치에 큰 영향을 미친다.

 

[코드 설계의 중요성]

코드는 효율성을 향상시키기 위해 많은 특징을 포함하여 설계하여야 하며, 자료의 운영과 관리 측면에 많은 영향을 주게된다. 이러한 코드의 적합 여부가 정보처리의 효율 및 처리되는 정보는 이용 가치에 중대한 영향을 미치므로 충분한 주의를 기울여서 설계해야 한다.

 

1. 코드의 목적

코드는 자료의 조합, 분류 또는 집계와 특정 자료의 축출을 쉽게 할 수 있으며, 파일 시스템을 체계화 할 수 있기 때문에 정보처리 시스템에서는 반드시 필요하므로 다음과 같은 목적에 의해서 설계되어야 한다.

(1) 상징성 : 적은 자리수로 많은 자료항목을 표현할 수 있다.

(2) 고유성 : 코드는 획일적이어야 한다.

(3) 분류의 용이성 : 자료항목이 어떤 분류 기준에 따라 처리되는 경우에는 그 기준을 코드에 적용하는 것이 바람직하다.

(4) 확장성 : 자료항목의 양이 증가하거나 분류 기준의 수가 증가할 경우 이의 추가가 쉽게 되도록 해야 한다.

(5) 기계처리의 용이성 : 만들어진 코드는 기계처리에 편리해야 한다.

(6) 표의성 : 사람이 알기 쉽게 한다.

 

2. 코드의 설계 원칙

좋은 코드가 되기 위해서는 다음과 같은 사항들을 고려해서 설계되어야 한다.

(1) 코드의 사용 목적이 명확해야 한다.

(2) 사용 및 기억이 용이해야 한다.

(3) 코드화 대상의 형태, 용도를 고려해야 한다.

(4) 코드 사용의 경제성 및 효율을 감안해야 한다.

(5) 체계적이고 취급하기 쉬워야 한다.

(6) 기록, 집계, 기억 판단하기가 쉽고, 공통성이 있도록 해야한다.

(7) 자릿수가 짧고 간단명료해야 한다.

(8) 오류가 발생하지 않도록 하여야 하며, 오류 발생시 발견이 쉬워야 한다.

(9) 코드 사용자의 의견을 참고하여야 한다.

(10) 컴퓨터로 처리하기가 적합해야 한다.