<구현 / 프로그래밍 언어 선정 기준 / 구조적 프로그래밍>
• 구현
설계 단계에서 생성된 설계 명세서를 컴퓨터가 알 수 있는 모습으로 변환하는 과정으로 프로그래밍 또는 코딩단계라고도 하며, 각 모듈을 특정 프로그래밍 언어를 이용하여 원시 코드로 작성하고 문서화하는 작업이다.
• 프로그래밍 언어 선정 기준
친밀감, 프로그램 구조, 언어의 능력, 프로그램의 길이, 처리의 효율성, 이식성, 과거의 개발 실적, 대상 업무의 성격, 알고리즘과 계산상의 난이도, 소프트웨어의 수행환경, 자료 구조의 난이도, 개발 담당자의 경험과 지식 등
• 구조적 프로그래밍
• Dijkstra에 의해 제안된 것으로, 신뢰성 있는 소프트웨어의 생산과 코딩의 표준화 등을 위해 개발된 방법이다.
• 구조적 프로그래밍의 기본적인 제어 구조
설계 단계에서 생성된 설계 명세서를 컴퓨터가 알 수 있는 모습으로 변환하는 과정으로 프로그래밍 또는 코딩단계라고도 하며, 각 모듈을 특정 프로그래밍 언어를 이용하여 원시 코드로 작성하고 문서화하는 작업이다.
• 프로그래밍 언어 선정 기준
친밀감, 프로그램 구조, 언어의 능력, 프로그램의 길이, 처리의 효율성, 이식성, 과거의 개발 실적, 대상 업무의 성격, 알고리즘과 계산상의 난이도, 소프트웨어의 수행환경, 자료 구조의 난이도, 개발 담당자의 경험과 지식 등
• 구조적 프로그래밍
• Dijkstra에 의해 제안된 것으로, 신뢰성 있는 소프트웨어의 생산과 코딩의 표준화 등을 위해 개발된 방법이다.
• 구조적 프로그래밍의 기본적인 제어 구조
순차(Sequence)
|
명령을 순서적으로 나열함
|
선택(Selection)
|
특정 논리에 기초하여 명령을 선택함
|
반복(Iteration)
|
순환을 제공함
|
<응집도(Cohesion)>
• 정보 은닉 개념을 확장한 것으로 모듈 안의 요소들이 서로 관련되어 있는 정도, 즉 모듈이 독립적인 기능으로 정의되어 있는 정도를 나타낸다.
• 모듈의 내부 요소에는 특정 작업을 수행하기 위한 명령어, 명령어의 모임, 호출문 등이 있다.
• 독립적인 모듈이 되기 위해서는 각 모듈의 응집도가 강해야 한다.
• 응집도 종류(우연적 응집도 < 논리적 응집도 < 시간적 응집도 < 절차적 응집도 < 교환적 응집도 < 순차적 응집도 < 기능적 응집도)
• 모듈의 내부 요소에는 특정 작업을 수행하기 위한 명령어, 명령어의 모임, 호출문 등이 있다.
• 독립적인 모듈이 되기 위해서는 각 모듈의 응집도가 강해야 한다.
• 응집도 종류(우연적 응집도 < 논리적 응집도 < 시간적 응집도 < 절차적 응집도 < 교환적 응집도 < 순차적 응집도 < 기능적 응집도)
<BPR(Business Process Reengineering)>
• 정의
BPR이란 경쟁우위확보를 위해 기업의 핵심부문에서 비용, 품질, 서비스, 스피드와 같은 요인의 획기적인 향상을 이룰 수 있도록, 프로세스를 근간으로 비즈니스 시스템을 근본적으로 재설계하여 극적인 성과를 추구하는 것
BPR이란 경쟁우위확보를 위해 기업의 핵심부문에서 비용, 품질, 서비스, 스피드와 같은 요인의 획기적인 향상을 이룰 수 있도록, 프로세스를 근간으로 비즈니스 시스템을 근본적으로 재설계하여 극적인 성과를 추구하는 것
<객체지향 기법의 주요 기본 원칙>
캡슐화
(Encapsulation)
|
• 데이터와 데이터를 처리하는 함수를 하나로 묶는 것
• 캡슐화된 객체의 세부 내용이 외부에 은폐(정보 은폐)되어, 변경이 발생해도 오류의 파급 효과가 적음
• 캡슐화된 객체들은 재사용이 용이함
• 인터페이스가 단순해지고 객체 간의 결합도가 낮아짐
|
정보 은닉(은폐)
(Information
Hiding)
|
• 캡슐화에서 가장 중요한 개념으로 다른 객체에게 자신의 정보를 숨기고 연산만을 통하여 접근을 허용하는 것
• 각 객체의 수정이 다른 객체에게 주는 고려되지 않은 영향(Side Effect)을 최소화하는 기술
|
상속성
(Inheritance)
|
• 이미 정의된 상위 클래스(슈퍼 클래스나 부모클래스)의 모든 속성과 연산을 하위 클래스가 물려받는 것
• 상속성을 이용하면 하위 클래스는 상위 클래스의 모든 속성과 연산을 자신의 클래스 내에서 다시 정의하지 않고서도 즉시 자신의 속성으로 사용할 수 있음
• 다중 상속성(Multiple Inheritance) : 한 개의 클래스가 2개 이상의 상위 클래스로부터 속성과 연산을 상속받는 것
|
추상화
(Abstraction)
|
• 불필요한 부분을 생략하고 객체의 속성 중 가장 중요한 것에만 중점을 두어 개략화하는 것, 즉 모델화하는 것
• 인간이 복잡한 문제를 다루는 데 가장 기본이 되는 방법으로, 완전한 시스템을 구축하기 전에 그 시스템과 유사한 모델을 만들어서 여러 가지 요인들을 테스트할 수 있음
|
다형성
(Polymorphism)
|
• 메시지에 의해 객체(클래스)가 연산을 수행하게 될 때 하나의 메시지에 대해 각 객체(클래스)가 가지고 있는 고유한 방법으로 응답할 수 있는 능력
• 객체(클래스)들은 동일한 메소드명을 이용하여 같은 의미의 응답을 함
|
<자료 흐름도(DFD)>
• 요구사항 분석에서 자료의 흐름 및 변환 과정과 기능을 도형 중심으로 기술하는 방법으로 버블(Bubble) 차트라고도 한다.
• 시스템 안의 프로세스, 자료 저장소, 단말 간 자료의 흐름을 나타내는 그래프로, 자료 흐름과 처리를 중심으로 하는 구조적 분석 기법에 이용된다.
• 자료 흐름도는 자료 흐름과 기능을 자세히 표현하기 위해 단계적으로 세분화된다.
• 단계(Level) 0의 자료 흐름도를 배경도라 하는데, 이 배경도를 통해 전체 시스템의 범위를 표현한다.
• 각각의 프로세스에 대하여 개별적인 상세화 및 계층화가 가능하다.
• 자료 흐름도 구성 요소의 일반적 표기법
• 시스템 안의 프로세스, 자료 저장소, 단말 간 자료의 흐름을 나타내는 그래프로, 자료 흐름과 처리를 중심으로 하는 구조적 분석 기법에 이용된다.
• 자료 흐름도는 자료 흐름과 기능을 자세히 표현하기 위해 단계적으로 세분화된다.
• 단계(Level) 0의 자료 흐름도를 배경도라 하는데, 이 배경도를 통해 전체 시스템의 범위를 표현한다.
• 각각의 프로세스에 대하여 개별적인 상세화 및 계층화가 가능하다.
• 자료 흐름도 구성 요소의 일반적 표기법
<CASE>
• 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정 전체 또는 일부를 컴퓨터와 전용 소프트웨어 도구를 사용하여 자동화하는 것이다.
• 소프트웨어 생명 주기의 전체 단계를 연결해 주고 자동화해 주는 통합된 도구를 제공해주는 기술이다.
• 소프트웨어 개발 도구와 방법론이 결합된 것으로, 정형화된 구조 및 방법(메커니즘)을 소프트웨어 개발에 적용하여 생산성 향상을 구현하는 공학 기법이다.
• 소프트웨어 개발의 모든 단계에 걸쳐 일관된 방법론을 지원한다.
• CASE의 주요 기능 : 소프트웨어 생명주기 전 단계의 연결, 다양한 소프트웨어 개발 모형 지원, 그래픽 지원 등
• CASE 사용의 이점 : 소프트웨어 개발 기간 단축 및 비용 절감, 품질 향상, 유지보수 용이, 생산성 향상, 재사용성 향상, 개발 주기의 표준화, 개발 기법의 실용화, 문서화 용이 등
• CASE 분류
• 소프트웨어 생명 주기의 전체 단계를 연결해 주고 자동화해 주는 통합된 도구를 제공해주는 기술이다.
• 소프트웨어 개발 도구와 방법론이 결합된 것으로, 정형화된 구조 및 방법(메커니즘)을 소프트웨어 개발에 적용하여 생산성 향상을 구현하는 공학 기법이다.
• 소프트웨어 개발의 모든 단계에 걸쳐 일관된 방법론을 지원한다.
• CASE의 주요 기능 : 소프트웨어 생명주기 전 단계의 연결, 다양한 소프트웨어 개발 모형 지원, 그래픽 지원 등
• CASE 사용의 이점 : 소프트웨어 개발 기간 단축 및 비용 절감, 품질 향상, 유지보수 용이, 생산성 향상, 재사용성 향상, 개발 주기의 표준화, 개발 기법의 실용화, 문서화 용이 등
• CASE 분류
상위(Upper)
CASE
|
소프트웨어 생명 주기의 전반부에서 사용되는 것으로, 문제를 기술(Description)하고 계획하며 요구 분석과 설계 단계를 지원하는 CASE
|
하위(Lower)
CASE
|
소프트웨어 생명 주기의 하반부에서 사용되는 것으로 코드의 작성과 테스트, 문서화하는 과정을 지원하는 CASE
|
통합(Intergrate)
CASE
|
소프트웨어 생명 주기에 포함되는 전체 과정을 지원하기 위한 CASE
|
• 정보 저장소(CASE 정보 저장소) : 소프트웨어를 개발하는 동안에 모아진 정보를 보관하여 관리하는 곳으로, 정보 저장소에 저장된 정보는 사용자, 도구, 응용 프로그램 등이 공동으로 사용할 수 있으며, 초기의 소프트웨어 개발 환경에서는 사람이 정보 저장소 역할을 했지만 오늘날에는 데이터베이스가 정보 저장소 역할을 담당함
<럼바우(Rumbaugh)의 분석 기법>
• 모든 소프트웨어 구성 요소를 그래픽 표기법을 이용하여 모델링하는 기법이다.
• 분석 활동은 객체 모델링, 동적 모델링, 기능 모델링 순으로 이루어진다.
• 분석 활동은 객체 모델링, 동적 모델링, 기능 모델링 순으로 이루어진다.
객체(Object)
모델링
|
정보 모델링이라고도 하며, 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체들 간의 관계를 규정하여 객체 다이어그램으로 표현한 것
|
동적(Dynamic)
모델링
|
상태도를 이용하여 시간의 흐름에 따른 객체들 사이의 제어 흐름, 상호 작용, 동작 순서 등의 동적인 행위를 표현한 것
|
기능(Functional)
모델링
|
자료 흐름도(DFD)를 이용하여 다수의 프로세스들간의 자료 흐름을 중심으로 처리 과정을 표현한 것
|
<결합도(Coupling)>
• 모듈 간에 상호 의존하는 정도를 나타낸다.
• 독립적인 모듈이 되기 위해서는 각 모듈 간의 결합도가 약해야 하며 의존하는 모듈이 적어야 한다.
• 결합도의 종류(자료 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도)
• 독립적인 모듈이 되기 위해서는 각 모듈 간의 결합도가 약해야 하며 의존하는 모듈이 적어야 한다.
• 결합도의 종류(자료 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도)
<소프트웨어 생명 주기 모형 - 프로토타입 모형>
• 프로토타입 모형(Prototype Model)은 사용자의 요구사항을 정확히 파악하기 위해 실제 개발될 소프트웨어에 대한 견본(시제)품(Prototype)을 만들어 최종 결과물을 예측하는 모형이다.
• 시제품은 사용자와 시스템 사이의 인터페이스에 중점을 두어 개발한다.
• 시스템의 일부 혹은 시스템의 모형을 만드는 과정으로서, 요구된 소프트웨어의 일부를 구현하는데, 이는 추후 구현 단계에서 사용될 골격 코드가 된다.
• 프로토타입은 요구 분석 단계에서 사용하게 되며, 프로토타입의 평가가 끝나고 개발이 승인되면 다른 모형을 이용하여 본격적인 개발이 이루어진다.
• 소프트웨어 생명주기에서 유지보수 단계가 없어지고 개발 단계 안에서 유지보수가 이루어진다.
• 개발 순서 : 요구 수집 → 빠른 설계 → 프로토타입 구축 → 고객 평가 → 프로토타입 조정 → 구현
• 시제품은 사용자와 시스템 사이의 인터페이스에 중점을 두어 개발한다.
• 시스템의 일부 혹은 시스템의 모형을 만드는 과정으로서, 요구된 소프트웨어의 일부를 구현하는데, 이는 추후 구현 단계에서 사용될 골격 코드가 된다.
• 프로토타입은 요구 분석 단계에서 사용하게 되며, 프로토타입의 평가가 끝나고 개발이 승인되면 다른 모형을 이용하여 본격적인 개발이 이루어진다.
• 소프트웨어 생명주기에서 유지보수 단계가 없어지고 개발 단계 안에서 유지보수가 이루어진다.
• 개발 순서 : 요구 수집 → 빠른 설계 → 프로토타입 구축 → 고객 평가 → 프로토타입 조정 → 구현
장점
|
• 요구사항을 충실히 반영하며, 요구사항의 변경이 용이함
• 최종 결과물이 만들어지기 전에 의뢰자가 최종 결과물의 일부 또는 모형을 볼 수 있음
• 프로토타입은 의뢰자나 개발자 모두에게 공동의 참조 모델을 제공함
|
단점
|
• 미리 제작된 소프트웨어를 사용할 경우 실제 소프트웨어와의 차이가 발생할 수 있어 사용자에게 혼란을 줄 수 있음
• 단기간에 제작해야 하기 때문에 비효율적인 언어나 알고리즘을 사용할 수 있음
|
댓글 없음:
댓글 쓰기