← 목록으로

[정처기 필기] 1. 소프트웨어 설계

소프트웨어 설계 - 개발 생명주기 · 개발 방법론 · 요구사항 공학

정보처리기사 필기 1과목(소프트웨어 설계) 중, 자주 나오는 핵심만 압축 정리.


1. 소프트웨어 개발 생명주기(SDLC)

  • 소프트웨어를 만들고 운영·유지보수까지 진행하는 전 과정.
  • 일반 흐름: 계획 → 분석 → 설계 → 구현 → 테스트 → 유지보수.
  • 시험에서는 생명주기 모형별 특징/장단점/적용 상황을 묻는 문제가 자주 출제됨.

1.1 대표 생명주기 모형

모형설명장점단점
폭포수(Waterfall)단계를 순차적으로 진행하는 전통적 모형단계/산출물 관리가 명확요구사항 변경 대응이 어려움
프로토타입(Prototype)시제품을 먼저 만들어 요구사항을 구체화사용자 피드백 빠름, 요구사항 파악 용이시제품을 최종품으로 오해할 수 있음
나선형(Spiral)반복 개발 + 위험 분석 중심 모형(보헴)위험 관리에 강함, 대형 프로젝트에 적합관리 복잡, 비용/기간 증가 가능
반복/점진적(Iterative/Incremental)기능을 나눠 반복적으로 완성도 향상우선순위 기능부터 제공 가능전체 구조 관리가 어려울 수 있음

1.2 핵심 비교 포인트

  • 폭포수: 안정적 요구사항, 문서 중심, 변경 적은 프로젝트에 적합.
  • 프로토타입: 요구사항이 불명확할 때 유리.
  • 나선형: 고위험/대규모 프로젝트에서 위험 통제가 핵심일 때 유리.
  • 최근 실무는 변경 대응을 위해 반복/점진 및 애자일 방식 비중이 높음.

2. 소프트웨어 개발 방법론

  • 개발 전 과정을 수행하는 절차·원칙·기법의 체계.
  • 정처기에서는 전통 방법론과 애자일 방법론의 차이, 애자일 프레임워크 특징을 구분하는 문제가 자주 나옴.

2.1 전통적 방법론 vs 애자일 방법론

구분전통적 방법론(구조적/계획 중심)애자일 방법론(변화 대응 중심)
진행 방식초기에 계획/분석을 크게 수립 후 단계 진행짧은 주기 반복(Iteration/Sprint)
요구사항 변경상대적으로 어려움비교적 유연하게 수용
문서/절차문서와 승인 절차 비중 큼협업·소통·작동 소프트웨어 중시
고객 참여특정 단계 중심전 과정에서 지속적 참여

2.2 애자일(Agile) 핵심

  • 가치: 개인과 상호작용, 작동하는 소프트웨어, 고객 협업, 변화 대응 중시.
  • 목표: 빠른 피드백으로 품질 향상 + 변경 비용 최소화.
  • 실무 포인트: 작은 단위로 개발/통합/테스트를 자주 반복.

2.3 주요 애자일 개발 방법

1) 스크럼(Scrum)

  • 제품 백로그(Product Backlog) 기반으로 우선순위 작업 수행.
  • 스프린트(Sprint): 고정된 기간(보통 2~4주) 동안 개발.
  • 주요 이벤트: 스프린트 계획, 데일리 스크럼, 리뷰, 회고.
  • 주요 역할: 제품 책임자(PO), 스크럼 마스터(SM), 개발팀.

2) XP(eXtreme Programming)

  • 고객 요구 반영과 빠른 피드백을 매우 강하게 적용.
  • 핵심 가치: 의사소통, 단순성, 용기, 존중, 피드백.
  • 대표 실천: 짝 프로그래밍, 테스트 주도 개발(TDD), 지속적 통합(CI), 리팩토링.

3) 칸반(Kanban)

  • 작업 흐름을 시각화(보드)하고 **WIP(동시 진행 작업)**를 제한.
  • 병목 구간을 빠르게 찾아 흐름을 개선하는 데 강점.

3. 요구사항 공학 (요구사항 분석/명세)

  • 요구사항 공학은 이해관계자 요구를 정의·분석·명세·검증하는 체계적인 활동.
  • 정처기에서는 특히 요구사항 분석 기법요구사항 명세 품질 기준이 자주 출제됨.

3.1 요구사항 분석(Requirement Analysis)

  • 도출된 요구사항을 분류·정제하고, 충돌/중복/누락을 찾아 해결하는 단계.
  • 핵심 목적: 무엇을 개발해야 하는지를 명확히 하고, 개발 범위를 확정.
  • 주요 활동:
    • 기능/비기능 요구사항 구분
    • 우선순위 부여 및 타당성 검토
    • 모호한 표현 제거, 이해관계자 합의
    • 모델링(DFD, UML 등)으로 요구사항 시각화

3.2 요구사항 분석 모델

1) 자료흐름도(DFD)

  • 시스템 내 데이터가 어디서 들어와 어떻게 처리/저장/출력되는지 표현.
  • 구성 요소: 처리(Process), 자료 흐름, 자료 저장소, 외부 엔티티.
  • 출제 포인트: 구성 요소 의미와 표기 해석.

2) 자료사전(DD)

  • DFD에서 사용하는 데이터의 구조/의미/형식을 정의한 사전.
  • 데이터 요소를 표준화해 분석자-개발자 간 해석 차이를 줄여줌.

3.3 요구사항 명세(Requirement Specification)

  • 분석한 요구사항을 문서화한 결과물(요구사항 명세서, SRS).
  • 개발·테스트·검수의 기준 문서가 되므로 명확성/일관성이 중요.

좋은 요구사항 명세서 조건

  • 완전성: 필요한 요구사항이 빠짐없이 포함.
  • 일관성: 요구사항 간 충돌 없음.
  • 명확성: 중의적 표현 없이 해석이 하나로 수렴.
  • 검증 가능성: 테스트/검토로 충족 여부 판단 가능.
  • 추적 가능성: 요구사항 출처와 변경 이력 추적 가능.

3.4 분석 vs 명세 한 번에 구분

구분요구사항 분석요구사항 명세
목적요구사항 정제·이해·합의요구사항을 표준 문서로 기록
산출물분석 모델(DFD/UML), 정제 요구사항SRS(요구사항 명세서)
관점문제를 구조화하고 해석구현·테스트 기준으로 전달

4. 소프트웨어 설계 (아키텍처/모듈 설계)

  • 소프트웨어 설계 단계는 요구사항을 실제 구현 가능한 구조로 바꾸는 과정.
  • 정처기에서는 아키텍처 패턴, **모듈 설계 원리(결합도/응집도)**를 자주 물음.

4.1 소프트웨어 아키텍처 개요

  • 시스템의 구성 요소와 관계, 상호작용 방식을 정의한 전체 구조.
  • 목표: 품질 속성(성능, 확장성, 보안, 유지보수성) 확보.
  • 설계 시 고려: 기술 스택, 트래픽 규모, 장애 대응, 운영/배포 방식.

4.2 대표 아키텍처 패턴

패턴설명특징
계층형(Layered)프레젠테이션-비즈니스-데이터 계층으로 분리역할 분리 명확, 유지보수 용이
클라이언트-서버(Client-Server)요청(클라이언트)과 처리(서버) 구조구현 직관적, 중앙집중 관리 가능
MVC모델-뷰-컨트롤러 분리UI/로직 분리로 변경 영향 축소
마이크로서비스(MSA)기능 단위 서비스를 독립 배포확장성/배포 유연성 높음, 운영 복잡도 증가

4.3 모듈 설계 핵심

  • 모듈은 특정 기능을 수행하는 독립 단위.
  • 좋은 모듈 설계 기준:
    • 모듈 내부는 강하게 묶이고(높은 응집도),
    • 모듈 사이는 느슨하게 연결(낮은 결합도) 되어야 함.

4.4 결합도(Coupling) - 낮을수록 좋음

순서(나쁨→좋음)결합도설명
1내용(Content)다른 모듈 내부를 직접 참조
2공통(Common)전역 데이터 공유
3외부(External)외부 형식/장치/프로토콜 공유
4제어(Control)제어 정보(플래그 등) 전달
5스탬프(Stamp)구조체/레코드 단위 전달
6자료(Data)필요한 데이터만 전달(가장 바람직)

4.5 응집도(Cohesion) - 높을수록 좋음

순서(나쁨→좋음)응집도설명
1우연적(Coincidental)관련 없는 기능이 우연히 묶임
2논리적(Logical)유사 성격 기능을 조건으로 선택 수행
3시간적(Temporal)특정 시점에 함께 수행
4절차적(Procedural)순서대로 수행되지만 기능 목적은 약함
5교환적(Communication)같은 입력/출력 데이터 사용
6순차적(Sequential)앞 결과가 뒤 입력으로 사용
7기능적(Functional)하나의 명확한 기능 수행(가장 바람직)

4.6 시험에서 자주 나오는 포인트

  • 결합도는 자료 결합도 쪽이 좋고, 내용 결합도 쪽이 나쁨.
  • 응집도는 기능적 응집도 쪽이 좋고, 우연적 응집도 쪽이 나쁨.
  • 실무 관점 핵심 문장: 낮은 결합도 + 높은 응집도.

5. 화면/UI 설계 및 감성공학 요소

  • 화면 설계는 사용자가 시스템과 상호작용하는 접점을 설계하는 단계.
  • 정처기에서는 UI 설계 원칙, 설계 도구(와이어프레임/목업/프로토타입/스토리보드), 감성공학 개념을 자주 묻는다.

5.1 UI 설계 기본 원칙

원칙설명
직관성누구나 쉽게 이해하고 바로 사용할 수 있어야 함
유효성사용자가 원하는 작업을 정확하게 달성해야 함
학습성처음 쓰는 사용자도 빠르게 익힐 수 있어야 함
유연성다양한 사용자/환경/요구사항을 수용할 수 있어야 함

5.2 UI 설계 도구 한 번에 정리

도구목적특징
와이어프레임(Wireframe)화면 구조/레이아웃 설계색상·디자인보다 배치/흐름 중심
목업(Mockup)실제 화면과 유사한 시각안 공유정적 화면 중심, 빠른 피드백에 유리
프로토타입(Prototype)동작 검증 및 사용성 테스트클릭/이동 등 인터랙션 확인 가능
스토리보드(Storyboard)화면 전개와 정책 문서화화면 설명, 전환 조건, 예외 흐름까지 포함

5.3 UI 설계 프로세스(실무형 흐름)

  • 사용자/업무 분석
  • 화면 구조 설계(정보 구조, 메뉴 구조)
  • 와이어프레임/목업 작성
  • 프로토타입으로 사용성 검증
  • 피드백 반영 후 상세 UI 설계 확정

5.4 사용성(Usability) 체크 포인트

  • 일관성: 버튼 위치, 용어, 색상 규칙 유지
  • 가시성: 현재 상태(로딩, 성공, 실패)를 즉시 인지 가능
  • 오류 예방: 잘못된 입력을 사전에 막는 입력 제약/가이드
  • 오류 복구: 취소/되돌리기/재시도 등 복구 경로 제공
  • 접근성: 명도 대비, 키보드 접근, 대체 텍스트 등 고려

5.5 감성공학(Emotional Engineering) 요소

  • 감성공학은 사용자의 감성·심리 반응을 분석해 제품/화면 설계에 반영하는 방법.
  • 핵심은 단순 기능 만족을 넘어 만족감, 신뢰감, 즐거움을 높이는 것.

감성공학 적용 요소

  • 색채/타이포그래피: 브랜드 이미지와 감정 톤 일치
  • 모션/전환 효과: 과하지 않게 상태 변화를 자연스럽게 전달
  • 마이크로카피(문구): 짧고 친절한 안내 문구로 불안 감소
  • 피드백 디자인: 클릭/완료/오류 상황을 감정적으로 안정되게 안내

시험에서 기억할 포인트

  • 감성공학 = 사용자의 주관적 느낌을 정량/정성으로 반영하는 설계 접근
  • UI 설계 원칙 + 사용성 + 감성 요소는 서로 분리 개념이 아니라 함께 적용됨

6. 데이터베이스/모델링 관련 기초

  • 소프트웨어 설계에서는 데이터 구조를 정확히 정의하는 것이 핵심.
  • 정처기에서는 ERD 구성 요소, 개념/논리/물리 모델링 차이, DBMS 기본 개념을 구분하는 문제가 자주 출제됨.

6.1 ERD(Entity Relationship Diagram) 기초

  • ERD는 데이터베이스의 구조를 **개체(Entity)·속성(Attribute)·관계(Relationship)**로 표현한 다이어그램.
  • 목적: 시스템이 다루는 데이터와 데이터 간 관계를 시각적으로 명확히 정의.

ERD 핵심 요소

  • 개체(Entity): 관리 대상(예: 회원, 주문, 상품)
  • 속성(Attribute): 개체의 성질(예: 회원명, 이메일)
  • 관계(Relationship): 개체 간 연관(예: 회원-주문)
  • 식별자(Identifier): 개체를 유일하게 구분하는 속성(PK 후보)

관계 차수(Cardinality)

  • 1:1: 한 개체가 다른 한 개체와만 관계
  • 1:N: 한 개체가 여러 개체와 관계
  • N:M: 여러 개체끼리 다대다 관계(실제 구현 시 보통 교차 테이블로 분해)

6.2 데이터 모델링 단계

단계관점산출물핵심
개념 모델링업무 중심(현실 세계)개념 ERD업무 용어/규칙 기반으로 핵심 개체 도출
논리 모델링데이터 구조 중심(DBMS 독립)논리 스키마, 정규화 모델속성·관계·무결성 제약을 체계화
물리 모델링구현 중심(DBMS 종속)물리 스키마, 인덱스/테이블 정의성능·저장 구조·접근 경로 반영

한 줄 비교

  • 개념: "무엇을 관리할까"
  • 논리: "어떻게 구조화할까"
  • 물리: "DBMS에서 어떻게 구현할까"

6.3 정규화(Normalization) 기초

  • 데이터 중복을 줄이고 이상(삽입/수정/삭제 이상)을 방지하기 위한 과정.
  • 일반적으로 1NF, 2NF, 3NF 수준까지 개념 문제가 자주 출제됨.

핵심 포인트

  • 1NF: 원자값(컬럼 하나에 값 하나)
  • 2NF: 부분 함수 종속 제거(복합키 일부에만 종속 제거)
  • 3NF: 이행 함수 종속 제거(키가 아닌 속성이 다른 비키 속성에 종속 X)

6.4 DBMS 기본 개념

  • DBMS(Database Management System)는 데이터베이스를 생성·조회·수정·관리하는 소프트웨어.
  • 주요 목적: 데이터 독립성, 무결성, 보안성, 동시성, 복구 기능 제공.

기본 용어 정리

  • 스키마(Schema): DB 구조에 대한 정의
  • 인스턴스(Instance): 특정 시점의 실제 데이터 집합
  • DDL/DML/DCL
    • DDL: 정의(CREATE, ALTER, DROP)
    • DML: 조작(SELECT, INSERT, UPDATE, DELETE)
    • DCL: 제어(GRANT, REVOKE)

6.5 트랜잭션과 무결성

  • 트랜잭션(Transaction): 데이터 처리의 논리적 작업 단위.
  • 핵심 성질(ACID):
    • 원자성(Atomicity): 전부 수행 또는 전부 취소
    • 일관성(Consistency): 실행 전후 데이터 규칙 유지
    • 고립성(Isolation): 동시 실행 시 서로 간섭 최소화
    • 지속성(Durability): 완료 결과는 장애 후에도 보존

무결성 제약

  • 개체 무결성: 기본키는 NULL 불가, 중복 불가
  • 참조 무결성: 외래키는 참조 가능한 값이어야 함
  • 도메인 무결성: 컬럼 타입/범위/형식 준수

7. 시험 포인트(암기 체크)

  • 생명주기 모형 문제는 모형명-특징-장단점을 세트로 암기.
  • 나선형 = 위험 분석 중심, 프로토타입 = 요구사항 구체화 연결해서 기억.
  • 방법론은 전통 vs 애자일 차이를 표 형태로 비교 암기.
  • 애자일 프레임워크는 스크럼(역할/이벤트), XP(핵심 가치/실천 기법) 중심으로 정리.
  • 요구사항 공학은 분석(정제/모델링) vs 명세(SRS 문서화) 차이를 구분해 암기.
  • 설계 파트는 아키텍처 패턴 특징, 결합도/응집도 순서를 묶어서 암기.
  • 화면 설계는 와이어프레임→목업→프로토타입→스토리보드 목적 차이를 구분해 암기.
  • 감성공학은 기능 중심 설계와 달리 사용자 감정/경험 반영이 핵심.
  • DB 파트는 ERD 요소, 모델링 3단계, ACID, 무결성 제약을 묶어서 암기.