별의 공부 블로그 🧑🏻‍💻
728x90
728x170

핵심 키워드 정리 - 1

  • 시험장에 들어가기 전, 빠르게 훑어볼 내용을 정리해본다.

 

01. 요구사항 확인

소프트웨어 생명주기 모델(SDLC; Software Development Life Cycle)

  • 소프트웨어 생명주기 : 시스템의 요구분석부터 유지보수까지 전 공정을 체계화한 절차
  • 시스템이 개발될 때부터 운용과 유지보수를 거쳐 생애를 마칠 때까지 어떠한 순서를 밟는지에 대한 작업 프로세스를 모델화한 것
  • 프로세스
    • 요구사항 분석 -> 설계 - > 구현 -> 테스트 -> 유지보수
  • 모델 종류 : 폭프나반
    • 포수 모델(Waterfall Model)
      • 소프트웨어 개발 시 각 단계를 확실히 마무리 지은 후에 다음 단계로 넘어가는 모델 (고전적 생명주기 모형)
      • 절차 : 타당성 검토 -> 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 유지보수
    • 로토타이핑 모델(Prototyping Model)
      • 고객이 요구한 주요 기능을 프로토타입으로 구현하여, 고객의 피드백을 반영하여 소프트웨어를 만들어가는 모델
    • 선형 모델(Spiral Model)
      • 시스템 개발 시 위험을 최소화하기 위해 점진적으로 완벽한 시스템으로 개발해 나가는 모델
      • 절차 : 계위개고
        • 획 및 정의 -> 험 분석 -> 발 -> 객 평가
    • 복적 모델(Iteration Model)
      • 구축대상을 나누어 병렬적으로 개발 후 통합하거나, 반복적으로 개발하여 점증 완성시키는 SDLC 모델

 

소프트웨어 개발 방법론(Software Development Methodology)

  • 소프트웨어 개발 전 과정에 지속적으로 적용할 수 있는 방법, 절차, 기법
  • 종류
    • 구조적 방법론(Structured Development) : 전체 시스템을 기능에 따라 나누어 개발하고, 이를 통합하는 분할과 정복 접근 방식의 방법론
    • 정보공학 방법론(Information Engineering Development) : 정보 시스템 개발에 필요한 관리 절차와 작업 기법을 체계화한 방법론
    • 객체 지향 방법론(Object-Oriented Development) : '객체'라는 기본 단위로 시스템을 분석 및 설계하는 방법론
    • 컴포넌트 기반 방법론(CBD; Component Based Development) : 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 작성하는 방법론
    • 애자일 방법론(Agile Development) : 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적용하며서 효율적으로 개발할 수 있는 신속 적응적 경량 개발 방법론
    • 제품 계열 방법론(Product Line Development) : 특정 제품에 적용하고 싶은 공통되 기능을 정의하여 개발하는 방법론

 

애자일(Agile) 방법론

  • 절차보다는 사람이 중심이 되어 변화에 유연하고 신속하게 적응하면서 효율적으로 시스템을 개발할 수 있는 신속 적응적 경량 개발 방법론
  • 종류
    • XP(eXtreme Programming)
      • 의사소통 개선즉각적 피드백으로 소프트웨어 품질을 높이기 위한 방법론
      • 5가지 가치
        • 용기(Courage)
        • 단순성(Simplicity)
        • 의사소통(Communication)
        • 피드백(Feedback)
        • 존중(Respect)
      • 12가지 원리
        • 짝 프로그래밍(Pair Programming)
        • 공동 코드 소유(Collective Ownership)
        • 지속적인 통합(CI; Continuous Integration)
        • 계획 세우기(Planning Process)
        • 작은 릴리즈(Small Release)
        • 메타포어(Metaphor)
        • 간단한 디자인(Simple Design)
        • 테스트 기반 개발(TDD; Test Driven Develop)
        • 리팩토링(Refactoring)
        • 40시간 작업(40-Hour Work)
        • 고객 상주(On Site Customer)
        • 코드 표준(Coding Standard)
    • 스크럼(SCRUM)
      • 매일 정해진 시간, 장소에서 짧은 시간의 개발을 하는 팀을 위한 프로젝트 관리 중심 방법론
      • 주요 개념
        • 백로그(Backlog) : 제품과 프로젝트에 대한 요구사항
        • 스프린트(Sprint) : 2~4주의 짧은 개발 기간의 반복적 수행으로 개발품질 향상
        • 스크럼 미팅(Scrum Meeting) : 매일 15분 정도 미팅으로 To-Do List 계획 수립 (=데일리 미팅(Daily Meeting)
        • 스크럼 마스터(Scrum Master) : 프로젝트 리더, 스크럼 수행 시 문제를 인지 및 해결하는 사람
        • 스프린트 회고(Sprint Retrospective) : 스프린트 주기를 되돌아보며 정해놓은 규칙 준수 여부, 개선점 등을 확인 및 기록
        • 번 다운 차트(Burn Down Chart) : 남아있는 백로그 대비 시간을 그래픽적으로 표현한 차트
    • 린(LEAN)
      • 도요타의 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해서 낭비 요소를 제거하여 품질을 향상시킨 방법론
      • JIT(Just In Time), 칸반(Kanban) 보드 사용
      • 7가지 원칙
        • 낭비 제거
        • 품질 내재화
        • 지식 창출
        • 늦은 확정
        • 빠른 인도
        • 사람 존중
        • 전체 최적화

 

객체 지향 분석(OOA; Object Oriented Analysis)

  • 사용자의 요구사항을 분석하여 요구된 문제와 관련된 모든 클래스(객체), 속성과 연산, 관계를 정의하여 모델링하는 기법
  • 객체 지향 분석 방법론 종류
    • OOSE(Object Oriented Software Engineering)
      • 야콥슨(Jacobson)
      • 유스케이스에 의한 접근 방법으로 유스케이스를 모든 모델의 근간으로 활용하는 방법론
    • OMT(Objet Modeling Technology)
      • 럼바우(Rumbaugh)
      • 그래픽 표기법을 이용하여 소프트웨어 구성요소를 모델링하는 방법론
      • 분석 절차 : 객동기
        • 체 모델링(Object Modeling) 
          • 정보 모델링(Information Modeling)
          • 시스템에서 요구하는 객체를 찾고 객체들 간의 관계를 정의하여 ER 다이어그램을 만드는 과정까지의 모델링
          • 객체 다이어그램 활용
        • 적 모델링(Dynamic Modeling)
          • 시간의 흐름에 따라 객체들 사이의 제어 흐름, 동작 순서 등의 동적인 행위를 표현
          • 상태 다이어그램 활용
        • 능 모델링(Functional Modeling)
          • 프로세스의 자료 흐름을 중심으로 처리 과정 표현
          • 자료 흐름도(DFD) 활용
    • OOD(Object Oriented Design)
      • 부치(Booch)
      • 설계 문서화를 강조하여 다이어그램 중심으로 개발하는 방법론

 

비용 산정 모형

  • 소프트웨어 규모 파악을 통한 투입자원, 소요시간을 파악하여 실행 가능한 계획을 수립하기 위해 비용을 산정하는 방식
  • 분류
    • 하향식 산정 방법
      • 전문가 판단
      • 델파이 기법
    • 상향식 산정 방법
      •  코드 라인 수(LoC; Lines of Code)
        • 소프트웨어 각 기능의 원시 코드 라인 수의 낙관치, 중간치, 비관치를 측정하여 예측치를 구하고 이를 이용하여 비용을 산정하는 방식
      • Man Month
        • 한 사람이 1개월 동안 할 수 있는 일의 양을 기준으로 프로젝트 비용을 산정하는 방식
      • COCOMO 모형(COnstructuve COst MOdel) 
        • 보헴(Bohem)이 제안한 모형으로, 프로그램 규모에 따라 비용을 산정하는 방식
        • 비용산정 결과는 프로젝트를 완성하는 데 필요한 노력(Man-Month)으로 산정한다.
        • 소프트웨어 개발 모형
          • 조직형(Organic Mode)
            • 5만(50KDSI) 라인 이하
            • 기관 내부에서 개발된 중소규모의 소프트웨어
            • 일괄 자료 처리 / 과학 기술 계산용 / 비지니스 자료 처리 개발
          • 반 분리형(Semi-Detached Mode)
            • 30만(300KDSI) 라인 이하
            • 단순형과 임베디드형의 중간형
            • 트랜잭션 처리 시스템 /  데이터베이스 관리 시스템 / 컴파일러 / 인터프리터
          • 임베디드형(Embedded Mode)
            • 30만(300KDSI) 라인 이상
            • 초대형 규모의 트랜잭션 처리 시스템 / 운영체제 / 실시간 처리 시스템 등의 시스템 프로그램 개발
      • 푸트남(Putnam) 모형
        • 소프트웨어 개발주기의 단계별로 요구할 인력의 분포를 가정하는 방식
        • 생명주기 예측 모형이라고 한다.
        • Rayleigh-Norden 곡선의 노력 분포도를 기초로 한다.
      • 기능점수(FP; Function Point) 모형
        • 요구 기능을 증가시키는 인자별로 가중치를 부여하고, 요인별 가중치를 합산하여 총 기능의 점수를 계산하여 비용을 산정하는 방식

 

일정 관리 모델

  • 프로젝트가 일정 기한 내에 적절하게 완료될 수 있도록 관리하는 모델
  • 종류
    • 주 공정법(CPM; Critical Path Method)
      • 여러 작업의 수행 순서가 얽혀 있는 프로젝트의 일정을 계산하는 방법
      • 프로젝트의 시작에서 종료까지 가장 긴 시간이 걸리는 경로를 계산한다.
    • PERT(Program Evaluation and Review Technique)
      • 일의 순서를 계획적으로 정리하기 위한 수렴 기법으로, 비관치/중간치/낙관치의 3점 추점방식을 통해 일정을 관리하는 기법
    • 중요 연쇄 프로젝트 관리(CCPM; Critical Chain Project Management)
      • 주 공정 연쇄법으로 자원 제약 사항을 고려하여 일정을 작성하는 기법

 

소프트웨어 아키텍처 4+1뷰

  • 고객의 요구사항을 정리해 놓은 시나리오를 4개의 관점에서 바라보는 소프트웨어적인 접근 방식
  • 체크 방법으로 유스케이스를 사용한다.
    • 유스케이스(Usecase) : 시스템이 액터에게 제공해야 하는 기능으로서 시스템 요구사항이자, 사용자 입장에서 바라본 시스템의 기능
  • 1(유스케이스 뷰) + 4(논리 뷰, 프로세스 뷰, 구현 뷰, 배포 뷰)
  • 구성 요소 : 유논프구배
    • 스케이스 뷰(Usecase View)
      • 유스케이스 또는 아키텍처를 도출하고 설계하며 다른 뷰를 검증하는데 사용되는 뷰
      • 사용자/설계자/개발자/테스트 관점
    • 논리 뷰(Logical View)
      • 시스템의 기능적인 요구사항이 어떻게 제공되는지 설명해주는 뷰
      • 설계자/개발자 관점
    • 로세스 뷰(Process View)
      • 시스템의 비기능적인 속성으로서 자원의 효율적인 사용, 병행 실행, 비동기, 이벤트 처리 등을 표현한 뷰
      • 개발자/시스템 통합자 관점
    • 현 뷰(Implementation View)
      • 개발 환경 안에서 정적인 소프트웨어 모듈의 구성을 보여주는 뷰
      • 컴포넌트 구조와 의존성을 보여주고 컴포넌트에 관한 부가적인 정보 정의
    • 포 뷰(Deployment View)
      • 컴포넌트가 물리적인 아키텍처에 어떻게 배치되는가를 매핑해서 보여주는 뷰

 

소프트웨어 아키텍처 패턴(Software Architecture Pattern)

  • 소프트웨어를 설계할 때 참조할 수 있는 전형적인 해결 방식
  • 유형
    • 계층화 패턴(Layer Pattern) : 시스템을 계층으로 구분하여 구성하는 패턴
    • 클라이언트-서버 패턴(Client-Server Pattern) : 하나의 서버와 다수의 클라이언트로 구성된 패턴
    • 파이프-필터 패턴(Pipe-Filter Pattern) : 데이터 스트림을 생성하고 처리하는 시스템에서 사용 가능한 패턴
    • 브로커 패턴(Broker Pattern) : 분리된 컴포넌트들로 이루어진 분산 시스템에서 사용되고, 이 컴포넌트들은 원격 서비스 실행을 통해 상호 작용이 가능한 패턴
    • 모델-뷰-컨트롤러 패턴(MVC; Model View Controller Pattern) : 대화형 애플리케이션을 모델, 뷰, 컨트롤러의 3개의 서브 시스템으로 구조화하는 패턴

 

소프트웨어 아키텍처 비용 평가 모델

  • 아키텍처 접근법이 품질 속성에 미치는 영향을 판단하고 아키텍처의 적합성을 평가하는 모델
  • 종류 : SACAA(사카)
    • SAAM(Software Architecture Analysis Method) : 변경 용이성과 기능성에 집중, 평가가 용이하며 경험이 없는 조직에서도 활용 가능한 비용 평가 모델
    • ATAM(Architecture Trade-off Analysis Method) : 아키텍처 품질 속성을 만족시키는지 판단 및 품질 속성들의 이해 상충관계까지 평가하는 모델
    • CBAM(Cost Benefit Analysis Method) : ATAM 바탕의 시스템 아키텍처 분석 중심으로 경제적 의사결정에 대한 요구를 충족하는 비용 평가 모델
    • ADR(Active Design Review) : 소프트웨어 아키텍처 구성요소 간 응집도를 평가하는 모델
    • ARID(Active Reviews for Intermediate Designs) : 전체 아키텍처가 아닌 특정 부분에 대한 품질요소에 집중하는 비용 평가 모델

 

디자인 패턴(Design Pattern)

  • 소프트웨어 공학의 소프트웨어 설계에서 공통으로 발생하는 문제에 대해 자주 쓰이는 설계 방법을 정리한 패턴

 

디자인 패턴 구성 요소 : 패문솔 사결샘

  • 턴의 이름
  • 제 및 배경
  • 루션
  • 플 코드

 

디자인 패턴 유형

  • 목적에 따른 구분 : 생구행
    • : 객체 인스턴스 생성에 관여, 클래스 정의와 객체 생성 방식을 구조화, 캡슐화를 수행하는 패턴
    • : 더 큰 구조 형성 목적으로 클래스나 객체의 조합을 다루는 패턴
    • : 클래스나 객체들이 상호 작용하는 방법과 역할 분담을 다루는 패턴
  • 범위에 따른 구분
    • 클래스 : 클래스 간 관련성(상속 관계)을 다루는 패턴, 컴파일 타임에 정적으로 결정
    • 객체 : 객체 간 관련성을 다루는 패턴, 런타임에 동적으로 결정

 

디자인 패턴 종류

  • 생성 패턴 : 생빌 프로 팩앱싱
    • Builder : 복잡한 인스턴스를 조립하여 만드는 구조
    • Prototype : 처음부터 일반적인 원형을 만들어 놓고, 그것을 복사한 후 필요한 부분만 수정하여 사용하는 패턴
    • Factory Method : 상위 클래스에서 객체를 생성하는 인터페이스를 정의하고, 하위 클래스에서 인스턴스를 생성하도록 하는 방식
    • Abstract Factory : 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴
    • Singleton : 전역 변수를 사용하지 않고 객체를 하나만 생성하도록 하며, 생성된 객체를 어디에서든지 참조할 수 있도록 하는 디자인 패턴, 한 클래스에 한 객체만 존재하도록 제한
  • 구조 패턴 : 구 브데 퍼플 프록 컴 어
    • Bridge : 기능의 클래스 계층과 구현의 클래스 계층을 연결하고, 구현부에서 추상 계층을 분리하여 추상화된 부분과 실제 구현 부분을 독립적으로 확장할 수 있는 패턴
    • Decorator : 기존에 구현되어 있는 클래스에 필요한 기능을 추가해 나가는 설계 패턴
    • Facade : 복잡한 시스템에 대하여 단순한 인터페이스를 제공함으로써, 사용자와 시스템 간 또는 여타 시스템과의 결합도를 낮추어 시스템 구조에 대한 파악을 쉽게하는 패턴
    • Flyweight : 다수의 객체로 생성될 경우 모두가 갖는 본질적인 요소를 클래스 화하여 공유함으로써 메모리를 절약하고, '클래스의 경량화'를 목적으로 하는 패턴, 여러 개의 '가상 인스턴스'를 제공하여 메모리 절감
    • Proxy : '실제 객체에 대한 대리 객체'로 실제 객체에 대한 접근 이전에 필요한 행동을 취할 수 있게 만들며, 이 점을 이용해서 미리 할당하지 않아도 상관없는 것들을 실제 이용할 때 할당하게 하여 메모리 용량을 아낄 수 있으며, 실제 객체를 드러나지 않게하여 정보 은닉의 역할도 수행하는 패턴
    • Composite : 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴으로, 사용자가 단일 객체복합 객체 모두 동일하게 다루도록 하는 패턴
    • Adapter : 기존에 생성된 클래스를 재사용할 수 있도록 중간에서 맞춰주는 역할을 하는 인터페이스를 만드는 패턴
  • 행위 패턴 : 행 미인이 템옵 스테 비커 스트 메체
    • Mediator : 중간에 지시할 수 있는 역할을 하는 중재자를 두고, 중재자에게 모든 것을 요구하여 통신의 빈도수를 줄여 객체 지향의 목표를 달성하게 해주는 패턴
    • Interpreter : 언어의 다양한 해석, 구체적으로 구문을 나누고 그 분리된 구문의 해석을 맡는 클래스를 각각 작성하여 여러 형태의 언어 구문을 해석할 수 있게 만드는 패턴
    • Iterator : 컬렉션의 구현 방법을 노출시키지 않으면서도 그 집합체 안에 들어있는 모든 항목에 접근할 방법을 제공하는 디자인 패턴
    • Template Method : 어떤 작업을 처리하는 일부분을 서브 클래스로 캡슐화해 전체 일을 수행하는 구조는 바꾸지 않으면서 특정 단계에서 수행하는 내역을 바꾸는 패턴으로 상위 클래스(추상 클래스)에는 추상 메서드를 통해 기능의 골격을 제공하고, 하위 클래스(구체 클래스)의 메서드에는 세부 처리를 구체화하는 방식으로 사용하여 코드 양을 줄이고 유지보수를 용이하게 만드는 특징을 갖는 패턴
    • Observer : 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에 연락이 가고, 자동으로 내용이 갱신되는 방법으로, 일대 다의 의존성을 가지며 상호 작용하는 객체 사이에서는 가능하면 느슨하게 결합하는 패턴
    • State : 객체 상태를 캡슐화하여 클래스화함으로써 그것을 참조하게 하는 방식으로 상태에 따라 다르게 처리할 수 있도록 행위 내용을 변경하여, 변경 시 원시 코드의 수정을 취소할 수 있고, 유지보수의 편의성도 갖는 패턴
    • Visitor : 각 클래스 데이터 구조로부터 처리 기능을 분리하여 별도의 클래스를 만들어 놓고 해당 클래스의 메서드가 각 클래스를 돌아다니며 특정 작업을 수행하도록 만드는 패턴으로, 객체의 구조는 변경하지 않으면서 기능만 따로 추가하거나 확장할 때 사용하는 패턴
    • Command : 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴으로 하나의 추상 클래스에 메서드를 만들어 각 명령이 들어오면 그에 맞는 서브 클래스가 선택되어 실행되는 특징을 갖는 패턴
    • Strategy : 알고리즘 군을 정의하고(추상 클래스), 같은 알고리즘을 각각 하나의 클래스로 캡슐화한 다음, 필요할 때 서로 교환해서 사용할 수 있게 하는 패턴
    • Memento : 클래스 설계 관점에서 객체의 정보를 저장할 필요가 있을 때 적용하는 패턴으로, Undo 기능을 개발할 때 사요앟는 디자인 패턴
    • Chain of Responsibility : 정적으로 어떤 기능에 대한 처리의 연결이 하드코딩 되어 있을 때 기능 처리의 연결 변경이 불가능한데, 이를 동적으로 연결되어 있는 경우에 따라 다르게 처리될 수 있도록 연결한 패턴

 

분석 산출물의 종류 : 현기인 아소하네

  • 정보 시스템 구성
  • 정보 시스템 능 구성도
  • 터페이스 현황
  • 현행 시스템 키텍처 구성도
  • 프트웨어 구성도
  • 드웨어 구성도
  • 트워크 구성도

 

운영체제(OS; Operating System)

  • 컴퓨터 시스템이 제공하는 모든 하드웨어, 소프트웨어를 사용할 수 있도록 해주고, 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스를 담당하는 프로그램
  • 사용자가 컴퓨터를 좀 더 쉽게 사용하기 위해 지원하는 소프트웨어

 

운영체제 현행 시스템 분석 시 고려 사항

  • 품질 측면
    • 신뢰도 : 장기간 시스템 운영 시 운영체제의 장애 발생 가능성 
    • 성능 : 대규모 및 대량 파일 작업(배치 작업) 처리
  • 지원 측면
    • 기술 지원
    • 주변 기기
    • 구축 비용

 

OSI 7계층 ; 물데네 전세표응

  • 리 계층(Physical Layer) 
    • 0과 1의 비트 정보를 회선에 보내기 위한 전기적 신호 변환
    • 프로토콜 : RS-232C
    • 전송 단위 : 비트(Bit)
  • 이터 링크 계층(Data Link Layer) 
    • 인접 시스템 간 데이터 전송, 전송 오류 제어
    • 동기화, 흐름 제어 등의 전송 기능 제공
    • 오류 검출 / 재전송 등의 기능 제공
    • 프로토콜 : 이더넷
    • 전송 단위 : 프레임(Frame)
  • 트워크 계층(Network Layer)
    • 단말 간 데이터 전송을 위한 최적화된 경로 제공
    • 프로토콜 : IP, ICMP
    • 전송 단위 : 패킷(Packet)
  • 송 계층(Transport Layer)
    • 신뢰성 있는 통신 보장
    • 데이터 분할과 재조립, 흐름 제어, 오류 제어, 혼잡제어 등을 담당
    • 프로토콜 : TCP, UDP
    • 전송 단위 : 세그먼트(Segment)
  • 션 계층(Session Layer)
    • 연결 접속 및 동기 제어
    • 프로토콜 : SSH, TLS
    • 전송 단위 : 데이터(Data)
  • 현 계층(Presentation Layer)
    • 데이터 형식 설정과 부호 교환, 암/복호화
    • 프로토콜 : JPEG, MPEG
    • 전송 단위 : 데이터(Data)
  • 용 계층(Application Layer)
    • 사용자와 네트워크 간 응용서비스 연결, 데이터 생성
    • 프로토콜 : HTTP, FTP
    • 전송 단위 : 데이터(Data)

 

DBMS 현행 시스템 분석 시 고려 사항 : 가성호기구

  • 성능 측면
    • 용성
    • 상호 환성
  • 지원 측면
    • 술 지원
    • 축 비용 

 

미들웨어(Middleware)

  • 분산 컴퓨팅 환경에서 응용 프로그램과 프로그램이 운영되는 환경 간에 원만한 통신이 이루어질 수 있도록 제어해주는 소프트웨어
  • 운영체제소프트웨어 애플리케이션 사이에 위치하고 있다.
  • 대표적인 미들웨어로 WAS가 있다.

 

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

  • 서버 계층에서 애플리케이션이 동작할 수 있는 환경을 제공하고 안정적인 트랜잭션 처리와 관리, 다른 이기종 시스템과의 애플리케이션 연동을 지원하는 서버
  • 미들웨어 현행 시스템 분석 시 고려 사항
    • 성능 측면
      • 가용성
      • 성능
    • 지원 측면
      • 기술 지원
      • 구축 비용

 

요구 공학(Requirements Engineering)

  • 사용자의 요구가 반영된 시스템을 개발하기 위하여 사용자 요구사항에 대한 도출, 분석, 명세, 확인 및 검증하는 구조화된 활동
  • 요구 공학의 분류
    • 기능적 요구사항 : 시스템이 제공하는 기능, 서비스에 대한 요구사항
    • 비기능적 요구사항 : 시스템이 수행하는 기능 이외의 사항, 시스템 구축에 대한 제약사항에 관한 요구사항

 

요구사항 개발 단계 구성 : 도분명확

  • 요구사항 출(Eliciation)
  • 요구사항 석(Analysis)
  • 요구사항세(Specification)
  • 요구사항 인 및 검증(Validation)

 

요구사항 개발 단계 상세

  • 요구사항 도출 관계 주요 기법
    • 인터뷰(Interview) : 이해관계자와 직접 대화를 통해 정보를 구하는 공식적, 비공식적 정보 수집 방법
    • 브레인스토밍(Brainstorming) : 말을 꺼내기 쉬운 분위기로 만들어, 회의 참석자들이 내놓은 아이디어들을 비판 없이 수용할 수 있도록 하는 회의
    • 델파이 기법(Delphi Method) : 전문가의 경험적 지식을 통한 문제 해결 및 미래 예측을 위한 방법
    • 롤 플레잉(Role Playing) : 현실에 일어나는 장면을 설정하고, 여러 사람이 각자가 맡은 역을 연기함으로써 요구사항을 분석하고 수집하는 방법
    • 워크숍(Workshop) : 단기간의 집중적인 노력을 통해 다양하고 전문적인 정보를 획득하고 공유하는 방법
    • 설문 조사(Survey) : 설문지 또는 여론 조사 등을 이용해 간접적으로 정보를 수집하는 방법
  • 요구사항 분석 단계 절차
    • 요구사항 분류
    • 개념 모델링 생성 및 분석
    • 요구사항 할당
    • 요구사항 협상
    • 정형 분석 
      • 형식적으로 정의된 의미를 지닌 언어로 요구사항을 표현하는 활동
      • 구문(Syntax)와 의미(Semantics)를 갖는 정형화된 언어를 사용하여 수학적 기호로 표현
      • 요구사항 분석의 마지막 단계에서 이루어짐.
  • 요구사항 분석 단계 기법
    • 자료 흐름 지향 분석
    • 객체 지향 분석
  • 요구사항 분석 기술
    • 청취 기술
    • 인터뷰와 질문 기술
    • 분석 기술
    • 중재 기술
    • 관찰 기술
    • 작성 기술
    • 조직 기술
    • 모델 작성 기술
  • 요구사항 명세 단계 주요 기법
    • 비정형 명세 기법 : 사용자의 요구를 표현할 때 자연어를 기반으로 서술하는 방법
    • 정형 명세 기법 : 사용자의 요구를 표현할 때 수학적인 원리와 표기법으로 서술하는 방법
  • 요구사항 명세 원리 및 검증 항목 : 명완검 일수 추개
    • 확성
    • 전성
    • 증 가능성
    • 관성
    • 정 용이성
    • 적 가능성
    • 발 후 이용성
  • 요구사항 확인 및 검증 단계의 주요 기법
    • 요구사항 검토
    • 정형 기술 검토 활용 : 동워인
      • 료 검토(Peer Review) : 2~3명이 진행하는 리뷰의 형태로 요구사항 명세서 작성자가 요구사항 명세서를 설명하고 이해관계자들이 설명을 들으면서 결함을 발견하는 형태로 진행
      • 크 스루(Walk Through) : 오류를 조기에 검출하는 데 목적이 있으며, 검토 자료를 회의 전에 배포해서 사전검토한 후 짧은 시간 동안 회의를 진행하는 형태로 리뷰를 통해 오류를 검출하고 문서화
      • 스펙션(Inspection) : 소프트웨어 요구, 설계, 원시 코드 등의 저작자 외의 다른 전문가 또는 팀이 검사하여 오류를 찾아내는 공식적 검토 방법
    • 프로토타이핑 활용
    • 모델 검증
    • 테스트 케이스 및 테스트를 통한 확인
    • CASE 도구 활용 검증
    • 베이스라인(Baseline)을 통한 검증
    • 요구사항 추적표(RTM; Requirement Traceability Matrix)를 통한 검증
  • 상세 정형 기술 검토 기법 : 관기 인워감
    • 리 리뷰(Management Review) : 프로젝트 진행 상황에 대한 전반적인 검토를 바탕으로 범위 일정, 인력 등에 대한 통제 및 의사결정을 지원하는 리뷰
    • 술 리뷰(Technical Review) : 정의된 계획 및 명세서를 준수하고 있는지에 대한 검토를 수행하는 리뷰
    • 스펙션(Inspection) : 소프트웨어 요구, 설계, 원시 코드 등의 저작자 외의 다른 전문가 또는 팀이 검사하여 오류를 찾아내는 공식적 검토 방법 (=동료 검토(Peer Review))
    • 크 스루(Walk Through) : 검토 자료를 회의 전에 배포해서 사전검토한 후 짧은 시간 동안 회의를 진행하는 형태로, 비형식적인 검토 기법
    • 사(Audit) : 소프트웨어 제품 및 프로세스가 규제, 표준, 가이드라인, 계획, 절차를 준수하고 있는지를 독립적으로 평가하는 방법으로, 소프트웨어 제품의 제공자, 소비자, 제3기관 등이 수행

 

 

 

 

 

02. 데이터 입출력 구현

데이터 모델 표시 요소

  • 연산(Operation) : 데이터베이스에 저장된 실제 데이터를 처리하는 작업에 대한 명세
  • 구조(Structure) : 데이터베이스에 논리적으로 표현될 대상으로서의 개체 타입과 개체 타입 간의 관계
  • 제약 조건(Constraint) : 데이터베이스에 저장될 수 있는 실제 데이터의 논리적인 제약 조건

 

데이터 모델 절차 : 요개논물

  • 구 사항 분석
  • 념적 설계 : 사용자의 트랜잭션을 모델링 하는 관계
  • 리적 설계 : 트랜잭션의 인터페이스를 설계하는 단계
  • 리적 설계 : 논리 데이터 모델을 특정 DBMS의 특성 및 성능을 고려하여 물리적인 스키마를 만드는 단계

 

논리 데이터 모델링 속성 : 개속관

  • 체(Entity) : 관리할 대상이 되는 실체
  • 성(Attribute) : 관리할 정보의 구체적 항목
  • 계(Relationship) : 개체 간의 대응 관계

 

개체-관계(E-R) 모델

  • 현실 세계에 존재하는 데이터와 그들 간의 관계를 사람이 이해할 수 있는 형태로 명확하게 표현하기 위해서 가장 널리 사용되고 있는 모델

 

정규화(Normalization)

  • 관계형 데이터 모델에서 데이터의 중복성을 제거하여 이상 현상을 방지하고, 데이터의 일관성정확성을 유지하기 위해 무손실 분해하는 과정
  • 정규화 단계 : 원부이결다조
    • 1정규형(1NF) : 자값으로 구성
    • 2정규형(2NF) : 분 함수 종속 제거 (완전 함수적 종속 관계)
    • 3정규형(3NF) : 행 함수 종속 제거
    • 보이스-코드 정규형(BCNF) : 정자 후보 키가 아닌 함수 종속 제거
    • 4정규형(4NF) : 치(다중 값) 종속 제거
    • 5정규형(5NF) : 인 종속 제거

 

이상 현상(Anomaly)

  • 데이터의 중복성으로 인해 릴레이션을 조작할 때 발생하는 비합리적인 현상
  • 종류 : 삽삭갱
    • 입 이상(Insertion Anomaly) : 정보 저장 시 해당 정보의 불필요한 세부정보를 입력해야 하는 경우
    • 제 이상(Deletion Anomaly) : 정보 삭제 시 원치 않는 다른 정보가 같이 삭제되는 경우
    • 신 이상(Update Anomaly) : 중복 데이터 중에서 특정 부분만 수정되어 중복된 값이 모순을 일으키는 경우

 

반 정규화(De-Normalization)

  • 정규화된 엔티티, 속성, 관계에 대해 성능 향상개발 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링 기법
  • 반 정규화 기법
    • 테이블 병합
    • 테이블 분할
      • 수평 분할
      • 수직 분할
    • 중복 테이블 추가
      • 집계 테이블 추가
      • 진행 테이블 추가
      • 특정 부분만을 포함하는 테이블 추가
    • 컬럼 중복화
    • 중복 관계 추가

 

인덱스(Index)

  • 검색 연산의 최적화를 위해 데이터베이스 내 열에 대한 정보를 구성한 데이터 구조

 

인덱스 종류 : 순해비함 단결클

  • 서 인덱스(Ordered Index) : 데이터가 정렬된 순서로 생성되는 인덱스
  • 시 인덱스(Hash Index) : 해시 함수에 의해 직접 데이터에 키 값으로 접근하는 인덱스
  • 트맵 인덱스(Bitmap Index) : 각 컬럼에 적은 개수 값이 저장된 경우 선택하는 인덱스
  • 수기반 인덱스(Functional Index) : 수식이나 함수를 적용하여 만든 인덱스
  • 일 인덱스(Singled Index) : 하나의 컬럼으로만 구성한 인덱스
  • 합 인덱스(Concatenated Index) : 두 개 이상의 컬럼으로 구성한 인덱스
  • 러스터드 인덱스(Clustered Index) : 기본 키(PK) 기준으로 레코드를 묶어서 저장하는 인덱스

 

인덱스 스캔 방식

  • 인덱스 범위 스캔(Index Range Scan)
  • 인덱스 전체 스캔(Index Full Scan)
  • 인덱스 단일 스캔(Index Unique Scan)
  • 인덱스 생략 스캔(Index Skip Scan)

 

파티션(Partition)

  • 파티션의 종류 : 레해리컴라
    • 인지 파티셔닝(Range Partitioning) : 연속적인 숫자나 날짜를 기준으로 하는 파티셔닝 기법
    • 시 파티셔닝(Hash Partitioning) : 파티션 키의 해시 값에 의한 파티셔닝 기법
    • 스트 파티셔닝(List Partitioning) : 특정 파티션에 저장 될 데이터에 대한 명시적 제어가 가능한 파티셔닝 기법
    • 포지트 파티셔닝(Composite Partitioning) : 레인지 파티셔닝, 해시 파티셔닝, 리스트 파티셔닝 중 2개 이상의 파티셔닝을 결합하는 파티셔닝 기법
    • 운드로빈 파티셔닝(Round-Robin Partitioning) : 라운드로빈 분할로 회전하면서 새로운 행이 파티션에 할당되는 방식
  • 파티션의 장점 : 성가백합
    • 능 향상
    • 용성 향상
    • 업 가능
    • 감소

 

데이터베이스(Database)

  • 다수의 인원, 시스템 또는 프로그램이 사용할 목적으로 통합하여 관리되는 데이터 집합
  • 데이터베이스의 정의 : 통저운공
    • 합된 데이터(Integrated Data) : 자료의 중복을 배제한 데이터의 모임
    • 장된 데이터(Stored Data) : 저장 매체에 저장된 데이터
    • 영 데이터(Operational Data) : 조직의 업무를 수행하는 데 필요한 데이터
    • 용 데이터(Stored Data) : 여러 애플리케이션, 시스템들이 공동으로 사용하는 데이터
  • 데이터베이스 특성
    • 실시간 접근성(Real-Time Accessibility)
    • 계속적인 변화(Continuous Evolution)
    • 동시 공용(Concurrent Sharing)
    • 내용 참조(Content Reference)
  • 데이터베이스 종류
    • 파일 시스템(File System)
      • 파일에 이름을 부여하고 저장이나 검색을 위하여 논리저으로 그것들을 어디에 위치시켜야 하는지 드을 정의한 뒤 관리하는 데이터베이스 전 단계의 관리 방식
      • 종류
        • ISAM(Indexed Sequential Access Method) : 자료 내용은 주 저장부, 자료의 색인은 자료가 기록된 위치와 함께 색인부에 기록되는 시스템
        • VSAM(Virtual Storage Access Method) : 대형 운영체제에서 사용되는 파일 관리 시스템
    • 관계형 데이터베이스 관리 시스템(RDBMS; Relational DataBase Management System)
      • 관계형 모델을 기반으로 하는 가장 보편화된 데이터베이스 관리 시스템
    • 계층형 데이터베이스 관리 시스템(HDBMS; Hierarchical DataBase Management System)
      • 데이터를 상하 종속적인 관계로 계층화하여 관리하는 데이터베이스
    • 네트워크 데이터베이스 관리 시스템(NDBMS; Network DataBase Management System)
      • 데이터의 구조를 네트워크상의 망상 형태로 표현한 데이터 모델

 

DBMS(DataBase Management System)

  • 데이터 관리의 복잡성을 해결하는 동시에 데이터 추가, 변경, 검색, 삭제 및 백업, 복구, 보안 등의 기능을 지원하는 소프트웨어
  • 유형 : 키컬도그
    • -값(Key-Value) DBMS
    • 럼 기반 데이터 저장(Column Family Data Store) DBMS
    • 문서 저장(Document Store) DBMS
    • 래프(Graph) DBMS
  • 특징
    • 데이터 무결성
    • 데이터 일관성
    • 데이터 회복성
    • 데이터 보안성
    • 데이터 효율성

 

빅 데이터(Big Data)

  • 시스템, 서비스, 조직(회사) 등에서 주어진 비용, 시간 내에 처리 가능한 데이터 범위를 넘어서는 수십 페타바이트(PB) 크기의 비정형 데이터
  • 빅 데이터 특성
    • 데이터의 양(Volume) (3V)
    • 데이터의 다양성(Variety) (3V)
    • 데이터의 속도(Velocity) (3V)
    • 데이터의 진실성(Veracity) (5V)
    • 데이터의 가치(Value) (5V)
    • 데이터의 정확성(Validity) (7V)
    • 데이터의 휘발성(Volatility) (7V)

 

NoSQL

  • 전통적인 RDBMS와 다른 DBMS를 저장하기 위한 용어로, 데이터 저장에 고정된 테이블 스키마가 필요하지 않고 조인(Join) 연산을 사용할 수 없으며 수평적으로 확장 가능한 DBMS
  • 특성
    • Basically Available
    • Soft-State
    • Eventually Consistency
  • 유형
    • Key-Value Store
    • Column Family Data Store
    • Document Store

 

데이터 마이닝(Data Mining)

  • 대규모로 저장된 데이터 안에서 체계적이고 자동적으로 통계적 규칙이나 패턴을 찾아내는 기술
  • 주요 기법 ; 분연 연데
    • 류 규칙(Classification) : 과거 데이터로부터 특성을 찾아내어 분류모형을 만들어 이를 토대로 새로운 레코드의 결과값을 예측하는 기법
    • 관 규칙(Association) : 데이터 안에 존재하는 항목들 간의 종속 관계를 찾아내는 기법
    • 속 규칙(Sequence) : 연관 규칙에 시간 관련 정보가 포함된 형태의 기법
    • 이터 군집화(Clustering) : 대상 레코드들을 유사한 특성을 지닌 몇 개의 소그룹으로 분할하는 작업

 

관계 대수

  • 관계형 데이터베이스에서 원하는 정보와 그 정보를 어떻게 유도하는가를 기술하는 절차적 정형 언어

 

일반 집합 연산자 : 합교차카

  • 집합(Union) ∪
  • 집합(Intersection) ∩
  • 집합(Difference) -
  • 티션 프로덕트(Cartesian Product) ×

 

순수 관계 연산자 : 셀프조디

  • Select σ
  • Project π
  • Join ▷◁
  • Division ÷

 

 

 

 

 

03. 통합 구현

XML(eXtensible Markup Language)

  • 특수한 목적을 갖는 마크업 언어를 만드는 데 사용되는 다목적 마크업 언어
  • 웹브라우저 간 HTML 문법이 호환되지 않는 문제와 SGML의 복잡함을 해결하기 위하여 개발되었다.
    • SGML(Stand Generalized Markup Language) : 텍스트, 이미지, 오디오 및 비디오 등을 포함하는 멀티미디어 전자문서들을 다른 기종의 시스템들과 정보의 손실 없이 효율적으로 전송, 저장 및 자동 처리하기 위한 언어
  • 사용자가 직접 문서의 태그(Tag)를 정의할 수 있으며, 다른 사용자가 정의한 태그를 사용할 수 있다.
  • 트리 구조로 구성되어 있어 상위 태그는 여러 개의 하위 태그를 가질 수 있다.

 

SOAP(Simple Object Access Protocol)

  • 컴퓨터 네트워크 상에서 HTTP/HTTPS, SMTP 등을 이용하여 XML을 교환하기 위한 통신 규약
  • 웹 서비스에서 사용되는 메시지의 형식과 처리 방법을 지정한다.
  • 기본적으로 HTTP 기반에서 동작하기 때문에 프록시와 방화벽의 영향 없이 통신할 수 있다.
  • 최근에는 무거운 구조의 SOAP 대신, RESTful 프로토콜을 이용하기도 한다.
    • RESTful 프로토콜 : HTTP REST(Representational State Transfer)의 원칙을 사용하여 구현되는 웹 서비스로, HTTP로 자원을 관리하는데 사용되는 웹 서비스 API의 집합

 

WSDL(Web Services Description Language)

  • 웹 서비스와 관련된 서식이나 프로토콜 등을 표준적인 방법으로 기술하고 게시하기 위한 언어
  • XML로 작성되며, UDDI의 기초가 된다.
    • UDDI(Universal Description, Discovery and Integration) : 인터넷에서 전 세계의 비즈니스 업체 목록에 자신의 정보를 등록하기 위한 확장성 생성 언어(XML) 기반의 규격
  • SOAP, XML 스키마와 결합하여 인터넷에서 웹 서비스를 제공하기 위해 사용된다.
  • 클라이언트는 WSDL 파일을 읽어 서버에서 어떠한 조작이 가능한지를 파악할 수 있다.

 

 

 

 

 

04. 서버 프로그램 구현

개발 도구의 분류 : 빌구테형

  • 드 도구 : 작성한 코드의 빌드 및 배포를 수행하는 도구
  • 현 도구 : 개발자의 코드 작성과 디버깅, 수정 등과 같은 작업을 지원하는 도구
  • 스트 도구 : 코드의 기능 검증과 전체의 품질을 높이기 위해 사용하는 도구
  • 상 관리 도구 : 개발자들이 작성한 코드와 리소스 등 산출물에 대한 버전 관리를 위한 도구

 

형상 관리(Configuration Management)

  • 소프트웨어 개발을 위한 전체 과정에서 발생하는 모든 항목의 변경 사항을 관리하기 위한 활동
  • 형상 관리 절차 : 식통감기
    • 형상
    • 형상
    • 형상
    • 형상
  • 소프트웨어 형상 관리 도구 유형
    • 공유 폴더 방식 (RCS, SCCS) : 매일 개발이 완료된 파일은 약속된 위치의 공유 폴더에 복사하는 방식
    • 클라이언트/서버 방식 (CVS, SVN) : 중앙에 버전 관리 시스템을 항시 동작시키는 방식
    • 분산 저장소 방식 (Git 등) : 로컬 저장소와 원격 저장소로 분리되어 분산 저장하는 방식
  • 소프트웨어 형상 관리 도구별 특징
    • CVS(Concurrent Versions System) : 서버와 클라이언트로 구성되어 있고, 다수의 인원이 동시에 범용적인 운영체제로 접근 가능한 형상 관리 도구
    • SVN(Subversion) : 하나의 서버에서 소스를 쉽고 유용하게 관리할 수 있게 도와주는 도구
    • RCS(Revision Control System) : CVS와 달리 소스 파일의 수정을 한 사람만으로 제한하여 다수의 사람이 파일의 수정을 동시에 할 수 없도록 파일 잠금 방식으로 형상을 관리하는 도구
    • Bitkeeper : SVN과 비슷한 중앙 통제 방식으로 대규모 프로젝트에서 빠른 속도를 내도록 개발된 형상 관리 도구
    • Git : Git의 속도에 중점을 둔 분산형 버전 관리 시스템이며, 대형 프로젝트에 효과적이고 유용
    • Clear Case : 복수 서버, 복수 클라이언트 구조이며 서버가 부족할 때 필요한 서버를 하나씩 추가하여 확장성을 기할 수 있음.

 

모듈(Module)

  • 그 자체로 하나의 완전한 기능을 수행할 수 있는 독립된 실체

 

모듈화(Modularity) 

  • 소프트웨어의 성능을 향상시키거나 복잡한 시스템의 수정, 재사용, 유지 관리 등이 용이하도록 기능 단위의 모듈로 분해하는 설계 및 구현 기법
  • 기법
    • 루틴(Routine) : 소프트웨어에서 특정 동작을 수행하는 일련의 코드로 기능을 가진 명령들의 모임
    • 메인 루틴(Main Routine) : 프로그램의 주요한 부분이며, 전체의 개략적인 동작 절차를 표시하도록 만들어진 루틴
    • 서브 루틴(Subroutine) : 메인 루틴에 의해 필요할 때마다 호출되는 루틴

 

응집도(Cohesion)

  • 모듈의 독립성을 나타내는 정도로, 모듈 내부 구성요소 간 연관 정

 

응집도의 유형 : 우논시절 통순기

  • 연적 응집도(Coincidental Cohesion) : 모듈 내부의 각 구성요소가 연관이 없을 경우의 응집도
  • 리적 응집도(Logical Cohesion) : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들이 한 모듈에서 처리되는 경우의 응집도
  • 간적 응집도(Temporal Cohesion) : 연관된 기능이라기보다는 특정 시간에 처리되어야 하는 활동들을 한 모듈에서 처리할 경우의 응집도
  • 차적 응집도(Procedural Cohesion) : 모듈이 다수의 관련 기능을 가질 때 모듈 안의 구성요소들이 그 기능을 순차적으로 수행할 경우의 응집도
  • 신적 응집도(Communication Cohesion) : 동일한 입력과 출력을 사용하여 다른 기능을 수행하는 활동들이 모여 있을 경우의 응집도
  • 차적 응집도(Sequential Cohesion) : 모듈 내에서 한 활동으로부터 나온 출력값을 다른 활동이 사용할 경우의 응집도
  • 능적 응집도(Functional Cohesion) : 모듈 내부의 모든 기능이 단일한 목적을 위해 수행되는 경우의 응집도

밑으로 내려갈수록 응집도가 높아짐. (좋은 품질)

 

결합도(Coupling)

  • 모듈 내부가 아닌 외부의 모듈과의 연관도 또는 모듈 간의 상호의존성
  • 트웨어 구조에서 모듈 간의 관련성을 측정하는 척도

 

결합도의 유형 : 내공 외제 스자

  • 용 결합도(Content Coupling) : 다른 모듈 내부에 있는 변수나 기능을 다른 모듈에서 사용하는 경우의 결합도
  • 통 결합도(Common Coupling) : 파라미터가 아닌 모듈 밖에 선언되어 있는 전역 변수를 참조하고 전역 변수를 갱신하는 식으로 상호 작용하는 경우의 결합도
  • 부 결합도(External Coupling) : 두 개의 모듈이 외부에서 도입된 데이터 포맷, 통신 프로토콜 또는 디바이스 인터페이스를 공유할 경우의 결합도
  • 어 결합도(Control Coupling) : 어떤 모듈이 다른 모듈의 내부 논리 조직을 제어하기 위한 목적으로 제어 신호를 이용하여 통신하는 경우의 결합도
  • 탬프 결합도(Stamp Coupling) : 모듈 간의 인터페이스로 배열이나 객체, 구조 등이 전달되는 경우의 결합도
  • 료 결합도(Data Coupling) : 모듈 간의 인터페이스로 전달되는 파라미터를 통해서만 모듈 간의 상호 작용이 일어난 경우의 결합도

밑으로 내려갈수록 결합도가 낮아짐. (좋은 품질)

 

팬인(Fan-In) / 팬아웃(Fan-Out)

  • 팬인(Fan-In) : 어떤 모듈을 제어(호출)하는 모듈의 수
  • 펜아웃(Fan-Out) : 어떤 모듈에 의해 제어(호출)되는 모듈의 수

 

공통 모듈 테스트

  • 화이트박스 테스트 : 응용 프로그램 내부 구조와 동작을 검사하는 소프트웨어 테스트 방식
  • 메서드 기반 테스트 : 공통 모듈의 외부에 공개된 메서드 기반의 테스트
  • 화면 기반 테스트 : 사용자용 화면이 있는 경우, 각각의 화면 단위로 단위 모듈을 개발 후에 화면에 직접 데이터를 입력하여 테스트를 수행
  • 테스트 드라이버(Driver) / 테스트 스텁(Stub) 활용 테스트 : 기능을 테스트할 수 있는 화면 또는 하위 모듈이 구현되지 않은 경우 테스트 드라이버, 테스트 스텁을 통해 테스트 수행

 

배치 프로그램(Batch Program)

  • 사용자와의 상호 작용 없이 일련의 작업들을 작업 단위로 묶어 정기적으로 반복 수행하거나 정해진 규칙에 따라 일괄 처리하는 방식

 

배치 프로그램의 유형 : 이온정

  • 벤트 배치 : 사전에 정의해 둔 조건 충족 시 자동으로 실행
  • 디맨드 배치 : 사용자의 명시적 요구가 있을 때마다 실행
  • 기 배치 : 정해진 시점(주로 야간)정기적으로 실행

 

배치 스케줄러(Batch Scheduler)

  • 일괄 처리(Batch Processing)를 위해 주기적으로 발생하거나 반복적으로 발생하는 작업을 지원하는 도구
  • 종류
    • 스프링 배치(Spring Batch) : 스프링 프레임워크의 DI, AOP, 서비스 추상화 등 스프링 프레임워크의 3대 요소를 모두 사용할 수 있는 대용량 처리를 제공하는 스케줄러 배치 애플리케이션
    • 쿼츠 스케줄러(Quartz Scheduler) : 스프링 프레임워크에 플러그인되어 수행하는 작업(Job)과 실행 스케줄을 정의하는 트리거를 분리하여 유연성을 제공하는 오픈 소스 기반 스케줄러

 

Cron 표현식 : 초분시일 월요연

  • 초 / 분 / 시 / 일 / 월 / 요 / 연
    • 은 1~12로 표기
    • 요일은 0: 일요일, 6: 토요일

 

 

 

 

 

05. 인터페이스 구현

인터페이스 명세서

  • 데이터의 송수신 시스템 간의 데이터 저장과 속성 등의 상세 내역을 포함한다.

 

인터페이스 명세서 주요 항목 : 인최 크시데

  • 터페이스 ID
  • 대 처리 횟수
  • 데이터 기(평균/최대)
  • 스템 정보
  • 이터 정보

 

상세 기능별 인터페이스 명세서 주요 항목 : 아명오개 전후파반

  • 인터페이스 ID
  • 인터페이스
  • 퍼레이션명
  • 오퍼레이션
  • 조건
  • 조건
  • 라미터
  • 환 값

 

EAI(Enterprise Application Intergation)

  • 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션 간의 정보를 전달, 연계, 통합이 가능하도록 해주는 솔루션
  • EAI 구축 유형 : 포허 메하
    • 인트 투 포인트(Point-to-Point) : 가장 기초적인 애플리케이션 통합 방법으로 1:1 단순 통합 방법
    • 브 앤 스포크(Hub & Spoke) : 단일한 접점의 허브 시스템을 통하여 데이터를 전송하는 중앙 집중식 방식
    • 시지 버스(Message Bus) : 애플리케이션 사이 미들웨어(버스)를 두어 연계하는 미들웨어 통합 방식
    • 이브리드(Hybrid) : 그룹 내부는 허브 앤 스포크 방식을 사용하고, 그룹 간에는 메시지 버스 방식을 사용하는 통합 방식

 

ESB(Enterprise Service Bus)

  • 기업에서 운영되는 서로 다른 플랫폼 및 애플리케이션들 간을 하나의 시스템으로 관리 운영할 수 있도록 서비스 중심의 통합을 지향하는 아키텍처
  • 버스를 중심으로 각각 프로토콜이 호환할 수 있도록 애플리케이션의 통합을 느슨한 결합 방식으로 지원한다.

 

JSON(JavaScript Object Notation)

  • 속성-값 쌍(Attribute-Value Pair) 또는 "키-값 쌍"으로 이루어진 데이터 오브제트를 전달하기 위해 인간이 읽을 수 있는 텍스트를 사용하는 개방형 표준 포맷
  • AJAX(Asynchronous JavaScript and XML)에서 많이 사용되고 XML(eXtensible Markup Language)을 대체하는 주요 데이터 포멧

 

XML(eXtensible Markup Language)

  • HTML의 단점을 보완한 인터넷 언어로, SGML의 복잡한 단점을 개선한 특수한 목적을 갖는 마크업 언어
  • 송수신 시스템 간 데이터 연계의 편의성을 위해서 전송되는 데이터 구조를 동일한 형태로 정의한다
  • 사용자가 직접 문서의 태그를 정의할 수 있다.

 

AJAX(Asynchronous Javascript And XML)

  • 자바스크립트를 사용하여 웹 서버와 클라이언트 간 비동기적으로 XML 데이터를 교환하고 조작하기 위한 웹 기술
  • 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용해서 전체 페이지를 새로 로드하지 않고 필요한 일부 페이지의 데이터만을 로드하는 기법
  • AJAX의 주요 기술
    • XMLHttpRequest
      • 웹 브라우저와 웹 서버 간에 메서드가 데이터를 전송하는 객체 폼의 API
      • 비동기 통신을 담당하는 자바스크립트 객체
    • JavaScript
    • XML(eXtensible Markup Language)
    • DOM(Document Object Model)
    • XSLT(eXtensible Stylesheet Language Transformatons)
      • XML 문서를 다른 XML 문서로 변환하는 데 사용하는 XML 언어
      • W3C에서 제정한 표준으로 XML 변환 언어를 사용하여 XML 문서로 바꿔주며, 탐색하기 위해 XPath를 사용
    • HTML(HyperText Markup Language)
    • CSS(Cascading Style Sheets)

 

REST(Representational State Transfer)

  • 웹과 같은 분산 하이퍼미디어 환경에서 자원의 존재/상태 정보를 표준화된 HTTP 메서드로 주고받는 웹 아키텍처
  • 웹의 창시자(HTTP) 중 한 사람인 Roy Fielding의 2000년 논문에 의해서 소개되었다.
  • 크게 리소스(자원), 메서드(처리), 메시지 3가지 요소로 구성된다.

 

시큐어 코딩 가이드 적용 대상 : 입보시 에코캡아

  • 력 데이터 검증 및 표현
  • 안 기능
  • 간 및 상태
  • 러 처리
  • 드 오류
  • 슐화
  • API 오용

 

데이터베이스 암호화 알고리즘 유형 : 대비해

  • 칭 키 암호화 알고리즘
    • 암복호화에 같은 암호 키를 쓰는 알고리즘
    • 예) ARIA 128/192/256, SEED
  • 대칭 키 암호화 알고리즘
    • 공개키는 누구나 알 수 있지만, 그에 대응하는 비밀키는 키의 소유자만이 알 수 있도록, 공개키와 비밀키를 사용하는 알고리즘
    • 예) RSA, ECC, ECDSA
  • 시 암호화 알고리즘
    • 해시값으로 원래 입력값을 찾아낼 수 없는 일방향성의 특성을 가진 알고리즘
    • 예) SHA-256/384/512, HAS-160

 

데이터베이스 암호화 기법 : 애플티하

  • API 방식 : 애플리케이션 레벨에서 암호 모듈(API)을 적용하는 애플리케이션 수정 방식
  • Plug-In 방식 : 암복호화 모듈이 DB 서버에 설치된 방식
  • TDE 방식 : DB 서버의 DBMS 커널이 자체적으로 암복호화 기능을 수행하는 방식
  • Hybrid 방식 : API 방식과 Plug-In 방식을 결합하는 방식

 

IPSec(IP Security)

  • IP 계층(3계층)에서 무결성과 인증을 보장하는 인증 헤더(AH)와 기밀성을 보장하는 암호화(ESP)를 이용하여 양 종단 간(End Point) 구간에 보안 서비스를 제공하는 터널링 프로토콜
  • 동작 모드 : 전송(Transport) 모드, 터널(Tunnel) 모드
  • 주요 프로토콜 : AH, ESP, IKE(키 교환)
  • IPSec 정책 : SPD, SAD

 

SSL/TLS

  • 전송 계층(4계층)과 응용 계층(7계층) 사이에서 클라이언트와 서버 간의 웹 데이터 암호화(기밀성), 상호 인증 및 전송 시 데이터 무결성을 보장하는 보안 프로토콜
  • 인증 모드 : 익명 모드, 서버 인증 모드, 클라이언트-서버 인증 모드
  • 다양한 암호 기술 적용
  • Https://~ 표시 형식과 443 포트 사용

 

S-HTTP(Secure HyperText Transfer Protocol)

  • 웹 상에서 네트워크 트래픽을 암호화하는 주요 방법 중 하나로서 클라이언트와 서버 간에 전송되는 모든 메시지를 각각 암호화하여 전송
  • S-HTTP 서버 접속 시 shttp:// URL 사용

 

인터페이스 구현 검증 도구 : 엑스피 엔셀웨

  • xUnit : Java(Junit), C++(Cppunit) .NET(Nunit) 등 다양한 언어를 지원하는 단위 테스트 프레임워크
  • STAF : 서비스 호출 및 컴포넌트 재사용 등 다양한 환경을 지원하는 테스트 프레임워크
  • FitNesse : 웹 기반 테스트 케이스 설계, 실행, 결과 확인 등을 지원하는 테스트 프레임워크
  • NTAF : FitNesse의 장점인 협업기능과 STAF의 장점인 재사용 및 확장성을 통합한 NHN(Naver)의 테스트 자동화 프레임워크
  • Selenium : 다양한 브라우저 및 개발 언어를 지원하는 애플리케이션 테스트 프레임워크
  • watir : Ruby를 사용하는 애플리케이션 테스트 프레임워크

 

 

 

 

 

06. 화면 설계

사용자 인터페이스(UI; User Interface)

  • 사용자와 시스템 사이에서 의사소통할 수 있도록 고안된 물리적, 가상의 매개체 (넓은 의미)
  • 정보 기기나 소프트웨어의 화면 등에서 사람이 접하게 되는 화면 (좁은 의미)

 

UI 유형 : CG NO

  • CLI(Command Line Interface) : 명령어를 텍스트로 입력하여 조작하는 사용자 인터페이스
  • GUI(Graphical User Interface) : 그래픽 환경을 기반으로 한 마우스나 전자펜을 이용하는 사용자 인터페이스
  • NUI(Natural User Interface) : 키보드나 마우스 없이 신체 부위를 이용하는 사용자 인터페이스
  • OUI(Organic User Interface) : 현실에 존재하는 모든 사물이 입출력장치로 변화할 수 있는 인터페이스

 

UI 설계 원칙 : 직유학유

  • 관성(Intuitiveness) : 누구나 쉽게 이해하고, 쉽게 사용할 수 있어야 함.
  • 효성(Efficiency) : 정확하고 완벽하게 사용자의 목표가 달성될 수 있도록 제작
  • 습성(Learnability) : 초보와 숙련자 모두가 쉽게 배우고 사용할 수 있게 제작
  • 연성(Flexibility) : 사용자의 요구사항을 최대한 수용하고 실수를 방지할 수 있도록 제작

 

UI 설계 지침 : 사일단결 가표접명오

  • 용자 중심 : 사용자가 이해하기 쉽고 편하게 사용할 수 있는 환경을 제공하며, 실사용자에 대한 이해가 바탕이 되어야 함.
  • 관성  : 버튼이나 조작 방법을 사용자가 기억하기 쉽고 빠르게 습득할 수 있도록 설계해야 함.
  • 순성 : 조작 방법은 가장 간단하게 작동되도록 하여 인지적 부담 최소화
  • 과 예측 가능 : 작동시킬 기능만 보고도 결과 예측이 가능해야 함.
  • 시성 : 주요 기능을 메인 화면에 노출하여 쉬운 조작이 가능해야 함.
  • 준화 : 디자인을 표준화하여 기능구조의 선행 학습 이후 쉽게 사용 가능해야 함.
  • 근성 : 사용자의 직무, 연령, 성별 등이 고려된 다양한 계층을 수용해야 함.
  • 확성 : 사용자가 개념적으로 쉽게 인지해야 함.
  • 류 발생 해결 : 사용자가 오류에 대한 상황을 정확하게 인지할 수 있어야 함.

 

UI 요구사항

  • 사용자가 정보시스템을 구축하여 얻고자 하는 최종 목적의 기준
  • 구분
    • 기능적 요구사항 : 시스템이 제공하는 기능, 서비스에 대한 요구사항
    • 비기능적 요구사항 : 사용성, 효율성, 신뢰성, 유지보수성, 재사용성 등 품질에 관한 요구사항

 

UI 품질 요구사항 : 기신사효유이

  • 능성(Functionality)
    • 실제 수행 결과와 품질 요구사항과의 차이를 분석하고, 실제 사용 시 정확하지 않은 결과가 발생할 확률과 관련한여 시스템의 동작을 관찰하기 위한 품질 기준
    • 상세 품질 요구사항
      • 적절성(Suitability)
      • 정밀성(Accuracy)
      • 상호 운용성(Interoperability)
      • 보안성(Security)
      • 호환성(Compliance)
    • 뢰성(Reliability)
      • 시스템이 일정한 시간 또는 작동되는 시간 동안 의도하는 기능을 수행함을 보증하는 품질 기준
      • 상세 품질 요구사항
        • 성숙성(Maturity)
        • 고장 허용성(Fault Tolerance)
        • 회복성(Recoverability)
    • 용성(Usability)
      • 사용자와 컴퓨터 사이에 발생하는 어떠한 행위를 정확하고 쉽게 인지할 수 있는 품질 기준
      • 상세 품질 요구사항
        • 이해성(Understandability)
        • 학습성(Learnability)
        • 운용성(Operability)
    • 율성(Efficiency)
      • 할당된 시간에 한정된 자원으로 얼마나 빨리 처리할 수 있는가에 대한 품질 기준
      • 상세 품질 요구사항
        • 시간 효율성(Time Behaviour)
        • 자원 효율성(Resource Behaviour)
    • 지보수성(Maintainability)
      • 요구사항을 개선하고 확장하는 데 있어 얼마나 용이한가에 대한 품질 기준
      • 상세 품질 요구사항
        • 분석성(Analyzability)
        • 변경성(Changeability)
        • 안정성(Stability)
        • 시험성(Testability)
    • 식성(Portability)
      • 다른 플랫폼(운영체제)에서도 많은 추가 작업 없이 얼마나 쉽게 적용이 가능한가에 대한 품질 기준
      • 상세 품질 요구사항
        • 적용성(Adaptability)
        • 설치성(Installability)
        • 대체성(Replaceability)

 

UI 표준

  • 디자인 철학과 원칙 기반하에 전체 시스템에 공통으로 적용되는 화면 간 이동, 화면 구성 등에 관한 규약
  • UI 표준 구성 : 액정 스패조
    • 전체적인 UX 원칙
    • 책 및 철학
    • UI 타일 가이드
    • UI 턴 모델 정의
    • UI 표준 수립을 위한 직 구성

 

UI 개발을 위한 주요 기법

  • 3C 분석 : 고객(Customer), 경쟁하고 있는 자사(Company)경쟁사(Competitor)를 비교하고 분석하여 자사를 어떻게 차별화해서 경쟁에서 이길 것인가를 분석하는 기법
  • SWOT 분석 : 기업의 내부 환경과 외부 환경을 분석하여 Strength(강점), Weakness(약점), Opportunity(기회), Threat(위협) 요인을 규정하고 이를 토대로 경영 전략을 수립하는 방법
  • 시나리오 플래닝(Scenario Planning) : 불확실성이 높은 상호아 변화를 사전에 예측하고 다양한 시나리오를 설계하는 방법
  • 사용성 테스트(Usability Test) : 사용자가 직접 제품을 사용하면서 미리 작성된 시나리오에 맞추어 과제를 수행한 후 질문에 답하도록 하는 테스트
  • 워크숍(Workshop) : 소집단 정도의 인원으로 특정 문제나 과제에 대한 새로운 지식, 기술, 아이디어, 방법들을 서로 교환하고 검토하는 연구회 및 세미나

 

UI 화면 설계 구분 : 와스프

  • 이어프레임(Wireframe) : 이해 관계자들과의 화면구성을 협의하거나 서비스의 간략한 흐름을 공유하기 위해 화면 단위의 레이아웃을 설계하는 작업
  • 토리보드(Storyboard) : 정책, 프로세스, 콘텐츠 구성, 와이어프레임(UI, UX), 기능 정의, 데이터베이스 연동 등 서비스 구축을 위한 모든 정보가 담겨 있는 설계 산출물
  • 로토타입(Prototype) : 정적인 화면으로 설계된 와이어프레임 또는 스토리보드에 동적 효과를 적용하여 실제 구현된 것처럼 시뮬레이션 할 수 있는 모형
    • 유형 
      • 아날로그 프로토타입 : 종이와 펜을 활용하여 화면의 구조를 스케치하는 프로토타입
      • 디지털 프로토타입 : 디지털 편집기, HTML 등의 프로토타이핑 도구를 사용해 화면의 구조를 만드는 프로토타입

 

UML(Unified Modeling Language)

  • 객체 지향 소프트웨어 개발 과정에서 산출물을 명세화, 시각화, 문서화할 때 사용되는 모델링 기술과 방법론을 통합해서 만든 표준화된 범용 모델링 언어

 

UML의 특징 : 가구명문

  • 시화 언어 : 개념 모델 작성 시 오류가 적고 의사소통이 용이
  • 축 언어 : 다양한 프로그래밍 언어로 실행 시스템의 예측 가능
  • 세화 언어 : 정확한 모델 제시, 완전한 모델 작성 가능
  • 서화 언어 : 시스템에 대한 평가 및 의사소통의 문서

 

UML의 구성요소 : 사관다

  • 물(Things) : 추상적인 개념으로 주제를 나타내는 요소
  • 계(Relationships) : 사물의 의미를 확장하고 명확히 하는 요소
  • 이어그램(Diagram) : 사물과 관계를 모아 그림으로 표현한 형태

 

UML 다이어그램

  • 구조적 다이어그램(Structural Diagram) / 정적 다이어그램(Static Diagram) : 클객 컴배 복패
    • 래스(Class) : 객체 지향 모델링 시 클래스의 속성 및 연산과 클래스 간 정적인 관계를 표현
    • 체(Object) : 클래스에 속한 사물(객체)들, 즉 인스턴스(Instance)를 특정 시점의 객체와 객체 사이의 관계로 표현
    • 포넌트(Component) : 시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존 관계를 표현
    • 치(Deployment) : 컴포넌트 사이의 종속성을 표현하고, 결과물, 프로세스, 컴포넌트 등 물리적 요소들의 위치를 표현
    • 합체 구조(Composite Structure) : 클래스나 컴포넌트가 복합 구조를 갖는 경우 그 내부 구조를 표현
    • 키지(Package) : 유스케이스나 클래스 등의 모델 요소들을 그룹화한 패키지들의 관계를 표현
  • 행위적 다이어그램(Behavioral Diagram) / 동적 다이어그램(Dynamic Diagram) : 유시커 상활타
    • 스케이스(Usecase) : 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현
    • 퀀스(Sequence) : 객체 간 동적 상호 작용을 시간적 개념을 중심으로 메시지 흐름으로 표현
    • 뮤니케이션(Communication) : 동작에 참여하는 객체들이 주고받는 메시지를 표현하고, 메시지뿐만 아니라 객체 간의 연관까지 표현
    • 태(State) : 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지 표현
    • 동(Activity) : 시스템이 어떤 기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름순서대로 표현
    • 이밍(Timing) : 객체 상태 변화와 시간 제약을 명시적으로 표현

 

UML 스테레오 타입(Sterotype)

  • <<include>> : 하나의 유스케이스가 어떤 시점에 반드시 다른 유스케이스를 실행하는 포함 관계
  • <<extend>> : 하나의 유스케이스가 어떤 시점에 다른 유스케이스를 실행할 수도 있고, 그렇지 않을 수도 있는 확장 관계
  • <<interface>> : 모든 메서드가 추상 메서드이며 바로 인스턴스를 만들 수 없는 클래스로 추상 메서드와 상수만으로 구성된 클래스
  • <<entity>> : 일반적으로 정보 또는 오래 지속되는 연관된 행위를 형상화하는 클래스로 유스케이스 처리 흐름이 수행되는 과정에서 기억 장치에 저장되어야 할 정보를 표현하는 클래스
  • <<boundary>> : 시스템과 외부 액터와의 상호 작용을 담당하는 클래스
  • <<control>> : 시스템이 제공하는 기능의 로직 및 제어를 담당하는 클래스

 

클래스 다이어그램

  • 객체 지향 모델링 시 클래스의 속성 및 연산과 클래스 간 정적인 관계를 표현한 다이어그램

 

클래스 다이어그램 구성요소

  • 클래스(Class) : 공통의 속성, 연산(메서드), 관계, 의미를 공유하는 객체들의 집합
  • 속성(Attribute) : 클래스의 구조적 특성에 이름을 붙인 것
  • 연산(Operation), 메서드(Method) : 클래스의 행위적 특징
  • 접근 제어자(Access Modifier)
    • - : 클래스 내부 접근만 허용 (private)
    • + : 클래스 외부 접근을 허용 (public)
    • # : 동일 패키지/파생 클래스에서 접근 가능 (protected)
    • ~ : 동일 패키지 클래스에서 접근 가능 (default)

 

클래스 간의 관계 : 연의 일실 포집

  • 관(Association) 관계 : 클래스가 서로 개념적으로 연결된 선
  • 존(Dependency) 관계 : 하나의 클래스가 또 다른 클래스를 사용하는 관계
  • 반화(Generalization) 관계 : 하나의 사물이 다른 사물에 비해 더 일반적인지 구체적인지를 표현
  • 체화(Realization) 관계 : 추상 클래스나 인터페이스를 상속받아 자식 클래스가 추상 메서드를 구현할 때 사용
  • 함(Composition) 관계 : 영구적이고 집합 관계보다 더 강한 관계로 구성
  • 합(Aggregation) 관계 : 하나의 객체에 여러 개의 독립적인 객체들이 구성되는 단계

 

유스케이스 다이어그램(Usecase Diagram)

  • 시스템이 제공하고 있는 기능 및 그와 관련된 외부 요소를 사용자의 관점에서 표현하는 다이어그램

 

유스케이스 다이어그램 구성요소

  • 유스케이스(Usecase) : 시스템이 제공해야 하는 서비스, 기능
  • 액터(Actor) : 용자가 시스템에 대해 수행하는 역할
  • 시스템(System)
  • 시나리오(Scenario)
  • 이벤트의 흐름

 

유스케이스 다이어그램의 관계

  • 포함(Include) 관계
  • 확장(Extend) 관계
  • 일반화(Generalization) 관계

 

시퀀스 다이어그램(Sequence Diagram)

  • 객체 간 상호 작용을 메시지 흐름으로 표현한 다이어그램

 

시퀀스 다이어그램 구성요소

  • 객체(Object)
  • 생명선(Lifeline)
  • 실행(Activation)
  • 메시지(Message)

 

패키지 다이어그램(Package Diagram)

  • 시스템의 서로 다른 패키지들 사이의 의존 관계를 표현하기 위한 다이어그램

 

패키지 다이어그램 구성요소

  • 패키지
  • 의존관계

 

활동 다이어그램(Activity Diagram)

  • 시스템이 어떤 기능을 수행하는지를 객체의 처리 로직이나 조건에 따른 처리의 흐름을 순서대로 표현하는 다이어그램

 

활동 다이어그램 구성요소

  • 시작점(Initial Node)
  • 전이(Transition)
  • 액션(Action) / 액티비티(Activity)
  • 종료점(Final Node)
  • 조건(판단) 노드(Decision Node)
  • 병합 노드(Merge Node)
  • 포크 노드(Fork Node)
  • 조인 노드(Join Node)
  • 구획면(Swim Lane)

 

상태 다이어그램(State Diagram)

  • 하나의 객체가 자신이 속한 클래스의 상태 변화 혹은 다른 객체와의 상호 작용에 따라 상태가 어떻게 변화하는지 표현하는 다이어그램

 

상태 다이어그램 구성요소

  • 상태(State)
  • 시작 상태
  • 종료 상태
  • 전이
  • 이벤트(Event)
  • 전이 조건

 

커뮤니케이션 다이어그램(Communication Diagram)

  • 시퀀스 다이어그램과 같이 동작에 참여하는 객체들이 주고받는 메시지를 표현하고, 메시지뿐만 아니라 객체 간의 연관 관계까지 표현하는 다이어그램

 

커뮤니케이션 다이어그램 구성요소

  • 액터(Actor)
  • 객체(Object)
  • 링크(Link)
  • 메시지(Message)

 

컴포넌트 다이어그램(Component Diagram)

  • 시스템을 구성하는 물리적인 컴포넌트와 그들 사이의 의존 관계를 나타내는 다이어그램

 

컴포넌트 다이어그램 구성요소

  • 컴포넌트
  • 인터페이스
  • 의존 관계

 

UI 시나리오 문서의 작성 요건 : 완일이가 추수

  • 전성(Complete) : UI 시나리오는 누락이 없어야 하고, 최대한 빠짐없이 가능한 한 상세하게 기술 
  • 관성(Consistent) : 서비스에 대한 목표, 시스템 및 사용자의 요구사항에 일관성이 있어야 하고, 모든 문서의 UI 스타일을 일관적으로 구성
  • 해성(Understandable) : 처음 접하는 사람도 이해하기 쉽도록 구성하고 설명해야 하고, 이해하지 못하는 추상적인 표현이나 이해하기 어려운 용어는 사용하지 않아야 함.
  • 독성(Readable) : 문서를 쉽게 읽을 수 있어야 하고, 표준화도니 템플릿을 작성하요 사용
  • 적 용이성(Traceable) : 쉽게 추적이 가능해야 하고, 변경 사항들이 언제, 어디서, 어떤 부분들이 왜 발생하였는지 추적이 쉬워야 함.
  • 정 용이성(Modifiable) : 쉽게 변경이 가능해야 하고, 수정 또는 개선 사항을 시나리오에 반영하는 데 있어 쉽게 적용할 수 있어야 함.

 

 

 

 

 

07. 프로그래밍 언어 활용

객체 지향 프로그래밍의 구성 요소 : 객클메

  • 체(Object) : 개체, 속성, 메서드로 구성된 클래스의 인스턴스
  • 래스(Class) : 객체 지향 프로그래밍에서 객체를 표현하는 추상 데이터 타입으로 객체를 생성하는 틀
  • 시지(Message) : 객체 간의 통신

 

객체의 구성 요소 : 개속메

  • 체(Entity) : 현실 세계에 보이는 본질을 의미
  • 성(Attribute) : 자료 저장소 역할을 하며, 절차 지향 프로그래밍의 변수와 대응
  • 서드(Method) : 호출 단위를 의미하며, 절차 지향 프로그래밍의 함수와 대응

 

라이브러리(Library)

  • 필요할 때 찾아서 쓸 수 있도록 모듈화되어 제공되는 프로그램
  • 구성 : 도설샘
    • 움말
    • 치 파일
    • 플 코드
  • 종류
    • 표준 라이브러리
    • 외부 라이브러리

 

 

 

 

 

08. SQL 응용

트랜잭션(Transaction)

  • 인가받지 않은 사용자로부터 데이터를 보장하기 위해 DBMS가 가져야 하는 특성
  • 데이터베이스 시스템에서 하나의 논리적 기능을 정상적으로 수행하기 위한 작업의 기본 단위

 

 트랜잭션의 특성 : ACID

  • 원자성(Atomicity) : 트랜잭션의 연산은 데이터베이스에 모두 반영되도록 완료(Commit)되든지 아니면 전혀 반영되지 않도록 복구(Rollback) 되어야 한다.
  • 일관성(Consistency) : 트랜잭션이 그 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 변환된다.
  • 독립성(Isolation) : 둘 이상의 트랜잭션이 동시에 병행 실행되는 경우, 어느 하나의 트랜잭션 실행 중에 다른 트랜잭션의 연산이 끼어들 수 없음.
  • 지속성(Durability) : 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.

 

트랜잭션의 상태 : 활부완실철

  • 동(Active) : 초기 상태, 트랜잭션이 실행 중일 때 가지는 상태
  • 분 완료(Partially Commited) : 마지막 명령문이 실행된 후에 가지는 상태
  • 료(Committed) : 트랜잭션이 성공적으로 완료된 후 가지는 상태
  • 패(Failed) : 정상적인 실행이 더 이상 진행될 수 없을 때 가지는 상태
  • 회(Aborted) : 트랜잭션이 취소되고 데이터베이스가 트랜잭션 시작 전 상태로 환원된 상태

 

병행 제어(Concurrency Control)

  • 다수 사용자 환경에서 여러 트랜잭션이 수행할 때, 데이터베이스 일관성 유지를 위해 상호 작용을 제어하는 기법

 

병행 제어의 목적

  • 데이터베이스 공유 최대화
  • 시스템의 활용도 최대화
  • 데이터베이스의 일관성 유지
  • 사용자에 대한 응답 시간 최소화

 

 

병행 제어 미보장 시 문제점 : 갱현모연

  • 신 손실(Lost Update) : 먼저 실행된 트랜잭션의 결과를 나중에 실행된 트랜잭션이 덮어쓸 때 발생하는 오류
  • 황 파악 오류(Dirty Read) : 트랜잭션의 중간 수행 결과를 다른 트랜잭션이 참조하여 발생하는 오류
  • 순성(Inconsistency) : 두 트랜잭션이 동시에 실행되어 데이터베이스의 일관성이 결여되는 오류
  • 쇄복귀(Cascading Rollback) : 복수의 트랜잭션이 데이터 공유 시 특정 트랜잭션이 처리를 취소할 경우 트랜잭션이 처리한 곳의 부분을 취소하지 못하는 오류

 

병행 제어 기법의 종류 : 로 낙타다

  • 킹(Locking) : 같은 자원을 액세스하는 다중 트랜잭션 환경에서 DB의 일관성과 무결성을 유지하기 위해 트랜잭션의 순차적 진행을 보장하는 직렬화 기법
  • 관적 검증(Optimistic Validation) : 트랜잭션이 어떠한 검증도 수행하지 않고 일단 트랜잭션을 수행하고, 트랜잭션 종료 시 검증을 수행하여 데이터베이스에 반영하는 기법
  • 임 스탬프 순서(Time Stamp Ordering) : 트랜잭션과 트랜잭션이 읽거나 갱신한 데이터에 대해 트랜잭션이 실행을 시작하기 전에 타임 스탬프(Time Stamp)를 부여하여 부여된 시간에 따라 트랜잭션 작업을 수행하는 기법
  • 중버전 동시성 제어(MVCC; Multi Version Concurrency Control) : 트랜잭션의 타임스탬프와 접근하려는 데이터의 타임 스탬프를 비교하여 직렬 가능성이 보장되는 적절한 버전을 선택하여 접근하도록 하는 기법

 

회복 기법(Recovery)

  • 트랜잭션을 수행하는 도중 장애로 인해 손상된 데이터베이스를 손상되기 이전의 정상적인 상태로 복구시키는 작업

 

회복 기법의 종류 : 회로체크

  • 그 기반 회복 기법(Log Based Recovery)
    • 지연 갱신 회복 기법(Deferred Update) : 트랜잭션이 완료되기 전까지 데이터베이스에 기록하지 않는 기법
    • 즉각 갱신 회복 기법(Immediate Update) : 트랜잭션 수행 중 갱신 결과를 바로 DB에 반영하는 기법
  • 크 포인트 회복 기법(Checkpoint Recovery) : 장애 발생 시 검사점 이후에 처리된 트랜잭션에 대해서만 장애 발생 이전 상태로 복원시키는 회복 기법
  • 림자 페이징 회복 기법(Shadow Paging Recovery) : 데이터베이스 트랜잭션 수행 시 복제본을 생성하여 데이터베이스 장애 시 이를 이용해 복구하는 기법

 

옵티마이저(Optimizer)

  • SQL을 가장 빠르고 효율적으로 수행할 최적의 처리 경로를 생성해주는 DBMS 내부의 핵심 엔진

 

옵티마이저의 유형

  • RBO(Rule Based Optimizer) : 통계 정보가 없는 상태에서 사전 등록된 규칙에 따라 질의 실행 계획을 선택하는 옵티마이저 (규칙(우선순위) 기반)
  • CBO(Cost Based Optimizer) : 통계 정보로부터 모든 접근 경로를 고려한 질의 실행 계획을 선택하는 옵티마이저 (비용 기반)

 

SQL 수행과정 내 옵티마이저 역할

  • 쿼리 변환(Query Transform) : SQL을 좀 더 일반적이고 표준화된 형태로 변환
  • 비용 산정(Estimator) : 쿼리 명령어 각 단계의 선택도, 카디널리티 ,비용을 계산
  • 계획 생성(Plan Generator) : 하나의 쿼리를 수행 시 후보군이 될 만한 실행 계획들을 생성해내는 역할

 


DDL(Data Define Language, 데이터 정의어)

  • DDL의 종류에는 CREATE, ALTER, DROP, TRUNCATE(크알드트)가 있다.

 

CREATE 문
  • 도메인, 스키마, 테이블, 뷰, 인덱스 등을 정의한다.
    • 도스테뷰인
/* 스키마 생성 */
CREATE SCHEMA 스키마명 AUTHORIZATION 사용자_id;

/* 도메인 생성 */
CREATE DOMAIN 도메인명 [AS] 데이터_타입 
       [DEFAULT 기본값] 
       [CONSTRAINT 제약조건명 CHECK (범위값)];
       
/* 테이블 생성 */
CREATE TABLE 테이블명
       (속성명 데이터_타입 [DEFAULT 기본값] [NOT NULL], ...
       [, PRIMARY KEY(기본키_속성명, ...)]
       [, UNIQUE(대체키_속성명, ...)]
       [, FOREIGN KEY(외래키_속성명, ...)]
               [REFERENCES 참조테이블(기본키_속성명, ...)]
               [ON DELETE 옵션]
               [ON UPDATE 옵션]
       [, CONSTRAINT 제약조건명] [CHECK(조건식)]);
       
/* 뷰 생성 */
CREATE VIEW 뷰명[(속성명[, 속성명, ...])]
AS SELECT문;

/* 인덱스 생성 */
CREATE [UNIQUE] INDEX 인덱스명
ON 테이블명(속성명 [ASC | DESC] [, 속성명 [ASC | DESC]])
[CLUSTER];

 

ALTER 문
  • 테이블에 대한 정의를 변경한다.
ALTER TABLE 테이블명 ADD 속성명 데이터_타입 [DEFAULT '기본값'];  /* 새로운 속성(열) 추가 */
ALTER TABLE 테이블명 ALTER 속성명 [SET DEFAULT '기본값'];      /* 특정 속성의 Default 값 변경 */
ALTER TABLE 테이블명 DROP COLUMN 속성명 [CASCADE];            /* 특정 속성 삭제 */

 

DROP 문
  • 스키마, 도메인, 기본 테이블, 뷰 테이블, 인덱스, 계약 조건 등을 제거한다.
DROP SCHEMA 스키마명 [CASCADE | RESTRICT];     /* 스키마 제거 */
DROP DOMAIN 도메인명 [CASCADE | RESTRICT];     /* 도메인 제거 */
DROP TABLE 테이블명 [CASCADE | RESTRICT];      /* 테이블 제거 */
DROP VIEW 뷰명 [CASCADE | RESTRICT];          /* 뷰 제거 */
DROP INDEX 인덱스명 [CASCADE | RESTRICT];      /* 인덱스 제거 */
DROP CONSTRAINT 제약조건명;                    /* 제약조건 제거 */
  • CASCADE : 제거할 요소를 참조하는 다른 모든 개체를 함께 제거한다.
  • RESTRICT : 다른 개체가 제거할 요소를 참조 중 일때는 제거를 취소한다.

 

TRUNCATE 문
  • 테이블에서 모든 행을 삭제한다.
TRUNCATE [TABLE] 테이블명 [, 테이블명]

 

DCL(Data Control Language, 데이터 제어어)

  • DCL의 종류에는 COMMIT, ROLLBACK, GRANT, REVOKE(커롤그래)가 있다.

 

GRANT / REVOKE 문
  • GRANT 문 : 데이터베이스 관리자가 데이터베이스 사용자에게 권한을 부여한다.
  • REVOKE 문 : 데이터베이스 관리자가 데이터베이스 사용자에게 부여한 권한을 취소한다.

 

  • 사용자 등급 지정 및 해제
GRANT 사용자등급 TO 사용자_ID_리스트 [IDENTIFIED BY 암호];
REVOKE 사용자등급 FROM 사용자_ID_리스트;

 

  • 테이블 및 속성에 대한 권한 부여 및 취소
    • 그온투(GRANT 권한 ON 테이블 TO 사용자)
    • 리온프(REVOKE 권한 ON 테이블 FROM 사용자)
GRANT 권한_리스트 ON 개체 TO 사용자 [WITH GRANT OPTION];
REVOKE [GRANT OPTION FOR] 권한_리스트 ON 개체 FROM 사용자 [CASCADE];
  • 권한 종류 : ALL, SELECT, INSERT, DELETE, UPDATE, ALTER 등

 

COMMIT 문
  • 트랜잭션 처리가 정상적으로 완료된 후, 트랜잭션이 수행한 내용을 데이터베이스에 반영한다.
/* <사원> 테이블에서 '사원번호'가 40인 사원의 정보를 삭제한 후, COMMIT을 수행 */
DELETE FROM 사원 WHERE 사원번호 = 40;
COMMIT;

 

ROLLBACK 문
  • 변경되었으나 아직 COMMIT 되지 않은 모든 내용을 취소하고 데이터베이스를 이전 상태로 되돌린다.
/* SAVEPOINT 'S1'까지 ROLLBACK을 수행 */
ROLLBACK TO S1;

 

SAVEPOINT 문
  • 트랜잭션 내에 ROLLBACK 할 위치인 저장점을 지정한다.
/* SAVEPOINT 'S1'을 설정하고, '사원번호'가 20인 사원의 정보를 삭제 */
SAVEPOINT S1;
DELETE FROM 사원 WHERE 사원번호 = 20;

 

TCL(Transaction Control Language)

  • TCL의 종류에는 COMMIT, ROLLBACK, SAVEPOINT/CHECKPOINT(커롤세(체))가 있다.
  • 트랜잭션을 제어하는 용도로 사용된다.

 

DML(Data Manipulation Language, 데이터 조작어)

  • DML의 종류에는 SELECT, INSERT, UPDATE, DELETE(세인업데)가 있다.

 

SELECT 문
  • 테이블에서 튜플을 검색한다.

 

  • 일반 형식
SELECT [PREDICATE] [테이블명.]속성명 [AS 별칭][, [테이블명.]속성명, ...]       /* ※ */
    [, 그룹함수(속성명) [AS 별칭]]
    [, WINDOW함수 OVER (PARTITION BY 속성명1, 속성명2, ...
              ORDER BY 속성명3, 속성명4, ...)]
FROM 테이블명[, 테이블명, ...]                                              /* ※ */
[WHERE 조건]                                                             /* ※ */
[GROUP BY 속성명, 속성명, ...]
[HAVING 조건]
[ORDER BY 속성명 [ASC | DESC]];                                           /* ※ */

 

  • LIKE 연산자
대표 문자 % _ #
의미 모든 문자를 대표함. 문자 하나를 대표함. 숫자 하나를 대표함.

 

  • 그룹 함수
    • GROUP BY 절에 지정된 그룹별로 속성의 값을 집계할 때 사용된다.
함수 기능
COUNT(속성명) 그룹별 튜플 수를 구하는 함수
SUM(속성명) 그룹별 합계를 구하는 함수
AVG(속성명) 그룹별 평균을 구하는 함수
MAX(속성명) 그룹별 최대값을 구하는 함수
MIN(속성명) 그룹별 최소값을 구하는 함수
STDDEV(속성명) 그룹별 표준편차를 구하는 함수
VARIANCE(속성명) 그룹별 분산을 구하는 함수
ROLLUP(속성명, 속성명, ...) - 인수로 주어진 속성을 대상으로 그룹별 소계를 구하는 함수
- 속성의 개수가 $n$ 개이면 $n+1$ 레벨까지, 하위 레벨에서 상위 레벨 순으로 데이터가 집계됨.
CUBE(속성명, 속성명, ...) - ROLLUP과 유사한 형태이지만, CUBE는 인수로 주어진 속성을 대상으로 모든 조합의 그룹별 소계를 구함.
- 속성의 개수가 $n$ 개이면 $2^{n}$ 레벨까지, 상위 레벨에서 하위레벨 순으로 데이터가 집계됨.

 

  • 집합 연산자를 이용한 통합 질의
SELECT 속성명1, 속성명2, ...
FROM 테이블명
UNION | UNION ALL | INTERSECT | EXCEPT
SELECT 속성명1, 속성명2, ...
FROM 테이블명
[ORDER BY 속성명 [ASC | DESC]];
집합 연산자 설명 집합 종류
UNION - 두 SELECT 문의 조회 결과를 통합하여 모두 출력함.
- 중복된 행은 한 번만 출력함.
합집합
UNION ALL - 두 SELECT 문의 조회 결과를 통합하여 모두 출력함.
- 중복된 행도 그대로 출력함.
합집합
INTERSECT 두 SELECT 문의 조회 결과 중, 공통된 행만 출력함. 교집합
EXCEPT 첫 번째 SELECT 문의 조회 결과에서 두 번째 SELECT 문의 조회 결과를 제외한 행을 출력함. 차집합

 

INSERT 문
  • 기본 테이블에 새로운 튜플을 삽입할 때 사용한다.

 

INSERT INTO 테이블명([속성명1, 속성명2, ...]) VALUES (데이터1, 데이터2, ...);

 

UPDATE 문
  • 기본 테이블에 있는 튜플들 중에서 특정 튜플(행)의 내용을 변경한다.
UPDATE 테이블명
SET 속성명 = 데이터[, 속성명=데이터, ...]
[WHERE 조건];

 

DELETE 문
  • 기본 테이블에 있는 튜플들 중에서 특정 튜플(행)을 삭제한다.
  • DELETE 문은 테이블 구조나 테이블 자체는 그대로 남겨 두고, 테이블 내의 튜플들만 삭제한다.
    • 테이블을 완전히 제거하려면 DROP 문을 사용한다.
DELETE
FROM 테이블명
[WHERE 조건];

 

  • 서브쿼리(Sub-Query)
    • SQL 문 안에 포함된 또 다른 SQL 문
    • 종류
      • FROM 절 서브쿼리 
      • WHERE 절 서브쿼리
/* FROM 절 서브쿼리 */
SELECT MAX(가격)
FROM 도서가격 A, (SELECT 책번호 FROM 도서 WHERE 책명='자료구조') B
WHERE A.책번호 = B.책번호;

/* WHERE 절 서브쿼리 */
SELECT MAX(가격)
FROM 도서가격
WHERE 책번호 IN (SELECT 책번호 FROM 도서 WHERE 책명='자료구조');

 

 

JOIN

  • 2개의 릴레이션에서 연관된 튜플들을 결합하여, 하나의 새로운 릴레이션을 반환한다.
  • 일반적으로 FROM 절에 기술하지만, 릴레이션이 사용되는 곳 어디에나 사용할 수 있다.
  • 크게 INNER JOIN OUTER JOIN으로 구분된다.

 

INNER JOIN

EQUI JOIN
  • JOIN 대상 테이블에서 공통 속성을 기준으로 '='(equal) 비교에 의해 같은 값을 가지는 행을 연결하여 결과를 생성하는 JOIN 방법
  • EQUI JOIN에서 JOIN 조건이 '='일 때 동일한 속성이 2번 나타나게 되는데, 이 중 중복된 속성을 제거하여 같은 속성을 한 번만 표기하는 방법을 NATURAL JOIN 이라고 한다.
  • EQUI JOIN 에서 연결 고리가 되는 공통 속성 JOIN 속성이라고 한다.

 

  • WHERE 절을 이용한 EQUI JOIN의 표기 형식
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2, ...
WHERE 테이블명1.속성명 = 테이블명2.속성명;

 

  • NATURAL JOIN 절을 이용한 EQUI JOIN 표기 형식
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 NATURAL JOIN 테이블명2;

 

  • JOIN ~ USING 절을 이용한 EQUI JOIN 표기 형식
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 JOIN 테이블명2 USING(속성명);

 

NON-EQUI JOIN
  • JOIN 조건에 '=' 조건이 아닌 나머지 비교 연산자, 즉 >, <, <>, >=, <= 연산자를 사용하는 JOIN 방법
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2, ...
WHERE (NON-EQUI JOIN 조건);

 

OUTER JOIN

  • 릴레이션에서 JOIN 조건에 만족하지 않는 튜플도 결과로 출력하기 위한 JOIN 방법

 

LEFT OUTER JOIN
  • INNER JOIN의 결과를 구한 후, 우측 항 릴레이션의 어떤 튜플과도 맞지 않는 좌측 항의 릴레이션에 있는 튜플들에 NULL 값을 붙여서 INNER JOIN의 결과에 추가한다.
/* 방법 1 */
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 LEFT OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;

/* 방법 2 */
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2
WHERE 테이블명1.속성명 = 테이블명2.속성명(+);

 

RIGHT OUTER JOIN
  • INNER JOIN의 결과를 구한 후, 좌측 항 릴레이션의 어떤 튜플과도 맞지 않는 우측 항의 릴레이션에 있는 튜플들에 NULL 값을 붙여서 INNER JOIN 의 결과에 추가한다.
/* 방법 1 */
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 RIGHT OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;

/* 방법 2 */
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1, 테이블명2
WHERE 테이블명1.속성명(+) = 테이블명2.속성명;

 

FULL OUTER JOIN
  • LEFT OUTER JOIN  RIGHT OUTER JOIN 을 합쳐 놓은 것
  • INNER JOIN의 결과를 구한 후, 좌측 항의 릴레이션의 튜플들에 대해 우측 항의 릴레이션의 어떤 튜플과도 맞지 않는 튜플들에 NULL 값을 붙여서 INNER JOIN 의 결과에 추가한다.
    • 그리고 유사하게 우측 항의 릴레이션의 튜플들에 대해 좌측 항의 릴레이션의 어떤 튜플과도 맞지 않는 튜플들에 NULL 값을 붙여서 INNER JOIN 의 결과에 추가한다.
SELECT [테이블명1.]속성명, [테이블명2.]속성명, ...
FROM 테이블명1 FULL OUTER JOIN 테이블명2
ON 테이블명1.속성명 = 테이블명2.속성명;

 

프로시저(PROCEDURE)

  • 일련의 쿼리들을 마치 하나의 함수처럼 실행하기 위한 쿼리의 집합

 

프로시저 구성 : 디비컨 SET

  • 선언부(DECLARE)
  • 시작/종료부(BEGIN/END)
  • 제어부(CONTROL)
  • SQL
  • 예외부(EXCEPTION)
  • 실행부(TRANSACTION)

 

프로시저 생성

  • 프로시저를 생성하기 위해 CREATE PROCEDURE 명령어를 사용한다.
CREATE [OR REPLACE] PROCEDURE 프로시저명(파라미터)
[지역변수 선언]
BEGIN
    프로시저 BODY;
END;

 

프로시저 실행

  • 프로시저를 실행하기 위해서는 EXECUTE 명령어 또는 CALL 명령어를 사용하며, EXECUTE 명령어를 줄여서 EXEC 로 사용하기도 한다.
EXECUTE 프로시저명;
EXEC 프로시저명;
CALL 프로시저명;

 

프로시저 제거

  • 프로시저를 제거하기 위해서 DROP PROCEDURE 명령어를 사용한다.
DROP PROCEDURE 프로시저명;

 

트리거(TRIGGER)

  • 데이터베이스 시스템에서 데이터의 삽입(Insert), 갱신(Update), 삭제(Delete) 등의 이벤트(Event)가 발생할 때 관련 작업이 자동으로 수행되게 하는 절차형 SQL
  • 트리거의 구문에는 DCL(데이터 제어어)을 사용할 수 없으며, DCL이 포함된 프로시저나 함수를 호출하는 경우에 오류가 발생한다.

 

트리거 구성 : 디이비컨 SE

  • 선언부(DECLARE)
  • 이벤트뷰(EVENT)
  • 시작/종료부(BEGIN/END)
  • 제어부(CONTROL)
  • SQL
  • 예외부(EXCEPTION)

 

트리거의 생성

  • 트리거를 생성하기 위해서는 CREATE TRIGGER 명령어를 사용한다.
CREATE [OR REPLACE] TRIGGER 트리거명 [동작시기 옵션][동작 옵션] ON 테이블명
REFERENCING [NEW | OLD] AS 테이블명
FOR EACH ROW
[WHEN 조건식]
BEGIN
    트리거 BODY;
END;

 

트리거의 제거

  • 트리거를 제거하기 위해 DROP TRIGGER 명령어를 사용한다.
DROP TRIGGER 트리거명;

 

사용자 정의 함수

  • 프로시저와 유사하게 SQL을 사용하여 일련의 작업을 연속적으로 처리하지만, 종료 시 처리 결과로 단일값만을 변환하는 절차형 SQL
  • 데이터베이스에 저장되어 SELECT, INSERT, DELETE, UPDATE  DML 문의 호출에 의해 실행된다.
  • 예약어 RETURN 을 통해 단일값을 반환하며, 출력 파라미터가 없다.

 

사용자 정의 함수 구성 : 디비컨 SER

  • 선언부(DECLARE)
  • 시작/종료부(BEGIN/END)
  • 제어부(CONTROL)
  • SQL
  • 예외부(EXCEPTION)
  • 반환부(RETURN)

 

사용자 정의 함수 생성

  • 사용자 정의 함수를 생성하기 위해 CREATE FUNCTION 명령어를 사용한다.
CREATE [OR REPLACE] FUNCTION 사용자 정의 함수명(파라미터)
[지역변수 선언]
BEGIN
    사용자 정의 함수 BODY;
    RETURN 반환값;
END;

 

사용자 정의 함수 실행

  • 사용자 정의 함수는 DML 에서 속성명이나 이 놓일 자리를 대체하여 사용된다.
SELECT 사용자 정의 함수명 FROM 테이블명;
INSERT INTO 테이블명(속성명) VALUES(사용자 저의 함수명);
DELETE FROM 테이블명 WHERE 속성명 = 사용자 정의 함수명;
UPDATE 테이블명 SET 속성명 = 사용자 정의 함수명;

 

사용자 정의 함수 제거

  • 사용자 정의 함수를 제거하기 위해서 DROP FUNCTION 명령어를 사용한다.
DROP FUNCTION 사용자 정의 함수명;

 

제어문

IF 문

  • 조건에 따라 실행할 문장을 달리하는 제어문
형식 1 : 조건이 참일 때만 실행한다.
IF 조건 THEN
    실행할 문장1;
    실행할 문장2;
        ...
END IF;

 

형식 2 : 조건이 참일 때와 거짓일 때 실행할 문장이 다르다.
IF 조건 THEN
    실행할 문장1;
ELSE
    실행할 문장2;
END IF;

 

LOOP 문

  • 조건에 따라 실행할 문장을 반복 수행하는 제어문
LOOP
    실행할 문장;
    EXIT WHEN 조건;
END LOOP;

 

커서(CURSOR)

  • 쿼리문의 처리 결과가 저장되어 있는 메모리 공간을 가리키는 포인터(Pointer)
  • 커서의 수행은 열기(Open), 패치(Fetch), 닫기(Close)의 세 단계로 진행된다.

 

선언 형식

  • (매개변수1, 매개변수2, ...)  SELECT 문의 WHERE 절에 사용할 수 있으며, 생략이 가능하다.
  • 커서는 SELECT 문의 실행 결과가 저장된 곳의 시작 위치를 가리킨다.
CURSOR 커서명(매개변수1, 매개변수2, ...)
IS
SELECT문;

 

열기(Open) 형식

  • 커서를 사용하기 전에 반드시 적는다.
OPEN 커서명(매개변수1, 매개변수2, ...);

 

패치(Fetch) 형식

  • 커서명과 커서에 저장된 튜플들의 각 속성과 같은 자료형을 가진 변수를 적고 데이터를 가져온다.
FETCH 커서명 INTO 변수1, 변수2, ...;

 

닫기(Close) 형식

  • 사용된 커서는 메모리 해제를 위해 반드시 닫아야 한다.
CLOSE 커서명;

 

윈도 함수

  • 데이터베이스를 사용한 온라인 분석 처리 용도로 사용하기 위해서 표준 SQL에 추가된 함수
SELECT 함수명(파라미터)
    OVER
    ([PARTITION BY 컬럼1, ...]
    [ORDER BY 컬럼A, ...])
FROM 테이블명

 

  • 순위 함수
    • RANK : 특정 항목(컬럼)에 대한 순위를 구하는 함수
    • DENSE_RANK : 레코드의 순위를 계산하는 함수 (동일 순위의 레코드 존재 시에도 후순위를 넘어가지 않음.)
    • ROW_NUMBER : 레코드의 순위를 계산하는 함수 (동일 순위의 값이 존재해도 이와 무관하게 연속 번호를 부여)

 

 

 

 

728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖