본문 바로가기
  • (개인)정보보호/최신ICT 정보 공유 블로그

나의 서재/22. 소프트웨어 공학 기본원리47

9.2 설계 평가 & 명세 & 방법 1. 설계 평가 구분 구성요소 설명 결합도 자료 스탬프 제어 공통 내용 -모듈 사이의 상호 의존도 -결합도를 최소화하는 설계 필요 응집도 기능적 순차적 통신적 절차적 시간적 논리적 우연적 -한 모듈 내부의 구성요소 사이의 기능적인 관련 정도 -모듈 내부의 응집도를 최대화하는 설계 필요 *fan-in : 하나의 모듈이 제어받는 상위 모듈의 수 *fan-out : 하나의 모듈이 제어하는 하위 모듈의 수 모듈화 설계 휴리스틱 결합도 감소 응집도 증가 모듈 공유도 모듈 제어도 복잡하거나 불필요한 모듈 인터페이스 삭제 -좋은 품질의 모듈화 설계를 위한 휴리스틱(가이드라인) -시스템 복잡도 최적화를 위해서는 팬인은 높게, 팬아웃은 낮게 설계해야 한다. 2. 설계 명세 기법과 설계 방법 가. 설계 명세 구분 특징 설.. 2021. 12. 6.
9.1 추상화 구분 특징 설명 절차 추상화 이름이 부여된 함수, 서브루틴, 메소드 -기능 추상화 -기능을 수행하기 위해 필요한 일련의 절차를 추상화하는 기법 (모듈 이름) 문 열기 (모듈 절차) 문 손잡이를 돌린다. 문을 연다. 문을 통과한다. 문을 닫는다. 자료 추상화 추상 데이터 타입 -연관된 자료를 포괄적 의미의 자료로 추상화하는 기법 -추상화 결과로 연관된 자료는 자료 개체를 묘사 ('제조회사', '무게', '길이', '타입' 자료를 '문'이라는 자료 개체로 변환) 제어 추상화 동기화 세마포어 -내부 제어에 대한 구체적인 행위를 명세하지 않고 추상화하여 프로그램의 제어에 대한 효과만을 명세하는 기법 2021. 12. 5.
9. 설계 개요 1. 시스템 설계의 정의 구분 시스템 분석 시스템 설계 정의 -개발 시스템의 요구가 무엇(What)인지 깊이 이해하고 파악하여 정의하는 활동 -요구를 어떻게(How) 만족시킬 것인가에 대한 해결방안을 찾는 활동 구현 플랫폼 -구현될 플랫폼에 독립적인 논리적 모델 생성 -구현될 플랫폼에 의존적인 물리적 모델 생성 생성 모델 -논리적 모델 -물리적 모델 특징 -문제 도메인과 사용자 요구 중점 -문제 도메인과 비즈니스 프로세스 등을 표현한 분석 모델 개발 -기능 요구사항 파악 -분석된 요구사항 만족을 위한 기술적 솔루션 중점 -시스템 솔루션을 펴현한 설계 모델 개발 -비기능 요구 반영 2. 분석 결과물/설계 관계 및 설계 구성요소 가. 분석 결과물/설계의 관계 나. 시스템 설계의 구성요소 구성요소 결과물 설명.. 2021. 12. 5.
8. 객체지향 분석 방법 1. 객체지향 분석 방법의 개요 가. 객체지향 분석 방법의 정의 시스템에 대한 개념적이고 추상적인 다이어그램과 사용사례(유스케이스) 등을 추출하여 시스템 초기 계획을 수립하는 기법 나. 객체지향 분석 방법의 특징 -(객체지향 시스템), 상태 데이터와 기능으로 구성된 객체와 객체 간의 통신 기능 수행 -(다이어그램 이용), 분석, 설계, 구현 전반에 걸쳐 동일한 다이어그램 이용 유스케이스 다이어그램, 클래스 다이어그램, 상호 작용 다이어그램, 프로토타입(사용자 인터페이스) -(점진적 구체화), 초기에는 개념적 추상적으로 표현되고 점차 정제되어 구체적으로 작성 2. 요구사항 추출의 개념도 및 구성요소 가. 요구사항 추출의 개념도 나. 요구사항 추출의 구성요소 다이어그램 개념도 설명 활동 다이어그램 -비즈니스.. 2021. 12. 5.
7.5 UML 2.0 표준 1. UML 2.0 표준의 구성 영 역 내 용 다이어그램 호환 (Diagram Interchange) 영역 -CASE 도구 벤더들 간의 모델 호환 지원 OCL (Object Constraint Language) 영역 -모델 요소에서 제어와 제약을 위한 규약 정의 -특정 도메인에 대한 제한을 명시화하기 위해 사용 하부 구조 (Infrastructure) -MOF, UML, CWM(Common Warehouse Metamodel)과 같은 메타모델을 정의하는데 활용될 수 있는 메타언어 규약 -프로파일을 사용하여 UML을 커스터마이징 가능 -메타모델 간 상호 호환 지원 상부 구조 (Superstructure) -메타 모델을 사용하여 사용자 정의 모델의 구조와 행위를 정의 1) 구조형 다이어그램 Class, Co.. 2021. 12. 4.
7.4 UML (Unified Modeling Language) 1. UML의 개요 가. UML의 정의 -소프트웨어 시스템을 분석하고 설계를 돕는 그래픽 모델링 표기법 나. UML의 특징 -(모델링 언어), 시스템에 대한 분석과 설계 활동의 결과를 기술하는 표준 모델링 언어 -(객체 지향), 객체지향 방법을 위한 객체 모델링 외에 구조적 방법을 이용한 모델링 언어 -(다양한 관점), 다양한 관점에서 다양한 다이어그램을 지원 -(CASE 도구), UML 모델링을 지원하기 위한 CASE 도구 활용 -(OMG), 객체지향 표준화 단체, OMG에 의해 표준으로 채택 2. UML의 개념도 및 구성요소 가. UML의 개념도 나. UML의 구성요소 분류 다이어그램 설명 구조 클래스 다이어그램 클래스와 클래스 특징, 클래스 간의 관계 표현 객체 다이어그램 인스턴스 수준에서 클래스 .. 2021. 12. 4.
7.3. 모델링 1. 모델의 개요 가. 모델의 정의 -복잡한 시스템에 대한 이해를 돕기 위해 특정 관점에 집중하여 이해를 향상시키기 위해 기술하는 기법 나. 모델의 특징 -(이론 표현), 시스템(프로세스)의 동작에 대해 이해를 향상시키기 위해 이론적으로 기술 -(추상화), 특정 관점에서 문제를 추상화한 것 -(다양한 관점), 분석, 설계, 구현 등 여러 단계 또는 여러 관점에서 시스템 모델링 표현 2. 모델 표기법 구분 설명 서술적 모델 -텍스트 기반의 자연어를 이용하여 표현한 모델 그래픽 모델 -그래픽 다이어그램을 이용하여 표현한 모델 수학적 모델 -수학적 표기법이나 식을 이용하여 표현한 정형 모델 2021. 12. 4.
7.2 다형성 (polymorphism) 1. 다형성의 개요 가. 다형성의 정의 -하나의 객체가 여러 가지 타입을 가질 수 있는 특성 -프로그램 언어 각 요소들(상수, 변수, 객체, 매소드 등)이 다양한 자료형에 속하는 것이 허가되는 특성 나. 다형성의 특징 -부모 클래스 타입의 참조 변수 -여러 타입 객체를 하나의 타입으로 관리 가능 -적은 결합도 코딩 가능 -재사용성 증가 -프로그램 가독성 저하, 디버깅 어려움 증가 -중복되는 코드 제거 가능 2. 다형성 구현 방법 구분 오버로딩 오버라이딩 정의 -매개변수의 개수와 타입을 달리하여 동일한 이름의 메소드를 정의하는 기술 -상위 클래스의 메서드를 하위 클래스에서 재정의하는 기법 특징 -메소드의 이름이 같아야 한다. -매개 변수의 개수 또는 타입이 달라야 한다. -매개 변수는 같고, 리턴 타입이 .. 2021. 12. 4.
7.1. 상속 관계 1. 상속의 개요 가. 상속의 정의 -기존 클래스의 상태 데이터와 행위를 재사용하는 기법 나. 상속의 특징 -(계층 구조), 클래스 사이에서 계측 구조가 성립 시 발생 -(일반화 과정), 상속 계층 구조는 일반화 과정을 통해 형성 (추상화) -(재사용 용이), 클래스의 계층 구조는 기존 클래스의 재사용을 용이하게 함 -(도메인 정보 이해), 도메인에 존재하는 정보를 계층적으로 정의하여 문제 도메인의 구조를 쉽게 이해 가능 2. 상속관계의 개념도 가. 상속관계의 개념도 나. 상속관계의 종류 구분 구성 설명 일반화 (Generalization) 슈퍼(부모) 클래스 서브(자식) 클래스 -하위 계층의 클래스들의 공통 features를 추출하여 상위 계층 클래스를 정의하는 기법 특수화 (Specialization.. 2021. 11. 30.
7. 객체 지향과 UML 1. 객체의 개요 가. 객체의 정의 - 잘 정의된 경계와 정체성을 가지며 상태와 행위를 캡슐화한 개별 독립체 나. 객체의 특징 -(유형/무형), 실제 존재하는 것(사람 1,2, 자동차 3,4)과 개념적 추상적인 것(주문 1,2) 일 수 있음 -(정체성), 모든 객체는 고유의 정체성을 가짐 -(Features), 객체가 가질 수 있는 속성과 수행할 수 있는 작업으로 구성 -(메시지 통신), 상태 데이터와 행위를 객체로 정의하고 객체 사이의 행위 요청(메시지 통신)을 통해 문제 해결 -(4 특징), 캡슐화(정보은닉), 추상화, 상속, 다형성 실세계 도메인 분석/설계 모델링 구현 C++ JAVA 특징 상태 데이터 속성 인스턴스 변ㅅ 데이터 멤버 필드 행위 연산 메소드 멤버 함수 메서드 -(시그니처), 객체지향.. 2021. 11. 30.
6.4 자료 사전과 프로세스 명세 1. 자료 사전 -구조적 분석 동안 발생하는 모든 자료의 특징을 체계적으로 정리한 사전 -(공용어), DD에 나타나는 용어는 프로젝트 개발 단계에서 공용어로 사용 항목 예시 설명 이름 전화번호 자료나 자료 저장소 이름 별명 번호 자료에 대한 다른 이름 이용장소 및 방법 전화번호 읽기 전화번호 표시 장거리전화 분석 자료를 이용하는 프로세스에 대한 리스트와 함께 어떻게 이용되는지 묘사 내용 전화번호=지역번호+국번+가입자번호 지역번호=0+첫자리+{십진수}^2 0 국번={십진수}^4 3 가입번호={십진수}^4 4 자료에 대한 세부적인 구성 내용 표현 기타 정보 숫자와 영문 혼합 자료 타입, 이미 정의된 값, 제한 조건 2. 프로세스 명세 -DFD의 최하위 단계에서 나타나는 프로세스 기술 -미니스펙 (도구) (소.. 2021. 11. 29.
6.3 행위 모델링 (STD) 1. STD의 개요 가. STD의 정의 -외부 사건에 의해 발생하는 시스템의 상태변화를 보이는 행위 분석 모델링 도구 나. STD의 특징 -(외부 사건) -(상태 변화 묘사) 2. STD의 개념도 및 구성요소 가. STD의 개념도 나. STD의 구성요소 구분 모형 설명 시스템 상태 직사각형 시스템이 수행중인 상태를 의미 시스템 변화 화살표 시스템이 어떤 상태에서 다른 상태로 변화하는 과정 표현 *사검 : 상태 변화를 일으키는 부분, 화살표의 시작 *조검 : 사검의 결과로 발생하는 부분, 화살표 끝 2021. 11. 29.
6.2 기능 모델링 (DFD) 1. DFD의 개요 가. DFD의 정의 -자료 흐름을 모델링하기 위해 이용하는 그래픽 도구 나. DFD의 특징 -(사용자 요구 분석) -(시스템 주요 기능 표현) -(추상화 수준), 최상위 추상화 수준에서부터 상세 수준까지 시스템 표현 가능 2. DFD의 개념도 및 구성요소 가. DFD의 개념도 나. DFD의 구성요소 구분 부호 설명 단말 (외부개체) 자료의 생산자 또는 소비자 사람, 조직, 하드웨어, 소프트웨어 등 프로세스 입력자료를 출력자료로 변형 세금계산, 입력처리, 보고서 작성 등 자료 흐름 시스템에서 자료흐름 표시 자료 저장소 자료 저장 장소를 표시 데이터베이스, 파일, 문서박스, 캐비넷 등 3. DFD의 추상화 수준 (소프트웨어 공하의 기본원리, 154페이지) 2021. 11. 29.
6.1 데이터 모델링 (ERD) 1. ERD의 개요 가. ERD의 정의 -구조화된 데이터에 대한 일련의 표현 기법 나. ERD의 특징 -(데이터 중심), 구조적 분석 방법에서는 데이터 관리에 대한 요구 중요 -(모델링 도구), 문제 영역에 대한 데이터 개체와 데이터 특징, 데이터 사이의 관계를 이해하고 표현 -(의사소통 도구), 분석가와 개발자 등과의 의사소통을 원활히 하기 위한 도구 -(메타 데이터), 데이터에 관한 데이터를 포함 2. ERD의 개념도 및 구성요소 가. ERD의 개념도 나. ERD의 구성요소 구분 표시 설명 Entity 사각형(학생, 과목) 데이터 객체를 표현 Attiribute 타원형(학번, 이름, 과목코드) 데이터 Relationship 직선 객체 간의 관계를 표현 Relationship name 마름모(등록) 관.. 2021. 11. 29.
6. 구조적 분석 방법 1. 구조적 분석 방법의 개요 가. 구조적 분석 방법의 정의 -데이터 흐름과 이를 변형하는 프로세스 중심으로 분석하는 방법 구조적 개발 방법론 -데이터 흐름과 이를 변형하는 프로세스 중심의 분석과 하향식 모듈 설계에 기초하여 시스템을 개발하는 방법 구조적 분석 방법론 -사용자 요구를 파악하기 위해 문제를 데이터 흐름과 이를 변형하는 프로세스(기능) 중심으로 분석하는 방법 구조적 설계 방법론 -계층적인 하향식 모듈 중심으로 설계하는 방법 구조적 프로그래밍 방법론 -하향식 프로그래밍 구조와 3가지 제어(순차, 선택, 반복)에 기반을 둔 프로그래밍 방법 나. 구조적 분석 방법의 특징 -(분석 방법), 사용자 요구사항을 데이터흐름과 이를 변형하는 프로세스(기능) 중심으로 분석 -(구조적 개발 방법론), 구조적 .. 2021. 11. 29.
5.1 SRS의 특징 및 작성 목적 가. SRS의 특징 구분 설명 정확성 -사용자의 요구를 올바르게 명세하여야 함 일관성 -애매모호하거나 다양한 해석을 갖지 않도록 명세하여야 함 완전성 -모든 주요 요구사항을 포함하도록 명세하여야 함 확인성 -요구가 만족되었는지 아닌지 확인할 수 있도록 명세하여야 함 (가능하면 정량적으로 기술) 수정성 -구조나 스타일을 유지하면서 쉽고 일관성 있게 수정될 수 있도록 명세하여야 함 -요구사항이 서로 의존적이지 않고 독립적이 되도록 기술 추적성 -시스템의 각 기능과 관련된 요구사항을 쉽게 추적될 수 있도록 명세 나. SRS의 작성 목적 -고객과 개발자의 계약 문서로 활용 -유지보수를 위한 기본 문서로 활용 -프로젝트 비용 추정, 일정 계획, 위험 분석 등을 위한 정보 제공 -중요 개발 산출물의 하나 2021. 11. 28.
5. 요구 공학 1. 요구 공학의 개요 가. 요구 공학의 정의 요구의 정의 (IEEE Std 용어사전) (1) 사용자의 문제를 해결하거나 목적을 달성하기 위해 필요한 조건이나 능력 (2) 계약, 표준, 명세서나 공식적인 문서 내용을 만족하기 위해 시스템이나 시스템 컴포넌트가 소유하거나 만족해야만 하는 조건이나 능력 요구 공학의 정의 사용자 요구를 체계적으로 다루기 위한 프로세스와 방법, 도구, 기법 등을 정의한 학문 -조건은 비기능 요구사항, 능력은 기능 요구사항을 의미함 나. 요구의 분류 기능 요구사항 -시스템에 의해 제공되어야 하는 기능/서비스/능력을 의미 비기능 요구사항 가용성 -특정 시점에서 시스템이 얼마나 정상 운영되는지에 대한 요구 (오전 6시부터 오후 12시까지 최소 99.5% 정상 운영) 효율성 -시스템이.. 2021. 11. 28.
4.3 간트 차트 1. 간트 차트의 개요 가. 간트 차트의 정의 -WBS 계층구조의 각 작업이 언제 시작하고 끝나는지 쉽게 파악하는 것을 돕는 막대 차트 형태의 일정 수립 도구 나. 간트 차트의 특징 -(전체 일정), 각 업무별로 일정의 시작과 끝을 그래픽으로 표시하여 전체 일정을 한눈에 표시 -(업무 사이 관계), 막대 그래프를 통해 업무 간의 시작과 끝의 관계 표시 -(경영진 보고), 경영진 및 관계자를 대상으로 전체적인 프로젝트 계획과 진행 상태 전달에 적합 -(변화, 변경), 일정 계획 수립 시 정밀성을 기대하기 어려우며 작업 상호 간 유기적인 관계가 명확하지 않음 2. 간트 차트의 개념도 및 가. 간트 차트의 개념도 나. 간트 차트의 작성 절차 구분 특성 설명 (1) 업무 식별 WBS 활용 -WBS의 Work P.. 2021. 11. 27.