정보처리기사(1과목 소프트웨어 설계)
카테고리: IPE
1과목 소프트웨어 설계 (요약)
1. CASE(Computer Aided Software Engineering)
- 소프트웨어 개발 과정에서 사용되는 요구 분석, 설계, 구현, 검사 및 디버깅 과정을 컴퓨터와 전용의 소프트웨어 도구를 사용하여 자동화하는 작업이다
- 소프트웨어 생명주기의 전체 단계를 연결해주고 자동화시켜주는 통합된 도구를 제공해 주는 기술이다
- 소프트웨어 시스템의 문서화 및 명세화를 위한 그래픽 기능을 제공한다
- 자료 흐름도 등의다이어그램을 쉽게 작성하게 해주는 소프트웨어 CASE 도구이다
- 표준화된 개발 환경 구축 및 문서 자동화 기능을 제공한다
- 작업 과정 및 데이터 공유를 통해 작업자 간의 커뮤니케이션을 증대시킨다
2. 애자일(Agile)
날렵한,재빠른
의 사전적 의미와 같이 소프트웨어 개발 중 설계변경에 신속히 대응하여 요구사항을 수용할 수 있다- 절차와 도구보다 개인과 소통을 중요시하고 고객과의 피드백을 중요하게 생각한다
- 소프트웨어가 잘 실행되는데 가치를 둔다
- 소프트웨어 배포 시차를 최소화할 수 있다
- 특정 방법론이 아닌 소프트웨어를 빠르고 낭비 없이 제작하기 위해 고객과의 협업에 초점을 두고 있다
특징
: 짧은 릴리즈와 반복, 점증적 설계, 사용자 참여, 문서 최소화, 비공식적인 커뮤니케이션 변화
AGILE 선언문
- 프로세스나 도구보다 개인과의 소통이 더 중요하다
- 완벽한 문서보다 실행되는 소프트웨어가 더 중요하다
- 계약 협상보다 고객과의 협업이 더 중요하다
- 계획을 따르는 것보다 변경에 대한 응답이 더 중요하다
3. 익스트림 프로그래밍(XP : eXtreme Programming)
- 1999년 Kent Beck이 제안하였으며, 개발 단계 중 요구사항이 시시각각 변동이 심한 경우 적합한 방법론이다
- 요구에 맞는 양질의 소프트웨어를 신속하게 제공하는 것을 목표로 한다
- 요구사항을 모두 정의해 높고 작업을 진행하는 것이 아니라 요구사항이 변경되는 것을 적용하는 방식으로 예측성보다는 적응성에 더 높은 가치를 부여한 방법이다
- 고객의 참여와 개발 과정의 반복을 극대화하여 생상선을 향상하는 방법이다
핵심가치
- 소통(Communication): 개발자, 관리자, 고객 간의 원활한 소통을 지향한다
- 단순성(Simplicity): 부가적 기능 또는 미사용 구조와 알고리즘은 배제한다
- 피드백(Feedback) : 소프트웨어 개발에서 변화는 불가피하다. 이러한 변화는 지속적 테스트와 통합, 반복적 결함 수정 등 빠르게 피드백한다
- 용기(Courage) : 고객 요구사항 변화에 능동적으로 대응한다
- 존중(Respect) : 개발 팀원 간의 상호 존중을 기본으로 한다
4. 요구사항 분석
- 요구사항 간 상충되는 것을 해결하고, 소프트웨어의 범위를 파악한다
- 명확하지 못하거나 모호한 부분을 걸러 내기 위한 과정이다
- 소프트웨어가 환경과 어떻게 상호 작용하는지 이해한다
- 중복되는 내용을 통합하고, 서로 상충되는 요구사항을 해결한다
- 시스템 요구사항을 정제하여 소프트웨어 요구사항을 도출한다
- 도출된 사항을 분석하여 소프트웨어 개발 범위를 파악한다
- 비용과 일정에 대한 제약을 설정한다
- 타당성 조사를 수행한다
- 요구사항 정의를 문서화한다
- 성능, 보안, 품질, 안정 등에 대한 성능, 보안, 품질, 안정 등에 대한 요구사항은 비기능적 요구사항에 해당된다
SWEBOK에 따른 요구사항 개발 프로세스
도출(Elicitation) -> 분석(Analysis) -> 명세(Specification) -> 확인(Validation)
5. UML Diagram
UML의 기본 구성 요소
구성 | 내용 |
---|---|
사물 (Things) |
- 객체지향 모델을 구성하는 기본 요소 - 객체 간의 관계 형성 대상 |
관계 (Relationship) |
- 객체 간의 연관성을 표현하는 것 - 종류 : 연관, 집합, 포함, 일반화, 의존, 실체화 |
다이어그램 (Diagram) |
- 객체의 관계를 도식화한 것 - 다양한관점에서 의사소통할 수 있도록 View를 제공 - 정적 모델 - 구조 다이어그램 - 동적모델 - 행위 다이어그램 |
UML 다이어그램의 분류
- 구조적(정적) 다이어그램 : Class Diagram, Object Diagram, Composite Structure Diagram, Deployment Diagram, Component Diagram, Package Diagram
- 행위(동적) 다이어그램 : Use Case Diagram, Activity Diagram, Collaboration Diagram, State Diagram Interaction Diagram(Sequence Diagram), Communication Diagram, Interaction Overview Diagram, Timing Diagram
6. 유스케이스(Use Case)의 구성 요소 간의 관계
- 연관 관계(Association) : 유스케이스와 엑터 간의 상호 작용이 있음을 표현하는 관계이다
- 포함 관계(Include) : 하나의 유스케이스가 다른 유스케이스의 실행을 전제로 할 때 형성되는 관계이다
- 확장 관계(Extend) : 확장 기능 유스케이스와 확장 대상 유스케이스 사이에 형성되는 관계이다
- 일반화 관계(Generalization) : 유사한 유스케이스 또는 액터를 모아 추상화한 유스케이스 또는 액터와 연결해 그룹을 만들어 이해도를 높이기 위한 관계이다
7. 럼바우(Rumbaugh) 객체지향 분석 기법
- 객체 모델링 : 정보 모델링이라고도 한다. 시스템에서 요구되는 객체를 찾아내어 속성과 연산 식별 및 객체 간의 관계를 규정하여 객체를 다이어그램으로 표시한다
- 동적 모델링 : 제어 흐름, 상호 작용, 동작 순서 등의 상태를 시간 흐름에 따라 상태 다이어그램으로 표시한다
- 기능 모델링 : 자료 흐름도를 이용하여 여러 프로세스 간의 자료 흐름을 표시한다. 어떤 데이터를 입력하여 어떤 결과를 가져올 수 있을지를 표현한다
8. UI 설계 원칙과 설계 지침
UI 설계 원칙
구성 | 내용 |
---|---|
직관성 (Intuitiveness) |
- Findability / Ease of use / Consistency - ‘앱의 구조를 큰 노력 없이도 쉽게 이해하고, 쉽게 사용하게 해주는가’에 관한 척도이다 |
유효성 (Efficiency) |
- Feedback / Effectiveness - 얼마나 정확하고 완벽하게 사용자의 목표가 달성될 수 있는지에 관한 척도이다 - 시스템의 상태와 사용자의 지시에 대한 효과를 보여주어 사용자가 명령에 대한 진행 상황과 표시된 내용을 해석할 수 있도록 도와준다 |
학습성 (Flexibility) |
- Easy of Learning / Accessibility / Memorability - 초보와 숙련자 모두가 쉽게 배우고 사용할 수 있게 해주는지에 관한 척도이다 |
유연성 (Flexibility) |
- Forgiveness / Error Prevention / ErrorDetectability / Error-averse - 사용자의 인터랙션을 얼마나 포용하고, 실수로부터 방지해주는지에 관한 척도이다 |
UI 설계 지침
- 사용자 중심 : 실사용자의 이해를 바탕으로 쉽게 이해하고, 쉽게 사용할 수 있는 환경을 제공한다
- 일관성 : 사용자가 기억하기 쉽고 빠른 습득이 가능하도록 버튼이나 조작법을 제공한다
- 단순성 : 인지적 부담을 줄이도록 조작 방법을 가장 간단히 작동하도록 한다
- 가시성 : 주요 기능은 메인 화면에 배치하여 조작이 쉽게 한다
- 표준화 : 기능 구조의 선행 학습 이후 쉽게 이용할 수 있도록 디자인을 표준화한다
- 접근성 : 사용자의 직무, 성별, 나이 등 다양한 계층을 수용해야 한다
- 결과 예측 가능 : 작동 대상 기능만 보고도 결과 예측이 가능해야 한다
- 명확성 : 사용자 관점에서 개념적으로 쉽게 인지할 수 있어야 한다
- 오류 발생 해결 : 오류가 발생하면 사용자가 상황을 정확히 인지할 수 있어야 한다
UI 설계에 도움을 주는 도구
- 와이어 프레임(Wire Frame) : UI 중심의 화면 레이아웃을 선을 이용하여 개략적으로 작성한다
- 목업(Mockup) : 실물과 흡사한 정적인 모형을 의미한다. 시각적으로 구성 요소를 배치하는 것으로 일반적으로 실제로 구현되지는 않는다
- 프로토타입(Prototype) : Interaction 이 결합하여 실제 작동하는 모형이다
- 스토리보드(storyboard) : 정책, 프로세스, 와이어 프레임, 설명이 모두 포함된 설계 문서이다
9. 자료 흐름도(DFD : Data Flow Diagram)
- 자료는 처리를 거쳐 변환될 때마다 새로운 명칭을 부여해야 한다
- 자료 흐름도의 최하위 처리(Process)는 소단위 명세서를 갖는다
- 어떤 처리(Process)가 출력자룔를 산출하기 위해서는 필요한 자료가 반드시 입력되어야 한다
- 시스템이나 프로그램 간의 총제적인 데이터 흐름을 표시할 수 있으며, 기본적인 데이터 요소와 그들 사이의 데이터 흐름 형태로 기술된다
- 다차원적이며 자료 흐름 그래프 또는 버블(Bubble) 차트라고도 한다
- 구조적 분석 기법에 이용된다
- 그림 중심의 표현이고 하향식 분할 원리를 적용한다
10. 데이터 사전(자료 사전, Data Dictionary)
자료사전
- 시스템 자신이 필요로 하는 여러 가지 객체(기본 테이블, 뷰, 인덱스, 데이터베이스, 패키지, 접근 권한 등)에 관한 정보를 포함하고 있는 시스템 데이터베이스이다
- 시스템 카탈로그(System Catalog), 메타 데이터(Metadata)라고도 한다
- 시스템 카탈로그 자체도 시스템 테이블로 구성되어 있어 SQL 문을 이용하여 내용 검색이 가능하다
자료 사전 표기법
기호 | 의미 | 설명 |
---|---|---|
= | 자료의 정의 | ~로 구성되어 있다(is compose of) |
+ | 자료의 연결 | 그리고(and,alon with) |
() | 자료의 생략 | 생략 가능한 자료(Optional) |
[I] | 자료의 선택 | 다중 택일(Selection), 또는(or) |
{} | 자료의 반복 (Iteration of) |
{}n : 최소 n번 이상 반복 {}_n : 최소 n번 이하 반복 {}nm: m번 이상 n번이하 반복 |
** | 자료의 설명 | 주석(Comment) |
I | 대체 항목 나열 | 또는(or) |
11. 소프트웨어 모델링
- 현실 세계에 존재하는 데이터를 추상화하여 컴퓨터 세계로 옮기는 변환 과정이다
- 모델링 작업의 결과물은 다른 모델링에 영향을 준다
- 개념적 모델링과 논리적 모델링으로 구분된다
- 데이터 모델링의 결과물을 데이터 모델링이라고 한다
12. 응집도, 결합도 그리고 효과적인 모듈 설계
응집도(Cohesion)
- 한 모듈 내에 있는 처리 요소들 사이의 기능적인 연관 정도를 나타낸다
- (높음) 기능적 응집도 > 순차적 응집도 > 교환적 응집도 > 절차적 응집도 > 시간적 응집도 > 논리적 응집도 > 우연적 응집도(낮음)
결합도
- 모듈들이 변수를 공유하지 않도록 결합도를 낮추어야 한다
- (낮음) 데이터 결합도 < 스탬프 결합도 < 제어 결합도 < 외부 결합도 < 공통 결합도 < 내용 결합도(높음)
효과적인 모듈화 설계 방법
- 응집도는 강하게, 결합도는 약하게 설계한다
- 복잡도와 중복성을 줄이고 일관성을 유지할 수 있도록 설계 한다
- 유지보수가 용이하도록 설계한다
- 모듈 크기는 시스템의 전반적인 기능과 구조를 이해하기 쉬운 크기로 설계한다
- 모듈 기능은 예측이 가능해야 하며 지나치게 제한적이어서는 안 된다
13. 객체지향 / 캡슐화
객체지향(Object Oriented) 분석
- 현실 세계의 대상체인 개체(Entity)를 속성(Attribute)과 메소드(Method)로 결합하여 객체(Object)로 표현(모델링)한다
- 소프트웨어 개발의 대상을 기능이 아닌 개체를 대상으로 하며 개체 간의 상호관계를 모델링하는 방식이다
캡슐화(Encapsulation)
- 서로 관련성이 높은 데이터(속성)와 그와 관련된 기능(메소드, 함수)을 묶는 기법이다
- 결합도가 낮아져 소프트웨어 개발에 있어 재사용성이 높아진다
- 정보은닉을 통하여 타 객체와 메시지 교환 시 인터페이스가 단순해진다
14. 객체지향의 구성 요소와 설계 원칙
객체지향의 구성 요소
구분 | 내용 |
---|---|
Class | - 유사한 객체를 정의한 프로그램이다 - 같은 종류의 객체 집합으로 ‘속성+행위’를 정의한 것으로 일반적인 Type을 의미한다 - 객체지향 프로그램의 기본적인 사용자 정의 데이터형이다 - 객체지향 프로그램에서 데이터를 추상화하는 단위이다 - 같은 종류의 Object 속성과 연산을 정의하고 있는 Template 이다 - Class에 속한 Instance 를 Object 라 한다 - 상위 클래스(부모 클래스, Super Class), 하위 클래스(자식 클래스, Sub Class)가 있다 |
Object | - 데이터와 함수를 묶어 캡슐화한 것이다 - 데이터와 함수를 묶어 캡슐화하는 대상이 된다 - 하나의 소프트웨어 모듈이다 - Class(클래스)에 속한 Instance(인스턴스)를 Object(객체)라 한다 - Attribute = Object가 가지고 있는 데이터값 - Method = Object의 행위인 함수 |
Message | - Object 간에 서로 주고받는 통신을 의미한다 |
객체지향 설계 원칙(SOLID)
|구분 | 내용 |
|—|————————————————————————————-|
|단일 책임의 원칙
SRP : Single Responsibility Principle) | 모든 클래스는 단일 목적으로 생성되고, 하나의 책임만 가져야 한다 |
|개방 - 폐쇄의 원칙
(OCP : Open Closed Principle) | 소프트웨어 구성 요소는 확장에 대해서는 개방되어야 하나 수정에 대해서는 폐쇄적이어야 한 |
|리스코프 치환 원
(LSP : Liskov Substitution Principle) | 부모 클래스가 들어갈 자리에 자식 클래스를 대체하여도 계획대로 작동해야 한다 |
|인터페이스 분리 원칙
(ISP : Interface Segregation Principle) |- 클라이언트는 자신이 사용하지 않는 메소드와 의존관계를 맺으면 안 된다
- 클라이언트가 사용하지 않는 인터페이스 때문에 영향을 받아서는 안된다 |
|의존 역전 원칙
(DIP : Dependency Inversion Principle) |의존 관계를 맺으면 변하기 쉽고 변화 빈도가 높은 것보다 변하기 어렵고 변화 빈도가 낮은 것에 의존한다 |
z`
—
15. CBD(Component Based Development)
- 재사용이 가능한 컴포넌트의 개발 또는 상용 컴포넌트들을 조합하여 애플리케이션 개발 생산성과 품질을 높이고, 시스템 유지보수 비용을 최소화할 수 있는 개발 방법 프로세스이다
- 컴포넌트 단위의 개발 및 조립을 통하여 정보 시스템의 신속한 구축, 변경, 확장의 용이성과 타 시스템과의 호환성을 달성하고자 하는 소프트웨어 공학 프로세스, 방법론 및 기술의 총체적 개념이다
16. GoF(Gang of Four) 디자인 패턴
GoF 디자인 패턴
- 구조 : Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
- 행위 : Chain of Responsibility, State, Strategy, Visitor, Template Method, Mediator
- 생성 : Factory Method, Singleton, Prototype, Builder, Abstraction Factory
디자인 패턴을 사용할 떄의 장, 단점
구분 | 내용 |
장점 | - 개발자 간의 원활한 의사소통을 지원한다 - 소프트웨어 구조 파악이 쉽다 - 재사용을 통한 개발 시간을 단축할 수 있다 - 설계 변경 요청에 대한 유연한 대처가 가능하다 - 객체지향 설계 및 구현의 생산성을 높이는 데 적합하다 |
단점 | - 객체지향 설계 / 구현 위주로 사용된다 - 초기 투자 비용이 부담된다 |
디자인 패턴의 특징 자주 사용하는 설계 형태를 정형화하여 유형별로 설계 템플릿을 만들어 두고 소프트웨어 개발 중 나타나는 과제를 해결하기 위한 방법 중 한 가지이므로 개발 프로세스를 무시할 수 없다
17. 요구사항 검토 기법
요구사항 검토 기법
방법 | 설명 |
프로토타이핑 | 시제품인 포토타입을 제작하여 검증한다 |
|
테스트 설계 | Test Case를 생성하고, 요구사항이 현실적으로 테스트 가능한지 검토한다 |
|
CASE (Computer Aid Software Engineering) | - 소프트웨어를 개발하는 시점부터 요구 분석, 설계, 개발, 유지보수에 이르기까지 소프트웨어 생명주기의 전 단계를 연결한다 - 요구사항 변경의 추적과 분석을 통하여 요구사항을 관리한다 |
|
요구사항 검토 | 동료 검토(Peer Review) - 명세 작성자가 동료들에게 설명하고 동료들이 결함을 찾는 방법이다 워크스루(Walk Through) - 절차 : 검토 회의 전 명세서 배포 -> 짧은 검토 회의 -> 결함발견 - 사용 사례를 확장하여 명세하거나 설계 다이어그램, 원시코드, 테스트 케이스 등에 적용할 수 있다 - 복잡한 알고리즘 또는 반복, 실시간 동작, 병행 처리와 같은 기능이 나 동작을 이해하려고 할때 유용하다 - 단순한 테스트 케이스를 이용하여 프로덕트를 수작업으로 수행해 보는 것이다 인스펙션(Inspection) - 명세서 작성자 외 전문가가 명세서의 결함을 발견하는 방법이다 |
18. 미들웨어
미들웨어 솔루션 정의
- DB(DataBase) : 데이터베이스 벤더에서 제공하는 클라이언트와 데이터베이스를 연결하는 미들웨어이다. 2-Tier 아키텍처라고 한다
- 클라이언트와 서버 간의 통신을 담당하는 시스템 소프트웨어이다
- 이기종 하드웨어, 소프트웨어, 네트워크, 프로토콜, PC 환경, 운영체제 환경 등에서 시스템 간의 표준화된 연결을 도와주는 소프트웨어이다
- 표준화된 인터페이스를 통하여 시스템 간의 데이터 교환에 있어 일관성을 제공한다
- 운영체제와 애플리케이션 사이에서 중간 매개 역할을 하는 다목적 소프트웨어이다
미들웨어 솔루션의 유형
- TP-Monitor(Transaction Processing Monitor) : 여러 프로토콜에서 동작하는 세션, 시스템, 데이터베이스 사이의 트랜잭션을 감시하여 일관성 있게 보관 유지하는 역할을 한다
- ORB(Object Request Broker) : 객체지향 미들웨어로 코바(CORBA)표준 스펙을 구현한 미들웨어이다
- RPC(Remote Procedure Call) : 응용 프로그램의 프로시저를 사용하여 원격 프로시저를 마치 로컬 프로시저처럼 호출하는 방식이다
- MOM(Messgae Oriented Middleware) : 메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어이다. 온라인 업무보다는 이기종 분산 데이터 시스템의 데이터 동기를 우해 많이 사용한다
- WAS(Web Application Server) : 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어이다
19. 인터페이스 보안 기술
IPSec(IP Security Protocol)
- 보안에 취약한 인터넷상에서 안전한 통신을 실현하는 통신 규약이다
- 가상 전용 회선을 구축하여 데이터를 도청당하는 등의 행위를 방지하기 위한 통신 규약이다
SSL(Secure Sockets Layer)
- 웹 브라우저와 웹 서버 간에 데이터를 안전하게 주고받기 위한 업계 표준 프로토콜이다
- 미국 넷스케이프 커뮤니케이션스사가 개발했고, 마이크로소프트사 등 주요 웹 제품 업체가 채택하고 있다
- FTP 등 다른 TCP / IP 애플리케이션에 적용할 수 있다
- 인증 암호화 기능을 제공한다
댓글 남기기