정보처리기사 실기 1-1장

소프트웨어 공학 (SE : Software Engineering) b

소프트웨어 공학은 소프트웨어의 위기를 극복하기위한 방안으로 연구된 학문이다. 여러가지 방법, 도구, 관리기법 을 써서 품질과 생산성 향상을 도모한다.

소프트웨어 공학의 기본 원칙

  1. 현대적 프로그래밍 기술계속적으로 적용한다.
  2. 지속적으로 검증한다.
  3. 개발 관련 사항 및 결과를 명확히 기록하여 유지한다.

소프트웨어 생명 주기 (Software Life Cycle) c

소프트웨어 생명주기란 소프트웨어를 개발하기 위한 설계,운용,유지보수 등의 과정을 각 단계별로 나눈것 나선형 모형, 폭포수 모형, 프로토타입 모형, 애자일 모형 등.

나선형 모델 (Spiral Model) b

나선따라 돌아가며 점진적으로 완벽한 소프트웨어를 만든다. 보햄(Boehm)이 제안함.

4가지 주요활동

Spiral Model

고객평가에서 수정사항등이 발생하면 다시 계획수립부터 반복

폭포수 모델 (Waterfall Model) b

가장 오래된 생명주기 모델. 폭포수가 한번 떨어지면 다시 올라가지 못하는 것 처럼, 한번 단계를 넘거가뿔면 이전 단계로 갈 수 없음. 철저하게 검토하고. 승인과정을 거쳐서 완벽하게 만든 다음 단계를 진행.

프로토타입 모형 (Prototype Model) c

고객의 요구사항을 알기위해서 견본품을 미리 만들어보는것.

애자일 모형 (Agile Model) a

빠르고 낭비없는 고객과의 소통 고객의 요구사항 변화에 유연하게 대응. 스크럼(Scrum) , 익스트림 프로그래밍 (XP, eXtreme Programming), 칸반(Kanban), Lean, 기능중심개발 (FDD:Features Driven Development)

에자일의 핵심가치 a

스크럼 (Scrum) c

하나의 팀을 구성하여 개발 효율을 높임

스크럼의 구성원

  1. 제품책임자 (PO : Product Owner)
    • 요구사항이 담긴 Backlog를 작성
    • 제품에 대한 이해도 높고. 요구사항 책임지고. 의사 결정할 사람.
  2. 스크럼마스터 (SM : Scrum Master)
    • 스크럼 팀이 잘 수행할 수 있게 가이드역할.
  3. 개발팀 (DT : Development Team)
    • 스크럼 팀원

스크럼 개발 프로세스 c

스트린트 계획 회의스프린트일일 스크럼 회의스프린트 검토 회의스프린트 회고

프로세스 내용
스프린트 계획 회의 (Sprint Planning Metting) 제품 백로그 중 이번 스프린트에서 수행할 작업을 대상으로 단기 일정을 수립하는 회의
스프린트 (Sprint) 실제 개발 작업을 진행하는 과정으로, 보통 2~4주 정도의 기간 내에서 진행함
스프린트 검토 회의 (Sprint Review) 부분 또는 전체 완성 제품이 요구사항에 잘 부합하는지 테스팅 하는 회의
스프린트 회고 (Sprint Retrospective) 정해놓은 규칙 준수 여부 및 개선 할 점을 확인하고 기록하는 것

익스트림 프로그래밍(XP : eXtreme Programming) b

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

를 통해 소프트웨어를 빠르게 개발하는 것이 목적.

XP의 주요 실천 방법(Practice) A

  1. Pair Programming(짝 프로그래밍)
    • 다른사람과 함께 개발 진행. 책임도 공동으로 나눔.
  2. Collective Onership(공통 코드 소유)
    • 개발 코드에 대한 권한,책임을 공동으로 소유
  3. Test-Driven Development(테스트 주도 개발)
    • 개발자는 코딩전에 테스트 케이스를 먼저 작성해서 개발 사항을 정확히 파악
    • 테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구를 사용
  4. Whole Team(전체 팀)
    • 개발에 참여하는 모든 인원(고객 포함)은 각자 역할이 있고, 그 역할에 책임을 가져야 한다.
  5. Continous Intergration(계속적인 통합)
    • 모듈단위로 개발된 코드는 작업 마무리 될 때마다 지속적으로 통합된다.
  6. Refactoring(리팩토링)
    • 개발된 프로그램의 기능 변경없이 내부코드를 재구성
    • 목적 : 다른 개발자가 코드를 쉽게 이해하고. 유지보수가 용이하게 만들기 위함
  7. Small Release(소규모 릴리즈)
    • 릴리즈 기간을 짧게 반복함으로서 고객의 요구에 신속히 대응할 수 있다.

데이터베이스 관리 시스템 (DBMS : Database Management System b

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

DBMS 관련 요구사항 식별시 고려해야 할 사항

웹 애플리케이션 서버 (WAS : Web Application Server) c

사용자의 요구에 따라 변화하는 동적인 콘텐츠를 처리하기 위해 사용하는 미들웨어

요구사항 식별시 고려사항

오픈소스 (Open Source) c

아무나 제한없이 사용할 수 있도록 소스코드가 공개된 소프트웨어

요구사항 식별시 고려사항은 다음이유

요구사항 c

기능 요구사항(Functional Requiremnts) a

  1. 시스템이 무었을 하는지 어떤 기능을 하는지
  2. 시스템의 입력이나 출력으로 무었이 포함되어야 하는지
  3. 시스템이 어떤 데이터를 저장하거나 연산을 수행하는지
  4. 시스템이 반드시 수행해야 하는 기능
  5. 사용자가 시스템을 통해 제공받기를 원하는 기능

비기능 요구사항(Non-Functional Requiremnts) a

품질이나 제약사항과 관련된 요구사항. 시스템의 장비구성, 성능, 인터페이스, 테스트, 보안 등의 요구사항.

  1. 품질, 제약사항과 관련된 요구사항
  2. 시스템 장비 구성 요구사항
  3. 성능 요구사항
  4. 인터페이스 요구사항
  5. 데이터를 구축하기 위해 필요한 요구사항
  6. 테스트 요구사항
  7. 보안 요구사항
  8. 품질 요구사항 가용성, 정합성, 상호호환성, 대응성, 이식성, 확장성, 보안성 등
  9. 제약사항
  10. 프로젝트 관리 요구사항
  11. 프로젝트 자원 요구사항

요구사항 개발 프로세스 b

  1. 도출 (Elicitation)
  2. 분석 (Analysis)
  3. 명세 (Specification)
  4. 확인 (Validation)

요구사항 명세 c

요구사항 명세 기법 b

구분 정형 명세 기법 비정형 명세 기법
기법 수학적 원리기반, 모델 기반 상태/기능/객체 중심
작성방법 수학적 기호, 정형화된 표기법 일반명사,동사 등 자연어 기반 서술 또는 아이어그램
특징
  • 요구사항을 정확하고 간결하게 표현
  • 요구사항에 대한 결과가 작성자에 상관없이 일관성이 있으므로 완전성 검증 가능
  • 표기업이 어려워 사용자가 이해하기 어려움
  • 자연어 사용 : 요구사항에 대한 결과가 작성자에 따라 다를 수 있음 : 일관성 떨어짐. 해석이 달라질 수 있음
  • 내용 이해가 쉬워 의사소통 용이
종류 VDM, Z, Petri-net, CSP FSM, Decision Table, ER모델링, State Chart(SADT)

요구사항 분석 (Requiremnts Analysis) b

자료 흐름도 (DFD : Data Flow Diagram) b

자료 흐름도의 구성요소 a

기호 의미
프로세스 (Process) 자료를 변환시키는 시스템의 한 부분(처리과정)을 나타냄. 처리, 기능, 변환, 버블이라고도 함
자료 흐름 (Data Flow) 자료의 이동(흐름)이나 연관관계
자료 저장소 (Data Store) 자료저장소 (파일, 데이터베이스)
단말 (Terminator) 시스템과 교신하는 외부개체. 입력 데이터 만들어지고 출력데이터 받음.

자료 사전 (DD : Data Dictionary) a

자료 흐름도에 있는 자료를 더 자세히 정의하고 기록한것

자료 사전에서 사용되는 표기기호

기호 의미
= 자료의 정의 : ~로 구성되어 있다 (is composed of)
+ 자료의 연결 : 그리고 (and)
() 자료의 생략 : 생략 가능한 자료 (Optional)
[] 자료의 선택 : 또는 (or)
{} 자료의 반복 : Iteration of
** 자료의 설명 : 주석 (Comment)

요구사항 분석용 CASE (자동화 도구) c

요구사항을 자동으로 분석하고, 요구사항 분석명세서를 기술하도록 개발된 도구

SADT b

HIPO (Hierarch Input Process Output) a

UML (Unified Modeling Language) a

관계 (Relationship) c

사물과 사물 사이의 연관성을 표현

관계의 종류

연관 관계 (Association) c

사람1⎯⎯⎯⎯1⎯> 사람은 집을 소유한다. 사람은 집에 대하 알고 있지만 집은 자신의 소유자를 모른다. 사람 쪽의 다중도 1이므로 집은 한사람의 집주인만 가질 수 있다. 집 쪽의 다중도가 1이므로 사람은 집을 하나만 가질 수 있다.

집합 관계 (Aggregation) a

컴퓨터◇⎯⎯⎯⎯프린터프린터는 컴퓨터에 연결 가능, 다른 컴퓨터 연결 가능.

포함 관계 (Composition) c

문(Door)◆⎯⎯⎯⎯키(Key)문을 열 수 있는 키는 하나. 해당키로 다른 문 열수 없다. 문이 없어지면 키도 불필요.

일반화 관계 (Generalization) a

커피 ◁⎯⎯에스프레소
◁⎯⎯⎯⎯⎯⎯⎯⎯아메리카노

의존관계 (Dependency) a

등급------->할인율 등급이 높으면 할인율 적용하고 낮으면 적용하지 않는다.

실체화 관계 a

날 수 있다 ◁--------
◁----------------비행기

다이어그램 (Diagram) c

사물과 관계를 도형으로 표현한 것

구조적 다이어그램의 종류 b

행위 다이어그램의 종류 b

스테레오 타입 b

예상문제

  1. 소프트웨어 개발 방법론 중 나선형모형(Spiral Model)에 대해 간략히 서술하시오
    • 여러번의 개발 과정을 거쳐 점진적으로 완벽한 최종 소프트웨어를 만드는 모형이다.
  2. 다음이 설명하는 소프트웨어 개발과 관련된 용어를 쓰시오
    • 소프트웨어 개발 방법론의 바탕이 되는것으로, 소프트웨어를 개발하기 위한 설계, 운용, 유지보수 등의 과정을 각 단계별로 나눈 것이다.
    • 소프트웨어 개발 단계와 각 단계와 각 단계별 주요활동, 그리고 활동의 결과에 대한 산출물로 표현한다.
    • 이것의 대표적인 모형에는 폭포수 모형, 프로토타입 모형, 나선형 모형, 애자일 모형 등이 있다.
    • 소프트웨어 생명주기(Software Life Cycle)
  3. 소프트웨어 생명주기 모형에 대한 다음 설명에서 괄호에 들어갈 알맞은 용어를 쓰시오
    • ( )모형은 고객의 요구사항 변화에 유연하게 대응할 수 있도록 일정한 주기를 반복하면서 개발과정을 진행한다.
    • 어느 특정 개발 방법론이 아니라 좋은 것을 빠르고 낭비 없게 만들기 위해 고객과의 소통에 초점을 맞춘 방법론을 통칭한다.
    • 각 개발주기에서는 고객이 요구사항에 우선순위를 부여하여 개발 작업을 진행한다.
    • 소규모 프로젝트, 고도로 숙달된 개발자, 급변하는 요구사항에 적합하다.
    • 애자일(Agile)
  4. 개발 방법론과 관련된 다음 설명에서 괄호에 공통으로 들어갈 용어를 쓰시오

    ( )은 애자일 모형을 기반으로 하느 팀 중심의 소프트웨어 개발 모형으로, 럭비에서 반칙으로 경기가 중단된 경우 양 팀의 선수들이 럭비공을 가운데 두고 상태팀을 밀치기 위해 서로 대치해 있느 팀 대형인 ( ) 에서 유래하였다. ( )은 10명 이하의 팀으로 구성되어 백로그(Backlog)를 기반으로 개발을 진행하며 스프린트(Sprint)라는 실제 개발 과저을 2~4주 기간바다 반복한다.

    • 스크럼 (Scrum)
  5. 애자일 기반의 개발 방법론과 관련하여 다음 설명에 해당하는 모형이 무었인지 쓰시오
    • 수시로 발생하는 고객의 요구사항에 유연하게 대응하기 위해 고객의 참여와 개발 과정의 반복을 극대화하여 개발 생산성을 향상시키는 모형이다.
    • 짧고 반복적인 개발주기, 단순한 설계, 고객의 적극적인 참여를 통해 소프트웨어를 빠르게 개발하는 것을 목적으로 한다.
    • 릴리즈 테스트마다 고객을 직접 참여시킴으로써 요구한 기능이 제대로 작동하는지 고객이 직접 확인할 수 있다.
    • 의사소통(Communication), 단순성(Simplicity), 용기(Courage), 존중(Respect), 피드백(Feedback)을 핵심가치로 삼는다.
    • 익스트림 프로그래밍 (XP : eXtreme Programming)
  6. 다음은 XP(eXtreme Programming) 개발 방법론의 주요 실천방법(PracTice)에 대한 설명이다. 괄호(1,2)에 들어갈 가장 적합한 실천방법을 쓰시오.
    실천방법 내용
    ( 1 ) 다른 사람과 함께 프로그래밍을 수행함으로써 개발에 대한 책임을 공동으로 나눠 갖는 환경을 조성한다.
    Test-Driven Development
    • 개발자가 실제 코드를 작성하기 전에 테스트 케이스를 먼저 작성하므로 자신이 무엇을 해야 할 지를 정확히 파악한다.
    • 테스트가 지속적으로 진행될 수 있도록 자동화된 테스팅 도구(구조, 프레임워크)를 사용한다.
    ( 2 ) 개발에 참여하는 모든 구성원(고객 포함)드은 각자 자신의 역할이 있고 그 역할에 대한 책임을 가져야 한다.
    Continuous Interation(계속적인 통합) 모듈 단위로 나눠서 개발된 코드들은 하나의 작업이 마무리될 때마다 지속적으로 통합한다.
    Refactoring(리팩토링) 프로그램 기능의 변경 없이 단순화,유연성 강화 등을 통해 시스템을 재구성한다.
    Small Release(소규모 릴리즈) 릴리즈 기간을 짧게 반복함으로써 고객의 요구변화에 신속히 대응할 수 있다.
    • 1: Pair Programming (짝 프로그래밍)
    • 2: Whole Team(전체 팀)
  7. 다음에 제시된 요구사항을 기능 요구사항과 비기능 요구사항으로 구분하여 기호(ㄱ~ㄹ)로 쓰시오

    ㄱ : 항공편, 탑승객, 예약을 입력하는 방법을 결정해야 한다.

    ㄴ : 티켓과 리포트에 어떤 정보를 표시할지 결정해야 한다.

    ㄷ : 여행사와 고객이 데이터베이스에 접근할 떄 어떤 정보를 얻을 수 있는지 결정해야 한다.

    ㄹ : 자주 탑승하는 고객으 서비스하기 위해 시스템을 확장할 수 있도록 설계해야 한다.

    • 1 기능 요구사항 : ㄱ,ㄴ,ㄷ
    • 2 비기능 요구사항 : ㄹ
  8. 다음은 요구사항 명세 기법에 대한 설명이다. 괄호(1,2)에 들어갈 알맞은 기법을 쓰시오.

    요구사항 명세기법은 (1)기법과 (2)기법으로 구분된다.

    구분 (1)기법 (2)기법
    기법 수학적 원리 기반, 모델 기반 상태/기능/객체 중심
    작성법 수학적 기호, 정형화된 표기법 일반 명사, 동사 등의 자연어를 기반으로 서숳 또는 다이어그램으로 작성
    특징
    • 요구사항을 정확하고 간결하게 표현할 수 있음
    • 요구사항에 대한 결과가 작성자에 관계없이 일관성이 있으므로 완전성 검증이 가능함
    • 표기법이 어려워 사용자가 이해하기 어려움
    • 자연어의 사용으로 인해 일관성이 떨어지고, 해석이 달라질 수 있음
    • 내용의 이해가 쉬워 의사소통이 용이함
    • 1 : 정형 명세
    • 2 : 비정형 명세
  9. 요구사항 분석 기법에 대한 다음 설명에서 괄호(1,2)에 들어갈 알맞은 명칭을 쓰시오

    요구사항 분석에서 자료의 흐름 및 변환 과정과 기능을 도형 중심으로 기술하는 방법을 자료흐름도라고 한다. 자료 흐름도에서 사용하는 네가지 기본 기호는 다음과 같다.

    프로세스(Process)
    • 자료를 변환시키는 시스템의 한 부분(처리과정)을 나타내며 처리, 기능, 변환, 버블이라고 한다.
    • 원이나 둥근 사각형으로 표시하고 그 안에 프로세스 이름을 기입한다.
    (1)
    • 자료의 이동(흐름)이나 연관관계를 나타낸다.
    • 화살표 위에 자료의 이름을 기입한다.
    (2)
    • 시스템에서의 파일, 데이터베이스 등을 나타낸다.
    • 도형 안에 저장소의 이름을 기입한다.
    단말(Terminator)
    • 시스템과 교신하는 외부 개체로, 입력 데이터가 만들어지고 출력 데이터를 받는다.
    • 도형 안에 이름을 기입한다.
    • 1 : 자료흐름 (Data Flow)
    • 2 : 자료 저장소 (Data Store)
  10. 요구사항 분석용 CASE에 대해 간략히 서술하시오
    • 요구사항을 자동으로 분석하고 분석명세서를 기술하도록 개발된 도구
  11. 다음은 UML 다이어그램에서 사용되는 관계를 나열한 것이다. 관계 기호(1~4)에 해당하는 명칭을 보기에서 찾아 기호로 쓰시오.
    ㄱ : 집합(Aggregation) 관계 ㄴ : 포함(Composition) 관계
    ㄷ : 일반화(Generalization) 관계 ㄹ : 의존(Dependency) 관계
    • 1 <----- : ㄹ 의존 관계
    • 2 ◁⎯⎯ : ㄷ 일반화 관계
    • 3 ◆⎯⎯ : ㄴ 포함 관계
    • 4 ◇⎯⎯ : ㄱ 집합 관계
  12. 다음은 UML 다이어그램의 종류를 나열한 것이다. 보기에 나열된 다이어그램을 구조적 다이어그램과 행위 다이어그램으로 구분하여 기호(ㄱ~ㅍ)로 쓰시오.
    보기
    • ㄱ : 유스케이스 다이어그램
    • ㄴ : 클래스 다이어그램
    • ㄷ : 시퀀스 다이어그램
    • ㄹ : 커뮤니케이션 다이어그램
    • ㅁ : 객체 다이어그램
    • ㅂ : 컴포넌트 다이어그램
    • ㅅ : 배치 다이어그램
    • ㅇ : 상태 다이어그램
    • ㅈ : 활동 다이어그램
    • ㅊ : 상호작용 개요 다이어그램
    • ㅋ : 타이밍 다이어그램
    • ㅌ : 복합체 구조 다이어그램
    • ㅍ : 패키지 다이어그램
    • 1. 구조적 다이어그램 : ㄴ, ㅁ, ㅂ, ㅅ, ㅌ, ㅍ
    • 2. 행위 다이어그램 : ㄱ, ㄷ, ㄹ, ㅇ, ㅈ, ㅊ, ㅋ