IT/정보처리기사

[1과목] 소프트웨어 설계

윤대원 2025. 8. 4. 13:04
  • XP(eXtreme Programing) 12 실천 사항
    • Pair Programing
    • Planning game
    • Test Driven Development
    • Whole team
    • Continuous Intergration
    • Desing Improvement
    • Small Releases
    • Coding Standards
    • Collective Code Ownership
    • Simple Design
    • System Metaphor
    • Sustainable pace
  • 럼바우(Rumbaugh) 객체지향 분석 기법
    • 객체 모델링 : 객체 다이어그램
    • 동적 모델링 : 상태 다이어그램 (시간에 흐름에 따라)
    • 기능 모델링 : 자료 흐름도
  • CASE (Computer Aided Software Engineering) 기능
    • 신속한개발 · 생명주기 연결 및 자동화 · 문서화 및 명세화를 위한 그래픽 · 오류수정이 쉬워 품질 향상
    • S/W 개발 단계 표준화 · 모순검사 · 다양한 개발모형 지원 · 자료흐름도 작성 기능
  • 객체 지향 기법의 캡슐화
    • 서로 관련성이 높은 데이터와 그와 관련된 기능을 묶는다 (속성 <ㅡ> 함수)
    • 결합도는 낮고 재사용성이 높다
    • 정보은닉 · 인터페이스 단순화
    • 변경시 오류 파급효과 낮음
  • 객체 지향 설계 원칙 (SOLID)
    • SRP (단일 책임 원칙) : 모든 클래스는 단일 목적으로 생성, 하나의 책임
    • OCP (개방 · 폐쇄 원칙) : 확장 -> 개방, 수정 -> 폐쇄
    • LSP (리스코프 치환 원칙) : 부모클래스 자리에 자식클래스가 들어가도 정상작동 해야함.
    • ISP (인터페이스 분리 원칙) : 클라이언트는 사용하지 않는 메소드 의존 X, 클라이언트가 사용하지 않는 인터페이스 영향 X
    • DIP (의존 관계 역전 원칙) : 변하기쉽고 빈도가 높은것이 변하기 어렵고 빈도가 낮은 것을 의존함
  • 파이프 필터 (Pipe-filter)
    • 데이터 흐름을 생성하고 처리하는 시스템을 위한 구조
    • 필터는 파이프로 데이터 받고 변경시키고 결과 전송
    • 처리과정 -> 필터컴포넌트, 데이터흐름 -> 파이프(버퍼링 또는 동기화목적으로 사용)
    • 컴파일러, 연속필터는 어휘분석,파싱,의미분석, 코드 생성 수행
  • 표의 숫자 코드 (유효숫자코드)
    • 코드화 대상 항목의 길이, 넓이, 부피 , 무게등을 나타내는 문자나 숫자, 기호를 그대로 코드로 사용
    • 코드의 추가 및 삭제 용이 · 같은 코드 반복으로 오류 저하
  • 디자인 패턴 장 ·단점
    • 장점
      • 개발자간 원활한 의사소통
      • 소프트웨어 구조파악 쉬움
      • 재사용 통해 개발시간 단축
      • 설계변경 요청에 유연한 대처 가능
      • 객체지향 설계 및 구현 생산성 높음
    • 단점
      • 객체지향 설계/구현 위주
      • 초기투자 비용 부담
  • DFD (Data Flow Diagram) 자료 흐름도
    • 자료흐름도는 시스템이나 프로그램 간의 총체적인 데이터 흐름 표시
    • 기본적인 데이터요소와 그들 사이에서 데이터 흐름 형태로 기술
  • UML의 기본구성
    • Things(사물) : 객체지향 모델을 구성하는 기본요소 · 객체간 관계형성 대상
    • Relationship(관계) : 객체간의 연관성 표현 · 종류로는 연관,집합,포함,일반화,의존,실체화
    • Diagram(다이어그램) : 객체 관계 도식화 · 다양한 관점의 View 제공 · 정적 - 구조 다이어그램 · 동적 - 행위 다이어그램
  • 소프트웨어 설계 분류
    • 상위 : 아키텍쳐 · 데이터 · 인터페이스 · 사용자 인터페이스
    • 하위 : 모듈 · 자료구조 · 알고리즘
  • 자료 사전 (Data Dictionary) 표기법
기호 의미
= 자료의정의
+ 연결
( )  생략
[ ]  선택
{ } 반복
** 설명
| 대체
  • 사용자 인터페이스 개발시스템 (User Interface Devlopment System) 기능
    • 입력검증 · 에러처리, 에러메시지처리 · 도움 및 프롬포트 제공
  • 요구사항 명세 기법
구분 정형 비정형
기법 수학적 기반
모델링 기반
상태/기능/객체 중심
자연어 기반
종류 Z, VDM
Petri-net (모형기반)
LOTOS(대수적 방법)
CSP, CCS
FSM
Decision table , ER 모델링
State Chart (SADT)
Usecase
사용자 기반 모델링
장점 시스템 요구 특성 정확, 간결
명세/구현 일치성
명세작성 이해 용이
의사전달 다양
단점 낮은 이해도
이해관계자 부담 높음
불충분한 명세 기능
모호성
  • 소프트웨어 개발 단계
    • 요구분석
      • 분석결과 문서화 -> 유지보수 유용
      • 자료흐름도, 자료사전 활용 효과적
      • 소단위 명세서활용 (Mini-spec)
    • 유지보수
      • 개발비용 가장 많이 소요
  • 애자일 방법론 종류
    • 익스트림 프로그래밍 (XP) · 스크럼(Scrum) 린(Lean) · 동적 시스템 개발 방법론(DSDM) · 기능중심개발 (FDD) · Crystal · 적응형 소프트웨어 개발 방법론 (ASD) · 학습 애자일 배포 (DAD)
  • 미들 웨어
    • 클라이언트와 서버간의 통신을 담당하는 시스템 소프트웨어
  • GOF( Gangs of Four) 디자인 패턴 분류
    • 생성 · 구조 · 행위
  • 모듈의 결합도와 응집도 (바람직한 소프트웨어 설계)
    • 응집도 높음, 결합도 낮음
    • 유지보수 높음, 복잡도 낮음 중복X
    • 입구와 출구는 하나씩