1과목 : 소프트웨어 설계
- 요구사항 분석 및 설계 방법론
- 시스템 모델링, 설계 패턴, 소프트웨어 생명주기
정보처리기사 필기 준비, 요구사항 확인부터 데이터 입출력 구현까지
정보처리기사 필기 시험의 첫 번째 과목인 "소프트웨어 설계 – 요구사항 확인"은 시험의 중요한 출발점이자,
실무에서도 반드시 필요한 내용입니다.
강의는 아래 커리큘럼을 들었고,
이 내용들을 토대로 핵심 개념부터 시험에서 응용할 팁까지 정리해 보겠습니다.
1. 요구사항 확인이란?
소프트웨어 설계의 첫 단계로, 프로젝트의 방향성과 목표를 명확히 설정하는 과정입니다. 간단히 말해, **"우리가 무엇을 만들어야 하는지"**를 정의하는 단계라고 볼 수 있어요.
요구사항 분석의 주요 활동
- 현행 시스템 분석
기존에 운영 중인 시스템을 파악하고 성능, 안정성, 확장성 등을 평가합니다.- 성능: 작업 속도와 처리량 확인
- 가용성: 장애 발생 확률 및 시스템 안정성 분석
- 호환성: 다른 시스템과의 연동 가능성 점검
- 운영체제(OS), DBMS, 네트워크 등의 구성 요소도 함께 평가
- 사용자의 요구 추출
- 인터뷰, 설문조사, 워크숍 등 다양한 방법을 활용해 사용자 니즈를 구체화합니다.
- 요구사항 명세화
- 기능적 요구사항: 시스템이 제공해야 할 기능
- 예: 메신저 앱에서 "@멘션 기능"을 추가
- 비기능적 요구사항: 성능, 보안, 품질 등 시스템의 동작 방식
- 예: 멘션 알림이 0.2초 이내에 전달
- 기능적 요구사항: 시스템이 제공해야 할 기능
TIP: 시험에서는 기능적/비기능적 요구사항의 차이를 묻거나, 사례를 제시하고 분류를 요구하는 문제가 자주 나옵니다.
2. 요구사항 분석 도구와 기법
요구사항을 명확히 분석하고 표현하기 위해 다양한 도구와 기법이 사용됩니다.
(1) 데이터 흐름도(DFD: Data Flow Diagram)
데이터 흐름도는 데이터가 시스템을 통해 어떻게 이동하고 변형되는지를 시각적으로 표현한 도구입니다.
- 구성 요소:
- 프로세스(Process): 데이터를 처리하는 기능 (원)
- 데이터 저장소(Data Store): 데이터가 저장되는 장소 (직사각형)
- 단말(Terminator): 시작과 끝 역할 (사각형)
- 데이터 흐름(Data Flow): 프로세스 간 데이터 이동 (화살표)
TIP: 시험에서는 데이터 흐름도 구성 요소의 역할과 시각적 표현 문제가 출제됩니다. 예제 문제를 통해 프로세스를 정의하고 데이터 흐름을 정확히 이해하세요.
(2) 자료 사전(Data Dictionary)
시스템에서 사용하는 모든 데이터의 정의, 속성, 제약 조건을 정리한 문서입니다.
- 기호 설명:
- = : 정의
- { } : 반복
- [ | ] : 선택
예시: 직원 리스트 데이터
TIP: 자료 사전은 데이터를 체계적으로 관리하는 데 중요하며, 시험에서도 문서화와 관련된 문제가 출제됩니다.
(3) UML(Unified Modeling Language)
객체지향 설계에서 요구사항을 시각적으로 표현하기 위한 표준화된 모델링 언어입니다.
- 구성 요소:
- 사물(Things): 객체, 인터페이스 등
- 관계(Relationships): 연관, 의존, 포함, 일반화
- 다이어그램(Diagrams): 클래스, 유스케이스, 시퀀스 등
TIP: 시험에서는 UML 다이어그램의 종류와 역할을 묻는 문제가 종종 출제됩니다.
3. 애자일 방법론과 요구사항 관리
요구사항 관리에서 전통적 방법론과 함께 애자일 방법론이 강조됩니다.
- 애자일의 특징:
- 고객 피드백을 중심으로 요구사항을 유연하게 변경
- 작동하는 소프트웨어에 가치를 둠
- 팀 간 협업과 소통 중시
스크럼(Scrum) 프레임워크
- 스프린트(Sprint): 짧은 반복 작업 주기
- 데일리 스크럼: 매일 짧은 미팅으로 진행 상황 점검
- 제품 백로그: 구현해야 할 요구사항 목록
1과목 강의 수강을 마무리 하며!
"소프트웨어 설계 – 요구사항 확인" 부분은 시험뿐만 아니라 실무에서도 가장 중요한 단계라고 들었습니다.
이 과정을 제대로 이해하면 개발 방향을 명확히 설정할 수 있다고 해요!
저도 공부하면서 느낀 건데,
단순 암기보다는 "왜 이렇게 해야 하는지"를 생각하며 공부하면 훨씬 기억에 오래 남더라고요.
이번 글이 시험 준비에 도움이 되었으면 좋겠어요! 😊
다음에는 2과목인 "소프트웨어 개발"을 다뤄볼게요! 🙌