본문으로 건너뛰기

"professional-engineer" 태그로 연결된 270개 게시물개의 게시물이 있습니다.

기술사 관련 포스트

모든 태그 보기

리먼(Lehman)의 소프트웨어 진화 법칙

· 약 4분

129

소프트웨어 진화 법칙 개요

소프트웨어 진화 법칙 개념

  • 대부분의 소프트웨어가 존재하는 동안 변경이 일반적이며, 지속적으로 유지되기 위해 준수해야하는 법칙
  • 품질관리와 변경관리의 중요성 강조, 유지보수 비용증가에 따른 관리전략 수립을 위해 필요

소프트웨어 진화 법칙 필요성

  • SW 변화의 특성을 이해하여 유지보수, 변경관리, 형산관리, 품질 통제의 중요 모델로 반영할 수 있으므로 효과적인 유지보수 및 변화관리 가능.

소프트웨어 진화 법칙 개념도, 핵심요소, 적용방안

소프트웨어 진화 법칙 개념도

소프트웨어 진화 법칙 핵심요소

구분법칙내용
완전유지관리조직적 안전성평균 유효한 글로벌 작업률은 제품 수명 기간동안 변하지 않음
-지속적인 성장사용자를 만족시키기 위해 기능적 성장 필요
적응유지관리지속적인 변화SW는 지속적으로 적응하고 변화해야함
-자기 규제시스템 진화는 제품의 배포와 프로세스 측정으로 자체 조절됨
-피드백 시스템진화 프로세스는 다중 레벨, 다중 에이전프 피드백 시스템이여야함
수리유지관리품질 저하변경이 엄격하게 유지 관리되고 적응하지 않으면 품질 감소
예방유지관리증가하는 복잡성시스템이 발전할 때 관리하지 않으면 복잡성 증가
-친숙도 보존사용자는 만족스러운 진화가 될 수 있게 내용과 행동을 숙달해야함
  • SW 변화 특성을 이해하고, 유지보수, 변경관리, 형상관리, 품질 통제의 중요 모델로 반영

소프트웨어 진화 법칙 적용방안

구분방안비고
요구사용자 요구 지속적 수집, 분석요구관리 툴
설계모듈화된 설계를 통한 변경 용이성컴포넌트화
구현변경관리 프로세스 통한 코드 관리VCS 활용
테스트자동화된 테스트 통한 품질 검증Continuous Test
배포점진적 배포를 통한 안정적 대응블루-그린 배포
유지보수지속적 모니터링과 피드백 수집, 개선CMS
폐기SW 수명 종료시 폐기 절차 수행데이터 마이그레이션

소프트웨어 진화법칙 추가적인 고려사항

  • 신기술 도입과 기존 기술의 진화를 지속적으로 모니터링하여 SW 기술 부채를 최소화하는 활동 필요

웹 3.0

· 약 2분

웹 3.0의 개요

개념

웹 2.0웹 3.0
참여소유(탈중앙화)
공유융합
개방개인화

시멘틱 웹 기반으로 웹 페이지의 내용을 이해하고, 개인 맞춤 정보를 제공하는 웹 기술

배경

  • 웹2.0의 글로벌 플랫폼 기업들에 데이터가 집중됨
  • 중앙집중화된 플랫폼이 멈출 시 일상 마비

핵심요소

요소기술비고
컨텐츠 소유권NFT디지털켄텐츠 소유권 주장 가능
탈중앙화블록체인중앙기관 없는 분산 원장
개인화서비스AI사용자 맞춤형 데이터 제공
확장된 미디어 인터페이스메타버스현실-가상 융합 공간 제공

변화

  • 탈중앙 자율조직 DAO 출현
  • 블록체인과 AI로 웹 구조 혁신
  • 웹 활동으로 코인, 토큰 보상

웹 3.0 발전 전망

구분전망비고
공공정부 투명성, 접근성 증대디지털 행정
기업비지니스모델 혁신, 데이터 주권 강화탈중앙화 플랫폼
민간개인 데이터 자율성 강화, 수익 창출프로슈머
  • 데이터 탈중앙화와 소유를 통해 사용자 경험 개선 및 요구 충족

참조

NFT, 대체 불가능 토큰

· 약 2분

NFT 개념

  • 블록체인을 활용해 디지털 콘텐츠를 포함한 자산의 원본성을 보장하고 소유권을 주장할 수 있게 하는 가상 토큰
  • 온라인 및 메타버스 내에서 생성된 컨텐츠를 위한 저작권 증명을 위해 필요.

NFT 구성도, 구성요소

NFT 구성도

NFT 구성요소

구분구성요소비고
표준 프로토콜ERC-721NFT
-ERC-1155다중 토큰
기술요소NFT Contract스마트 계약
-NFT Metadata컨텐츠 태그
-NFT MintNFT 발행
-IPFSNFT 미디어 데이터 저장

NFT 비교

구분FTNFT
토큰 정보토큰 이름 및 약어고유 정보
상호 교환성OX
분할성OX
활용송금, 물품 구매자산 소유권

NFT 고려사항

  • NFT가 디지털 자산의 소유권은 증명하지만 저작권은 별도 소유가 가능하므로, 제도적 관리 필요

퍼블릭, 프라이빗, 하이브리드 블록체인

· 약 5분

블록체인 개요

블록체인 개념

  • 탈중앙화된 P2P 네트워크를 기반에 합의알고리즘을 통해 무결성을 제공하는 분산 원장 기술

블록체인 배경

  • 합의속도와 보안성 강화를 위해 프라이빗 블록체인 등장, 투명성과 분산성을 향상시키기 위해 하이브리드 블록체인 확장

퍼블릭 블록체인, 프라이빗 블록체인 구성도, 구성요소 비교, 한계점

퍼블릭 블록체인, 프라이빗 블록체인 구성도

  • 프라이빗 블록체인은 특정 통제 기관에서 트랜잭션 합의 처리

퍼블릭 블록체인, 프라이빗 블록체인 구성요소

구분퍼블릭 블록체인프라이빗 블록체인
참여주체누구나지정된 사용자
소유자없음특정 기관
탈중앙성높음낮음
확장성낮음높음
보안성낮음높음
투명성높음낮음
트랜잭션 속도느림빠름
합의알고리즘PoW, PoSPBFT, Raft 등

퍼블릭 블록체인, 프라이빗 블록체인 한계점

  • 퍼블릭 블록체인은 투명성과 탈중앙성이 높지만, 속도와 확장성이 낮음
  • 프라이빗 블록체인은 속도와 확장성이 높지만, 투명성, 분산성이 낮아 하이브리드 모델 등장

하이브리드 블록체인 개념, 특징

하이브리드 블록체인 개념

  • 퍼블릭 블록체인과 프라이빗 블록체인의 장점 결합, 일부 데이터를 공개로 유지하고 민감 데이터를 비공개 트랜잭션 처리

하이브리드 블록체인 특징

구분내용비고
참여주체일부 공개, 일부 허가된 사용자퍼블릭, 프라이빗 체인 혼합
탈중앙성부분 탈중앙화퍼블릭 체인의 장점
합의 알고리즘DPoS 등 혼합다양한 합의알고리즘 사용

하이브리드 블록체인 활용방안

구분내용비고
공공투명성 요구 높은 공공기록 관리민감데이터 프라이빗 체인
금융금융 거래 투명성고객 정보 프라이빗 체인
민간기업 내부 기록, 거래 스마트 계약비지니스 민첩성, 보안성
  • 다양한 요구사항에 따라 데이터 접근, 검증방식 조절 가능

음성 데이터 마이닝

· 약 3분

음성 데이터 마이닝의 개요

음성 데이터 마이닝의 개념

  • 음성 신호나 데이터를 기계적으로 처리하여 화자의 의견, 감정에 대한 정보를 도출하는 과정

음성 데이터 마이닝 배경

  • HMI (Human Machine Interface)가 기존의 텍스트에서 음성으로 변화하고 있고, 톤과 인토네이션의 차이로 같은 문장이라도 화자의 감정을 파악이 가능해짐.

음성데이터 마이닝의 구성도, 구성요소

음성데이터 마이닝의 구성도

음성데이터 마이닝의 구성요소

구분내용비고
처리기술음성 데이터를 디지털 형식으로 변환하고 처리하는 기술STT, Media Codec, ADC
분석기술음성 데이터를 분석하고 의미를 도출하는 기술데이터 분석 인프라, 시계열 분석 알고리즘, 감정 분석 알고리즘, 상황인지 컴퓨팅

음성 데이터 마이닝 적용 방안

구분내용비고
공공공공 서비스 접근성을 높이고 사회적 포용성을 증대음성 민원 자동화
기업업무 효율성 증대 및 운영 비용 절감회의록 생성 자동화, 무인화 고객센터, AI 경쟁력 강화
민간개인 편의성 증대 및 새로운 서비스 창출실시간 번역 제공, 비대면 원격 진료 기반 마련, IoT 기기 제어

음성 데이터 마이닝 성공 포인트

  • 클라우드 컴퓨팅을 활용하여 온디맨드 방식의 데이터 분석/처리로 비용 절감

파일시스템, 데이터베이스, 블록체인의 저장 특성

· 약 4분

데이터 저장 특성 개요

데이터 저장 특성 개념

  • 웹 서비스와 인터넷 패러다임의 변화로 인해 데이터의 저장, 접근, 처리 기술의 발전

데이터 저장 방식 변화의 필요성

  • FS에서 인터넷의 등장으로 DB 공유, 웹3.0의 출현으로 탈중앙화와 소유의 개념을 가진 블록체인 구조에 정보 저장

파일, 데이터베이스, 블록체인 개념 및 비교

파일, 데이터베이스, 블록체인 개념

아래 그림

  • FS: Inode -> block
  • DB: Table, System Catalog
  • BlockChain: hash based linked list block + merkle tree

파일, 데이터베이스, 블록체인 상세비교

구분파일데이터베이스블록체인
저장단위파일테이블블록체인
저장위치로컬중앙 시스템분산 시스템
저장속도빠름트랜잭션처리, 빠름합의알고리즘, 느림
데이터 저장 방식FS APIDDL, DML합의 알고리즘
트랜잭션없음ACID 보장합의 알고리즘으로 트랜잭션 처리
데이터 중복단일 데이터역정규화로 일부 허용참여자 전체 중복 저장
종류FAT, NFTSRDBMS, NoSQLPublic, Private, Hybrid

블록체인 저장 방식의 문제점과 해결방안

블록체인 저장 방식의 문제점

  • 탈중앙화, 확장성, 보안성 중 모두를 만족할 수 없는 블록체인 트릴레마 존재
  • 합의 알고리즘 수행에 시간이 걸리므로, 실시간 웹 서비스에는 부적합

블록체인 저장 특성 문제 해결방안

구분내용비고
레이어링데이터와 처리계층의 분리로 확장성 향상오프체인, 사이드체인
샤딩데이터 불할 처리로 확장성 향상체인네트워크 샤딩, 코디네이션
하이브리드중앙집중과 탈중앙화의 절충점으로 신뢰성, 보안성, 실시간성 강화RDBMS, 카프카 사용
  • 블록체인 트릴레마와 실시간성 극복을 위해 데이터를 분리하여 처리

파일, 데이터베이스, 블록체인 적용방안

파일데이터베이스블록체인
개인/기업 데이터저장엔터프라이즈 어플리케이션암호화폐
멀티미디어웹 어플리케이션공급망 관리
IPFS빅데이터 분석스마트 컨트랙트

오토스케일링

· 약 3분

오토스케일링 개념

  • 시스템 자원 매트릭을 모니터링하여 서버 사이즈를 자동으로 조절하는 기술
  • 클라우드 컴퓨팅의 온디맨드 방식을 기반으로 자원 최적화, 고가용성, 온프레미스 대비 운영의 단순화를 위해 필요

오토스케일링의 구성

Pod, 메트릭모니터링, 로드밸런서 이미지

구성요소

구분기능설명
정책, 모니터링메트릭 수집, 알람 전송-
서버 이미지 배포Scale-Out, Scale-In, 서버 프로비저닝-
서비스 연결Health-Check, 트래픽 제어-

오토스케일링시 서버 추가까지 필요한 경우, Scale-Up이 비용절감의 효과를 가져올 수 있음.

비교

스케쥴기반, 부하기반

구분스케쥴 기반 오토스케일링부하 기반 오토스케일링
트리거예약된 시간트래픽
수치예측 가능한 부하실제 사용량 기반
장점트래픽 증가 지연 방지효율적인 리소스 사용량
단점예측을 벗어날시 리소스 낭비, 부족인스턴스 배포시간으로 인한 지연

Scale Up, Scale Out

구분Auto Scale UpAuto Scale Out
추가리소스CPU, Memory인스턴스
장점인스턴스, NW관리 없어 간단높은 확장성, 인스턴스 장애 격리
단점물리적 한계, 고비용, 시스템 다운타임복잡한 NW구성, 세션 처리 등

성공포인트

  • maxUnavailable, maxSurge 적절히 조절
  • scale down 으로 비용 절감

클라우드 컴퓨팅, 서비스 모델, 배포모델

· 약 3분

클라우드 컴퓨팅의 개념

  • 가상화 기술을 이용하여 사용자 필요시 인터넷을 통해서 서비스 형태로 IT자원을 제공하는 컴퓨팅 기법
  • 서비스 책임범위, 인프라 소유권에 따라 다양한 모델 등장

클라우드 컴퓨팅 모델의 구성도, 구성요소, 비교

클라우드 컴퓨팅 모델의 구성도

클라우드 컴퓨팅 모델의 구성요소

  • 서비스 모델: 클라우드 자원의 제공 방식에 따른 분류
구분내용비고
IaaS-사용자 관리 책임
PaaS-공통 관리 책임
SaaS-제공자 관리 책임
  • 배포 모델: 클라우드 자원 소유주체와 관리방식에 따른 분류
구분내용비고
Private-사용자 소유
Public-제공자 소유
Hybrid-혼합 모델

배포모델과 서비스모델 비교

구분배포모델서비스모델
목적지속 가능 서비스 기반온디맨드 서비스
범위클라우드 구성 환경클라우드 서비스
접근온프레미스와의 연결성비용 절감
  • 온프레미스 서비스의 구성 환경에 따라 배포모델을 선택하고, 비지니스 요구사항과 비용에 맞는 서비스모델을 선택.

클라우드 컴퓨팅 활성전략

구분내용비고
배포모델공공기관/지자체 민관협력형 클라우드-
-금융사 하이브리드 멀티 클라우드-
서비스모델CNCF Cloud Native App-
-K-PaaS-
  • 기업은 목적에 맞는 전략을 활용하여 적절한 모델을 선택.

클라우드 컴퓨팅 고려사항

  • 해당 국가의 법, 제도적 규제사항을 만족하기위한 소버린클라우드와 재난시 빠른 복구가 가능한 멀티클라우드 구축 고려

화이트박스, 블랙박스 테스트

· 약 4분

129

화이트박스, 블랙박스 테스트 개요

화이트박스, 블랙박스 테스트 개념

화이트박스, 블랙박스 테스트 배경

  • 테스트 V모델에서 요구사항/분석/설계/코딩 측면은 개발자 관점의 화이트박스 테스트로 Verification 하고,
  • 단위/통합/시스템/사용자 테스트 측면은 사용자 관점의 블랙박스 테스트로 Validation 하게 설계 필요.

화이트박스, 블랙박스 테스트 개념도, 핵심요소, 적용방안

화이트박스, 블랙박스 테스트 개념도

  • 내부구조를 파악하는지 여부에 따라 기법 변경

화이트박스, 블랙박스 테스트 핵심요소

구분화이트박스블랙박스
테스트기반소스코드, 제어흐름그래프요구사항명세서, 유스케이스
테스트설계문장커버리지, 결정커버리지, 조건커버리지, 경로커버리지동등분할, 경계값 분석, 오류추정, 원인/결과 분석
테스트목표코드의 정확성, 안정성, 완전성 검증기능요구사항 충족여부, UX 및 시스템 동작 검증
테스트시점개발 초기 단계개발 후반 단계
테스트자동화JUnit, Jest 등 단위테스트 프레임워크Selenium, Playwright 등 UI테스트 프레임워크
장점숨겨진 결함 발견 용이, 테스트 커버리지 향상사용자 관점 검증, 비교적 쉬운 TC 설계
단점높은 비용, 시간 소모, 코드 변경시 TC 수정 필요숨겨진 결합 발견 어려움, 낮은 TC 커버리지

화이트박스, 블랙박스 테스트 적용방안

구분화이트박스블랙박스
단위테스트각 함수, 모듈 기능 검증없음
통합테스트모듈간 인터페이스 상호작용 검증여러 모듈 통합 후 기능 검증
시스템테스트없음전체 시스템 기능, 성능 검증

테스트시 고려사항

  • 화이트박스와 블랙박스 테스트의 장점을 결합하여 제한적 내부 정보를 활용한 그레이박스 테스트 기법 고려

모듈화, 응집도, 결합도

· 약 4분

128

모듈화

모듈화의 개념

  • 시스템을 분해하고 추상화하여 SW 성능을 향상시키거나, 시스템의 디버깅, 테스트, 통합 및 수정을 용이하도록 하는 SW 설계 기법

모듈화의 장점

  • 모듈 재사용성, 개발과 유지보수성
  • 복잡성 감소
  • 오류 파급효과 최소화
  • 기능 분리가능, 인터페이스 단순화
  • 낮은 결합도, 높은 응집도

응집도와 결합도 개요

응집도와 결합도의 개념

  • 응집도: 하나의 모듈 내부의 처리요소 간 기능적 연관성을 측정하는 척도
  • 결합도: 모듈 간관련성을 측정하는 척도

응집도와 결합도의 배경

  • 최근 MSA 적용에 따른 모듈화의 중요성이 증가되었고, MSA의 각 서비스 단위(컴포넌트)는 응집도가 높고 결합도가 낮게 구현되어야함.

응집도와 결합도 종류 및 설명

응집도의 종류 및 설명

우논시절통순기

종류설명응집도
능적모든 요소가 단일 기능 수행높음
차적한 기능의 출력이 다른 기능의 입력으로 사용
신적동일한 입출력 데이터로 다른 기능 수행
차적기능 요소가 반드시 특정 순서대로 실행
기능 요소가 모두 같은 시간에 실행
리적논리적으로 유사하나 관계가 밀접하지 않음
연적모듈 내 요소가 연관이 없음낮음
  • 가능한 높은 응집도를 추구하여 유지보수 용이성 확보
  • 모듈 간 결합도는 최소화하여 각 모듈은 높은 응집도 확보
  • Co-incidental -> Logical -> Temporal -> Procedural -> Communicational -> Sequential -> Functional

결합도의 종류 및 설명

내공외제스자

종류설명결합도
모듈 간 파라미터 전달낮음
탬프모듈 간 자료구조 전달
다른 모듈을 제어하기 위해 플래그 전송
모듈이 SW외부 환경과 연관
모듈들이 공통 데이터 참조
다른 모듈의 내부 데이터 변경높음
  • 모듈 상호간 낮은 결합도 추구
  • 모듈 간 사이드 이펙트(리플 이펙트) 최소화
  • Contents -> Common -> External -> Control -> Stamp -> Data

응집도, 결합도 적용방안

구분내용비고
설계시스템 모듈화, API통신유지보수 용이성
개발모듈간 인터페이스 단순화, 명확한 역할 분담의존성 주입

모듈성을 높이기 위한 고려사항

  • 코드리뷰를 통해 개발단계에서의 의존성 문제, 인터페이스 불일치 등 저해요인 방지
  • MSA 설계시 서비스 단위로 높은 응집도, 낮은 결합도를 갖게 설계