정보처리기사 필기 Part01

소프트웨어 설계

Ch01 소프트에어 개발 방법론

section01 소프트웨어 개발 방법론


01 소프트웨어 공학

시스템 소프트웨어

기본요소: 입력,처리,출력,제어,피드백

성능평가 기준

  • 처리능력
  • 반환 시간: 작업의뢰부터 처리까지의 시간
  • 사용 가능도
  • 신뢰도
  • 응답 시간: 명령이 입력된 후 응답 출력이 개시될 때까지의 시간

프레임워크의 기대효과

  • 품질 보증, 재사용성 향상, 유지보수 용이성

02 소프트웨어 개발 수명 주기

소프트웨어 개발 수명 주기
  1. 폭포수 모델
  2. 프로토타입 모델
  3. 나선형 모델
  4. 애자일 모델
스크럼 모델
XP(eXtreme Programming)

고객의 참여와 짧은 개발 과정의 반복을 극대화하여 개발 생산성을 높이는 개발 모델

  • 단계별 단순한 설계를 통해 개발 속도를 향상
  • 가치: 의사소통, 피드백, 단순, 존중, 용기
  • 개발 프로세스: 소규모 릴리즈, 스파이크, 이터레이션

03 소프트웨어 개발 방법론

소프트웨어 개발 방법론
소프트웨어 개발 방법론 종류

구조적 방법론

  • 정보와 정보의 구조를 중심으로 분석, 설계, 구현한다.
  • 분할 정복을 통해 프로그램을 모듈화한다.
  • 순차, 선택, 반복으로 프로그램의 흐름을 구성하여 복잡성을 감소시킨다.

컴포넌트 기반 방법론

  • 개발 생산성, 이식성 및 호환성, 신속성, 유연성, 표준화 등의 장점이 있다.
  • 일반적으로 프로세스 설계과정에선 객체지향 방법론을, 데이터 설계 과정에선 정보공학 방법론 사용
  • 선행 투자 비용이 높고, 조립식 시스템에 따르는 책임 및 지적 재산권을 고려해야 한다.
  • 단계별 산출물
    • 분석 단계: 사용자 요구사항 정의서, 유스케이스 명세서, 요구사항 추적표
    • 설계 단계: 사용자 인터페이스 설계서, 컴포넌트 설계서, 인터페이스 설계서, 아키텍처 설계서, 총괄시험 계획서, 시스템시험 시나리오, 엔티티 모형 기술서, DB 설계서, 통합시험 시나리오, 단위시험 케이스, 데이터 전환 및 초기 데이터 설계서
    • 구현 단계: 프로그램 코드, 단위 시험 결과서, 데이터베이스 테이블
    • 시험 단계: 인수시험 시나리오, 운영자 지침서, 사용자 지침서, 시스템 설치 결과서, 인수시험 결과서, 통합시험 결과서
소프트웨어 보안 개발 방법론

보안 개발 방법론

  1. MS-SDL
  2. CLASP
  3. CWE: 보안 취약점을 유발하는 원인
    • 입력 데이터 검증 및 표현, 보안 기능, 시간 및 상태, 에러 처리, 코드 오류, 캡슐화, API 오용
  4. Seven Touchpoints: 실무적으로 검증된 개발 보안 방법론
    • 코드 검토, 아키텍처 위험 분석, 침투 테스트, 위험 기반 보안 테스트, 악용 사례, 보안 요구, 보안 운영

section02 소프트웨어 개발 방법론 테일러링


01 소프트웨어 품질 관리

CMMI
  • 어떤 모델이든 업무의 목적에 맞게 수정하여 사용할 필요가 있다.
  • 프로세스 관리, 프로젝트 관리, 엔지니어링,지원 영역 등이 있다.
  • 조직의 개발 프로세스 역량 성숙도를 평가한다.
SPICE
  • 단계별 프로세스 성숙도
    • 레벨0(불완전): 프로세스가 구현되지 않거나 프로세스 목적을 달성하지 못함
    • 레벨1(수행): 목적은 달성하지만 계획되거나 추적되지 않음
    • 레벨2(관리): 프로세스 수행이 계획되고 관리되어 작업 산출물이 규정된 표준과 요구에 부합
    • 레벨3(확립): 표준 프로세스를 사용하여 계획되고 관리
    • 레벨4(예측 가능): 표준 프로세스 능력에 대하여 정량적인 이해와 성능이 예측
    • 레벨5(최적): 정의된 프로세스와 표준 프로세스가 지속적으로 개선

Ch02 요구사항 확인

section01 소프트웨어 개발 환경 분석


현행 시스템

  • 소프트웨어 구성 파악: 설치되어 있는 SW 사양,라이선스 방식, 개수 파악
  • 시스템 인터페이스 파악: 주고받는 데이터에 대한 속성을 파악(데이터의 종류,형식,프로토콜,전송주기)
  • 하드웨어 구성 파악: 물리적 위치,사양,수량,이중화 적용 여부

section02 요구사항 확인


01 요구공학

요구공학 개요

요구사항 개발 프로세스: 도출, 분석, 명세, 검증 순으로 진행

02 요구사항 도출

요구사항 도출
  • 소프트웨어 요구사항의 출처를 파악한다.
  • 소프트웨어 요구사항을 어떠한 방법으로 수집할 것인지 파악한다.
  • 개발자와 고객 사이의 관계가 만들어지고 이해관계자가 식별한다.
유스케이스 다이어그램

유스케이스 기술서 구성요소

  • 기본흐름: 어떠한 오류나 예외가 발생하지 않고 모든 것이 완전하게 수행되는 것을 전제로 기술한다.
  • 트리거: 기본흐름의 첫번째 단계로 해당 유스케이스를 시작하는 사건을 기술
  • 유스케이스명: 시스템과 액터 사이에 목적을 달성하기 위한 기본적인 상호작용 흐름을 기술
  • 사후조건: 유스케이스가 실행된 후에 만족해야 하는 조건을 기술(기본흐름 X)

03 요구사항 분석

구조적 분석

특징

  • 정형화된 분석 절차에 따라 요구사항을 파악하고 도형 중심으로 표현한 도표이다.
  • 시스템 개발의 모든 단계에서 필요한 명세서 작성이 가능하다.
  • 시스템 분석 시 사용자 참여 기회를 확대한다.

기본 원리: 추상화 원칙, 정형화 원칙, 분할 정복, 계층화

04 요구사항 명세

고려사항

  • 정확성: 모든 요구사항이 소프트웨어에 반영
  • 명백성: 애매한 표현 없이 요구사항을 명확히 서술
  • 완전성: 기능, 성능, 제약사항, 속성 등 필요한 정보를 모두 서술
  • 일관성: 서술된 요구사항 간의 모순, 상충이 없음
  • 중요도: 중요도 및 우선순위에 따라 요구사항 나열
  • 수정 가능성: 다른 요구사항에 영향을 최소화하며 변경되도록 서술
  • 추적성: 요구사항과 관련된 문서, 산출물 참조 가능

section03 UML


01 UML

구성 요소
  • 사물: 다이어그램 안에서 관계가 형성될 수 있는 대상
    • 종류: 구조, 행동, 그룹, 주해
  • 관계
    • 종류: 의존, 연관, 포함, 집합, 일반화, 실체화
  • 다이어그램

Ch03 화면 설계

section01 UI 요구사항


사용자 인터페이스

  • 둘 이상의 대상, 주로 사용자와 컴퓨터 간의 상호작용이 원활하도록 도와주는 HW 및 SW
  • 물리적 제어, 기능적 제어, 전체 구성의 제어 등 3가지 분야로 나뉜다.
  • UI에 따라 사용자의 SW 이용 방식이 결정된다.

section02 UI 설계

Ch04 애플리케이션 설계

section01 공통 모듈 설계


01 공통 모듈 식별

소프트웨어 설계

설계 추상화

  • 자료 추상화: 데이터의 세부적인 속성 및 표현 방법 없이 대표적인 표현으로 대체
  • 과정 추상화: 상세 수행 과정이 아닌 전반적인 흐름만 파악하도록 표현
  • 제어 추상화: 상세 제어 매커니즘이 아닌 포괄적인 표현으로 대체

모듈의 개념

  • 프로그램의 효율적인 관리를 위해 프로그램을 기능 단위로 분해한 것이다.
  • 다른 모듈들을 호출하거나 호출을 당할 수 있으며 종속적으로 수행된다.
  • SW 통합, 수정 및 테스트가 용이하며 오류의 파급 효과가 적다.

02 모듈의 품질 개선

모듈 응집도
모듈 결합도
  1. 자료 결합도
    • 모듈 간의 인터페이스로 전달되는 인수와 전달받는 매개변수를 통해서만 상호작용이 일어나는 경우
    • 가장 낮은 결합도를 가지며 모듈의 품질을 향상시킨다.
  2. 스탬프 결합도
  3. 제어 결합도
  4. 외부 결합도
  5. 공유 결합도
  6. 내용 결합도

section02 시스템 연동 설계


01 타 시스템 연동 설계

시스템 코드 설계

코드의 분류

  1. Sequence Code: 자료가 발생하는 순서를 논리적으로 배열하여 차례로 코드를 부여하는 방법
  2. Block Code
  3. Decimal Code
소프트웨어 아키텍처
  • 모듈,컴포넌트 간의 상호관계를 설계하고 전개하기 위한 지침이다.
  • 소프트웨어 품질 요구사항은 소프트웨어 아키텍처를 결정하는 데 중요한 요소로 작용한다.
  • 소프트웨어의 골격이 되는 기본 구조이며 소프트웨어 전체에 대한 큰 밑그림이다.

시스템 아키텍처 설계

  • 소프트웨어 아키텍처의 설계는 소프트웨어 상세 설계를 제약한다.
  • 전체적인 아키텍처 설계, 인터페이스 정의, 사용자 인터페이스 설계 등을 수행한다.
  • 시스템 아키텍처 설계, 소프트웨어 아키텍처 설계, 소프트웨어 상세 설계는 일반적인 공통 특성을 가지고 있다.

Ch05 인터페이스 설계

section01 인터페이스 설계


01 인터페이스 시스템 식별

연계 시스템 구성
  • 송신 시스템
    1. 연계 데이터를 생성하거나 원본 데이터를 통해서 추출
    2. 코드 매핑 및 데이터 변환
    3. 인터페이스 테이블/파일 생성
    4. 로그 기록
    5. 중계 시스템 또는 송신 어댑터 통해 데이터 전송
  • 중계 시스템
    1. 데이터를 변환 및 매핑, 암호화하여 수신 시스템으로 전송
  • 수신 시스템
    1. 중계 시스템 또는 수신 어댑터 통해 데이터 수신
    2. 인터페이스 테이블/파일 생성
    3. 코드 매핑 및 데이터 변환
    4. 로그 기록
    5. 연계 데이터를 데이터베이스 및 애플리케이션에 반영

02 인터페이스 상세 설계

인터페이스 설계서 구성
  • 인터페이스 정의서와 인터페이스 목록으로 구성
정보처리기사 필기 Part01
Older post

Thread,Process,Core

정보처리기사 필기 Part01

Start the conversation