정보처리기사

[TIL/정보처리기사] 2023/11/06

1과목: 소프트웨어 설계 🔴 1장: 요구사항 확인 🟠 1장-1: 소프트웨어 생명 주기 🟡 1장-1-1: 소프트웨어 생명 주기(Software Life Cycle) 🟢 최근 10회 출제 X 1장-1-2: 폭포수 모형(Waterfall Model) 🟢

2023년 11월 6일6min read

1과목: 소프트웨어 설계 🔴

1장: 요구사항 확인 🟠

1장-1: 소프트웨어 생명 주기 🟡

#### 1장-1-1: 소프트웨어 생명 주기(Software Life Cycle) 🟢

최근 10회 출제 X

#### 1장-1-2: 폭포수 모형(Waterfall Model) 🟢

a) 소프트웨어 공학에서 가장 오래되고 폭넓게 사용된 전통적인 소프트웨어 생명 주기 모형, 고전적 생명 주기 모형이라고도 한다.

b) 소프트웨어 개발 과정의 한 단계가 끝나야만 다음 단계로 넘어갈 수 있는 선형 순차적 모형이다.

c) 타당성 검토 -> 계획 -> 요구분석 -> 설계 -> 구현(코딩) -> 시험(검사) -> 유지보수

#### 1장-1-3: 프로토타입 모형(Prototype Model) 🟢

a) 사용자의 요구사항을 정확히 파악하기 위해(=시스템 요구사항이 불분명할 때) 실제 개발될 소프트웨어에 대한 견본품을 만들어 최종 결과물을 예측하는 모형이다.

b) 시제품은 의뢰자나 개발자 모두에게 공동의 참조 모델이 된다.

c) 새로운 요구사항이 도출될 때마다 이를 반영한 프로토타입을 새롭게 만들면서 소프트웨어를 구현한다.

d) 단기간 제작을 목적으로 하다 보니 비효율적인 언어나 알고리즘이 사용될 수 있다.

#### 1장-1-4: 나선형 모형(Spiral Model) 🟢

a) 보헴(Boehm)이 제안한 모델

b) 여러 번의 소프트웨어 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 개발하는 것, 점진적 모형이라고도 한다.

c) 소프트웨어를 개발하면서 발생할 수 있는 위험을 관리하고 최소화하는 것이 목적인 모형이다.

d) 핵심 기술에 문제가 있거나 사용자의 요구사항이 이해하기 어려운 경우에 적합한 모델이다.

e) 점진적으로 개발 과정이 반복되기에, 누락되거나 추가된 요규사항을 첨가할 수 있고, 정밀하며, 유지보수 과정이 필요 없다.

f) 계획 수립 -> 위험 분석 -> 개발 및 검증 -> 고객 평가

#### 1장-1-5: 애자일 모형(Agile Model) 🟢

a) 애자일 모형을 기반으로 하는 소프트웨어 개발 모형 스크럼, XP, 칸반, Lean, 크리스탈, ASD, 기능 중심 개발(모듈 중심 개발 X), DSDM, DAD

b) 애자일 개발 4가지 핵심 가치 1. 프로세스와 도구보다는 개인과 상호작용에 더 가치를 둔다. 2. 방대한 문서보다는 실행되는 SW에 더 가치를 둔다. 3. 계약 협상보다는 고객과 협업에 더 가치를 둔다. 4. 계획을 따르기 보다는 변화에 반응하는 것에 더 가치를 둔다.

1장-2: 스크럼(Scrum) 기법 🟡

#### 1장-2-1: 스크럼의 개요 🟢

a) 스크럼 팀은 제품 책임자, 스크럼 마스터, 개발팀으로 구성된다.

b) 스크럼 마스터는 스크럼 팀이 스크럼을 잘 수행할 수 있도록 객관적인 시각에서 조언을 해주는 가이드 역할을 수행한다. 팀원들을 통제하는 것이 목표가 아니다.

#### 1장-2-2: 스크럼 개발 프로세스 🟢

1. 제품 백로그 : 제품 개발에 필요한 모든 요구사항을 우선순위에 따라 나열한 목록 2. 스프린트 계획 회의 3. 스프린트 : 실제 개발 작업을 진행하는 과정, 보통 2~4주(1~4주도 맞음) 정도의 기간 내에서 진행한다. 4. 일일(월별로 진행한다 X) 스크럼 회의 5. 스프린트 검토 회의 6. 스프린트 회고 : 개선할 점은 없는 지 등을 확인하고 기록한다.

1장-3: XP(eXtreme Programming) 기법 🟡

#### 1장-3-1: XP(eXtreme Programming) 🟢

a) 수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 방법이다.

b) 짧고 반복적인 개발 주기, 단순한 설계, 고객의 적극적인 참여를 통해 소프트웨어를 빠르게 개발하는 것을 목적으로 한다.

c) 비교적 소규모 인원의 개발 프로젝트에 효과적이다.

d) XP의 5가지 핵심 가치 의사소통, 단순성, 용기, 존중, 피드백

#### 1장-3-2: XP 개발 프로세스 🟢

a) XP의 주요 실천 방법 Pair Programming(짝 프로그래밍), Collective Ownership(공동 코드 소유), Test-Driven Development(테스트 주도 개발), Whole Team(전체팀), Continuous Integration(계속적인 통합), Design Improvement(디자인 개선) 또는 Refactoring(리팩토링), Small Releases(소규모 릴리즈)

1장-4: 현행 시스템 파악 🟡

#### 1장-4-1: 현행 시스템 파악 절차 🟢 1단계: 시스템 구성 파악, 시스템 기능 파악, 시스템 인터페이스 파악 2단계: 아키텍처 구성 파악, 소프트웨어 구성 파악 3단계: 하드웨어 구성 파악, 네트워크 구성 파악 (인적 자원 분석 또는 파악 X)

#### 1장-4-2: 시스템 구성 파악 🟢

a) 현행 시스템의 구성은 조직의 주요 업무를 담당하는 기간 업무와 이를 지원하는 업무로 구분하여 기술한다.

#### 1장-4-3: 시스템 기능 파악 🟢

최근 10회 출제 X

#### 1장-4-4: 시스템 인터페이스 파악 🟢

a) 현행 시스템의 인터페이스에는 단위 업무 시스템 간에 주고받는 데이터의 종류, 형식, 프로토콜, 연계 유형, 주기 등을 명시한다.

#### 1장-4-5: 아키텍처 구성 파악 🟢

a) 현행 시스템의 아키텍처 구성은 기간 업무 수행에 어떠한 기술 요소들이 사용되는 지 최상위 수준에서 계층별로 표현한 아키텍처 구성도로 작성한다.

#### 1장-4-6: 소프트웨어 구성 파악 🟢

a) 시스템 구축비용 면에서 소프트웨어 비용이 적지 않은 비중을 차지하므로, 상용 소프트웨어의 경우 라이선스 적용 방식의 기준과 보유한 라이선스 파악이 중요하다.

#### 1장-4-7: 하드웨어 구성 파악 🟢

최근 10회 출제 X

#### 1장-4-8: 네트워크 구성 파악 🟢

a) 네트워크 구성도를 통해 서버들의 물리적인 위치 관계를 파악할 수 있고 보안 취약성을 분석하여 적절한 대응을 할 수 있다.

1장-5: 개발 기술 환경 파악 🟡

#### 1장-5-1: 개발 기술 환경의 정의 🟢

최근 10회 출제 X

#### 1장-5-2: 운영체제(OS, Operating System) 🟢

a) 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고 효율적으로 사용하도록 환경을 제공하는 소프트웨어(하드웨어 X)이다.

b) 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해 준다.

c) Windows, UNIX, Linux, Mac OS, iOS, Android 등이 있다.

#### 1장-5-3: 운영체제 관련 요구사항 식별 시 고려사항 🟢

최근 10회 출제 X

#### 1장-5-4: 데이터베이스 관리 시스템(DBMS) 🟢

a) 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해 주고, 데이터베이스를 관리해 주는 소프트웨어이다.

b) DBMS의 종류 Oracle, IBM DB2, Microsoft SQL Server, MySQL, SQLite, MongoDB, Redis 등이 있다.

#### 1장-5-5: DBMS 관련 요구사항 식별 시 고려사항 🟢

a) 고려사항 가용성, 성능, 기술 지원, 상호 호환성, 구축 비용 (네트워크 구성도 X)

b) 가용성 내용 1. 시스템의 장시간 운영으로 인해 발생할 수 있는 운영체제 고유의 장애 발생 가능성 2. DBMS의 결함 등으로 인한 패치 설치를 위한 재가동 3. 백업이나 복구의 편의성 4. DBMS 이중화 및 복제 지원

#### 1장-5-6: 웹 애플리케이션 서버(WAS) 🟢

a) 정적인 콘텐츠 처리를 하는 웹 서버와 달리 사용자의 요구에 따라 변하는 동적인 콘텐츠를 처리하기 위해 사용되는 미들웨어이다.

b) 종류 Tomcat, GlassFish, JBoss, Jetty, JEUS, Resin, WebLogic, WebSphere 등이 있다. (JVM X)

#### 1장-5-7: WAS 관련 요구사항 식별 시 고려사항 🟢

최근 10회 출제 X

#### 1장-5-8: 오픈소스 사용에 따른 고려사항 🟢

최근 10회 출제 X

1장-6: 요구사항 정의 🟡

#### 1장-6-1: 요구사항의 개념 및 특징 🟢

최근 10회 출제 X

#### 1장-6-2: 요구사항의 유형 🟢

a) 기능 요구사항 : 시스템이 무엇을 하는지, 어떤 기능을 하는지에 대한 사항(ex.금융시스템(조회, 인출, 입금, 송금))

b) 비기능 요구사항 : 성능 요구사항, 처리 속도 및 시간(ex.모든 화면이 3초 이내에...) : 보안 요구사항, 품질 요구사항 등이 포함된다.

c) 사용자 요구사항

d) 시스템 요구사항

#### 1장-6-3: 요구사항 개발 프로세스 🟢

a) 도출(Elicitation) -> 분석(Analysis) -> 명세(Specification) -> 확인(Validation)

#### 1장-6-4: 요구사항 도출(수집) 🟢

a) 요구사항을 도출하는 주요 기법 청취와 인터뷰, 설문, 브레인스토밍, 워크샵, 프로토타이핑(라피도 프로토타이핑 포함), 유스케이스 등이 있다. (사용자 교육 X)

#### 1장-6-5: 요구사항 분석 🟢

a) 개발 대상에 대한 사용자의 요구사항 중 명확하지 않거나 모호하여 이해되지 않는 부분을 발견하고 이를 걸러내기 위한 과정이다. (열거와 구조화가 쉽다 X)

#### 1장-6-6: 요구사항 명세 🟢

최근 10회 출제 X

#### 1장-6-7: 요구사항 확인(검증) 🟢

a) 요구사항이 실제 요구를 반영하는지, 서로 상충되는 요구사항은 없는지 등을 점검한다.

b) 개발이 완료된 후 문제가 발견되면 재작업 비용이 발생할 수 있으므로 요구사항 검증은 매우 중요하다.

c) 요구사항 검증 과정을 통해 모든 문제를 확인할 수 있는 것은 아니다.

d) 형상관리는 소프트웨어 시스템이 사용되는 동안 발견되는 오류를 정리하는 단계로서, 요구사항 분석의 내용에 해당하지 않는다.