본문으로 건너뛰기

"pe/software-engineering" 태그로 연결된 55개 게시물개의 게시물이 있습니다.

기술사 소프트웨어공학 토픽

모든 태그 보기

테스트 커버리지, 코드 커버리지

· 약 3분

테스트 커버리지와 코드 커버리지의 개념

  • 테스트 커버리지: SW 테스트시 얼마나 많은 기능이 테스트되었는지를 측정하는 지표
  • 코드 커버리지: 코드의 각 구문이 테스트 중 얼마나 실행되었는지 측정하는 지표

테스트 커버리지, 코드 커버리지 구성요소, 적용방안

테스트 커버리지, 코드 커버리지 구성요소

구분커버리지비고
테스트 커버리지기능 커버리지요구사항별, 유스케이스, 시나리오
사용자시나리오 커버리지UI, 통합, 시스템
코드 커버리지라인 커버리지코드라인, 구문, 조건
함수 커버리지함수 호출, 함수 내부
분기 커버리지조건, 결정, 다중 조건

테스트 커버리지, 코드 커버리지 적용방안

구분적용방안비고
테스트 커버리지테스트 계획 단계부터 목표 수립테스트 관리도구 활용
테스트 실행시 커버리지 측정 보고서 작성
코드 커버리지코드 커버리지 측정도구 활용적정분석도구 통합
테스트 실행 후 커버리지 분석CI/CD 통합

커버리지 측정시 고려사항

  • 비용과 시간, 테스트 품질을 고려한 현실적인 커버리지 목표 설정 필요

품질비용 항목

· 약 4분

품질비용 항목의 개념

  • SW제품의 품질을 유지하고, 향상시키기 위해 설계부터 유지보수 단계까지 발생하는 모든 비용
  • SW개발 초기 단계부터 품질 비용 항목을 관리해야 후속 단계에서 결함 수정 및 유지보수 비용 절감 가능
  • 품질비용을 투자하면 원가가 줄어든다는 것은 6시그마(DMAIC)에서 증명

품질비용항목 개념도, 구성요소, 주요사례

품질비용항목 개념도

  • 예방, 평가 비용을 높혀 실패비용을 줄이는 것이 품질비용 관리의 목표

품질비용항목 구성요소

예평내외

구분내용비고
예방비용결함 예방 투입 비용교육, 훈련, 프로세스 개선
평가비용제품 품질 평가 및 검증 비용테스트, 리뷰, 감리
내부실패비용개발단계에서 발견된 결함 수정 비용재작업, 수정, 폐기
외부실패비용출시 후 결함 발생 비용고객지원, 환불, 소송

품질비용항목 주요사례

구분사례비고
예방비용프로젝트 및 자원관리품질 계획, 수립, 통제, 형상, 보안 관리
예방품질활동프로세스 점검, 산출물 검토, 내부QA
평가비용평가품질활동장비검수, 피어리뷰, 코드리뷰
테스트단위, 통합, 시스템, 인수
내부실패비용내부실패 관리, 품질활동추가 작업비용, 조치
테스트 결함 조치테스트 후 결함 조치
외부실패비용결함 처리 조치이미지 손실, 고객불만 처리
납기 지연 대응프로젝트 지연 대응, 장애 복구
  • 품질비용은 예방, 평가, 내부실패, 외부실패 순으로 사용 권장

품질비용 고려사항

  • 납기일을 준수하기 위해 테스트기간을 줄이고 있는 현황을 해결하기 위해, 프로젝트 계획 단계에서부터 품질비용을 고려한 기간산정 필요.

구조적 방법론, 애자일 방법론

· 약 4분

구조적 방법론, 애자일 방법론 개념

  • 구조적방법론: 전체 시스템을 기능에 따라 분할하여 개발하고, 이를 통합하는 프로세스 중심의 하향식 방법론
  • 애자일방법론: SW개발을 반복적이고 점진적으로 진행하고, 변경에 유연하게 대응하는 방법론

구조적 방법론, 애자일 방법론 구성요소, 주요 기법, 적용방안

구조적 방법론, 애자일 방법론 구성요소 비교

구분구조적 방법론애자일 방법론
접근방식계획중심, 단계적반복적, 유연한 방식, 짧은 개발 사이클
문서화모든 단계에서 상세한 문서화문서보다는 동작하는 SW에 가치
고객 참여프로젝트 초기에 요구사항 정의 후 참여 없음지속적인 피드백과 개선
변경관리변경에 유연하지 않음유연한 변경 수용
개발 속도긴 개발 주기빠른 개발 주기
장점명확한 구조와 규정된 프로세스를 통한 크고 복잡한 프로젝트 적합변화하는 시장 요구사항에 빠른 대응
단점유연성 부족, 계획 변경 어려움문서 부족으로 인한 리스크
주요 기법데이터 흐름 다이어그램, 분할 정복, 정형화스크럼, 칸반, TDD

애자일 방법론의 주요 기법 스크럼, 칸반 비교

구분스크럼칸반
개념고정된 역할과 이벤트를 통한 작업관리시각화를 통한 작업 흐름 관리
특징스프린트, 데일리스크럼, 회고칸반보드, 대기행렬, 총 주기 시간
장점명확한 역할분담, 짧은 주기와 반복작업유연한 작업관리, 지속적인 개선
단점초기적응 어려움역할 불명확, 관리 어려움

개발 방법론 선택시 고려사항

  • 레거시시스템 여부, 팀 성숙도 측면을 고려하여 구조적 방법론과 애자일 방법론 중 선택 필요

차세대시스템과 오픈결함

· 약 4분

차세대 시스템 오픈관련 문제점 개요

  • 사업 사전준비 부족과 프로젝트 관리 역량 부족 등 미진한 대응으로 대국민 서비스 품질 저하 및 공공기관 신뢰성 저하

오픈 관련 문제점의 원인

기술적 원인

구분문제짐내용
데이터데이터 전환 미흡마이그레이션 후 정합성 문제
도메인 분석 미흡시스템 통합에 딸느 영향도 파악 부족
기능기능 미구현다양한 유저의 필요 기능 불안전 구현
개발자 역량개발자의 도메인 지식 부족
시스템테스트 부족시스템 통합 후 미구현 기능 발견
시스템 검수 미흡성능 요구사항 미준수

관리적 원인

구분문제점내용
요구사항불명확한 요구사항일정 지연 원인
리스크 관리 부족위험 수집, 판별, 분석, 대응 미흡
제도대기업 참여제한프로젝트 관리 경험 부족
감리체계 미흡산출물 위주 감리로 실무 괴리
적정대가 미지급불공정한 과업 변경이해관계자 협의 없는 변경
개발자 이탈핵심인력 중 90% 과업 진행 중 이탈

재발 방지를 위한 대책 및 법,제도 보완점

재발 방지를 위한 대책

구분대책내용
요구사항공공 PMO 활용사업의 성공적 수행을 위한 관리
사전심사제도과제 진행 전 이슈 분석
적정대가 미지급과업심의위원회심의 의무화로 합의 진행
RFPFP 기반한 대가 산출
데이터데이터 품질 검증마이그레이션 테스트 계획 수립
전문가 활용업무 도메인, 데이터 전문가 활용

재발 방지를 위한 법, 제도 보완점

구분보완점내용
발주발주 시행근거 마련발주기관 지표 항목 개선
분리분할발주 강화사업 규모 따른 관리 위험 완화
사업참여대기업 참여제한 완화프로젝트 관리 경험 증가로 안정성 증가
컨소시엄 구성 체계 변경동일 사업 참여 컨소시엄 책임 조정
제도감리제도 강화업무 부문 감리 항목 강화
하도급 제도 개선하도급 관리 기준 개정 효율화
SW산업 진흥법 개선공공 SW사업 기반 제도 수정

오픈준비 점검지표

ISO 25010 기반

기능 점검지표

  • 적합성
  • 정확성
  • 상호운용성
  • 호환성

성능 점검지표

  • 사용성
  • 신뢰성
  • 유지보수성

요구사항 추출

· 약 3분

요구사항 추출의 개념

  • 시스템, 제품, 서비스를 개발하는 과정에서 이해관계자들의 원하는 바를 파악하고 명확하게 정의하는 활동
  • 프로젝트의 명확한 목표 설정, 이해관계자 만족, 리소스 절감, 리스크 관리를 위해 필요.

요구사항 추출 기법, 품질 속성, 개발 프로세스

요구사항 추출 기법

구분내용비고
인터뷰이해관계자와 직접 대화심층적 정보
설문조사설문지 통한 다수 이해관계자 요구사항 확보효율적, 정량적
브레인스토밍다수가 자유롭게 아이디어 제시창의적 아이디어
프로토타이핑시스템 초기 모델 제작, 사용자 피드백사용자 중심 요구사항
워크숍이해관계자가 모여서 토론, 협의합의 도출 효과
역공학기존 시스템 및 문서 분석숨겨진 요구사항 발견

요구사항 품질 속성

구분내용비고
원자성요구사항이 복합 목적이 아닌 단일 목적인지요구사항 충돌 방지
완전성요구사항이 정보의 모든 것을 포함하는지모든 이해관계자 요구 반영
비모호성명확하지 않거나 같은 내용을 다르게 언급했는지오해소지 제거
추적가능성요구사항을 쉽게 추적가능한 고유번호변경관리 대응
테스트가능성요구사항이 검증가능하게 기술되었는지객관적 기준

요구사항 추출 프로세스

요구사항 추출시 고려사항

  • 제한된 리소스 내에서 효율적인 개발을 위해 우선순위 설정 필요

객체지향 방법론

· 약 3분

객체지향방법론의 개념

  • SW 생명주기에 객체지향 개념을 접목시켜 객체를 중심으로 시스템을 모델링하는 방법론
  • 캡슐화, 추상화, 상속, 다형성과 정보은닉을 통해 복잡성을 줄이고, 재사용성과 유지보수성을 극대화하여 비용 절감

캡슐화, 정보은닉의 개념도, 비교, 적용방안

캡슐화와 정보은닉 개념도

  • 캡슐화(수단)는 정보은닉(요건)을 실현하기 위한 수단으로 활용

캡슐화와 정보은닉 비교

구분캡슐화정보은닉
개념객체의 속성과 메소드를 하나의 단위로 묶는 것객체 내부 구현을 감추는 것
목적응집도와 모듈성 향상내부 상태 보호, 변경용이성 확보
수단접근제어자, 접근메소드접근제어자, 인터페이스
효과모듈화, 재사용성안정성, 유지보수성

캡슐화, 정보은닉 적용방안

구분캡슐화정보은닉
설계단계클래스 책임 분배, 접근제어자모듈화, 추상화, 레이어설계
구현단계getter/setter, 생성자의존성 주입, 디자인패턴

객체지향 프로그래밍 고려사항

  • SOLID 원칙 준수, GoF의 디자인패턴 활용, 낮은 결합도, 높은 응집도를 가진 클래스, 모듈 구현

SRS, 요구사항 명세서

· 약 3분

요구사항 명세서 개념

  • SDLC 전 단계에서 검토, 승인, 평가의 기준이 되는 SW가 갖추어야할 기능, 성능, 제약조건 등이 기술된 명세서
  • 요구사항의 애매모호성을 제거하고, FP가 도출 가능한 수준까지 작성하여 의사소통 비용절감 및 변경관리용이성 증대를 위해 필요.

요구사항 명세서의 구성도, 핵심요소, 활용방안

요구사항 명세서의 구성도

요구사항 명세서 핵심요소

구분내용비고
기능요구사항시스템이 수행할 기능, 제공해야할 서비스 요구사항사용자 관점
성능요구사항시스템 속도, 처리량, 응답시간 등 시스템 성능 요구사항측정가능한 구체적 수치
인터페이스요구사항외부시스템 연동, 하드웨어와 상호작용 방식에 대한 요구사항데이터 포맷, 프로토콜
설계 제약조건시스템 설계, 구현에 제약을 가하는 요소 설명개발환경, 표준 준수

요구사항 명세서 활용방안

구분내용비고
설계시스템 아키텍처, 인터페이스, UI/UX요구사항 충족 설계
구현코딩, 단위테스트 기준기능 요구사항 준수
테스트테스트케이스 설계, 요구사항 검증결함 문서화
유지보수변경관리, 사용자 교육, 개선피드백 반영

요구사항 명세서 작성시 고려사항

  • 명확하고 일관된 용어를 사용하여 이해관계자 간 의사소통의 투명성 제고

3R, Reuse, Re-engineering, Reverse-engineering

· 약 4분

3R 개념

  • SW 유지보수성 향상 및 비용절감을 위해 레파지토리를 기반으로 역공학(Reverse Engineering), 재공학(Re-engineering), 재사용(Reuse)을 이용하여 SW 생산성을 극대화하는 극대화하는 기법
    • Reuse: 기존에 개발된 SW 자산을 새로운 시스템 개발에 재활용하는 것
    • Re-engineering: 기존 시스템을 분석하여 문제점을 파악하고, 개선된 시스템으로 재구축하는 것
    • Reverse-engineering: 소스코드 없이 실행 파일이나 문서 등을 분석하여 시스템의 구조, 동작 방식 등을 파악하는 것
  • 유지보수 비용 절감 / 개발 생산성 향상 / 시스템 품질 향상 / 시스템 이해도 향상

3R의 관계도, 상세설명, 핵심기법

3R의 관계도

  • 역공학을 통해 기존 설계를 복구한 후 재공학을 통해 개선하고, 이를 통해 구현된 SW를 다시 재사용

3R의 상세설명

구분내용비고
역공학소스 코드 없이 시스템 분석 후 설계 정보 추출분석도구 활용(디버거, 디컴파일러), 설계 문서 복구
재공학기존 시스템 분석 결과를 바탕으로 시스템 개선 및 재구축리팩토링, 아키텍처 개선, 성능 최적화
재사용검증된 소프트웨어 자산을 새로운 시스템 개발에 활용컴포넌트, 디자인패턴, 모듈 재사용

3R의 핵심기법

구분내용비고
정적분석코드 실행 없이 바이트코드, 바이너리코드 분석역공학
리팩토링코드 스멜을 제거하여 단순성을 높히는 방법재공학
디자인패턴검증된 설계 패턴을 활용하여 재사용성 향상재사용
MSA모듈화된 서비스를 웹 인터페이스로 호출하여 통합하는 방법재사용

3R의 효과성을 높이기 위한 고려사항

구분내용비고
설계 측면SOLID 원칙 준수로 낮은 결합도, 높은 응집도의 모듈 설계유지보수성, 확장성
도구 측면VCS 를 사용하여 SW 코드 및 자산의 변경 이력 관리유지보수성, 효율성

카나리 테스트

· 약 3분

카나리 테스트 개념

  • 새로운 버전의 소프트웨어나 시스템을 실제 사용자 환경에 배포하기 전에 제한된 사용자 그룹에게 먼저 공개하여 안정성과 성능을 검증하는 방법

카나리 테스트 구성도, 구성요소, 적용방안

카나리 테스트 구성도

카나리 테스트 구성요소

구분내용비고
로드 밸런서사용자 트래픽을 Canary 배포와 기존 배포에 분산트래픽 비율 조절
기존 배포현재 운영 중인 안정적인 버전대부분의 사용자에게 서비스 제공
Canary 배포새로운 버전의 SW 또는 시스템제한된 사용자에게만 공개
모니터링 시스템각 배포 환경의 성능, 안정성, 오류 등을 실시간 추적 및 비교문제 발생 시 즉각적인 대응

카나리 테스트 적용방안

환경적용 기술설명
온프레미스L4 스위치L4 로드 밸런서를 활용하여 트래픽을 신규 시스템으로 점진적으로 전환
DNSDNS 라우팅을 이용하여 특정 사용자 그룹을 신규 시스템으로 유도
클라우드K8S Canary 배포쿠버네티스에서 Canary 방식으로 일부 트래픽을 새로운 버전으로 전송
K8S Blue-Green 배포두 개의 환경(Blue, Green) 중 하나를 활성화하여 빠른 롤백 및 배포 가능

카나리 테스트 고려사항

  • 문제가 발생했을 때 신속하게 이전 버전으로 롤백 가능한 계획 수립 필요

위험관리

· 약 4분

위험관리

  • 프로젝트에서 위험을 최소화하고 성공적으로 완료하기 위해 식별된 위험요인을 분석, 분류하고 대응하는 관리활동
  • ISO 31000, PMBOK6을 참조하여 리스크 베이스라인 설정

위험관리 개념도, 리스크 대응 절차

위험관리 개념도

리스크 대응 절차

구분절차설명
계획위험관리계획수립위험관리 전반 활동 정의, 위험관리계획서 작성
위험식별프로젝트 위험 식별과 특정 문제 파악, 위험관리대장 작성
정성적 위험분석발생확률과 영향도 평가, 우선순위 결정, P/T 우선순위 선정
정량적 위험분석프로젝트 목표에 미치는 영향 수치적 분석, 위험보고서 작성
위험대응계획수립대응 전략 수립 및 처리방안 마련, 대응계획서 작성
실행위험 대응 실행수립된 위험 대응 및 계획 실행, 변경 요청 수행
감시/통제위험 감시 및 통제실행 결과 모니터링, 영향 분석, 작업 성과 보고서 작성

위협/기회 대응전략

부정적 리스크 대응전략

회전감수이

대응 수준대응 방안설명
적극적이관 Escalation위험이 발생할 가능성이 있는 활동을 변경하거나 제거하여 위험을 회피
회피 Avoidance위험 발생 가능성을 원천적으로 제거
전가 Transference대응 조치를 제3자(보험, 외부 업체 등)에게 전가하여 리스크 감소
소극적감소 Mitigation위험 발생 가능성과 영향을 감소하도록 대응
수용 Acceptance대응 전략 없이 위험을 감수하고 발생 시 대응 수행

긍정적 리스크 대응전략

활공향수

대응 수준대응 방안설명
적극적이관 Transfer프로젝트 실행을 제3자에게 전가하거나 위탁하여 기회를 극대화
활용 Exploit기회 극대화를 위해 적극적 활용 전략을 수립 및 실행
공유 Share기대한 비율을 제3자와 공유하여 공동의 이익 창출
소극적향상 Enhance긍정적 영향을 식별한 후 최대화하여 기회 규모 변경
수용 Acceptance기회를 판단하지만 소극적 대응 수행