정보처리기사

[정보처리기사] 소프트웨어 구축 (1)

hminor 2023. 7. 4. 02:17

소프트웨어 공학

  • 소프트웨어 공학(Software Engineering)
    • 소프트웨어 위기를 극복하고 효율적으로 품질 높은 소프트웨어를 개발하기 위한 학문
  • 소프트웨어 공학의 3R
    • 역공학(Reverse Engineering)
      • 기존 개발된 시스템을 CASE(Computer Aided Software Engineering) 도구를 이용해 요구 분석서, 설계서 등의 문서로 추출하는 작업
      • 개발 단계를 역으로 올라가 기존 개발된 시스템의 코드나 데이터를 시작으로 설계 명세서나 요구 분석서 등을 도출하는 작업
    • 재공학(Re-Engineering)
      • 소프트웨어의 위기를 해결하기 위해 개발의 생산성이 아닌 유지보수의 ****생산성으로 해결하려는 방법
      • 기존 소프트웨어를 폐기하지 않고 기능을 개선시키거나 새로운 소프트웨어로 재활용하는 소프트웨어 재사용 공법
      • 리펙토링
        • 동료 검토
        • 워크스루
        • 인스펙션
      • 과정
        1. 분석(Analysis)
        2. 재구성(Restructuring)
        3. 역공학(Reverse Engineering)
        4. 이관(Migration)
    • 재사용(Reuse)
      • 이미 개발되어 있는 소프트웨어의 전체 또는 일부분을 다시 사용
      • 방법
        • 합성 중심(Composition Based, 블록 구성)
          • 전자 칩과 같은 소프트웨어 부품, 즉 블록(모듈)을 만들어서 끼워 맞추어 소프트웨어를 완성시키는 방법
        • 생성 중심(Generation Based, 패턴 구성)
          • 추상화 형태로 쓰여진 명세를 구체화하여 프로그램을 만드는 방법
  • 소프트웨어 개발 단계
    • 계획
      • RFP(Requset for Proposal)로 제안을 받아 계획을 수립
      • 일정, 비용, 타당성
    • 분석
    • 설계
    • 구현
    • 테스트
    • 유지보수
      • 가장 비용이 많이 드는 것
  • 소프트웨어 개발 방법론
    • 개념
      • 소프트웨어 개발에 필요한 과정(절차, 방법, 산출물, 기법, 도구)들을 체계적으로 정리한 것
    • 종류
      • 구조적 방법론(하향식)
        • 절차지향 소프트웨어 개발 방법론
        • 제한된 구조에서 코드 생성 및 순차적 실행
        • 구조적 방법론 구성요소
          • DFD(데이터 흐름도): 가장 기본적
          • DD(데이터 사전)
          • STD(상태전이도)
          • Minispec(소단위 명세서)
      • 정보공학 방법론 (기업에서 사용)
        • 기업의 주요 부분을 계획, 분석, 설계, 구축에 정형화된 기법들을 상호 연관성 있게 통합, 적용하는 데이터 중심 방법론
      • 객체지향 방법론(상향식)
        • 현실세계의 개체(Entity)를 속성(Attribue)과 메서드(Method)형태로 표현
        • 객체, 클래스 간의 관계를 식별하여 설계 모델로 변환하는 방법론
        • 특징
          • 캡슐화
          • 상속
          • 다형성
            • 오버 로딩
            • 오버 라이딩(재정의)
          • 추상화
          • 정보 은닉
      • CBD 방법론 (CBD, Component Based Development)
        • 재사용 가능한 컴포넌트의 개발 또는 상용 컴포넌트를 조합해 애플리케이션 개발
      • 애자일 방법론
        • 기존 방법론들이 절차를 중시한 나머지, 변화에 빠른 대응을 할 수 없다는 단점을 개선하기 위해 등장
        • 고객의 요구사항에 맞춰 빠르게 개발을 하자!
        • 종류
          • XP
            • 용기
            • 단순성
            • 의사소통
            • 피드백
            • 존중
          • Scrum
          • FDD
          • Crystal
  • 소프트웨어 개발 모델
    • 폭포수 모델(Waterfall Model)
      • 계쇡, 분석, 설계, 구현, 테스트, 운영 등 전 과정을 순차적으로 접근하는 개발 모델
      • 가장 오래된 모형으로 적용 경험과 성공 사례가 많다.
      • 요구 사항의 변경이 어렵다
      • 단계별 정의가 분명하고, 단계별 산출물이 명확하다
    • 프로토타이핑 모델(Prototyping Model)
      • 고객이 요구한 주요 기능을 프로토타입으로 구현하여 완성해가는 모델
        • 시제품 만드는 모델
      • 개발자가 구축할 소프트웨어의 모델을 사전에 만들어 요구사항을 효과적으로 유도하고 수집한다.
    • 나선형 모델(Spiral Model)
      • 폭포수 모델과 프로토타이핑 모델의 장점을 수용하고, 위험 분석을 추가한 점증적 개발 모델
      • 프로젝트 수행 시 발생하는 위험을 관리하고 최소화하려는 것이 목적
      • 대규모 프로젝트 및 위험 부담이 큰 시스템 개발에 적합
      • 단계
        • 계획
        • 위험분석
        • 개발
        • 평가
    • RAD(Rapid Application Development)모델
      • 매우 짧은 개발 주기를 강조하는 점진적 소프트웨어 개발 방식
      • 강력한 소프트웨어 개발 도구를 이용해 매우 짧은 주기로 개발을 진행하는 순차적 소프트웨어 개발 프로세스
      • CASE(Computer Adied Software Engineering) 도구를 이용해 시스템을 개발
        • 개발에 관련한 모든 도구
          • ex) PPT, Figma, PhotoShop 등등
    • V 모델
      • 폭포수 모델에 시스템 검증과 테스트 작업을 강조
      • 높은 신뢰성이 요구되는 분야에 적합
      • 테스트 단계
        • 단위 테스트
          • 정적 테스트: 소스 코드 내부
          • 동적 테스트: 소스 코드 실행 환경
        • 통합 테스트
          • 상향식 테스트:
            • 상위 모델이 만들어지지 않았을 경우: 드라이버
          • 하향식 테스트:
            • 하위 모델이 만들어지지 않았을 경우: 스텁
          • 백본 테스트
          • 빅뱅 테스트
        • 시스템 테스트
          • 기능 테스트
          • 비기능 테스트
        • 인수 테스트
          • 알파 테스트
          • 베타 테스트
    • 4세대 기법(4th Generation Techniques)
      • 요구사항 명세서로부터 원시코드를 자동으로 생성할 수 있게 해주는 모델
  • 애자일 방법론(Agile)
    • 개념
      • 신속한 반복 작업을 통해 실제 작동 가능한 소프트웨어를 개발해 지속적으로 제공하기 위한 소프트웨어 개발 방식
    • 종류
      • XP(eXtream Programming)
        • 5가지 가치
          • 용기
          • 단순성
          • 의사소통
          • 피드백
          • 존중
      • 스크럼(Scrum)
        • 특징
          • 개발 주기는 30일 정도로 조절하고 개발 주기마다 실제 동작할 수 있는 결과를 제공
          • 매일 15분 단위로 회의
        • 주요 개념
          • 제품 백로그(Produc Backlog)
            • 개발할 제품에 대한 요구사항 목록
          • 스프린트(Sprint)
            • 1~3주의 짧은 기간을 목표로 설정
          • 스프린트 계획 회의(Sprint Planning Meeting)
            • 스프린트 목표와 스프린트 백로그를 계획하는 회의
          • 스프린트 백로그(Sprint Backlog):
            • 각각의 스프린트 목표에 도달하기 위해 필요한 작업 목록
          • 일일 스크럼 회의(Daily Scrum Meeting)
          • 실행 가능한 제품(Shippable Produc)
          • 제품 책임자(Product Owner)
          • 스크럼 마스터(Scrum Master)
      • 그 외 애자일 방법론
        • 크리스털(Crystal)
          • 프로젝트의 규모와 영향의 크기에 따라서 여러 종류의 방법론을 제공
        • FDD(Feature-Driven Development)
          • feature 마다 2주 정도의 반복 개발을 실시
          • 신규 기능 단위로 하는 개발 방법론
          • 기능 주도 개발
        • ASD(Adaptive Software Development)
          • 합동 애플리케이션 개발을 사용하는 방법론
        • 린(Lean)
          • 도요타 린 시스템 품질기법을 소프트웨어 개발 프로세스에 적용해 낭비 요소를 제거하여 품질을 향상시킨 방법론
  • IT 서비스 관리
    • SLM(Service Level Management)
      • 서비스 수준을 정량적으로 측정하고, 실적을 평가하여 미흡한 부분을 개선함으로써 서비스의 품질을 높이는 일련의 관리 및 활동
    • SLA(Service Level Agreement)
      • 소프트웨어 수요자와 공급자 사이의 상호 동의에 의해 서비스 수준을 명시적으로 정의한 문서
    • ITSM(Information Technology Service Management)
      • 최종 사용자를 위한 IT 서비스를 구현, 전달 및 관리하기 위한 일련의 정책과 관행
    • ITIL(IT Infrastructure Library)
      • IT 서비스를 쉽게 제공하고 관리할 수 있는 가이드 혹은 프레임워크
      • ITSM을 실현할 수 있는 도구 또는 방법

프로젝트 계획 및 분석

  • 프로젝트 관리
    • 개념
      • 특정한 목적을 가진 프로젝트를 한정된 기간, 예산, 자원 내에서 사용자가 만족할 만한 제품을 개발하도록 행하는 기술적, 관리적 활동
    • 핵심 관리대상(3P)
      • 사람(Person)
      • 문제(Problem)
      • 프로세스(Process)
    • PMBOK(Project Management Body of Knowledge)
      • PMI(Project Management Institute)에서 제작한 프로젝트 관리 프로세스 및 지식 체계
      • PMI 단체에서 만든 것이 PMBOK
      • 5단계 프로세스 그룹
        1. 프로세스 착수
        2. 프로세스 계획
        3. 프로세스 실행
        4. 프로세스 통제
        5. 프로세스 종료
  • 개발 비용 산정
    • 소프트웨어 개발 비용 계획
      • 개발에 소요되는 인원, 자원, 기간 등으로 소프트웨어의 규모를 파악하여 필요한 비용을 산정한다.
    • 비용 산정 기법
      • 하향식
        • 전문가 기법
        • 델파이 기법
      • 상향식
        • 원시 코드 라인 수 (LOC, Line Of Code)
          • (낙관치+중간치*4+비관치)/6
        • 개발 단계별 노력 기법(M/M)
          • 단계별 인원수 기법
          • LOC보다 정확성을 기하기 위한 기법
      • 수학적
        • COCOMO
          • Organic: 5만 라인 이하
          • SemiDetached: 30만 라인 이하
          • Embedded: 30만 라인 이상
        • PUTNAM
          • 시간에 따른 함수로 표현되는 Rayleigh-Norden 곡선의 노력 분포도를 기초
          • SLIM
            • 랠리 노드 곡선과 Putnam의 예측 모형을 기초로 개발한 자동화 추정 도구
        • FP (Function Point)
          • 소프트웨어가 가지는 기능의 개수를 기준으로 소프트웨어 규모를 측정하는 기법
          • ESTIMACS: FP 모형을 기초로 개발된 자동화 추정 도구
          • 소프트웨어 기능 분류
            • 데이터 기능
              • 내부논리파일(ILF)
              • 외부연계파일(ELF)
            • 트랜잭션 기능
              • 외부입력(EI)
              • 외부출력(EO)
              • 외부조회(EQ)
  • 개발 일정 산정
    • 계획
      • 소프트웨어를 개발하기 위해 어떤 작업이 필요한지 정의하고, 작업들의 우선순위를 정해 프로젝트 일정에 대한 계획을 세우는 것
      • WBS(Work Break-Down Structure)로 기능 단위 별로 나누어 계획을 세우기
      • WBS를 기준으로 PERT/CPM을 통해 얼마나 걸릴 것인지 임계경로를 구하기
      • 간트차트를 작성하기
    • 작업 순서
      • 작업 분해(WBS, Work Break-Down Structure)
      • PERT/CPM 네트워크 작성
        • PERT/CPM 란?
          • 작업의 선/후행 관계를 고려하여 전체작업의 완료시간을 결정(PERT), 추가 비용 투입을 고려하여 전체작업 완료시간을 단축하는(CPM) 네트워크 분석 기법
      • 최소 소요 기간을 구함(임계 경로, Critical Path)
      • 소요 M/M, 기간을 산정해 CPM 수정
      • 간트 차트로 표현
  • 요구사항 분석
    • 현행 시스템 분석
      • 현행 시스템 파악
        • 현재 운영되는 시스템의 구성, 기능, 하드웨어, 네트워크, DB 등을 파악하는 활동
      • 플랫폼 기능 분석
        • 정의
          • 애플리케이션을 구동시키는데 필요한 하드웨어와 소프트웨어의 결합
        • 유형
          • 싱글 사이드 플랫폼(Single-SIde Platform)
          • 투 사이드 플랫폼(Two-SIde Platform)
          • 멀티 사이트 플랫폼(Multi-SIde Platform)
        • CPND(Content Platform Network Device)
          • 콘텐츠를 플랫폼에 맞게 가공하고 네트워크를 통해 사용자의 단말기로 서비스가 이루어짐을 표현하는 무선 인터넷 서비스의 가치 사슬
          • ex) Youtube 시청시 필요한 것들
            • Content(영상)
            • Platform(유튜브)
            • Network(네트워크)
            • Device(기기)
      • 미들웨어(MiddleWare)분석
        • 개념
          • 양 쪽을 연결하여 데이터를 주고받을 수 있도록 중간에서 매개 역할을 하는 소프트웨어
        • 종류
          • 원격 프로시저 호출(RPC, Remote Procedure Call)
            • 클라이언트가 원격에서 동작하는 프로시저를 호출하는 시스템
          • 메시지 지향 미들웨어(MOM, Message Oriented Middleware)
            • 메시지 기반의 비동기형 메시지를 전달하는 방식의 미들웨어
          • ORB(Object Request Broker)
            • 객체지향 시스템에서 객체 및 서비스를 요청하고 전송할 수 있도록 지원하는 미들웨어
          • DB 접속 미들웨어
            • 애플리케이션과 데이터베이스 서버를 연결해주는 미들웨어
          • TP 모니터
            • 분산 시스템의 애플리케이션을 지원하는 미들웨어
            • 트랜잭션이 올바르게 처리되고 있는지 데이터를 감시하고 제어
          • 웹 어플리케이션 서버(WAS, Web Application Server)
            • 동적인 콘텐츠를 처리하기 위한 미들웨어
            • Web은 정적인 콘텐츠
          • 엔터프라이즈 서비스 버스(Enterprise Service Bus)
            • 메시지 기반으로 느슨한 결합 형태의 표준 인터페이스 통신을 지원하는 미들웨어
            • 기업 안팎에 있는 모든 시스템 환결을 연동하는 미들웨어
  • 요구 공학
    • 개념
      • 고객 요구를 체계적으로 수집, 분석, 명세화, 검증하고 추적, 변경되는 요구사항을 도출하고 관리하는 기법
      • 요구사항을 도출후 명세하는 것!
    • 개발 프로세스
      • 도출(Elicitation)
        • 요구사항 소스
        • 도출 기법
      • 분석(Analysis)
        • 요구사항 분류
        • 개념 모델링
        • 기술 구조 설계 및 요구사항 할당
        • 요구사항 협상
        • 구조적 분석 도구
          • DFD
          • DD
          • Mini-Spec
          • ERD
          • STD
        • 객체지향 분석 도구
          • UML
          • 모델링
      • 명세(Specification)
        • 시스템 정의서
        • 시스템 요구사항 명세서
        • 소프트웨어 요구사항 명세서
        • 요구사항 명세 기법
          • 정형 명세 기법: 수학적
          • 비정형 명세 기법: 자연어, 그림 중심
      • 확인(Validation)
        • 검토
        • 프로토타이핑
        • 모델 검증
        • 인수 테스트
    • 요구사항 분석 도구
      • 요구사항 분석 CASE(Computer Aided Software Engineering)
        • 요구사항을 자동으로 분석하고, 명세서를 기술하는 도구
        • 소프트웨어 개발 전반에 걸쳐 적용
        • CASE 도구의 분류
          • 상위 CASE: 계획, 분석
          • 하위 CASE: 구현, 테스트
          • 통합 CASE
      • HIPO(Hierarchy Input Process Output)
        • 개념
          • 하향식 소프트웨어 개발을 위한 문서화 도구
          • 시스템의 기능을 여러 개의 고유 모듈들로 분할해, 이들 간의 계층 구조를 표현한 도표
        • 종류
          • 가시적 도표: 시스템 전체 기능,입력, 처리, 출력 없음
          • 총체적 도표: 프로그램을 구성하는 기술적인 것 출력, 입력, 처리, 출력 있음
          • 세부적 도표: 총체적 도표에 더 세분화 시킨 도표
  • 요구사항 분석 모델링
    • 구조적 분석 모델
      • 도구
        • 자료 흐름도(DFD)
          • 구성요소
            • 처리 과정
              • 자료를 변환시키는 처리 과정을 나타낸다 , 원으로 표현
            • 자료 흐름
              • 자료의 이동을 나타낸다, 화살표로 표현
            • 자료 저장소
              • 파일, 데이터베이스 등 자료가 저장된 곳을 나타냄, 위아래 이중 선
            • 단말
              • 데이터의 이출력 주체를 나타낸다, 사각형
        • 데이터 사전(DD)
          • 자료 흐름도를 설명하기 위한 것
          • 사용 기호
            • =: ~로 구성되어 있다
            • +: 그리고, 순차(and)
            • ( ): 생략 가능한 자료
            • [ | ]: 여러 대한 주 하나 선택
            • { }: 자료의 반복
            • **: 주석
        • Mini-Specification
          • 자료흐름도에서 어떤 일이 수행되는지를 정의하기 위해 각 처리들이 수행하는 업무를 상세히 작성
    • 객체 지향 분석 모델
      • 개념
        • 사용자의 요구사항을 분석하여 요구된 문제와 관련한 모든 클래스, 이와 연관된 속성과 연산, 그들 간의 관계 등을 정의하여 모델링
      • 방법론
        • 럼바우(Rumbaugh) 방법
          • 가장 일반적으로 사용되는 방법으로 분석 활동을 객체 모델, 동적 모델, 기능 모델로 나누어 수행
          • 객체 모델링: 객체 다이어그램으로 표현
          • 동적 모델링: 상태 다이어그램으로 표현
          • 기능 모델링: 자료 흐름도(DFD)
        • Booch(부치) 방법
          • 미시적, 거시적 개발 프로세스 모두 사용하는 분석 모델
        • Jacobson 방법
          • Use Case를 강조해 사용하는 분석 방법
        • Cord와 Yourdon 방법
          • ERD를 사용
        • Wirfs-Brock 방법
          • 분석과 설계 간 구분 없다