정보처리기사(1과목 소프트웨어 설계)

Date:     Updated:

카테고리:

태그:

정보처리기사


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 애플리케이션에 적용할 수 있다
  • 인증 암호화 기능을 제공한다

IPE 카테고리 내 다른 글 보러가기

댓글 남기기