DevOps

개념 시스템 개발자와 시스템 운영자의 협업과 자동화를 강조하는 개발 방법론

특징 개발 운영 협업 자동화

  • DevOps를 통해 소프트웨어 개발,배포,릴리즈 속도 향상 가능

개념도

설계 개발 빌드 테스트 배포 릴리즈 모니터링 피드백 (앞에 4개 CI, 뒤 4개 CD)

  • CI, CD가 순환하며 개발이 이루어짐

구성요소

품질 품질 기준: 정적 분석, 테스트 통과율 테스트 자동화: 자동화된 테스트로 빠른 검증

프로세스 지속적 배포: 운영 서버 반영 자동화 릴리즈와 배포의 구분: 변경사항 전달 시점 유연화

도구 지속적 통합: 형상관리 도구 활용 배포 자동화: 배포 스크립트를 통한 빠른 배포

  • DevOps는 품질, 프로세스, 도구라는 기준으로 나눠볼 수 있음

DevOps의 고려사항

인력

  • 개발,운영간 화합
  • 협업 문화

보안

  • 빠른 배포 리스크 업
  • DevSecOps 관점 필요

비용

  • 신규 도구 도입

  • 클라우드 비용 업

  • 장점을 취하고 한계를 보완하는 DevOps 도입 과정 필요

소프트웨어 안전성 분석 기법

FHA (Functional Hazard Analysis, 기능위험분석)
시스템이 아직 구체적인 설계나 구성요소로 분해되기 전, 개념/요구분석 단계에서 시스템이 수행해야 할 기능을 나열하고 각 기능이 상실되거나 오작동했을 때 발생할 수 있는 위험과 심각도를 평가하는 기법입니다. 설계에 대한 편견 없이 순수하게 “무엇을 하는 시스템인가” 관점에서 위험을 도출하기 때문에 안전분석 절차에서 가장 이른 시점에 수행되며, 그 결과가 이후 FTA나 FMEA 같은 세부 분석의 입력(시스템 수준 위험목록)이 됩니다.

PHA (Preliminary Hazard Analysis, 예비위험분석)
요구분석 단계에서 시스템/구성요소 수준의 잠재적 위험원을 초기에 식별하고 대략적인 심각도와 발생가능성을 평가하는 기법으로, 이후 정밀분석(FTA, FMEA 등)의 대상과 우선순위를 정하는 스크리닝 역할을 합니다. FHA가 기능 단위 관점이라면 PHA는 시스템/구성요소 단위 관점이라는 차이가 있으며, 두 기법은 상호보완적으로 함께 쓰이는 경우가 많습니다.

HAZOP (Hazard and Operability Study, 위험성 및 운전성 분석)
No, More, Less, Reverse, As well as 등 정해진 가이드워드를 프로세스나 설계의 각 요소에 체계적으로 적용해, 정상 운전조건에서 벗어나는 편차(Deviation)와 그로 인한 위험을 빠짐없이 탐색하는 기법입니다. 브레인스토밍에 가까운 팀 기반 검토 방식이라 분석가의 직관에 의존하지 않고 누락 없이 위험을 찾아낼 수 있다는 장점이 있지만, 대상 시스템이 크면 소요 시간이 많이 든다는 단점이 있습니다.

FTA (Fault Tree Analysis, 결함수분석)
최상위 사고(Top Event)를 먼저 정의한 뒤, AND/OR 게이트를 이용해 그 사고를 유발할 수 있는 하위 원인들을 트리 구조로 역추적해 나가는 하향식(Top-down) 기법입니다. 기본사건(Basic Event)에 발생확률을 부여하면 Top Event의 발생확률을 정량적으로 산출할 수 있어, 여러 원인이 복합적으로 결합해 사고를 유발하는 경우를 분석하는 데 강점이 있습니다.

FMEA (Failure Mode and Effects Analysis, 고장모드영향분석)
개별 구성요소가 어떤 방식으로 고장 날 수 있는지(고장모드)를 먼저 나열하고, 그 고장이 상위 시스템에 미치는 영향을 추적해 나가는 상향식(Bottom-up) 기법입니다. 심각도(S)·발생도(O)·검출도(D)를 곱한 RPN(Risk Priority Number)으로 개선 우선순위를 정량적으로 매길 수 있어 표 형태로 체계적인 문서화가 가능하지만, 여러 고장모드가 동시에 발생하는 복합적 상황을 분석하는 데는 한계가 있습니다.

SFMEA (Software Failure Modes and Effects Analysis, 소프트웨어 고장모드영향분석)
하드웨어용 FMEA를 소프트웨어 영역으로 확장한 기법으로, 소프트웨어는 물리적으로 마모되지 않는다는 특성 때문에 고장모드를 열화·부식 같은 물리적 메커니즘이 아니라 논리 오류, 예외 미처리, 타이밍/동기화 오류, 자료형 오버플로우 같은 설계적·논리적 결함으로 재정의해 모듈·함수·인터페이스 단위로 분석합니다. 주로 구현/시험 단계에서 적용되며, FTA로 시스템 수준 위험을 좁혀놓은 뒤 그 하위 구성요소를 SFMEA로 점검하는 방식으로 상호보완적으로 쓰입니다.

STPA (System-Theoretic Process Analysis, 시스템이론 프로세스 분석)
사고를 개별 구성요소의 고장이 아니라 시스템 전체의 부적절한 제어(Inadequate Control)의 결과로 보는 STAMP 이론에 기반한 기법으로, 제어자-액추에이터-제어대상 프로세스-센서로 이어지는 제어루프를 모델링한 뒤 각 제어행위가 언제·왜 불안전해지는지(Unsafe Control Action)를 분석합니다. 소프트웨어·인적·조직적 요인까지 포괄해서 분석할 수 있어 자율주행차나 항공 자동화처럼 소프트웨어 집약적이고 복잡한 시스템에 특히 적합하며, 요구분석부터 운영까지 전 생명주기에 걸쳐 제어구조를 지속적으로 갱신하며 적용된다는 점이 다른 기법들과 다릅니다.

객체지향 방법론에서의 캡슐화

  • 종결어: 기법
  • 키워드: 데이터, 연산, 객체, 상태 감춤, 접근지정자, 정보은닉, 메시지, 소통, 결합, 인터페이스
  • 목적: 응집도 증가

구성도

  • 클래스 다이어그램 2개, 화살표에 메시지 전송

객체지향 방법론에서의 추상화

  • 종결어: 기법
  • 키워드: 공통 속성, 추출, 단순화, 세부사항 제거, 핵심 속성과 행위만 표현
  • 목적: 복잡성 은닉

구성도

  • Shape, Triangle, Rect. 트리 형태. getArea() 메서드

객체지향 방법론에서의 다형성

  • 종결어: 기법
  • 키워드: 업캐스팅, 오버라이딩, 오버로딩, 동적바인딩, 가상함수테이블, 상속다형성, 인터페이스다형성
  • 목적: 재사용성, 확장성

개념: 하나의 메시지에 다양한 객체가 응답할 수 있는 기법

구성도

  • Animal 상위클래스/인터페이스 move() 메서드, Cat Dog Bird 구현
  • 업캐스팅. Animal a = new Cat(); a.move();

객체지향 방법론에서의 정보은닉

  • 종결어: 기법
  • 키워드: 접근제어자, 내부 속성, 외부 접근 차단, private protected public, getter setter, 캡슐화 관련
  • 목적: 결합도 감소

개념: 접근제어자를 사용해 객체의 상태를 외부에 숨기는 기법

구성도

  • Rectangular 클래스 다이어그램 1개. private 속성 width, height와 public getArea() 하나

객체지향 방법론에서의 상속

  • 종결어: 기법
  • 키워드: 클래스 재사용, 부모클래스, 자식클래스, 오버로딩, 오버라이딩, 다형성 관련, 추상클래스, 단일 상속, 다중 상속
  • 목적: 계층적 분류 체계 형성, 재사용성

개념: 클래스들의 계층적 분류 체계를 형성하기 위해 기존 클래스를 재사용해 새로운 클래스를 구현하는 기법

구성도

       [Super Class]
        속성 + 메서드
             │
      extends│(상속)
             │
        [Sub Class]
   상속받은 속성/메서드
        + 신규/재정의 요소
             │
      ┌──────┴──────┐
   [단일상속]     [다중상속*]
   (Java,C#)    (C++, *인터페이스로 대체)

형상관리

  • 두음: 식통감기
  • 종결어: 기법
  • 키워드: 산출물, 체계적 관리, 품질 향상, 형상 식별, 형상 통제, 형상 감사, 형상 기록, 저장소, CCB, 변경 허용, 변경 심사, 형상관리 도구, SVN, Git, 베이스라인
  • 목적: 무결성과 추적성 확보를 위해 산출물의 변화를 체계적으로 관리

구성도

형상 식별                CCB
형상 통제   -> 저장소 <-  CR(Change Request)
형상 감사               변경 심사
형상 기록               변경 허용

git, svn등

소스코드 뿐만 아니라 기획서, 설계 문서, 테스트 등이 모두 형상에 포함됨

DevOps, CI/CD: 형상관리 자동화가 확장된 현대적 실천 방식

형상관리 기준선(Baseline)

  • 두음: 기할제
  • 종결어: 상태
  • 키워드: 특정 시점, 검토, 승인, 공식적, CCB 검토, 기능 기준선, 할당 기준선, 제품 기준선, 형상 감사, 형상항목식별자
  • 목적: 변경통제의 기준점 확보

개념: 변경 통제의 기준점을 확보하기 위해 공식적으로 승인된 형상의 상태

구성도

요구사항 → [기능기준선]
              ↓
설계    → [할당기준선]
              ↓
구현/시험 → [제품기준선]
              ↓
        (변경시 CCB 승인 → 갱신)
  • 기능→할당→제품 3단계, 변경은 CCB 승인 후 갱신

증분형 개발 모델

  • 종결어: 개발 방식

  • 키워드: 범위 분할, 병렬적 개발, 개발 후 통합, 점진적 통합, 요구사항 분할, 전체 아키텍처, 증분 단위, 반복 주기, 점진적 통합, 회귀 테스트, 형상관리, 위험관리

  • 목적: 가치를 조기에 전달하기 위해 명확한 요구사항을 기반으로 범위를 나누어 개발하고 통합하는 방식

  • 요구사항이 명확한 프로젝트에서 사용 가능

  • 분할을 잘못하면 통합시 큰 비용 발생

구성도

[요구사항 분석]→[전체 아키텍처 설계]  
├→[증분1: 설계-구현-테스트-인도]  
├→[증분2: 설계-구현-테스트-통합]  
└→[증분N: 설계-구현-테스트-통합]→[전체 시스템 완성]
  • 아키텍처 고정 후 기능 순차 증분

구성요소

구분구성요소설명
계획요구사항 분할기능단위 우선순위 분류
계획전체 아키텍처증분 수용 골격 설계
실행증분 단위독립 개발·테스트 단위
실행반복 주기증분별 개발 사이클
통합점진적 통합기존 시스템에 순차 결합
통합회귀 테스트통합시 기존기능 검증
  • 계획·실행·통합 3단계 반복구조

증분형 개발 모델을 사용하면 병렬 개발이 가능하지만 필수는 아님. 가치를 조기에 전달하기 위해 중요도가 높은 기능부터 범위를 분할해 개발함.

진화형 개발모델

  • 종결어: 개발 방식
  • 키워드: 반복적, 프로토타입, 요구사항 불명확, 최종 시스템, 형상관리, 위험관리
  • 목적: 초기 요구사항이 불명확한 프로젝트의 핵심 기능부터 개발하고 피드백을 받아 개선하는 개발 방식

구성도

  • 요구사항 분석, 설계, 구현, 테스트, 피드백

  • 위 단계들의 순환

  • 각 반복마다 요구사항 구체화 및 기능 확장

  • 간글: 반복적 개발-평가 순환으로 시스템 완성

구분구성요소설명
프로세스반복 개발단계별 기능 점증 개발
프로세스고객 피드백매 반복 평가·수정 반영
산출물프로토타입반복별 실행 가능 버전
산출물최종 시스템반복 누적된 완성본
관리형상관리버전별 변경이력 관리
관리위험관리반복초기 고위험 식별
  • 프로세스·산출물·관리 3범주로 구성

요구공학의 요구사항 개발

요구공학은 ‘요구사항 개발’과 ‘요구사항 관리’로 나뉨.

  • 두음: 추분명검
  • 종결어: 활동
  • 키워드: 요구사항 추출, 요구사항 분석, 요구사항 명세화, 요구사항 검증, SRS 문서, 도출기법, 분석기법, 명세 산출물, 확인 검증, 기능, 비기능, 반복적, 점진적
  • 목적: 요구사항을 확정하기 위해 이해관계자로부터 요구사항을 추출하고 분석, 명세화, 검증하는 활동

구성도

[요구도출]→[요구분석]→[요구명세(SRS 작성)]→[요구확인(SRS 확정)]→(변경관리 피드백)  
↑__________________________________________|
  • 4단계 순차 진행, 변경시 재귀환
구분구성요소설명
도출기법인터뷰이해관계자 직접면담
도출기법워크숍/브레인스토밍집단 아이디어 수집
분석기법요구사항 분류기능·비기능 구분
분석기법우선순위 결정중요도·긴급도 평가
명세산출물SRS 명세서요구사항 표준문서화
확인검증요구사항 검토·승인완전성·일관성 확인
  • 도출·분석·명세·확인 4범주로 구성

요구공학의 요구사항 관리

형상관리와 유사함

  • 두음: 협기변검
  • 종결어: 활동
  • 키워드: 협상, 기준선 관리, 변경 관리, 검증, 요구사항 일관성, 추적성 확보, 변경 통제, 형상 항목
  • 목적: 이해관계자의 변경되는 요구사항을 산출물에 일관성 있게 반영하고 추적성을 확보하는 활동

구성도

[협상]→[기준선 관리]→[변경 관리]→[검증]→(피드백, 협상/변경 재유입)
  • 확정→고정→통제→확인 순환구조
구분구성요소설명
협상Win-Win협상이해관계자 상충조정
협상우선순위기법MoSCoW 등 순위화
기준선관리형상항목(CI)버전관리 대상 식별
기준선관리CCB승인공식 기준선 확정
변경관리변경요청(CR)수정 공식절차
변경관리영향분석비용·일정·범위 분석
검증추적성매트릭스요구-산출물 매핑
검증리뷰/테스트충족여부 확인
  • 협상·기준선·변경·검증 4범주 구성

폭포수 개발방법론

  • 종결어: 개발 모델
  • 키워드: 전통적, 순차적, 후행없음, 요구사항 수집, 분석, 아키텍처 설계, 시스템 설계, 구현, 배포, 유지보수, 단계별 산출물
  • 목적: 전통적 소프트웨어 개발 방법론으로서 각 단계를 순차적으로 후행없이 진행하는 개발 방법론

구성도

  • 순서대로 우하향. 순차적 진행과 후행이 없다는 것을 구성도에 표기
구분구성요소설명
상위단계요구분석사용자 요구사항 정의
상위단계설계시스템·SW 구조 설계
개발단계구현코딩 및 단위개발
개발단계시험통합·시스템 테스트
운영단계배포실환경 설치 및 이관
운영단계유지보수결함수정·기능개선
  • 상위·개발·운영 3단계로 구분

애자일 개발방법론

  • 종결어: 개발 모델
  • 키워드: 짧은 주기, 설계 구현 검증 피드백 반복, 백로그(프로덕트, 스프린트), 스프린트, 번다운차트, 데일리 스크럼 미팅, 프로덕트 오너, 스크럼 마스터
  • 목적: 소규모 개발팀이 짧은 주기 동안 설계,구현,검증을 반복하며 고객에게 가치를 전달하는 개발 모델

구성도

  • 프로덕트 백로그 스프린트 백로그 설계 구현 테스트 배포 및 피드백 수집 회고 다시 스프린트 백로그 순환
구분구성요소설명
프로세스스프린트1~4주 단위 개발주기
프로세스데일리스크럼매일 진행상황 공유
산출물제품백로그요구사항 우선순위 목록
산출물스프린트백로그해당주기 작업목록
역할스크럼마스터프로세스 촉진·장애제거
역할프로덕트오너요구사항 우선순위 결정
  • 프로세스·산출물·역할 3범주 구성

모놀리식 아키텍처

  • 종결어: 서비스 아키텍처
  • 키워드: 하나, 통합된 소스코드, 단일 언어 사용, 수직 확장이 효율적, 수평 확장은 비효율적, 전통적 3계층 (표현, 비즈니스, 데이터 계층)
  • 목적: 하나의 실행 단위에서 모든 기능을 제공하는 서비스 아키텍처

구성도

  • 요청 서버 데이터베이스 각 1개
구분구성요소설명
계층구조표현계층UI·화면처리 담당
계층구조비즈니스계층핵심로직·트랜잭션 처리
계층구조데이터계층DB접근·영속성 관리
배포단위단일실행파일WAR/EXE 등 통합 패키징
배포단위단일DB전모듈 공유 데이터저장소
운영요소스케일업서버증설 방식 확장
  • 모놀리식 아키텍처의 경우 주로 전통적 3계층 아키텍처를 사용

마이크로서비스 아키텍처

  • 종결어: 서비스 아키텍처
  • 키워드: 분할된 소스코드, 여러 언어 사용, 효율적인 수평 확장 가능, API Gateway, 서비스 디스커버리, REST/gRPC, 메시지 브로커, 서비스별 DB, 컨테이너 오케스트레이션, 서킷 브레이커
  • 목적: 비즈니스 기능 단위로 서비스를 분리해서 제공하는 서비스 아키텍처

구성도

  • 요청 API Gateway 앱 서버 2개 각각의 앱 서버에 DB
구분구성요소설명
접점계층API 게이트웨이단일 진입점 라우팅
접점계층서비스 디스커버리서비스 위치 동적 탐색
통신계층REST/gRPC서비스간 동기 통신
통신계층메시지 브로커비동기 이벤트 통신
데이터계층서비스별 DB데이터 소유권 분리
운영계층컨테이너 오케스트레이션배포·확장 자동관리
  • 접점·통신·데이터·운영 4범주 구성

아키텍처 스타일(=아키텍처 패턴, 아키텍처 모델)

  • 두음: 구통상, 계클마 파브이 모블인
  • 종결어: 해결책
  • 키워드: 아키텍처가 만족해야 할 품질 속성 달성, 반복적 일반적 문제 해결, 재사용
  • 목적: 아키텍처가 만족해야 할 품질 속성을 달성하기 위한 반복적/일반적인 문제를 해결하는 검증된 해결책

TBD: 각 패턴의 다이어그램 정리

구성도

  1. 구조

    1. 층형
    2. 라이언트-서버
    3. 스터-슬레이브
  2. 통신/데이터 흐름

    1. 이프-필터
    2. 로커
    3. 벤트-버스
  3. 상호작용

    1. 델-뷰-컨트롤러
    2. 랙보드
    3. 터프리터

+a)

  • 저장소 구조 (Repository)
  • MSA

‘소프트웨어 아키텍처 평가’ 토픽 추가

TODO: 아키텍처 설계 5단계 정리하기

요구사항 수집 ?? 4+1 View 평가 프로토타입 배포

아키텍처는 5가지 그림을 그려줘야 함. 4+1 View

  • Use Case
  • Logical
  • Implementation
  • Process
  • Deployment

이 때 아키텍처 스타일이 필요함.

설계를 했으면 잘 됐는지 ‘평가’를 한다 SAAM

아키텍처 평가 기법

  • 두음:
  • 종결어:
  • 키워드: 품질 수준, 고수준 판단, 이해관계자 요구 반영, 시나리오 기반, 설계/혼합 기반
  • 목적: 아키텍처가 요구되는 품질 수준을 충족하는지 아키텍처 수준에서 평가하는 기법

구성도

  • ADR과 ARID는 모듈/컴포넌트 상세 설계 적합성 검토 기법과 함께 사용
약어원어(Full Name)설명(10자 이내)
SAAMSoftware Architecture Analysis Method수정 용이성, 기능 분석
ATAMArchitecture Tradeoff Analysis Method품질 속성 trade off 추가
EATAMExtended ATAM제품라인 가변성 확장평가
CBAMCost Benefit Analysis Method경제적 평가 부분 보강
(경제적=비용 편익)
ADRArchitecture Decision Record설계결정 기록문서
ARIDActive Reviews for Intermediate Designs
(중간설계 능동적 검토)
아키텍처 일부를 초기에 평가

fyi) EATAM = ATAM + 변이점/가변성 분석 단계 → 단일 시스템이 아니라 제품군(패밀리) 전체를 대상으로 품질속성을 평가하는 확장 기법입니다.

아키텍처에 제품별 차이를 수용하기 위한 variation point를 정의하고, 각 variation point로부터 개별 제품을 적절히 파생할 수 있는지, 그리고 그 선택이 제품별 품질 속성과 품질 간 트레이드오프를 만족하는지를 평가하도록 ATAM을 확장한 것이 EATAM이다.

디자인 패턴

  • 두음: 생구행
  • 종결어: 해결책
  • 키워드: 코드 수준, 반복, 설계 문제, 재사용, 검증된
  • 목적: 코드 수준에서 반복되는 설계 문제에 대해 재사용 가능한 검증된 해결책

다 외울 필요는 없다.. 아래 정도만 정의 쓸 수 있게 적당히 외우기.

구성도

  1. 생성
    1. 추상 팩토리
    2. 팩토리 메서드
    3. 빌더
    4. 싱글톤
    5. 프로토타입
  2. 구조
    1. 어댑터
    2. 프록시
    3. 브릿지
    4. Facade
    5. Composite
    6. Decorator
  3. 행위
    1. 전략 패턴
    2. 템플릿 메서드
    3. 옵저버
    4. 이터레이터
    5. 비지터

허용적 라이선스

  • 종결어: 오픈소스 라이선스
  • 키워드: 파생저작물, 저작권 최소 제약, 라이센스 전파 의무 없음. 소스코드 비공개 가능, 확산/채택 극대화, MIT, Apache, BSD
  • 목적: 파생저작물에 공개 의무가 없는 오픈소스 라이선스

구성도

[원저작물]→[사용/수정/재배포]→[저작권고지 유지]→[파생물 라이센스 자유선택]  
↳(카피레프트 미적용)
  • 파생물에 원소스 공개 강제 없음
구분구성요소설명
라이센스 유형MIT최소조건, 고지문 유지
라이센스 유형Apache 2.0특허권 명시적 허여
라이센스 유형BSD3-Clause 무보증 명시
필수조건저작권 고지원저작자 표시 유지
필수조건라이센스 사본 포함배포시 원문 첨부
권리범위상업적 이용제한없이 판매·활용
  • MIT·Apache·BSD 대표 3유형, 고지의무만 부과

기업 활용도 높음

카피레프트 라이선스

  • 두음:
  • 종결어: 강약파 GLM
  • 키워드: 파생저작물, 공개 의무, 전파성, 강도(강함, 약함, 파일단위)
  • 목적: 파생저작물을 동일한 라이선스 공개해야 하는 오픈소스 라이선스

구성도

[원저작물]→(카피레프트 적용)→[배포/수정 허용]→[파생저작물]→(동일 라이선스 상속)→[재배포]
  • 라이선스 조건이 파생물까지 전파
구분구성요소설명
강도별강한 카피레프트(GPL)파생물 전체 동일라이선스
강도별약한 카피레프트(LGPL)링크 라이브러리만 예외
강도별파일단위(MPL)수정파일만 공개의무
적용범위소스코드 공개배포시 소스 제공 의무
적용범위상업적 이용 허용영리목적 사용 가능
권리주체저작자 권리 유지저작권 자체는 보유
  • 강도(GPL/LGPL/MPL)별 의무범위 상이

소프트웨어 안전성 분석 기법

  • 두음:
  • 종결어: 기술
  • 키워드: 잠재적 위험 Hazard, 불확실성 Risk, 피해 Harm, 트리거, HAZOP 가이드워드. FTA 하향식, FMEA 상향식
  • 목적: 소프트웨어로 발생할 수 있는 잠재적 위험을 식별하고 분석해서 제거·통제하는 기법

‘전통적’과 ‘최근’으로 크게 구분된다.

전통적 3총사, 하드웨어 중심

  • FTA, 트리 형태. 이벤트와 게이트(And, Or)
  • FMEA, 위험의 강도 측정할 때. 3가지 봄. 심발검 (심각도, 발생가능성, 검출 가능성)
  • HAZOP, 가이드워드

최근

  • STPA, (스탬프?)

구성도

  • 요구분석
    • FHA/PHA
    • HAZOP
  • 설계
    • FTA
    • FMEA
  • 구현/테스트
    • SFMEA
    • 코드분석
  • 운영
    • 사고/변경 분석
    • 재발방지

요구분석/설계 (정성적)

  • FHA: Functional Hazard Analysis, 기능위험분석
  • PHA: Preliminary Hazard Analysis, 예비위험분석
  • HAZOP: Hazard and Operability Study, 위험성 및 운전성 분석
    • 가이드워드

설계 (정성적, 정량적)

  • FTA: Fault Tree Analysis, 결함수 분석
  • FMEA: Failure Mode and Effects Analysis, 고장모드 영향분석

구현/테스트

  • SFMEA: Software Failure Modes and Effects Analysis, 소프트웨어 고장모드 영향 분석

TODO: Hazard, Risk, Harm의 관계 정리. 3단락용

AOP(Aspect Oriented Programming)

  • 종결어: 기법
  • 키워드: 횡단 관심사, 핵심 관심사, 응집도, 재사용성, 중복 제거, OOP 보완 기법
  • 목적: 횡단 관심사를 분리하여 응집도를 높이고 중복을 제거하는 OOP 보완 기법

구성도

  • 방사형과 유사하게
  • 가운데 AOP. 좌측은 ‘핵심 관심사’, 우측은 ‘횡단 관심사’
    • 핵심 관심사 예시: 주문, 결제, 장바구니
    • 횡단 관심사 예시: 보안, 인증, 로깅
  • 핵심 관심사측에서 AOP로 오는 화살표, Joint Point
  • 횡단 관심사 측에서 AOP로 오는 화살표, Advice
  • 하단에는 Point Cut

구성도 좌측에 십자형으로 그리는게 낫나? 횡단, 핵심 관심사

구성요소

구분구성요소설명
관심사핵심 관심사핵심 비즈니스 로직
관심사횡단 관심사공통 부가 기능
프로그래밍 요소Advice횡단관심사 로직
프로그래밍 요소Joint Point적용 가능 지점
프로그래밍 요소Point Cut로직과 적용점 연결정보
프로그래밍 요소Aspect횡단관심사 모듈
(Advice + Point Cut)
프로그래밍 요소Weaving로직 결합 과정

3단락 AOP 구현방식 2가지 비교

  • Bytecode Weaving
    • 컴파일,빌드,실행시 bytecode를 조작해 횡단 관심사 기능을 삽입
  • IoC 컨테이너 활용
    • Proxy 객체를 활용하여 의존성 주입시 횡단 관심사 기능을 객체에 추가

객체지향 설계 원칙 5가지

  • 두음: SOLID
  • 종결어: 설계 원칙
  • 키워드: 유지보수성, 재사용성, 응집도, 결합도
  • 목적: 객체지향 패러다임에서 재사용성과 유지보수성을 높이기 위한 5가지 설계 원칙

구성도

[SRP]단일책임 → [OCP]개방폐쇄 → [LSP]리스코프치환
      ↓                              ↓
[ISP]인터페이스분리 ← ← ← ← [DIP]의존관계역전
        (상호보완적 설계원칙 5종)
  • 5원칙 상호보완적 적용 구조

구성요소 5개 개념도 테이블 TBD: 다이어그램 추가

  • SRP
    • 객체는 한가지 책임만 담당해야 함
    • 다이어그램: Point Point / Point Repository
  • OCP
    • 클래스는 변경에는 닫혀있고 확장에는 열려있어야 함
    • 다이어그램: OAuth Google, Naver, Facebook
  • LSP
    • 부모 클래스 대신 어떤 자식 클래스라도 대입 가능해야 함
    • 다이어그램: Shape, Triangle, Rectangle
  • ISP
    • 작은 단위로 인터페이스를 분리해야 함
    • 다이어그램: Repository QueryRepo, CommandRepo
  • DIP
    • 구체 클래스가 아니라 인터페이스를 의존해야 함
    • 다이어그램: List <<interface>> <- LinkedList, ArrayList

3단락

응집도와 결합도의 관점으로 본 객체지향 5원칙

  • 응집도
    • SRP, ISP
    • 클래스,인터페이스 내부 응집 강화
  • 결합도
    • OCP, LSP, DIP
    • 클래스 간 관계, 의존 구조 개선

휴리스틱에 의한 사용성 평가

  • 두음: 상익 복일에 직효 핵명도
  • 종결어: 기법
  • 키워드: 사용성 원칙, 전문 평가자, 문제점 진단, 빠른 평가, 문제점 도출, 심각도 평가(0~4단계)
  • 목적: 전문 평가자가 정립된 사용성 원칙을 기준으로 문제점을 진단하는 기법

구성도1

[평가계획]→[전문가 개별평가]→[휴리스틱 원칙 대조]→[문제점 도출]→[심각도 산정]→[통합 및 보고]
  • 개별평가 후 결과취합 순차 구조

구성도2

사전 교육 -> 평가 수행 -> 심각도 판정 -> 결과 취합 -> 결과 보고
  • 5단계 구성

원칙 10가지

  • 상태 안내

  • 익숙함

  • 복구 가능성

  • 일관성

  • 에러 예방

  • 직관성

  • 효율성

  • 핵심 정보

  • 명확한 에러 문구

  • 도움 서비스

구분구성요소설명
평가원칙시스템상태 가시성현재상태 사용자에 인지
평가원칙오류방지 및 복구오류예방·복구 지원
평가주체사용성 전문가3~5인 독립평가 수행
평가주체진행촉진자평가세션 조율·기록
평가결과문제목록발견된 사용성 결함
평가결과심각도 등급0~4단계 우선순위화
  • 원칙·주체·결과 3범주로 구성

사용성 테스트

고객에게 물어보는 것.

대상자 찾아서 실행

  • 두음: 탐평확비, 카페스
  • 종결어: 기법
  • 키워드: 실제 사용자, 제품 사용, 관찰/분석, 문제점/개선점, 탐색 테스트, 평가 테스트, 확인 테스트, 비교 테스트, 카드 소팅, 페이퍼 목업, 스크린 목업
  • 목적: 실제 사용자가 제품을 사용하는 것을 관찰/분석해서 문제점/개선점을 발견하는 연구 기법

구성도

  • 테스트 종류 4개 트리 형태, 탐평확비
구분구성요소설명
테스트 종류탐색 테스트문제점 발견 탐색
테스트 종류평가 테스트사용성 수준 평가
테스트 종류확인 테스트개선사항 검증
테스트 종류비교 테스트대안간 우열 비교
테스트 기법카드 소팅정보구조 분류
테스트 기법페이퍼 목업종이 시제품 테스트
테스트 기법스크린 목업화면 시제품 테스트

테스트 표준 ISO 29119

  • 두음: 개테프도테키, 조관동, 명구경
  • 종결어: 국제 표준
  • 키워드: 계층화, 문서 표준화
  • 목적: SW 개발 전 과정의 테스팅 프로세스 관련 국제 표준

구성도

  • Part1. 념과 정의
  • Part2. 스트 로세스
  • Part3. 문서(Documentation)
  • Part4. 기법(Technique)
  • Part5. 워드 기반 테스팅
  • 연관표준: ISO 33063, 절차 평가용

2가 가운데에 있고 모든 파트와 ISO 33063에 화살표

구성요소

구분구성요소설명
프로세스직 테스트 프로세스정책·전략 수립
프로세스테스트 리 프로세스계획·모니터링·통제
프로세스적 테스트 프로세스설계·실행·완료
기법세 기반블랙박스 테스팅
기법조 기반화이트박스 테스팅
기법험 기반테스터 경험·직관 활용
  • 프로세스·기법 2범주 구성

테스트 설계 기법 3가지: 명세(블랙박스), 구조(화이트박스), 경험기반

명세기반

  • 불동경의상 유분페원오 구조기반
  • 화제루 결구조 다변조 경험기반
  • 탐색적 테스팅, 체크리스트, 특성 테스팅, 오류 추정, 분류 트리

ISO 25000 (SQuRE)

  • 두음: 31024 요모관측평
  • 종결어: 국제 표준
  • 키워드: 요구사항, 품질 모델, 품질 관리, 품질 측정, 품질 평가
  • 목적: SW 개발 공정 각 단계의 산출물의 품질을 측정하기 위한 국제 표준

구성도

구성요소

구분구성요소설명
2500n품질관리부표준군 전체 관리지침
2501n품질모델부품질특성 정의(25010)
2502n품질측정부품질측정지표 제공
2503n품질요구부요구사항 명세화
2504n품질평가부평가절차·방법 규정
품질제품 품질GS 인증
품질프로세스 품질PS 인증
  • 관리·모델·측정·요구·평가 5분야

품질요소 2가지

  • 제품 품질 GS, Good Software
  • 프로세스 품질 SP, Software Process

인증 ‘제도’는 ‘법근거, 대상, 인증기준, 절차’ 4개가 나와야 함. 제도 공부할 때는 프레임워크처럼 이 4개로 공부하기

DevOps

  • 종결어: 방법론
  • 키워드: 적시 출시, 소통, 협업, 자동화, CI/CD, 순환, 형상관리, IaC, 신뢰성 엔지니어링
  • 목적: 소프트웨어 적시 출시를 위해 개발과 운영의 소통, 협업, 자동화를 강조하는 개발 방법론

구성도

  • 설계 구현 빌드 테스트
  • 릴리즈 배포 운영 모니터링
  • 옆으로 뉘운 8자로. 12시 시작해서 시계 반대방향. 좌측 Dev, 우측 Ops
구분구성요소설명
형상관리코드 형상관리- git등의 도구 도입
형상관리지속적 통합- 짧은 주기 Push
인프라지속적 배포- 자동화된 배포 시스템
인프라IaC- 인프라 형상관리
안전성모니터링&로깅- 에러 로그 알람 구성
안전성신뢰성 엔지니어링- DevOps 실천 방법론

DevOps 5가지 핵심 요소 CALMS

  • Culture: 개발/운영 협업 문화, 사일로 제거
  • Automation: 빌드, 테스트, 배포, 인프라 자동화
  • Lean: 낭비 제거, 작은 단위 반복 개선
  • Measurement: 지표 기반 모니터링/피드백
  • Sharing: 지식/책임 공유

3단락에 방사형으로 적어도 괜찮을듯?

회귀테스트 (Regression Test)

변경사항이 발생했을 때

사이드이펙트와 리플 이펙트를 확인하기 위함

  • 두음: RS 올셀프점
  • 종결어: 반복 시험
  • 키워드: 사이드이펙트(부작용), 리플 이펙트(파급효과), 변경
  • 목적: 소프트웨어에 변경이 발생했을 때 새로 발생하는 오류가 없는지 확인하는 반복 시험

구성도

구분구성요소설명
효과사이드 이펙트수정 시 오류 발생
효과리플 이펙트영향 파급 전파
테스트 종류전체 테스트전체 재실행
테스트 종류선별적 테스트연관 부분만 선별
테스트 종류우선순위 테스트위험도순 실행
테스트 종류점진적 테스트단계적 확대 실행

고려사항 (방사형)

  • 개발 테스트 통합

  • 테스트 자동화

  • 테스트 축적

  • 테스트 조직

  • 개발 과정에서 수시로 자동화된 테스트 실행

  • 작성된 테스트는 부작용/파급효과를 막는 자산이 됨

  • 자동화하기 힘든 테스트를 수행하기 위한 전담 조직 필요

V-모델 (V-Model)

  • 두음: 단통시인설
  • 종결어: 개발 모델
  • 키워드: 폭포수 확장, 단위, 통합, 시스템, 인수, 설치, 검증/확인 중심, 단계별 산출물, 추적성 확보
  • 목적: 개발 단계와 테스트 종류를 1:1로 대응시켜 폭포수 모델을 확장한 개발 모델

구성도

요구분석 ────────────── 인수테스트
  \                        /
 시스템설계 ──────── 시스템테스트
    \                    /
  상세설계 ──────── 통합테스트
      \                /
     코딩 ────── 단위테스트
  • 좌측 개발, 우측 테스트 V자 대응구조
구분구성요소설명
개발단계요구분석/설계좌측 하향식 개발과정
개발단계상세설계/코딩구현 직전 최종단계
테스트단계단위/통합테스트코드·모듈 검증
테스트단계시스템/인수테스트전체·사용자 검증
검증기법정적/동적검증산출물 리뷰·실행검증
검증기법트레이서빌리티요구-테스트 추적관리
  • 개발·테스트·검증기법 3범주로 구성

3단락 다중 V-모델 (모프제)

  • 점점 커지는 V자 3개

  • 설계 구현 테스트

  • 모델 검증, 프로토타입 검증, 제품 검증

  • 규모가 크거나 반복/점증적으로 개발하는 프로젝트에 사용

화이트박스 테스트

  • 두음: 화제루, 구결조 조변다
  • 종결어: 테스트 기법
  • 키워드: 개발자 관점, 내부 로직, 구조 기반
  • 목적: 개발자 관점에서 내부 로직을 알고 수행하는 구조 기반 테스트 기법

구성도

  • 구문 커버리지

    • 모든 구문들이 최소 1번 이상 수행
  • 결정 커버리지

    • 전체 결정문이 참/거짓을 최소 1번 이상 수행
  • 조건 커버리지

    • 개별 조건문이 참/거짓을 최소 1번 이상 수행
  • 조건/결정 커버리지

    • 전체 조건과 개별 조건 모두 참/거짓을 갖도록 수행
  • 변경조건/결정 커버리지

    • 개별 조건이 독립적으로 전체 결정 결과를 바꾸도록 수행
  • 다중 조건 커버리지

    • 개별 조건들의 참/거짓이 가능한 모든 케이스로 수행

TODO: 커버리지 사례 정리, A와 B로

구성요소 테이블을

  • 유형
  • 설명
  • 사례 3개 컬럼으로 적기

블랙박스 테스트

사용자 관점

  • 두음: 불동경의상 유분페원오
  • 종결어: 기법
  • 키워드: 사용자 관점
  • 목적: 사용자 관점에서 내부 로직을 모르고 수행하는 명세 기반 테스트 기법

구성도

  • 동등 클래스 분할 기법
    • 동일하게 처리되는 값들 중 대표값 1개 추출해서 테스트
  • 경계값 분석
    • 경계값과 인접값을 집중적으로 테스트
  • 의사결정 테이블 테스팅
    • 여러 조건의 조합에 따른 결과를 표로 정리하여 검증
  • 상태 전이 테스팅
    • 상태 전이를 다이어그램으로 표현해서 검증
  • 유스케이스 테스팅
    • 사용자 관점의 업무 시나리오 기반 테스트
  • 분류 트리 기법
    • 입력을 트리 구조로 분류하고 조합하여 테스트
  • 페어와이즈 테스팅
    • 모든 파라미터 쌍을 최소 1회 이상 테슽
  • 원인-결과 그래프
    • 입출력간 논리적 관계를 그래프로 표현
  • 오류 예측 기법
    • 테스터의 휴리스틱을 바탕으로 결함 발생 부위 예측

SW 분리발주 (상용SW 직접구매제도)

국내 제도 물어볼 때: 1. 법근거, 2. 대상, 3. 절차, 4. 예외

  • 두음: 예외 기준 - 민통 현현현
  • 종결어: 제도
  • 키워드: SW 산업 겅쟁력, 상용 SW, 별도 발주
  • 목적: SW 산업 경쟁력을 강화하기 위해 상용SW를 SI사업과 별도로 발주하는 제도

구성도

[발주기관] 
   ├─(직접계약)→ [상용SW 공급사]
   └─(별도발주)→ [IT서비스 사업자] → (SI 구축)
        ↑
   [조달청 종합쇼핑몰/디지털서비스몰] (등록·검증)
        ↑
   [대상판정: 사업규모+SW가격/쇼핑몰등록 요건]
  • 발주기관이 SW·SI 이원화 계약 체결

법률: 소프트웨어 진흥법 제54조(국가기관등의 상용소프트웨어 구매) 지침(행정규칙): 소프트웨어사업 계약 및 관리감독에 관한 지침 제7조(직접구매 대상), 제8조(직접구매 제외) 대상: 1차 && 2차조건중 1개 이상 만족시

  • 1차: 총 사업규모 3억원 이상
  • 2차
      1. 조달청 등록여부: 조달청 종합쇼핑몰 등록 SW
      1. GS, CC, NEP, NET 인증 또는 국가정보원 검증·지정 SW로서 5천만원 이상인 경우 (동일 SW를 다량 구매해 5천만원을 초과하는 경우도 포함) 제외 기준
  • 대상 사업: 간투자형 SW사업
  • 대상 SW
    • 정보시스템 합 불가능
    • 저한 사업비용 증가
    • 저한 사업기간 증가
    • 저하게 비효율적

절차 (개략 프로세스)

  1. 직접구매 대상 여부 판단: RFP 작성 단계에서 1차·2차 조건 검토
  2. 직접구매 대상 상용SW 구매계획 수립: 대상 품목·직접구매 여부·제외사유를 명시한 구매계획서 작성(발주기관 규정 별지서식)
  3. 제외사유 사전 검토 요청: 제외하고자 하는 SW가 있으면 사전 검토·소명 절차 진행
  4. 입찰공고 및 발주: SI사업과 SW구매를 분리 발주(경쟁입찰 또는 종합쇼핑몰 등을 통한 수의/카탈로그 구매)
  5. BMT(성능시험) 실시: 경쟁입찰로 구매 시 BMT를 실시해 평가에 반영하되, 조달청 등록 제품은 BMT 생략 가능
  6. 계약·검수: 별도 계약 체결 후 SI사업자와의 연계·통합 관리

(BMT: BenchMark Test)

문제 풀이 시 자주 나오는 키워드 축으로 정리하면: 개념(구 분리발주) – 법적근거(진흥법 §54, 지침 §7·§8) – 대상(1차/2차 조건) – 제외기준(사업/SW) – 절차(판단→계획→검토→발주→BMT→계약) 순으로 구조를 기억해두면 서술형 답안 뼈대로 바로 활용할 수 있습니다.

fyi) 국내 SW 인증

구분초점소관 성격
GS(Good Software)SW 품질 전반소프트웨어산업 진흥법 계열
CC(Common Criteria)보안성국가정보원 계열 (보안SW 특화)
NEP (New Excellent Product)신제품의 우수성산업기술 인증 계열
NET (Net Excellent Technology)신기술의 우수성산업기술 인증 계열

SW 분할발주

법근거: 「행정기관 및 공공기관 정보시스템 구축·운영 지침」 제14조의4 — 분석·설계사업의 분할발주 허용

  • 두음: 공기부
  • 종결어: 방식
  • 키워드: 사업 불확실성, 실패 위험, 정보시스템 구축 사업, 계약 나눔, 공정분할, 기능분할, 부품분할
  • 목적: 사업 불확실성과 실패 위험을 줄이기 위해 정보시스템 구축 사업을 여러 계약으로 나누어 발주하는 방식

구성도

  • 계획 수립 분할 전략 수립 발주 사업관리 인수 통합 및 종료. 모양자 쓰기
  • (발주 사업관리 인수)를 분할공정별 반복

구성요소 테이블은 6단계 쓰기

테이블은 |#|단계|설명| 이렇게 3단으로

정보시스템 감리

  • 두음: 예현시 (예비조사, 현장감시, 시정조치)
  • 종결어: 제도
  • 키워드: 제3자 관점, 전자정부법 제57조
  • 목적: 정보시스템의 효율성 향상, 안전성 확보를 위해 제 3자적 관점에서 시스템을 독립적으로 점검/평가하는 활동

구성도

  • 예비조사 → 현장감리 → 시정조치의 순차적 3단계

구성요소

  • 예비조사
    • 범위 확정
    • 계획 수립
  • 현장감리
    • 문서 심사, 인터뷰
    • 문제점 도출
  • 시정조치
    • 시정계획서 작성
    • 사후관리 확인
구분구성요소설명
주체감리법인독립적 제3자 검증기관
주체감리원자격보유 전문인력
절차감리계획수립범위·기준 사전정의
절차감리수행현장점검·인터뷰·문서검토
산출물감리보고서문제점·개선사항 기술
산출물시정조치계획개선이행 계획 수립

법근거

  • 전자정부법 제 57조

대상 (OR 조건임)

  • 사업비
    • 5억원 이상
  • 특성
    • 대국민 서비스
    • 여러 행정기관등이 공동으로 구축
  • 행정기관장의 필요성 판단

예외

구분내용
제외 규정사업비 1억 원 미만 소규모 + 비용 대비 효과 낮다고 인정 시
감리 생략전자정부사업관리 위탁 수행 시, 사업비 5억 원 미만 또는 사업기간 5개월 미만이면 생략 가능
특수정보 관련(법 제57조제4항)국방·외교·안보 등 국가안전보장 정보, 개인정보, 기밀성 높은 정보를 다루는 시스템은 별도 고려 대상

실무 판단 순서 (관계 정리)

  1. 사업비 5억 원 이상인지 먼저 확인 (가장 명확한 기준)
  2. 5억 원 미만이라도 시스템 특성(대국민서비스, 공동구축)에 해당하면 의무 대상 가능
  3. 판단 기준 시점은 예산 편성 단계가 원칙 (계약금액이 아닌 예산 기준)

절차

  • 계획
  • 수행
  • 보고
  • 사후관리

더 복잡한 절차 있겠지… 일단 이렇게 4단계로만 알고 넘어가자

PMO

  • 두음: 기집사 (기획, 집행, 사후), 성변보 (성과, 변화, 보안)
  • 종결어: 제도
  • 키워드: 전자정부법 제 64조의 2, 사업 품질 향상, 발주자 관점, 사업 관리, 기술 지원
  • 목적: 사업 품질 향상을 위해 발주자 관점에서 사업 관리를 수행하고 기술을 지원하는 제도

프로세스그룹 10개에서 성변보 추가

  • 기획: 통합관리, 성과관리
  • 집행: 10개 + 성변보 - 원가관리, 총 12개
  • 사후: 통합관리, 성과관리, 변화관리

구성도

  • 역삼각형 그리자. 꼭지점마다 ‘발주기관’, ‘PMO 사업자’, ‘PMO대상사업 수행자’, 역삼각형 가운데는 PMO
  • 삼각형 선의 화살표 방향과 화살표 내용
    • 발주기관 — (전자정부사업관리 위탁(PMO) 계약) PMO 사업자
    • 발주기관 — (관리/감독) PMO대상사업 수행자
    • PMO 사업자 — (사업관리/기술지원) PMO대상사업 수행자
      발주기관                   PMO 사업자
      
      
      
                PMO대상사업
                  수행자

법근거

  • 전자정부법 제 64조 2
  • 전자정부법 시행령 제 78조 2 ~ 제 78조의 5

대상

  • 의무 대상 없음
  • 발주기관이 자체적으로 PMO 도입 여부를 결정함

절차 (기집사)

  • 기획 단계
    • 통합관리, 성과관리
  • 집행 단계
    • 통합관리, 범위관리, 일정관리, 품질관리, 자원 관리, 의사소통 관리, 위험 관리, 조달 관리, 이해관계자 관리, 성과관리, 변화관리, 보안관리
  • 사후관리 단계
    • 통합관리, 성과관리, 변화관리

3R

SDLC의 유지,관리 단계

  • 역공학: 산출물 다시 만들어내기
  • 재공학: >> 구조화 <<
  • 재사용: 다른 프로젝트에 활용

리팩토링

가독성이 떨어지는 코드를 클린 코드로 바꾸는 과정

리팩토링 기법들 외우기.

SW규모산정 상향식 산정기법

‘규모산정’은 ‘SW규모산정’과 ‘HW규모산정’으로 바뀜.

  • SW 규모산정 개발비

SW 규모산정은 3가지 방식

  • 상향식
  • 하향식
  • 수학적 방식 (상향식에 포함될 수 있음)

SW규모산정 하향식 산정기법

HW 규모산정

  • 규모: 수참시

소프트웨어 결합도(Coupling)

자스제외공내

소프트웨어 응집도(Cohesion)

우논시절통순기

로우코드 (Low Code)

노코드 (No code)