오답노트(2020.09.26 기출문제)

강신찬·2023년 6월 22일
0

컴퓨터 지원 소프트웨어 공학(computer-aided software engineering: CASE)= 컴퓨터 지원 시스템 공학

  • 시스템 개발 방법론들의 자동화를 지원하는 소프트웨어 도구를 제공해 개발자의 반복적인 작업량을 줄이도록 하는 것
  • CASE 도구들은 차트와 다이어그램을 자동으로 생성하는 그래픽 기능, 화면과 리포트 생성기, 데이터사전, 분석과 검사 도구, 코드 생성기, 문서 생성기 등을 제공
  • 기능
    1. 소프트웨어 생명주기(Software Lifecycle) 전 단계의 연결
    2. 그래픽 지원
    3. 다양한 소프트웨어 개발 모형 지원

객체지향 설계 원칙(SOLID)

단일 책임 원칙(SRP, Single Responsibility Principle)

  • 모든 클래스는 하나의 책임만 가지며, 클래스는 그 책임을 완전히 캡슐화해야 함

개방 폐쇄의 원칙(OCP, Open-Closed Principle)

  • 소프트웨어 개체(클래스, 모듈, 함수 등등)는 확장에 대해 열려 있어야 하고, 수정에 대해서는 닫혀 있어야 한다

리스코프 교체(치환)의 원칙(LSP, Liskov Substitution Principle)

  • 컴퓨터 프로그램에서 자료형 S가 자료형 T의 하위형이라면 필요한 프로그램의 속성(정확성, 수행하는 업무 등)의 변경 없이 자료형 T의 객체를 자료형 S의 객체로 교체(치환)할 수 있어야 한다는 원칙

인터페이스 분리 원칙(ISP, Interface Segregation Principle)

  • 클라이언트가 자신이 이용하지 않는 메서드에 의존하지 않아야 한다는 원칙

의존성 역전 원칙(DIP, Dependency Inversion Principle)

  • 의존 관계를 맺을 때 변화하기 쉬운 것 보다 변화하기 어려운 것에 의존하라는 원칙을 의미한다.

코드 정의

  • 데이터를 사용 목적에 따라 식별, 분류, 배열하기 위하여 사용되는 숫자, 문자 또는 기호로 컴퓨터 처리에 효율적인 것을 선정

코드 종류

순차 코드(Sequence Code)

  • 자료의 발생순, 크기순, 가나다순 등 일정 순서대로 코드

블록 코드(Block Code : 구분 코드)

  • 코드화 대상을 미리 파악하여 블록으로 구분한 후 그 안에서 순서대로 코드를 부여

그룹 분류 코드(Group Classification Code)

  • 구분 코드를 세분화한 형태로 대분류, 중분류, 소분류 등 각 분류별로 자릿수를 구성

표의 숫자 코드(Significant Digit Code)

  • 표현하려는 대상의 의미는 제외하고 수치만을 모아 만든 것으로 대상이 되는 물체의 중량, 면적, 크기 등을 직접 코드에 적용

십진 분류 코드(Decimal Classification Code)

  • 코드화 대상물을 일정한 소속으로 구분하여 십진수 한 자리씩 구분하여 대분류하고, 같은 방법으로 중분류, 소분류한 코드

연상 코드(Mnemonic Code)

  • 숫자나 문자를 조합해서 나타내는 것으로 어떤 내용을 기억할 수 있도록 표시한 기호 코드

약자 코드(Letter Code)

  • 일반적으로 사용해온 단위의 약자를 코드로 사용

끝자리 분류 코드(Final Digit Code)

  • 다른 종류의 코드와 조합해서 사용하며, 코드의 끝에 붙여서 그 의미를 표현

DFD(data flow diagram)

  • 자료 흐름 그래프 또는 버블 차트라고도 한다.
  • 구조적 분석 기법에 이용된다.
  • 시간 흐름을 명확하게 표현할 수 없다
  • DFD의 요소는 화살표, 원, 사각형, 직선(단선/이중선)으로 표시한다.

람바우 -> 객동기(객체 동적 기능)

소프트웨어의 상위설계

  • 아키텍처 설계, 데이터 설계, 시스템 분할, 인터페이스 정의, 사용자 인터페이스 설계(UI 설계)

소프트웨어의 하위설계

  • 모듈 설계, 인터페이스 작성

형상검사

  • 구성요소 목록 유지보수 모든 사항이 표현 되었나 검사

알파검사

  • 사용자가 개발자 앞에서 행하는 검사

디버깅

  • 프로그램 개발 단계 중에 발생하는 시스템의 논리적인 오류나 비정상적 연산(버그)을 찾아내고 그 원인을 밝히고 수정하는 작업 과정

자료구조 검사

  • 자료형태, 변수 초기화, 자료 형태의 일관성을 테스트

삽입정렬(Insertion Sort)

  • 최소값을 찾지 않고 자리에 따라 비교하고 오름차순 적용하여 바꿈
  • 2번째 원소부터 시작하여 그 앞(왼쪽)의 원소들과 비교하여 삽일할 위치를 지정한 후, 원소를 뒤로 옮기고 지정된 자리에 자료를 상입
초기자료 8 3 4 9 7

1회전 3 8 4 9 7 (두번째 자리 3과 첫번째 자리 8을 비교 했을 때 3이 작으니 바꿔줍니다.)

2회전 3 4 8 9 7 (3 8 | 4 9 7 세번째 자리인 4를 앞에 바꿨던 3과 8을 비교 하였을 때
                 3보다는 크고 8보다는 작으니 3과 8사이에 삽입 합니다.)

3회전 3 4 8 9 7 (3 4 8 | 9 7 네번째 자리인 9를 앞에 바꾼 3 4 8과 비교 하였을 때
                 9 자신이 제일 크기 때문에 이동이 없습니다)

4회전 3 4 7 8 9 (3 4 8 9 | 7 다섯번째 자리인 7을 앞에 3 4 8 9와 비교 하였을 때
                 3 4 보다는 크고 8 9보다는 작으니 3 4 와 8 9 사이에 삽입합니다.)

인터페이스 구현 검증 도구

  • xUnint
  • STAF
  • NTAF
  • FitNesse
  • Selenium
  • Watir

중위(Inorder)

  • 왼-루-오

전위(Preorder)

  • 루 - 왼 - 오

후위(Postorder)

  • 왼 - 오 - 루

그래프 최대 간선수

정점이 n개인 무방향 그래프에서 최대의 간선수는 n(n-1)/2개

정점이 n개인 그래프에서 최대 간선수는 n(n-1)개

테스트 케이스

  • 구현된 소프트웨어가 사용자의 요구사항을 정확하게 준수했는지를 확인하기 위해 설계된 입력 값, 실행 조건, 기대 결과 등으로 구성된 테스트 항목에 대한 명세서

테스트 시나리오

  • 테스트 케이스를 적용하는 순서에 따라 여러 개의 테스트 케이스들을 묶은 집합

테스트 오라클

  • 테스트의 결과가 참인지 거짓인지를 판단하기 위해서 사전에 정의된 참값을 입력하여 비교하는 기법 및 활동
  • 종류에는 참, 샘플링, 휴리스틱, 일관성 검사가 존재한다.

빌드 자동화 도구

  • 빌드를 포함하여 테스트 및 배포를 자동화하는 도구
  • Ant, Make, Maven, Gradle, Jenkins 등이 있음

Jenkins

  • JAVA 기반의 오픈소스 형태
  • 서블릿 컨테이너에서 실행되는 서버 기반 도구
  • 친숙한 Web GUI 제공
  • 분산 빌드나 테스트 가능

Gradle

  • Groovy를 기반으로 한 오픈 소스 형태
  • 안드로이드 앱 개발 환경에서 사용
  • 행할 처리 명령들을 모아 태스크(Task)로 만든 후 태스크 단위로 실행

블랙박스 테스트의 종류

동치(동등) 분할검사

  • 입력조건에 유효한 값과 무효한 값을 균등하게 하여 테스트 케이스를 설계하는 방법

경계값 분석

  • 입력 조건의 경계에서 오류가 발생할 확률이 높기 때문에, 입력 조건의 경계값을 테스트 케이스로 설계하는 방법

원인-효과 그래프 검사

  • 입력 데이터 간의 관계와 출력에 미치는 영향을 분석해서 효용성이 높은 테스트 케이스를 설계하는 방법

오류-예측 검사

  • 과거의 경험이나 확인자의 감각에 의존하는 테스트 케이스 설계 방법

비교검사

  • 여러 버전의 프로그램에 동일한 자료를 제공해서 테스트 하는 방법

해싱함수

폴딩법

  • 해싱함수 중 레코드 키를 여러부분으로 나누고 나눈 부분의 각 숫자를 더하거나 XOR한 값을 홈 주소로 사용

제산법

  • 레코드키를 해시표로 나눈 나머지를 홈 주소로 사용

기수변환법

  • 키 숫자의 진수를 다른 진수로 변환시켜 주소 크기를 초과한 높은 자릿수 절단, 다시 주소 범위에 맞게 조정

숫자분석법

  • 키 값을 이루는 숫자의 분포를 분석하여 비교적 고른 자리를 필요한 만큼 선택

후보키(Candidate Key)

  • 릴레이션을 구성하는 속성 중 튜플을 유일하게 식별하기 위한 기본키로 사용할 수 있는 속성들을 뜻한다.

기본키(Primary Key)

  • 후보키 중에서 선택된 주키(Main Key)이다.

슈퍼키(Super Key)

  • 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키이다. 슈퍼키는 릴레이션에 있는 튜플에 대해 유일성을 만족시키지만, 최소성은 만족 시키지 못한다.

외래키(Foregin Key)

  • 관계를 맺고 있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1릴레이션의 속성 말한다.

관계대수

  • 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해서 어떻게 유도하는가를 기술하는 절차적인 언어이다.
  • 릴레이션을 처리하기 위해 연산자와 연산규칙을 제공하는 언어로 피연산자가 릴레이션이고 결과도 릴레이션이다.
  • 질의에 대한 해를 구하기 위해 수행해야 할 연산의 순서를 명시한다.
  • 대표적으로 순수 관계 연산자와 일반 집합 연산자가 있다.

관계해석

  • 관계 데이터 모델의 제안자인 코드가 수학에 가까운 기반을 두고 관계 데이터베이스를 위해 제안하여 탄생하였다.
  • 관계 데이터의 연산을 표현하는 방법으로, 원하는 정보를 정의할 때는 계산 수식을 사용한다.
  • 원하는 정보가 무엇이라는 것만 정의하는 비절차적 특성을 지닌다.
  • 튜플 관계해석과 도메인 관계해석이 있다.
  • 기본적으로 관계해석과 관계대수는 관계 데이터베이스를 처리하는 기능과 능력면에서 동등하며 관계대수로 표현한 식은 관계해석으로 표현할 수 있다.
  • 질의어로 표현한다.

뷰(VIEW)

  • 뷰 위에 또 다른 뷰를 정의할 수 있다.
  • 뷰에 대한 조작에서 삽입, 갱신, 삭제 연산은 제약이 따른다.
  • 뷰의 정의를 변경하려면 뷰를 삭제하고 재생성 해야된다.
  • 뷰가 정의된 기본 테이블이 제거되면 뷰도 자동적으로 제거된다.

데이터 모델

개념

  • 현실 세계의 정보를 컴퓨터가 이해할 수 있도록 추상화하여 표현한 모델

구성요소

  • 논리적 데이터 구조, 연산, 제약 조건

절차

  • 개념적 데이터 모델>논리적 데이터 모델>물리적 데이터 모델

데이터 웨어하우스 (Data Warehouse)

  • 급증하는 다량의 데이터를 효과적으로 분석하여 정보화하고 이를
    여러 계층의 사용자들이 효율적으로 사용할 수 있도록 한 데이터베이스.

OLAP (Online Analytical Processing)

  • 다차원으로 이루어진 데이터로부터 통계적인 요약 정보를 분석하여 의사 결정에 활용하는 방식.
  • 연산은 roll-up, slicing & dicing, drill-up & down, pivot, drill-through 등

UNIX SHELL 환경 변수 출력 명령어

  1. configenv : 파이썬에서 사용, json 등.. 활용 <- 얘는 아님
  2. printenv : 환경 변수의 값을 출력하는 명령어
  3. env : 환경 변수 보기 및 변경
  4. setenv : 환경 변수 추가 또는 업데이트

쉘 스크립트의 의미

until who | grep wow
do
sleep 5
done
  • who 명령어는 현재 시스템에 로그인한 유저의 목록을 보여 준다.
  • |(파이프)는 앞의 who 명령어의 출력 결과를 뒤의 grep 명령어로 전달한다.
  • grep 명령어는 who 명령문의 결과 중 wow 유저가 로그인하면 그 결과를 필터링하여 출력한다.
  • sleep 명렁문 뒤의 숫자(초)만큼 잠시 수행을 대기한다.
  • until....do : 조건문이 참이 될 때까지 실행

파이썬

>>> a = [0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> a[ : 7 : 2]
  • a[시작점 : 끝점 : 넘어가는 수] 이렇게 생각하시면 됩니다.
  • a[:7:2]이면, a[0]~a[6]까지의 값 [0,10,20,30,40,50,60]이고,
  • 이를 2칸씩 넘어가라 했으니 a[0]부터 시작해서 [0,20,40,60]이 나오게 됩니다.

세그먼트 테이블에서 물리주소 구하기

논리주소= (세그먼트번호, 변위값)
물리주소= '세그먼트 시작주소+ 변위값'

논리주소(2,176)에서
세그먼트번호: 2
변위값: 176

표에서
세그먼트번호  시작주소  길이
    2       222    198

물리주소=세그먼트 시작주소+변위값
      =222  +  176
      =398

인터넷 계층의 프로토콜

  • IP
    • 데이터 주소를 지정하고 경로 설정
  • ICMP
    • IP와 조합하여 통신중의 오류처리와 전송 경로 변경등을 위한 제어 메세지 관리
  • IGMP
    • 멀티캐스트를 지원하는 호스트나 라우터 사이에서 멀티캐스트 그룹유지를 위해 사용
  • ARP
    • 호스트의 IP주소를 네트워크 접속 장치의 물리적 주소로 변환
  • RARP
    • ARP 반대 (물리적 주소를 IP 주소로 변환)

TCP 는 전송계층 프로토콜

FTP 는 응용계층 프로토콜

PHP에서는 # 연산자 없음

CMM

  • Initial(초기) - repeatable(반복) - Managed(관리) - Defined(정의) - Optimizing(최적화)

능력성숙도모델 Capability Maturity Model

  • 소프트웨어 개발업체들의 업무능력평가 기준을 세우기 위한 평가모형

레벨1:Initial(초기)

  • 표준화된 프로세스 없이 프로젝트 수행결과 예측이 곤란한 조직

레벨2:Managed(관리)

  • 기본적인 프로세스 구축에 의해 프로젝트가 관리되고 있는 조직

레벨3:Defined(정의)

  • 세부표준 프로세스가 있어 프로젝트가 통제되는 조직

레벨4:Quantitatively Manaed(잘관리된)

  • 프로젝트 활동이 정략적으로 관리 통제되고 성과예측이 가능한 조직

레벨5:Optimizing(최적화)

  • 지속적인 개선활동이 정착화 되고 최적의 관리로 프로젝트가 수행되는 조직

SREM(Software Requirements Enginering Methdology)

  • TRW사가 우주 국방 시스템 그룹에 의해 실시간 처리 소프트웨어 시스템에서 요구사항을 명확히 기술하도록 할 목적으로 개발한 것으로,RSL과 REVS를 사용하는 자동화 도구이다.(RSL/REVS)

PSL/PSA

  • 미시간 대학에서 개발한 것으로 PSL과 PSA를 사용하는 자동화 도구입니다.

HIPO(Hieracgy Input Process Output)

  • 하향식 소프트웨어 개발을 위한 문서화 도구입니다.

SADT(Structure Analysis and Design Technique)

  • SoftTech사에서 개발된 것으로 구조적 요구 분석을 위해 블록 다이어그램을 채택한 자동화 도구입니다.

접근통제 기술-MAC/ DAC/ RBAC

MAC:강제 (Mandatory) 접근통제

  • 접근통제권한은 시스템이 지정
  • 주체와 객체의 등급을 비교하여 권한부여

DAC:임의 (Discretionary) 접근통제

  • 접근통제권한은 데이터소유자가 지정 및 제어
  • 데이터에 접근하는 사용자의 신원에 따라 권한부여
  • 부여된 권한을 다른 사용자에게 허가 가능
  • 관련 SQL 명령어: GRANT/ REVOKE

RBAC:역할기반 (Role Based) 접근통제

  • 접근통제권한은 중앙관리자가 지정
  • 사용자의 역할에 따라 권한부여
  • 임의+강제 접근통제의 단점보완
  • 다중프로그래밍환경에 최적화

비용 추정모형(estimation models)

  • COCOMO
  • Putnam
  • Function-Point

공개키 암호화 방식

  • 비대칭 암호기법이라고도 한다.
  • 대표적인 기법은 RSA 기법이 있다.
  • 키 분배가 용이하고, 관리해야 할 키 개수가 적다.
  • 암호화와 복호화에 사용하는 키가 서로 다른 암호화 방식이다.

랜섬웨어

  • 임의로 시스템을 잠그거나 혹은 데이터를 암호화하여 사용할 수 없게 한 다음 이를 빌미로 돈을 요구하는 기법.

파밍

  • 홈페이지 주소를 바꿔 사용자가 진짜 사이트로 오인하게 하여 접속하게 한 다음 개인정보를 탈취하는 기법.

피싱

  • 메일 등으로 공공기관이나 금융기관에서 보낸 것처럼 위장하여 사용자에게 계좌번호, 카드번호의 비밀번호를 빼내는 기법. 대표적으로 스미싱

XSS

  • 웹페이지에 악의적인 스크립트를 포함시켜 사용자 측에서 실행되게 유도함으로써, 정보유출 등의 공격을 유발할 수 있는 취약점

맵리듀스(MapReduce)

  • 맵(Map) : 데이터가 텍스트 형태로 입력되면 64KB 분할한다. 텍스트 안에 단어를 분류하여 카운트한다.
  • 리듀스(Reduce) : 각 텍스트에서 정리된 맵들을 결합하여 동일한 단어를 카운트한다.
  • 대용량 데이터를 분산 처리하기 위한 목적으로 개발된 프로그래밍 모델
  • Google에 의해 고안된 기술로써 대표적인 대용량 데이터 처리를 위한 병렬 처리 기법을 제공한다
  • 임의의 순서로 정렬된 데이터를 분산 처리하고 이를 다시 합치는 과정을 거친다.

SPICE(소프트웨어 처리 개선 및 능력 평가 기준)

  • 소프트웨어의 품질 및 생산성 향상을 위해 소프트웨어 프로세스를 평가 및 개선하는 국제 표준이다.
  • 공식 명칭은 ISO/IEC 15504이다.

IEEE 488

  • 단거리 디지털 통신 버스

IEEE 802.5

  • 토큰링에 대한 표준

ISO 14001

  • 모든 산업 분야 및 활동에 적용할 수 있는 환경경영시스템에 관한 국제규격
profile
꾸준히 공부하는 풀스텍 개발자

0개의 댓글