Appendix A 구조적 시스템 개발 방법론
구조적 시스템 개발 방법론 1. 타당성 조사 2. 시스템 분석 3. 설계 4. 구현 5. 테스트 6. 품질보증 : 시스템 개발의 타당성이 있는지를 결정하고, 신규 시스템의 목적을 설정한다. 시스템 분석 : 사용자의 요구를 파악하여 명세화 한다. 설계 : 소프트웨어 기능과 프로그램 구조, 모듈을 설계한다. 구현 : 계획된 개발 순서에 따라 각 모듈을 코딩하고 통합하여 완전한 골격의 시스템을 만든다. 테스트 : 다양한 테스팅 방법으로 오류를 발견 및 수정한다. 품질보증 : 사용자 조직의 요원들 또는 독립적인 품질 보증 부서 등에 의한 체계적인 보증 활동으로 소프트웨어의 품질을 측정하고 보증한다. 설치 및 유지보수 : 소프트웨어를 설치 하고 이후에 발견되는 오류를 수정하고, 기능이나 수행 능력을 증가시키려는 추가적인 요구 등을 반영한다. 6. 품질보증 7. 설치 및 유지보수
요구사항 수집 및 분석 요구사항 수집 요구사항 정리 및 분석 고객이 직접 작성한 서술형 요구사항 조직 내에서 사용하고 있는 보고서 형식의 요구사항 현재 사용되고 있는 시스템의 구조에 대한 요구사항 요구사항 정리 및 분석 요구사항들을 많이 읽는다. 고객과 끊임없이 대화한다. 이해한 내용을 우선 자연어로써 주제 혹은 기능별로 정리한다. [요구사항의 예] 우리 회사는 비디오를 대여하는 회사입니다. 본점이 서울 강남에 위치해 있으며, 서울에만 5개의 지점을 두고 있습니다. 본사에서는 비디오의 공급과 오래된 비디오의 수거작업, 그리고 신규 비디오와 인기 순위, 영화인 들에 대한정보 등을 지점에 제공합니다. 보통 비디오는 본점에서 새로운 비디오가 출시되자마자 비디오 배급사로부터 비디오를 주문하여 본점 창고에 두었다가 지점으로 공급을 하지만 때론 지점에서 특정 비디오의 공급을 요청할 수도 있습니다. 이런 경우에는 지점 직원이 요청을 하면 본점에서 그 요청을 받아 본점의 재고를 확인합니다. 재고가 있는 경우에는 바로 지점으로 배송이 되며, 재고가 없거나 부족한 경우에는 비디오 배급사로 주문을 하게 됩니다. 지점이 많이 않기 때문에 모든 지점의 고객 정보가 본점에서 통합 관리됩니다. 비디오 대여시의 가격은 출시 6개월 미만의 비디오에 대해서는 1편당 1500원이고, 그 이전에 출시된 비디오는 1편당 1000원을 받습니다. 우리는 회원제를 운영하고 있어서 회원은 비디오 대여시 10%의 할인 혜택이 주어지며 대여 10편당 1편의 무료 대여를 서비스 합니다. 고객이 비디오를 대여를 요청하면 본점 및 지점의 직원들이 요청을 받아서 대여료를 받고 대여하게 되며 1박 2일의 기본 대여일 이후에 반납되는 경우에는 반납시 연체료를 받고 있습니다. 우리는 본점 및 지점의 일별, 월별, 년별의 소득을 계산하고 어느 지점에서 가장 많은 이윤을 남겼는지, 어느 지점이 적자를 보았는지 순위를 부여합니다.
구조적 분석 및 설계(II) 자료 흐름도(DFD:Data Flow Diagram) 기능 중심의 시스템 분석 도구로 프로세스, 흐름, 자료 저장소, 단말로 구성된다. 시스템의 크기와 범위에 따라 계층화 할 수 있다.(top-down) 프로세스(Process) : 프로세스는 처리, 기능 등으로도 불리며, 입력을 출력으로 변형시키는 시스템의 한 부분을 나타낸다. 원(circle)으로 표시된다. 흐름(Flow) : 정보의 덩어리 혹은 단위 정보가 이동하는 것으로 프로세스의 안쪽에서 바깥쪽으로 가는 화살표로 표시한다. 자료 저장소(Data Store) : 대부분의 경우 데이터베이스나 파일로 생각할 수 있다. 자료들의 모임, 저장된 공간을 의미한다. 단말(Terminator) : 시스템과 통신하는 외부 객체로 사람이나 조직 혹은 다른 시스템 등이 될 수 있다. [자료 흐름도의 예] 지점 주문정보 창고 주문취소정보 대여내역 주문내역 비디오 주문정보 1.주문접수 2. 비디오 배송 지불 지점정보 비디오 영수증 지점이름 지점주소 ........... 지점 3.대금징수
구조적 분석 및 설계(III) 자료 사전(Data Dictionary) 자료 흐름도에 있는 자료의 흐름이나 저장소들의 의미와 구성 요소들, 관련된 값이나 저장소 사이의 관련성 등을 서술하여 정리한다. 프로세스 명세서(Process Specification) 자료 흐름도(DFD)의 최하위 단계, 즉 더 이상 분해할 수 없는 단계의 프로세스들에 대한 처리 절차를 언어로 자세하게 기술하는 것 pseudo code로 작성하는 방법 flow chart로 작성하는 방법
구조적 분석 및 설계(IV) 개체 관계도(Entity-Relationship Diagram) 시스템에 저장될 자료들을 추상화한 모델로 데이터베이스 구축을 위한 분석 모델로도 사용된다. 개체(Entity)와 개체들의 관계(Relationship)를 찾고 그들 개념을 구성하는 작은 속성들을 찾아내어 설계하는 것 상태 전이도(State Transaction Diagram) 시스템의 시간 의존적 행동들에 대한 모델링 도구 [개체 관계도의 예] 고객 대여 비디오 고객이름 고객주소 ... 대여내역들 ... 제목 출시일 ..... 비디오 배급사 공급
구조적 구현 및 테스트 구현 구조적 구현 단계에서 코드화 작업과 시스템의 각 부분들에 대한 단위 테스트 작업이 이루어진다. 미리 계획된 개발 순서에 의해 각 모듈을 코딩하고 통합한다. 테스트 단위 테스트 : 독립적인 환경에서 하나의 모듈만을 테스트 하는 것 통합 테스트 : 시스템 모듈간의 상호 인터페이스에 대한 테스트 시스템 테스트 : 시스템이 원래의 목적에 맞는지를 알아보는 것으로 모의 환경 또는 실제 환경에서 행하여진다. 인수 테스트 : 사용자 요구사항의 검증, 사용자의 참여, 운영 가능 여부를 판단하는 최종 절차 최적화 :효율적인 체계를 위한 조정작업으로 기본적인 목적에 부합하는 시스템을 구현환경에서 가능한 한 최고의 성능, 유연성, 이식성 등을 향상시킬 수 있도록 최적화 하는 작업 단위 테스트 화이트 박스 테스트(While Box Test) 설계된 절차, 즉 순서에 대한 제어구조를 이용하여 테스트 사례들을 유도하는 테스트 사례 설계 방법 한 모듈안에 있는 모든 독립된 경로들이 적어도 한번은 실행되도록 다양한 사례를 테스 트한다.(참, 거짓에 대한 모든 논리적 비교가 조사되어야 한다.) 블랙 박스 테스트(Black Box Test) 소프트웨어의 기능적 요구 사항에 초점을 맞춘다. 부정확하거나 누락된 기능이 있는지, 인터페이스에 오류는 없는지, 자료구조나 데이터 베이스 접근에 오류는 없는지, 성능 혹은 초기화와 종료에 오류가 없는지 등을 찾는 테 스트 방법이다. 통합테스트 하향식(top-down) : 시스템 구조도의 최상위 모듈에 해당하는 명령어 모듈을 먼저 구현하고 테 스트한 수 차례 차례 하위 단계의 모듈을 생성 및 붙여가며 전체 모듈이 결합될 때 까지 테스트를 하는 방법 상향식(bottom-up) : 시스템 구조도의 최하위 계층의 단위 테스트들을 하나씩 결합해 나가면서 나중에 상위 모듈을 생성, 붙여가며 통합하는 방법 시스템 테스트 외부 기능 테스트 : 소프트웨어 외부 시각에서의 요구 명세의 충족성을 테스트하는 것 내부 기능 테스트 : 사용자의 상세 기능 요구를 명세서 문장 하나하나씩 짚어가며 테스트하는 것 부피 테스트 : 소프트웨어로 하여금 대량의 데이터를 처리해 보도록 여건을 조성하는 것 스트레스 테스트 : 소프트웨어에게 짧은 시간동안 엄청난 양의 프로세스를 가했을 때의 성능을 알아보도록 테스트하는 것 성능 테스트 : 소프트웨어의 효율성을 응답속도, 처리량 등의 측면에서 진단하는 것 보안 테스트 : 보안 체계를 테스트하는 것 사용 용이성 테스트 : 인간 공학적 시각에서 인터페이스, 메세지 처리 등에 대한 확인작업 복구 테스트 : 결함이나 하드웨어의 고장, 데이터의 오류로부터 회복방법에 대해 테스트하는 것
학사관리 프로젝트 직접 요구사항을 작성한다. 자료 흐름도(DFD)를 그린다. 프로세스 명세(Process Spec)을 작성한다. 구현하고 테스트한다. 기본적으로 있어야 할 기능 학생이 특정 교수의 특정 과목을 수강신청 할 수 있다. 수강신청 취소 각 학생의 모든 과목에 대한 점수(100점만점), 등급(A-F), 평점 정보를 볼 수 있어야 한다. 과목마다의 최고, 최저, 평균 점수를 낼 수 있어야 한다.(정렬 알고리즘을 이용) 학생에 관한 정보가 파일로 저장할 수 있어야 한다. 학생들에 대한 기본적인 정보(이름, 학번, 나이, 전화번호 등)를 가질 수 있는 구조체의 선언 (구조체 내의 문자열은 배열이 아닌 포인터를 이용) 많은 학생을 관리할 수 있는 학생 구조체의 배열 사용
Appendix B 개발 도구 사용법
개발 도구 개발 도구 프로그래밍을 하기 위한 소프트웨어로 C 프로그래밍을 위한 개발 도구로는 TC, BC, CC, GCC, VC등이 있다. TC 교육용으로 나온 개발 도구로 Boland 사에서 만들어 배포하고 있으며 TC2.0까지는 공개 소프트웨어이다. 교육용에 맞게 기본적인 문법과 함수들에 대한 도움말 기능이 이해하기 쉽게 만들어져 있다. VC MicroSoft사에서 배포하는 컴파일러로 Visual Studio를 통해 다른 다양한 개발 소프트웨어와 함께 상업용 소프트웨어를 제작하기 용이하게 만들어져 있다. 기타 그 외에 Windows상에서 응용을 개발하기 위해 Boland 사의 BC가 있고 Unix상에서 개발하도록 CC, GNU에서 만든 gcc등의 다양한 컴파일러가 사용되고 있다.
TC 2.0(I) 기본 환경 설정 주의 : 폴더명이 8자 이상은 인식하지 않음에 주의 기본 메뉴의 option의 directories부분을 본인이 설치한 TC폴더로 설정하여야 하는데 다음의 경로는 기본적으로 setting이 되어 있어야 한다. Inculde directories : 컴파일러에서 제공하는 라이브러리에 대한 헤더파일들이 있는 폴더의 경로 Library directories: 컴파일러에서 제공하는 라이브러리가 있는 폴더의 경로 Turbo C directroy: TC.exe가 있는 폴더의 경로 주의 : 폴더명이 8자 이상은 인식하지 않음에 주의 본인의 시스템에서 전체 화면으로 실행시 실행에 이상이 있으면 다음을 수행하시오. F10(메뉴) ==> File메뉴 선택==> OS Shell메뉴 선택 chcp 437을 수행 (언어 코드 페이지를 영문으로 전환) ==> exit TC의 실행 창의 활성화 창(실행 화면의 맨 위)을 오른쪽 마우스 등록정보 선택 ==> 전체화면 선택 ==> 같은 제목의 창을 위해 등록정보 저장 ==> 확인 Alt+X(TC종료) ==>TC재 실행
TC 2.0(II) 기본 메뉴 F1: 도움말 (TC사용상의) - Ctrl+F1: 도움말 (C 예약어 및 함수에 대해) F5: 실행된 화면보기 (TC는 실행 후 TC화면으로 복귀한다.) F6: 편집 창과 메시지 창(컴파일,링킹에 관한)으로 커서의 전환 F7, F8: 디버깅 시 trace(수행 단위로 추적) 및 step(함수 내부로는 추적하지 않음) Ctrl + F8: break point설정 및 해제(실행 시 해당 코드 수행전에 멈춤) Alt + F9: Compiling Ctrl + F9: Linking (컴파일이 안 되었을 시에는 컴파일 후 링킹) F9: 실행 Ctl + F7: Add watch(해당 창에 본인이 디버깅 시 확인하고자 하는 변수 및 구문을 추가하면 디버깅시 확인할 수 있도록 함) 다음의 기능으로 마우스 없이 편집을 용이하게 할 수 있다. Ctrl+K+B: Block Begin Ctrl+K+K: Block End Ctrl+K+C: Block Copy Ctrl+K+V: Block Move Ctrl+K+Y: Block Delete
Visual Studio의 활용(I) 새로운 프로젝트의 생성 Ctrl+N(New)를 통해 프로젝트 생성 Files, Projects, Workspaces, Other Documents 중 Projects탭을 선택 Win32 Console Application을 선택 Location 박스에서 본인이 작업할 폴더를 지정 project name에 본인이 원하는 프로젝트 명 입력 O.K를 계속 누르면 빈 프로젝트 생성 완료 Visual Studio (C++)을 시작한 후 [File | New] 메뉴를 선택하거나 Ctrl+N 을 누른다.
Visual Studio의 활용(II) 새로운 소스 파일의 추가 Ctrl+N(New)를 통해 프로젝트 생성 Files, Projects, Workspaces, Other Documents 중 Files탭을 선택 C++ Source File을 선택 (만약 새롭게 추가하려는 파일이 헤더파일이라면 C/C++ Header File을 선택하면 된다.) File란에 작업할 파일명을 지정(이때 반드시 확장자 .C를 입력하여야 한다.) O.K를 계속 누르면 C소스 파일 추가 완료 해당 프로젝트가 열려 있을 때 [File | New] 메뉴를 선택하거나 Ctrl+N 을 누른다.
Visual Studio의 활용(III) 미리 만들어진 파일의 추가 [Project | Add to project | Files]메뉴를 선택 추가하고자 하는 파일이 존재하는 곳으로 디렉토리 이동 파일 하나, 혹은 둘이상의 파일들을 선택 O.K를 계속 누르면 소스 파일 추가 완료 File View에서 추가된 소스 파일 확인 가능 해당 프로젝트가 열려 있을 때 [Project | Add to project | Files]메뉴를 선택한다.