[정보처리기사]4단원 소프트웨어공학 오답노트


4단원 소프트웨어공학 오답노트

  • 시스템
    • 구성요소
      • 입력
      • 처리 : 입력된 데이터를 처리방법과 조건에따라 처리
      • 출력
      • 제어 : 처리과정이 올바르게 진행되는지 감독
      • 피드백
      • 상태 X

  • 프로젝트 관리 3P
    • 사람 (Person)
    • 문제 (Problem)
    • 프로세스 (Process)
      • 소프트웨어 개발에 필요한 전체적인 작업계획 및 Framework 구조를 고려

  • CPM (Critical Path Method)

    대단위 계획의 조직적인 추진을 위해 자원의 제약하에 비용을 적게 사용하면서
    최단시간 내 계획 완성을 위한 프로젝트 일정 방법
    
    • 임계 경로(최장경로) (프로젝트 개발 기간을 결정) 제공
      • 시작부터 완료까지 가장 오래걸릴 수 있는 길을 찾으면 됨
    • 개별 작업에 대한 가장 근접한 시간 측정 기준이 됨
    • 각 작업에 대한 시작시간 정의
    • 작업에 필요한 소요기간을 예측
    • 작업들 간 경계시간을 계산
    • 작업간의 관계를 파악할 수 있게 함
      • 정확한 시간예측 X
    • 한 이정표에서 다른 이정표에 도달하려면 이전의 작업이 모두 완료되어야 함
    • 각 작업 = 원형 노드
    • 각 작업 이름과 소요기간을 표시
    • 간선은 작업사이의 의존관계를 나타냄
    • 프로젝트 내
      • 작업이 수행되는 시간
      • 작업 사이의 관계 파악가능
      • 경영층의 과학적인 의사결정을 지원
      • 효과적인 프로젝트 통제가 가능
      • 막대그래프 X

  • 브룩스(Brooks) 법칙
    • 새로운 개발인력이 진행 중인 프로젝트에 투입될 경우 작업 적응 기간과 부작용

  • 비용 산정 기법 (COCOMO 기법)
    • LOC 기법
      • 두명의 개발자가 5개월에 걸쳐 = (5x2)
      • 10000 라인의 코드
      • 10000 / (5x2)

  • 분석
    • 자료흐름도 (DFD, Data Flow Diagram)
    • 버블차트 = 자료의 흐름을 기술하는 방법 (시간 흐름 개념 X)
    • 제어의 순서흐름은 알 수 있지만, 제어에 대한 정보는 X
      • 문제를 정확히 읽을 것 (순서 O 제어 X)
    • 각각의 프로세스에 대하여
      • 개발적인 상세화 및 계층화가 가능
      • 최하위 단계 프로세스의 처리 절차를 기술한 Mini-Spec
    • 구조적 분석 기법에 이용
    • 하향식 분석(Top-down Analysis)의 유용한 도구
    • 표기법
      • 프로세스 (Process) - 원 (ㅇ)
      • 자료의 흐름 (Data Flow) - 화살표
      • 자료 저장소 (Data Store) - 등호(=), 직선(평행선)
      • 단말 (terminator) - 사각형 (ㅁ)

  • 정형 기술 검토 (FTR)
    • 목적
      • 해당 요구사항과 일치하는 지 검증
      • 기능과 로직에 오류가 있는지 확인
      • 소프트웨어가 균일한 방식으로 개발
      • 용이하게 관리
    • 지침사항
      • 제품 검토 집중
      • 논쟁과 반박 제한
      • 문제영역 명확표현
      • 의제와 참가자의 수를 제한
      • 사전준비 강요
      • 체크리스트
      • 자원, 시간, 일정 할당
      • 재검토
      • 적정 인력 투입 확인 X

  • 품질 평가 기준 항목
    • 정확성 (Correctness)
    • 신뢰성
    • 효율성 (Effciency)
      • 요구된 기능을 수행하기 위한 시스템 능력
      • 필요한 자원의 소요 정도
    • 무결성
    • 사용용이성 (Usability)
    • 유연성 (Flexibility)
      • 새로운 요구사항에 접하여 쉽게 수정될 수 있는 시스템 능력
    • 이식성 (Portability)
    • 재사용성
    • 상호 운용성

  • 검토 회의 : 워크 스루(Walk-through)
    • 소프트웨어의 품질을 검토하기 위한 기술적 검토 회의
    • 제품 개발자가 주최
    • 검토자료는 사전에 배포
    • 오류의 조기 검출을 목적
    • 오류의 문제 해결이 목적이 아님
  • 인스펙션(Inspection)

  • 위험 관리

    프로젝트 추진 과정에서 예상되는 각종 돌발상황(위험)을 미리 예상
    이에대한 적절한 대책을 수립하는 일련의 활동
    
    • 위험요소
      • 인력부족
      • 예산관리
      • 일정관리
      • 사용자 요구변경
      • 유지보수 X
    • 소프트웨어 위험의 대표적 특성 불확실성 손실

  • 프로젝트 팀
    • 분산형 팀
      • 참여도와 만족도를 높이고 이직률을 낮게함
      • 팀 구성원 각자가 서로의 일을 검토
      • 구성원이 같이 책임
      • 장기프로젝트에 적합
      • 의사 결정 시간이 늦어질 수 있음
    • 중앙집중형 팀 (= 책임 프로그래머 팀, Chief Programmer Team)
      • 한명의 고급프로그래머
      • 몇명의 중급 프로그래머
      • 책임 프로그래머
        • 요구분석 및 설계
        • 판단
        • 지시
        • 배분
      • 프로그래머 역할
        • 코드 작성
        • 테스트
        • 디버깅
        • 문서 작성
      • 프로그램 사서 역할
        • 프로그램 리스트
        • 설계 문서
        • 테스트 계획
      • 보조 프로그래머
        • 업무 지원
        • 품질 보증 담당자 섭외

  • 정보시스템 개발 단계 중 프로그래밍 언어 선택시 고려사항
    • 개발 정보시스템의 특성
    • 사용자의 요구사항
    • 컴파일러의 가용성
    • 독창성 X

  • 모듈화 평가 기준
    • 결합도 줄임 = 독립성 높임 = 응집도 높임
    • 결합도
      • 의존하는 정도 (결합도가 약할수록 좋음)
      • 두 모듈간의 상호작용
    • 자스(잤으)니까 합격제외 부는 나()처럼 (내려갈수록 점점 강해짐)
      • 료(데이터) 결합도
        • 데이터에 대한 처리결과
        • 제일 약하니까 제일 좋음
      • 탬프 결합도
        • 자료 구조 공유 정도
      • 어 결합도
        • 제어 신호 공유 정도
        • 상위 모듈에게 권리 전도
      • 부 결합도
      • 통 결합도 (Common Coupling)
        • 전역데이터 접근
      • 용 결합도 (Comtnet Coupling)
        • 내부 기능 공유 정도
        • 하나의 모듈이 직접적으로 다른 모듈의 내용을 참조

  • 요구사항 분석 (Requirements Analysis)
    • 사용자와의 면담
    • 설문조사
    • 각종 문서검토를 통해
    • 사용자의 요구사항을 찾음

  • 응집도 (Cohesion)

  • 엽고 진한 회오빠는

    • 요소들 간 기능적 연관도
    • 독립적인 기능으로 정의

    • 기능적 응집도 (Functional)
      • 제일 강하니까 제일 좋음
    • 순차적 응집도 (Sequential)
    • 교환(통신)적 응집도 (Communication)
    • 절차적 응집도 (Procedural)
    • 시간적 응집도 (Temporal)
    • 논리적 응집도 (Logical)
    • 우연적 응집도 (Coincidental)
      • 처리상 연관이 없는
      • 서로 다른 기능을 수행하는 경우

  • 화이트 박스 (White Box) 테스트
    • 내부 작업 검사 (자료구조 X)
    • 모듈 안의 작동을 직접관찰
    • 원시코드의 모든문장을 한번이상 수행
    • 논리적 경로를 제어
    • 설계 절차에 초점을 둔 구조적 테스트
      • 기초 경로 검사 (Basic Path Test)
      • 조건 검사 (Condition Test)
      • 루프 검사 (Loop)
      • 데이터 흐름 검사 (Data Flow)

  • 럼바우의 방법 ODF
    • 객체(Object) 모델링
      • 객체들 간의 관계를 규정
    • 동적(Dynamic) 모델링 동상
      • 상태도 이용
    • 기능(Functional) 모델링 기자
      • 자료 흐름도
    • 설계 순서 입자기제
      • 입출력 결정 - 자료흐름도 작성 - 기능의 내용을 기술 - 제약사항을 결정하고 최소화

  • 객체지향 기법의 주요 원칙
    • 캡슐화 (Encapsulation)
      • 데이터 + 함수
      • 정보 은폐 = 오류 파급효과 적어짐
      • 재사용 용이
      • 인터페이스 단순
      • 결합도 낮아짐
    • 정보 은닉 (Information Hiding)
      • Side Effect (고려되지 않은 영향) 최소화
    • 상속성 (Inheritance)
      • 상위클래스의 모든 속성과 연산을 하위클래스가 상속
    • 추상화 (Abstraction)
      • 불필요한 부분 생략
    • 다형성 (Polymorphism)
      • Integer, Float, Char에 따라 각각 다른 작업을 수행
      • 하나의 메세지에 여러가지 형태의 응답
      • 하나의 메세지에 대해
      • 각 객체가 가지고 있는
      • 고유한 방법으로 응답할 수 있는 능력
  • 객체지향 설계
    • 객체를 명사로, 연산이나 객체 서비스를 동사로 표현

  • 검증 검사 (Validation Test)
    • 사용자의 요구사항을 충족시키는가
    • 블랙박스 테스트 기법 사용
    • 알파 검사 개발자
    • 베타 검사 사용자
    • 성능 검사 전 과정

  • 블랙박스 테스트
    • 외적인 부분 검사
    • 기능 완전 작동 여부 입증
    • 정확성 점검
    • 검사 기법
      • 동치 분할 검사 (Equivalence Partitioning Testing)
        • 타당한 입력자료
        • 타당하지 않은 입력자료
        • 갯수를 균등하게 하여 검사
      • 경계값 분석 (Boundary value analysis)
      • 원인-효과 그래프 검사 (Cause-Effect Graphic Testing)
      • 오류 예측 검사
      • 비교 검사 (Compare, Comparison Testing)
        • 여러 버전의 프로그램에
        • 동일한 검사자료를 제공
        • 동일한 결과가 출력되는지 검사

  • 부치 (Booach) 방법
    • 미시적 (Micro) 개발 프로세스와
    • 거시적 (Macro) 개발 프로세스 모두 사용

  • 유지보수 유형
    • 수정 보수 (Corrective Maintenance)
      • 오류를 찾아 수정
    • 적응 보수 (Adaptive Maintenance)
      • 환경 변화에 대처
    • 완전화 보수 (Perfecive Maintenance)
      • 새로운 기능을 추가하거나 성능개선
      • 가장 많은 비용을 차지
    • 예방 보수 (Preventive Maintenance)
      • 오류발생에 대한 대비 소프트웨어 위기를 해결
      • 소프트웨어 재공학과 가장 관계

  • Coad와 Yourdon 방법 E-R 다이어그램

  • 객체지향기법의 요소
    • 클래스 (Class)
      • 유사한 객체들을 묶어 하나의 공통된 특성을 표현
    • 메세지 (Message)
      • 어떤 행위를 하도록 지시하는 명령
    • 메소드 (Method)
      • 메시지를 받아 실행해야 할 객체의 구체적인 연산 (Operation)
    • 인스턴스 (Instance)
      • 어떤 클래스에 속하는 구체적인 객체

  • McCabe의 복잡도
    • 화살표 수 - 노드 수 + 2

  • 상향식 통합 검사 (Bottom-Up Integration Test)
    1. 하위모듈을 Cluster 로 결합
    2. 제어 프로그램(Driver) 작성
    3. Cluster 검사
    4. Driver 을 제거하고 Cluster를 상위로 결합

  • CASE (Computer Aided Software Engineering)
    • 소프트웨어 개발 과정에서 사용되는
    • 요구분석 설계 구현 검사 디버깅
    • 자동화
    • 개발 도구 + 개발 방법론
    • 아닌 것
      • 구현과 유지보수만 중심제공 X
      • 소프트웨어 사용방법 제공 X
      • 다른환경에서 사용할 수 있도록 변환 X
      • 새로운 기술 적용 X
      • 언어번역 X
      • 도형목차, 총괄도표, 상세도표 X
      • 생명주기 모형 X
    • 장점
      • 개발기간 단축
      • 품질향상
      • 유지보수 용이
      • 재사용성 향상
      • 생산성 향상
      • 개발주기의 표준화
      • 시스템 수정 및 유지보수 확대 X

  • OMA (Object Management Architecture)

    OMG (Object Magement Group) 의 활동방향과 목적에 부합하는 모델
    
    • 구성요소
      • 공통 기능 (Common Facilities)
      • 응용 인터페이스 (Application Interface)
      • 도메인 인터페이스 (Domain Interface)
      • 유저 인터페이스 (User Interface) X

  • 소프트웨어 재공학 (Reengineering) 유지보수

    기존에 있던 소프트웨어를 파기하지 않고
    새로운 기능을 추가하여
    예방 유지보수 측면에서 문제를 해결
    
    • 비용 절감
    • 수정 유지보수 측면 X
    • 효율적 X
    • 재사용 (Reuse) X
    • 재개발은 재공학 활동에 포함 X

  • 소프트웨어 재사용
    • 소스코드를 제일 많이 사용
    • 소프트웨어 크기가 작을수록 재사용률이 높음
    • 개발시간 비용 단축
    • 품질 생산성 향상
    • 프로젝트 실패위험 감소
    • 시스템 구축방법에 대한 지식공유
      • 개발 시 작성된 문서
      • 교육적 효과
    • 고급 프로그래머 배출 X
    • 종속 X
    • 보안 X
    • 새로운 개발 방법 X

  • 분석 (Analysis)
    • 기존 소프트웨어의 명세서 확인
    • 소프트웨어 동작 이해
    • 재공학 대상 선정
  • 개조 (Restructuring)
    • 하나의 표현을 다른 표현형태로 바꾸는 것
  • 역공학 (Reverse Engineering)
    • 기존 소프트웨어를 분석하여 재발견하거나 다시 만듬
    • 기본 코드를 복구
    • 원시 코드로부터 설계정보 추출 및 절차 설계 표현
    • 프로그램 및 데이터 구조 정보 추출
    • 재문서화
  • 이식 (Migration)
    • 새로운 하드웨어 환경에서 사용할 수 있도록 변환
  • 재구성
    • 소프트웨어를 형태에 맞게 수정하는 활동
    • 상대적으로 같은
    • 추상적 수준에서
    • 하나의 표현을
    • 다른 표현 형태로 바꿈

  • UML

    객체지향 모델의 표준
    
    • 여러가지 유형의 다이어그램 제공
    • 개발자와 고객간 원활한 의사소통
    • OMG에서 만든 통합 모델링 언어
    • 실시간 시스템 및 분산 시스템의
    • 시스템 분석과 설계에
    • 효율적으로 사용





© 2018. by HYEON

Powered by HYEON