d라이브러리









일반적인 컴퓨터의 기본 기능은 연산기능, 기억기능, 제어기능, 입출력기능으로 크게 구분된다. 이러한 기능들이 복합되어 입력된 자료를 처리하여 원하는 결과로 만들어 준다. 자료를 처리하기 위해서는 컴퓨터 시스팀의 각 가능이 모두 정상으로 확인되면 프로그램을 개발하려는 사람이나 이미 개발된 프로그램을 수행하는 사람들은 단지 컴퓨터 시스팀의 논리적인 동작만 이해하고 주로 자료가 컴퓨터내에서 어떻게 표현되어 있고 어떻게 처리되고 또한 어떻게 출력되어야 하는 것인가에만 관심을 가지면 될 것이다. 프로그램이 효율적으로 수행되기 위해서는 처리되는 자료의 구성이 목적에 맞게 설계되어야 한다. 따라서 무계획적인 프로그램 작성은 있을 수 없는 것이다.

프로그램작성에 필요한 기초지식
 

프로그램 작성 단계


모든 프로그램을 작성하려면 다음의 단계를 거쳐 계획적으로 개발하여야 한다.

업무분석 단계는 어떤 업무를 전산화하기로 결정이 나면 업무를 처리하기 위한 프로그램을 개발하여야 한다. 이를 위해서는 우선 업무에 대해서 그 내용을 분석하고 검토해야 한다. 업무분석 시에는 그 업무를 부분적인 면 뿐만 아니라 전체적인 요소를 잘 분석해서 부분과 전체와의 관계를 항상 고려해야한다.

업무 분석을 명확하게 하기 위해서는 그 업무에서 어떤 결과를 구하고 있는지를 잘 파악하여야 한다. 이러한 일을 주로 담당하는 사람이 시스팀분석가(System Analyst)이다. 시스팀 분석가와 프로그래머가 하는 일이 비슷하게 보일지 모르겠으나 담당 업무가 다음과 같이 차이가 난다.

□ 프로그래머가 처리하는 일
① 상세설계도에 의한 코딩
② 프로그램의 유지·보수
③ 모의자료준비
④ 프로그램의 테스트 및 수정

□ 시스팀 분석가가 처리하는 일
① 보고서 양식의 설계
② 입력자료의 양식 설계
③ 자료구조의 설계
④ 시스팀의 흐름도 작성
⑤ 업무의 각 기능별 명세 설계
⑥ 시스팀의 상세 설계

소프트웨어 공학
 

(그림1) Flow Chart 표현의 예


간단한 업무에 필요한 프로그램을 개발하는 데는 각 단계별로 전문인력이 꼭 필요한 것은 아니지만 업무가 다양해지고 복잡해짐에 따라 단계별로 필요한 전문인력이 꼭 있어야 함을 느끼게 된다. 따라서 현재 대학에서도 '소프트웨어 공학' 이라는 교과목이 개설되어 효율적인 프로그램의 개발에 관한 이론적 연구 결과를 가르치고 있다.

본 연재의 목적은 BASIC언어로 간단히 생활에 필요한 프로그램을 개발하거나, 단순한 연산용 프로그램의 작성에 중점을 두고 있기 때문에 프로그램을 작성하기 위한 BASIC언어의 구문과 그 응용예를 계속 다루어 나가고 있다. 그러나 전문인력의 양성이라는 높은 차원의 문제에서는 단순한 프로그램의 작성 기법보다는 시스팀의 분석과 설계가 더욱 중요하다고 하겠다.

시스팀의 분석과 설계가 끝나면 체계적으로 정리하여 개발도중에 여러 사람이 대화용으로 이용할 도표가 필요하다. 블럭차트(Block Chart)는 업무의 처리 순서를 크게 나누어 처리의 각 단계를 개략적인 도표로 나타낸 것이고, 시스팀의 설계자와 현 업무의 담당자와의 의사소통을 위한 도구로 사용한다. 플로우차트(Flow Chart)는 블럭차트로부터 보다 자세하게 작성된 것으로 업무처리내용을 컴퓨터의 언어로 옮길 수 있도록 세밀한 과정까지 분석해주는 그림이다.

다시 말하면 플로우차트는 작업의 흐름, 데이타의 흐름, 처리방법, 논리적인 진행 순서 등을 그래픽 심볼을 사용하여 표시한 것을 말하며 프로그램을 작성하기 위한 설계도라고 말할 수 있다. 플로우차트는 전산화하려는 업무의 처리방안에 대한 분석을 보여주며 이를 검토하여 시스팀 설계에 대한 개선 방안을 찾을 수 있고 실제 업무를 관장하는 담당자와의 의사소통 수단이 될 수 있다.

플로우차트에 적히는 내용은 다음과 같다.
① 입력데이타
② 입력방법
③ 입력데이타의 구조
④ 처리방법
⑤ 출력데이타의 내용
⑥ 출력방법

그리고 사고의 흐름을 그림으로 옮기는 작업이기 때문에 작성시에 다음의 사항들을 고려하여야 한다.
●실행되는 모든 작업과정을 다룬다.
●간단 명료하게 작성한다.
●전체의 흐름을 명확하게 파악할 수 있어야 한다.
●일관성있는 기호를 사용한다.
●구조적인 표현을 사용한다.

플로우차트는 우리의 생각의 흐름을 정리하는 수단일 뿐 어느 특정한 프로그래밍 언어를 위해 작성되지 않는다. 따라서 플로우차트가 제대로 작성되어 있으면 어느 컴퓨터상에서도 어느 언어로 설계될 수 있는 것이다. 기본적 사고의 흐름은 다음의 몇가지 틀에 의해서 표현될 수 있다.

① IF~THEN~ELSE~(~하면~하고, 그렇지 않으면~한다)
② WHILE~DO~(~하는동안~한다)
③ REPEAT~UNTIL~(~을 만족할 때까지 ~한다)
④ EXIT~IF~(~을 만족하면 ~으로 빠져나간다)
⑤ REPEAT~TIMES~(~을 ~회 반복한다)

위에 열거된 5가지 구문이 사용하려는 언어에 있으면 그대로 사용할 수 있겠지만 없을 경우에는 ①번과 GOTO문의 조합으로 대용할 수 있다. (그림1)은 각 구조에 대한 플로우차트의 표현이다. (그림2)는 1+2+3+4+5+6+7+8+9+10=55를 계산하기 위한 프로그램을 작성할 때 여러 구조에 의해서도 똑같은 값을 구할 수 있음을 보여준다.
 

(그림2) 1부터 10까지 더하는 프로그램의 예


자료처리 프로그램
 

(그림3) 입력데이타의 구조


일반적인 자료처리를 다루는 프로그램의 예로서 신문 구독자의 지역·학력 그리고 성별을 조사하여 신문사별로 분석하여 보자 프로그램의 코딩(coding)전에 해결하려는 문제를 분석하고 입력과 출력 데이타 양식을 확실하게 정의하여야만 프로그램 작성 도중에 혼동이 생기지 않는다.

입력 데이타의 구조를 먼저 살펴보다. 신문 구독자의 이름 학력 신문이름 지역 성별에 대한 프로그램내에서 변수나 배열을 사용해야 할 필요가 있다. 처리해야 할 데이타가 한 사람에 해당하는 것도 아니기 때문에 배열의 사용이 우선적이다. 그리고 각 사람에 대해 조사된 데이타의 데이타형이 모두 똑같은 것이 아니기 때문에 각 항목이 별개의 배열로 선언되어야 프로그램 작성이 간단해진다. (그림3)은 입력 데이타의 구조를 보여주는 그림으로 도서관에 비치되어 있는 도서목록과 같은 형태의 구조를 갖는다.

다음으로 각 신문사에 대한 신문구독자의 상황을 한눈에 알아볼 수 있도록 출력 양식을 결정해야 한다. 사람에 따라 구성상의 차이가 있겠지만 (그림4)와 같은 양식으로 프로그램에서 출력하도록 한다.
 

(그림4) 출력데이타의 구조


일단 입력과 출력 양식이 결정되었으면 입력데이타의 효율적 관리를 위한 방법은 사용되는 데이타에 대해 코드를 부여하는 것이다. 즉 주민등록번호하고 국민 한사람당 하나씩 지정되는 것과 같다. 신문의 종류가 3가지라 하고 각 신문에 대해 번호를 다음과 같은 방법으로 하나씩 지정하면 된다.

A 신문 → 1
B 신문 → 2
C 신문 → 3

같은 방법으로 지역 학력 성별에 대해서도 다음과 같은 코드지정이 되도록 한다.

지역 서울 → 1 학력 중졸 → 1
        부산 → 2        고졸 → 2
        대구 → 3        대졸 → 3
        광주 → 4        대학원졸 → 4
성별 남자 → 1
        여자 → 2

조사 항목이 모두 조사결과표상의 해당 항목에 대한 데이타처리에 이용되고 있는데 특별한 수치 연산을 필요로 하지 않고 단순하게 각 항목에 해당된 사람이 몇명인가를 구하면 되기 때문에 지정된 코드에 의해 해당 항목을 찾아갈 수 있게 된다. 따라서 인원수 조사용 프로그램의 대부분이 데이타에 코드를 부여하여 작성되고 있다.

프로그램의 작성에 있어서 무엇보다도 중요한 것은 사용될 입력 데이타의 구조가 프로그램 실행에 적합해야 한다는 것이다. 정리 정돈이 되이 있지 않은 주방에서 좋은 요리가 빨리 만들어 질 수 없는 것과 마찬가지다. 사용하려는 요리 재료의 선택이 음식의 맛을 좌우하듯이 프로그램내에서 효율적으로 처리될 수 있는 좋은 입력 데이타 구조 설계에 많은 신경을 써야 한다.
신문구독 조사표 작성을 위한 프로그램의 개략적인 플로우차트는 (그림5)와 같다.
 

(그림5) 신문구독조사표 작성 Flow Chart


(그림5)의 처리단계를 프로그램내에서 쉽게 확인할 수 있도록 각 단계를 서브루틴(Subroutine)으로 구성하였다. (그림6)은 프로그램의 골격만 보여 주기 위해 데이타의 입력 처리 출력을 간단히 구성해본 것이다. 프로그램은 크게 3개의 서브루틴으로 구성되어 있음을 10번문장에서 50번문장까지 살펴보면 금방 알 수 있을 것이다. 그리고 각 서브루틴의 첫 문장은 REM문(주석문)으로 서브루틴의 기능을 기술하고 있다.
 

(그림6) 초기단계의 프로그램 예


(그림6)의 프로그램을 실행시킨 결과는 (그림7)과 같다.
 

(그림7) 그림 6의 프로그램 실행결과


(그림6)의 실행결과를 보면 신문사마다 필요한 정보가 일정 간격을 두고 출력되었으나 어느 신문사에 대한 결과인지 밝혀지지 않았다. 신문사의 이름을 조사표 좌측 상단에 출력해보려면 출력을 다루는 서브루틴의 수정이 필요하다. (그림8)의 345번 문장의 삽입으로 원하는 결과의 출력이 가능하며 345번문에서 각각의 신문사 이름을 출력하기 위해 서브루틴을 사용하고 있다.
 

(그림8) 그림6의 출력부분이 수정된 프로그램


(그림9)는 (그림8)의 프로그램을 실행시킨 결과이다.
 

(그림9)


(그림9)의 출력으로도 우리가 원하는 표의 양식이 갖추어져 있지 않다.
 

(그림10) 가로항목 표시를 위한 그램8의 프로그램수정


이제 항목 이름을 삽입하기 위해 (그림10)에 표시한 346번 문을 삽입하려 출력시키면 (그림11)과 같이 출력될 것이다.
 

(그림11) 그림 10에 의해 수정된 프로그램 실행 결과


(그림10)의 프로그램 수정으로 가로항목의 표시가 가능해졌으며 이제 세로항목의 표시를 위해 다시 프로그램을 수정하여야 한다.
 

(그림12) 세로항목 표시를 위한 프로그램의 수정


(그림12)의 355번문이 세로항목을 추가시키는 기능을 담당한다. 355번 문장에서 800번, 900번에 위치하는 서브류틴을 불러서 해당 항목에 원하는 문자열을 출력시키고 있다. 그리고 "male"과 "female"을 출력시킨다음 ;에 의해 다음에 출력되는 모든 출력데이타가 같은 행에 나타나도록 해야한다.
 

(그림13) 가로항목과 세로항목이 표시된 출력


(그림 14)는 신문구독조사표출력을 위한 프로그램 전부이다.
 

(그림14) 신문구독조사표 출력을 위한 프로그램


(그림 15)와 (그림 16)은 입력 데이타의 처리 부분을 고친 것으로 데이타를 입력할 때 사용자에게 유익한 정보를 제공하기 위한 것으로 프로그램의 사용효율을 높일 수 있다.
 

(그림15) 데이타 입력 루틴의 수정과 실행 예


(그림15)와 같은 수정으로는 단지 입력 데이타에 관한 정보만 제공할 수 있으나 (그림 16)과 같이 프로그램을 수정해 놓으면 입력 데이타의 확인 작업까지 처리할 수 있다.
 

(그림16) 데이타 입력의 확인과정이 삽입된 출력 예
 

1987년 03월 과학동아 정보

  • 조동섭 교수

🎓️ 진로 추천

  • 컴퓨터공학
  • 소프트웨어공학
  • 정보·통신공학
이 기사를 읽은 분이 본
다른 인기기사는?