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

2025. 7. 14. 18:39·이론공부/자격증

□ 애자일(Agile)기법 ☆☆☆☆☆

  • XP(eXtreme Programming)
  • 스크럼 : Sprint(짧은 단위 기간)동안 개발, 매일 Daily Scurm을 통해 진행상황 공유
  • FDD(Feature-Driven Development) : 기능 중심 개발, 기능 단위로 계획 → 설계 → 개발 → 검증 반복
  • 크리스탈 : 사람 중심의 경량 프로세스
  • 린(Lean) : 낭비를 줄이고 효율성을 극대화하여 빠르고 품질 높은 소프트웨어 개발
    • 7가지 원칙 : 낭비제거, 학습 강화, 의사 결정 지연, 빠른 전달, 권한 위임, 전체 최적화, 품질 내재화

□ 익스트림 프로그래밍(XP) ☆☆☆☆☆

  • 익스트림 프로그래밍(XP, eXtreme Programming)은 애자일(Agile) 방법론의 대표적인 반복적·적응형(Iterative & Adaptive) 개발 방식
  • 5가지 원칙 : 의사소통, 피드백, 존중, 용기, 단순성
  • 12가지 실천사항 : 소단위 릴리즈, 단순 설계, 테스트 우선 계발, 리팩토링, 지속적 통합, 짝 프로그래밍,
                                         공동 코드 소유, 코드 표준화, 지속 가능한 속도, 고객 상주, 메타포, 전체 팀

※구조적 방법론(Structured Methodology)은 전통적인 폭포수 모델(Waterfall)과 관련된 절차 중심의 방법론을 말하며, XP와는 성격이 완전히 다르다.

□ 클래스 설계 원칙(SOLID) ☆☆☆☆☆

  • 단일 책임(Single Responsibility Principle) : 하나의 책임만 가져야 한다.
  • 개방-폐쇄(Open-Closed Principle) : 확장에는 열리고 수정에는 닫혀 있어야 한다.
  • 리스코프 치환(Liskov Substitution Principle) : 자식 클래스는 부모 클래스를 대체할 수 있어야 한다.
  • 인터페이스 분리(Interface Segregation Principle) : 여러 개의 구체적인 인터페이스로 나누어야 한다.
  • 의존 역전(Dependency Inversion Principle) : 구체적인 구현이 아닌 인터페이스나 추상 클래스에 의존하도록 설계한다.

□ UML(Unified Modeling Language) 다이어그램 ☆☆☆☆☆

  • 구성 : 사물(Things), 관계(Relationship), 다이어그램(Diagram)
  • 클래스 간의 관계
    • 연관(Association) : 클래스 간 서로 알고 있음(has a)[실선으로 표현 {학생 ― 과목 }]
    • 집합(Aggregation) : 전체-부분 관계(부분이 전체에 종속되지 않음)[비워진 마름모로 표현 {학급 ◇―― 학생}]
    • 복합(Composition) : 강한 전체-부분 관계(부분이 전체에 종속) [채워진 마름모 {책 ■―― 장 }]
    • 일반화(Generalization) : 상속 관계(is -a) [빈 삼각형 화살표 { 동물 ◁―― 고양이 }]
    • 의존(Dependency) : 한 클래스가 다른 클래스의 변화에 영향을 받는 "사용" 관계 [점선 화살표 {주문 → 결제서비스}]
    • 실체화(Realization) : 인터페이스 구현 관계 [점선 빈 삼각형 화살표 {PaymentService ◁―― KakaoPayService}]
  • 종류 및 설명
종류 설명 형태
클래스 다이어그램 객체 지향 시스템에서 클래스 간의 관계 표현 정적
컴포넌트 다이어그램 시스템 구성요소와 그 관계 표현 정적
배치 다이어그램 하드웨어 구성 및 소프트웨어 배포 표현 정적
시퀸스(순차) 다이어그램 객체들 간의 메시지 흐름(시간 순서)을 표현 동적
유스케이스 다이어그램 사용자와 시스템 간 상호작용 정의 동적
활동 다이어그램 비즈니스 프로세스나 작업 흐름 표현 동적
상태 다이어그램 객체의 상태 변화 표현 동적
커뮤니케이션 다이어그램 객체들이 주고 받는 메시지 표현 동적
인터렉션 오버뷰 다이어그램 활동 + 시퀸스 다이어그램 동적
타이밍 다이어그램 시간의 흐름에 따른 상태 변화를 표현 동적

□ 유스케이스(Use Case) ☆☆☆☆☆

  • 연관관계(Association) :  유스케이스와 액터간의 상호작용이 있음을 표현한다.
  • 포함 관계(Include): 하나의 유스케이스가 다른 유스케이스의 실행을 전제로 할 때 형성되는 관계이다.
  • 확장 관계(Extend):  확장 기능 유스케이스와 확장 대상 유스케이스 사이에 형성 되는 관계이다.
  • 일반화 관계(Generalization) : 유사한 유스케이스 또는 액터를 모아 추상화한 유스케이스
                                                  또는 액터와 연결시켜 그룹을 만들어 이해도를 높이기 위한 관계이다.
  • 사용자 액터 : 기능을 요구하는 대상이나 시스템의 수행결과를 통보받는 사용자
  • 시스템 액터 : 본 시스템과 데이터르 주고받는 연동시스템

□ GoF(Gang of Four) 디자인 패턴 ☆☆☆☆☆

구분 종류
생성패턴(생성) 추상 팩토리, 빌더, 팩토리 메소드, 프로토타입, 싱클톤
구조패턴(확장) 어탭터, 브릿지, 컴포지트, 데코레이터, 퍼싸드, 플라이웨이트, 프록시
행위패턴(변경, 수정) 메멘토, 옵저버, 전략, 템플릿 메소드, 상태, 역할 사슬, 커맨드, 인터프리터, 이터레이터, 미디에이터, 비지터

□ 객체지향 분석 기법 ☆☆☆☆☆

  • 분석가 (기법명) 핵심 특징 및 설명
    ☆☆☆ 럼바우
    (Rumbaugh)
    객체(Object) -객체, 동적(Dynamic) - 상태, 기능(Functional) - DFD 3가지 모델로 시스템 분석 → 정적 구조 분석에 강점
    부치
    (Booch)
    Micro(세부)와 Macro(전체) 개발 프로세스를 모두 적용클래스와 객체 중심 분석
    → 구조 + 행위 통합 접근
    제이콥슨
    (Jacobson)
    유스케이스(Use Case) 중심 분석 방법사용자와 시스템 간 상호작용 분석에 효과적
    ☆ 코드와 유어든
    (Coad & Yourdon)
    E-R 다이어그램 기반 객체 행위 모델링객체 식별 → 구조 식별 → 속성/연산/메시지 정의 등
    분석 절차가 체계적
    비르프스-브록
    (Wirfs-Brock)
    분석과 설계의 구분 없이 연속적으로 진행고객 명세서를 바탕으로 직접 설계까지 연결하는
    실용적 접근 방식

□ 객체 지향 프로그래밍의 특징 ☆☆☆☆☆

  • 추상화(abstarction) : 불필요한 세부사항은 숨기고, 중요한 정보만 제공
  • 캡슐화(encapsulation) : 객체의 속성과 메서드를 하나로 묶는것, 외부에서는 인터페이스만 접근 가능(정보 은닉)
  • 상속(inheritance) : 기존 클래스의 속성과 메서드를 재사용하여 새로운 클래스를 생성
  • 다형성(polymorphism) : 같은 인터페이스나 메서드 이름으로 다양한 동작 가능

□ 미들웨어(Middleware) ☆☆☆

  • 운영체제와 응용 프로그램 사이에서 동작하면서, 서로 다른 시스템이나 소프트웨어 컴포넌트 간의 연결, 통신, 데이터 관리 등을 지원하는 소프트웨어 계층(서로 다른 애플리케이션 간을 “중간에서 중재해주는 소프트웨어)
  • 미들웨어의 종류
    • RPC : 원격 프로시저 호출
    • MOM : 메시지 지향 미들웨어
    • ORB : 다른 시스템의 프로그램을 네트워크를 통해 호출할 수 있는 미들웨어
    • DB 접속 미들웨어
    • TP 모니터
    • WAS
    • ESB

□ 요구사항 분석 ☆☆☆

  • 도출(추출) → 분석 → 명세 → 확인(검증, 검토)
  • 기능적 요구사항 : 실제 시스템 수행에 필요한 요구사항
  • 비기능적 요구사항 : 성능, 품질, 보안, 안정성에 필요한 보조적인 지표

□ UI 설계원칙 ☆☆☆

  • 직관성 : 누구나 쉽게 이해하고 사용할 수 있어야 함
  • 유효성 : 사용자의 목적을 정확하게 달성하여야 함
  • 학습성 : 누구나 쉽게 배우고 익힐 수 있어야 함
  • 유연성 : 사용자의 요구사항을 최댛나 수용하며, 오류를 최소화하여야 함

□ 클래스(Class)간 관계 ☆☆☆

  • 일반화 관계 Generalization(상속) : 객체지향 개념에서 상속관계
  • 실체화 관계 Realization(구현) : 인터페이스와 그것을 구현한 것과의 관계
  • 의존 관계 Dependency(참조) : 어떤 클래스가 다른 클래스를 일시적으로 참조
  • 연관 관계 Association : 어떤 클래스가 다른 클래스를 참조
    • 직접 연관 : 한 클래스가 다란 클래스를 참조하는 관계
    • 집합 연관 Aggregation : 참조하는 객체나 클래스가 사용 후에도 유지되는 관계
    • 복합 연관 Composition : 참조한 객체가 사라지면 참조하는 객체도 사라지는 관계

□ 하향식, 상향식 설계 ☆☆☆

  • 하향식 통합 테스트(Top Down Intergration Test)
    • 깊이 우선 통합, 넓이 우선 통합법 사용
    • 테스트 초기 사용자에게 시스템 구조를 보여줄 수 있음
    • 상위 모듈에서는 테스트케이스 사용이 어려움
    • 상위 모듈에서 하위 모듈 방향으로 통합하면서 테스트하는 기법
    • 절차
      1. 주요 상위(제어) 모듈을 구현하고 테스트 시작
      2. 종속된 하위 모듈은 스텁으로 대체
      3. 깊이 우선 또는 넓이 우선 전략에 따라 스텁을 실제 모듈로 하나씩 교체
      4. 모듈이 통합될 때마다 테스트 수행
      5. 이전 테스트가 영향을 받지 않았는지 회귀 테스트로 확인
  • 상향식 통합 테스트(Bottom Up Intergration Test)
    • 하위 모듈에서 상위 모듈 방향으로 통합하면서 테스트 하는 방법
    • 가장 하위 단계의 모듈부터 통합 및 테스트가 수행되므로 스텁은 필요하지 않다.
    • 하나의 주요 제어 모듈과 관련된 종속 모듈의 그룹인 클러스터는 필요
    • 절차
      1. 하위 모듈들을 클러스터로 구성하여 통합
      2. 상위 모듈이 아직 없기 때문에, 드라이버를 작성하여 클러스터를 테스트
      3. 통합된 클러스터 단위로 테스트 수행
      4. 테스트가 완료된 클러스터는 상위 모듈과 점차적으로 결합
      5. 드라이버는 실제 상위 모듈로 교체됨 

□ 프로그램 품질관리 ☆☆☆

  • 워크스루(Walkthrough)
    • 교육 목적이나 문제의 식별등이 목적
    • 문제 해결 자체에 중점을 두지 않음
    • 미리 준비된 자료를 바탕으로 정해진 절차에 따라 평가
    • 오류 조기 검출이 목적
    • 검조 자료를 회의 전에 배포하여 사전 검토 후 짧은 시간동안 회의 진행
  • 인스펙션(Inspection)
    • 오류 발견과 수정에 중점
    • 저작자 외의 다른 전문가 또는 팀이 검사하여 오류를 찾아내는 방식
    • 워크스루를 발전시킨 형태

□ HIPO (Hierarchy plus Input-Process-Output) Chart ☆☆

  • 하향식 기법으로 절차보다는 기능 중심
  • 도형 목차의 내용을 입력, 처리, 출력 관계로 도표화한 것이 총괄 도표
  • 체계적인 문서 작성이 가능하며, 보기 쉽고 알기 쉽다.
  • 기능과 자료의 의존 관계를 동시에 표현할 수 있다.
  • HIPO 차트 종류에는 가시적, 총체적, 세부적 도표가 있다.
  • 프로그램 구조와 데이터 구조나 데이터 구조 간의 관계를 표현할 수 없다.

□ 소프트웨어 설계 도구 ☆

설계도구 의미
와이어프레임(Wireframe) 페이지에 대한 계략적인 레이아웃이나 UI요소 등에 대한 뼈대를 설계하는 단계
목업(Mockup) 와이어프레임보다 좀 더 실제 화면과 유사하게 만든 정적인 형태의 모형
스토리보드(Story Board) 와이어프레임에 콘텐츠에 대한 설명, 페이지 간 이동 흐름 등을 추가한 문서
프로토타입(Prototype) 실제 구현된 것처럼 테스트가 가능한 동적인 형태의 모형
유스케이스(Use Case) 사용자가 원하는 목표를 달성하기 위해 수행할 내용을 기술한다

□ 소프트웨어 설계 단계 ☆

  • 상위 설계
    • 아키텍처 설계, 예비 설계
    • 시스템의 전체적인 구조
    • 구조, DB, 인터페이스
  • 하위 설계
    • 모듈 설계, 상세 설계
    • 시스템 내부 구조 및 행위
    • 컴포넌트, 자료구조, 알고리즘

□ 시스템 품질 속성 ☆

  • 가용성(Availability)
  • 변경용이성(Modifiability)
  • 성능(Performance)
  • 보안성(Security)
  • 사용편의성(Usability)
  • 시험용이성(Testability)

□ 코드의 종류 ☆

종류 설명
순차코드 일정한 기준에 따라 순서대로 일련번호 부여
완전 순차코드 일정 간격으로 비어있는 번호를 부여
구분 순차코드 몇 개의 블록으로 나누어 각 블록에 의미를 갖게 부여
십진 분류 코드 10진으로 분류하고, 다시 10진으로 분류
그룹 분류 코드 대분류, 중분류, 소분류 등으로 구분하는 방식
표의 숫자 코드 중량, 면적, 용량, 거리 등을 코드화하는 방식
연상 코드 코드값을 보면 대상을 연상활 수 있는 코드 부여
합성 코드 두 개 이상의 코드를 조합하여 만든 코드

□ 요구사항 명세 기법 ☆

  • 정형 명세
    • 수학, 논리학
    • 명세 오류 및 모호성 쉽게 파악
    • 어렵고 시간 소모가 많음
  • 비정형 명세
    • 자연어, 그림 중심
    • 사용자-개발자 의사전달이 용이
    • 모호함

□ 정형 기술 컴토(FTR)의 지침 ☆

  • 의제와 그 범위를 유지
  • 참가자의 수를 제한
  • 각 체크리스트를 작성하고, 자원과 시간 일정을 할당
  • 개발자가 아닌 제품의 검토에 집중.
  • 논쟁과 반박을 제한
  • 검토 과정과 결과를 재검토

□ UI(User Interface)에서 사용자 동작 ☆

  • 클릭(Click) : 마우스나 터치스크린을 사용하여 특정 버튼, 링크, 아이콘 등을 선택할 때 발생하는 동작\
  • 탭(Tap) : 터치스크린에서 손가락으로 화면을 가볍게 누르는 동작
  • 더블 클릭/더블 탭(Double Click/Double Tap) : 짧은 시간 내에 동일한 위치를 두 번 클릭하거나 탭하는 동작
  • 드래그(Drag) : 마우스 버튼을 누른 상태로 이동하거나, 터치스크린에서 손가락을 눌러 끌어 이동하는 동작
  • 스와이프(Swipe) : 터치스크린에서 손가락을 빠르게 밀어 올리거나, 옆으로 이동시키는 동작.
  • 핀치(Pinch) : 두 손가락을 사용하여 화면을 확대하거나 축소하는 동작

□ IPSec(IP security) ☆

  • 양방향 암호화를 지원
  • ESP는 발신지 인증, 데이터 무결성, 기밀성 모두를 보장
  • 운영 모드는 Tunnel 모드와 Transport 모드로 분류
  • AH는 발신지 호스트를 인증하고, IP 패킷의 무결성을 보장
  • 전송 모드(Transport)는 전송 계층과 네트워크 계층 사이에 전달되는 payload를 보호
  • 터널 모드(Tunnel)는 IPSec이 IP 헤더를 포함한 IP 계층의 모든 것을 보호

'이론공부 > 자격증' 카테고리의 다른 글

네트워크관리사 2급  (3) 2025.08.06
정보처리기사(개념정리) - 5과목 정보시스템 구축관리  (3) 2025.07.29
정보처리기사(개념정리) - 4과목 프로그래밍 언어 활용  (0) 2025.07.23
정보처리기사(개념정리) - 3과목 데이터베이스 구축  (0) 2025.07.19
정보처리기사(개념정리) - 2과목 소프트 웨어 개발  (1) 2025.07.16
'이론공부/자격증' 카테고리의 다른 글
  • 정보처리기사(개념정리) - 5과목 정보시스템 구축관리
  • 정보처리기사(개념정리) - 4과목 프로그래밍 언어 활용
  • 정보처리기사(개념정리) - 3과목 데이터베이스 구축
  • 정보처리기사(개념정리) - 2과목 소프트 웨어 개발
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 이론공부 N
        • 자격증 N
        • 개념
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • DB
      • AWS
      • CI-CD
      • 웹
      • git & github
      • 구인공고분석
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    자료구조
    java 세수의합
    java 유클리드 호제법
    Java 생성자
    java arrays.copyofrnage()
    개발로드맵
    java기초
    java 메서드
    데이터 타입
    java enhance switch
    java 에라토스테네스의 체
    java 제어자
    java
    java 멤버
    데이터 크기
    프로그래머스 java 기초 트레이닝
    프로그래머스 java 기초트레이닝
    java super
    Java this
    java two-pointer
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
정보처리기사(개념정리) - 1과목 소프트 웨어 설계
상단으로

티스토리툴바