topcit 간략 공부

created : 2022-05-20T13:27:18+00:00
modified : 2022-05-20T14:17:16+00:00

topcit

기술영역

01. 소프트웨어 개발

  • 성공적인 SW프로젝트의 핵심요소:
    • Process(Procedures & Methods)
    • People(Process & Organization)
    • Technology(Tool & Equipments)
  • 소프트웨어 공학의 4가지 중요요소:
    • 방법, 도구, 절차, 사람
  • 소프트웨어 개발 생명 주기:
    • 타당성 검토 -> 개발 계획 -> 요구사항 분석 -> 설계 -> 구현 -> 테스트 -> 운용 -> 유지보수
  • 소프트웨어 개발 방법론의 필요성:
    • 개발 경험의 축적 및 재활용을 통한 개발 생산성을 향상
    • 효과적인 프로젝트 관리
    • 공식 절차와 산출물을 제시하고 표준용어를 통일하여 의사소통 수단 제공
    • 각 단계별 검증과 승인된 종료를 통해 일정 수준의 품질 보증
  • XP 가치:
    • 의사소통, 단순성, 피드백, 용기, 존중
  • XP 기본 실천 방법:
    • 개발 : 단순한 설계, 테스트 기반 개발, 리펙토링, 코딩 표준, 짝 프로그래밍, 코드 공유, 지속적인 통합
    • 관리 : 계획 게임, 작은 릴리즈, 메타포
    • 환경 : 주당 40시간 작업, 현장 고객
  • 스크럼 프로세스 산출물:
    • 제품 백로그, 스프린트 백로그, 소멸 차트
  • 스크럼 특징:
    • 투명성, 타임박싱, 커뮤니케이션, 경험주의 모델
  • 응집도의 종류:
    • 기능적 응집도: 모듈 내부의 모든 기능 요소들이 단일 문제와 연관되어 수행될 경우의 응집도
    • 순차적 응집도: 모듈 내 하나의 활동으로부터 나온 출력 데이터를 그 다음 활동의 입력데이터로 사용할 경우의 응집도
    • 교환(통신)적 응집도: 동일한 입력과 출력을 사용하여 서로 다른 기능을 수행하는 구성 요소들이 모였을 경우의 응집도
    • 절차적 응집도 : 모듈이 다수의 과련된 기능을 가질 때 모듈 안의 구성 요소들이 그 기능을 순차적으로 수행할 경우의 응집도
    • 시간적 응집도 : 특정 시간에 처리되는 몇개의 기능을 모아 하나의 모듈로 작성할 경우의 응집도
    • 논리적 응집도 : 유사한 성격을 갖거나 특정 형태로 분류되는 처리 요소들로 하나의 모듈이 형성되는 경우의 응집도
    • 우연적 응집도 : 모듈 내부의 각 구성 요소들이 서로 관련 없는 요소로만 구성된 경우의 응집도
  • 결합도 종류:
    • 자료 결합도, 스탬프 결합도, 제어 결합도, 외부 결합도, 공통 결합도, 내용 결합도
  • 모델링의 3가지 관점:
    • 기능 관점, 동적 관점, 정보 관점
  • 디자인 패턴 분류:
    • 생성패턴 : 객체의 생성과정에 관여하는 패턴
      • Abstract Factory, Builder, Factory Method, Prototype, Singleton
    • 구조패턴 : 클래스나 객체의 합성에 관한 패턴
      • Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy
    • 행위패턴 : 클래스나 객체들이 상호작용하는 방법과 책임을 분산하는 방법을 정의하는 패턴
      • Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template method, Visitor
    • 클래스패턴: 클래스와 서브 클래스 간의 관련성을 다루는 패턴, 관련성은 주로 상송이며 컴파일 타임에 정적으로 결정한다.
    • 객체패턴 : 객체 관련성을 다루는 패턴으로서 런타임에 변경할 수 있으며 동적인 성격을 갖는다.
  • 테스트 설계 기법:
    • 명세 기반 기법:
      • 동등 분할 : 동등하게 분할된 영역에서 대표값으로 수행하도록 테스트 케이스를 설계하는 기법
      • 경계값 분석 : 동등 분할의 경계 부분에 해당되는 입력값에서 결함이 발견될 확률이 높기 떄문에 경계값까지 포함하여 테스트 케이스를 설계하는 기법
      • 페어와이즈 조합 테스팅 : 테스트에 필요한 각 값들이 다른 값들과 최소한 한번씩은 조합을 이루게 테이블을 만ㄷ르고, 그에 따라 테스트를 수행하도록 설계하는 기법
      • 결정테이블 테스팅 : 테스트 케이스가 결정 테이블에 표시된 입력값과 자극(원인)의 조합을 테스트하도록 설계하는 기법
      • 상태전이 테스팅 : 상태 전이도를 기반으로 이벤트, 액션, 활동, 상태, 상태전이 사이의 관계를 설계하는 기법
      • 유스케이스 테스팅 : 시스템이 유스케이스로 모델링 되어있을 때, 유스케이스에서 테스트 케이스를 도출하는 기법
    • 구조 기반 기법:
      • 제어흐름 테스팅 : 컴포넌트나 시스템을 통해 실행될 때 모든 가능한 이벤트 흐름(경로)구조를 테스트할 수 있게 설계하는 기법
      • 커버리지 테스팅 : 시스템 또는 소프트웨어의 구조가 테스트 스위트에 의해 테스트된 정도인 커버리지를 달성하기 위해 테스트 케이스를 설계하는 기법
      • 최소비교 테스팅 : 변형 조건/결정 개념을 사용하여 입력값의 조합을 테스트하도록 테스트 케이스를 도출하는 테스트 설계 기법
    • 경험 기반 기법:
      • 탐색적 테스팅 : 테스터가 테스트를 수행하면서 테스트 설계를 능동적으로 제어하고, 새롭고 보다 나은 테스트를 설계하기 위해 테스트를 수행하는 동안 얻은 정보를 활용하는 비공식적인 테스트를 설계하는 기법
      • 분류 트리 기법 : 분류 트리로 표현된 테스트 케이스를 입력 및 출력 도메인의 대표값을 조합하여 수행하도록 설계하는 기법