[SW이론] 프로세스

Kimseongeun·2022년 6월 3일
1

소프트웨어 공학

목록 보기
2/8
post-thumbnail

소프트웨어와 관련된 질문들

  • 소프트웨어 시스템을 개발하는 데 드는 비용 중 프로그래밍에 드는 비용은 어느정도인가?
    20, 30, 40, 50%

  • 중간 사이즈의 소프트웨어 시스템을 개발할 때 한 프로그래머가 일년에 만드는 실행코드는 평균 몇 줄이나 될까?
    5000줄 이하, 5000~10000줄, 10000~15000줄, 15000줄 이상

  • 사용자에게 배달되는 소프트웨어 시스템의 실행코드 1000줄당 예상되는 오류의 개수?

    4개 미만, 4~6개, 7~9개, 10개이상

  • 사용자가 발견하는 소프트웨어 시스템의 오류는 어떤 것에 기인하는 경우가 많을까?

    설계의 오류, 프로그래밍의 오류, 제안서상에서 사용자 요구사항에 대한 잘못된 이해, 테스팅의 오류

  • 소프트웨어 시스템을 유지, 보수하는 데 드는 비용이 개발비용의 몇배?

    0.5, 1, 1.5, 2

  • 프로그램 개발 비용 : A (20%)

    • 소프트웨어 시스템은 물리적이기보다는 논리적인 요소들로 구성
    • 건축의 시공에 해당되는 프로그래밍에 전체 개발 비용의 약 20%가 소요
      • 40-50%가 프로그래밍 이전 단계에 소요
      • 그래서 요구사항 분석과 설계가 중요!
    • 하드웨어의 경우 제조과정에서 품질 보증의 문제가 나타나지만 SW의 경우 제조과정이 따로 존재하지 않음. → 건축이나 하드웨어는 제조되는 반면 SW는 엔지니어링 되는 것
  • 프로그래머의 생산성 : 5000줄 이하

    • 한 프로그래머가 평균 하루에 10줄 정도의 프로그램을 작성
    • 한 프로그래머가 일년에 만드는 실행코드 3-4000줄 실행코드 작성
    • 통신 시스템의 일부인 교환기 SW나 운영체제 SW는 사무처리용 소프트웨어보다 줄당 4배 이상의 비용이 소요됨
  • 프로그램의 오류 : 4개 미만

    • 1000줄의 실행코드에 약 50~60개 정도임.
    • 완료되어서 배포 후 발견되는 오류는 평균 4개 이하
    • 오류의 종류에 따라 커다란 문제점을 내포 : SW의 많은 오류가 제품의 출고 이후에 발견
    • 출고 이전에 효과적으로 결함을 찾아내어 여과시키는 것은 SW의 품질보증을 위해 필수적
    • 오류발견 시점과 소요비용(사례) 대형사고
      1. 렉서스 자동ㅊ 급발진 사고원인은 전자제어장치에 내장된 SW결함
      2. 보잉 비행기 추락 원인은 받음각 센서의 SW오류로 사고
  • 사용자가 발견하는 오류 : 설계의 오류, 제안서상에서 사용자 요구사항에 대한 잘못된 이해

    • 개발에 있어 가장 어려운 문제는 사용자가 무엇을 원하는지 정확히 정의 내리는 일 SW개발은 무엇을 만들 것인가, 사용자에게 어떤 기능과 편리함을 제공할 수 있는가를 빠르고 효과적으로 파악하는 데 달려있다.
    • 목표가 정확히 분석되어 있지 않은 상황에서 개발에 들어간다면 시스템이 제대로 만들어질 확률이 떨어짐. →개발도중 새로운 요구사항이 계속적으로 추가되면 설계가 안돼서 큰일남 → 프로그래밍을 서둘러 시작할수록 더 오랜 시간이 걸려서 늦게 끝나게 됨.
    • 개발 이전 목표를 구체적으로 확립하는게 성공의 열쇠
  • 개발 비용과 유지보수 비용 : 2배

    • SW를 개발하는 비용에 비해 개발된 소프트웨어를 유지, 보수하는 관리비용이 더 많이 들어감. →개발 중에는 유지보수 비용이 과소평가될 수 있음. → 유지, 보수에 들어가는 비용은 얼마나 체계적으로 만들어졌냐에 반비례. 33 = 개발비용, 67 = 유지보수 비용(2배)

Security by Design ⇒ Security Engineering
- Security by Design = 보안 내재화, 보안 공학
보안공학? : 제품의 품질을 높이기위해 수학적으로 적합한 보안 분석과 설계를 소프트웨어 공학에 통합시키는 것

  • 실수가 발생해도 품질을 유지하는 것이 품질 보증성, 해킹에 견디는 것이 보안성이라면 신뢰성, 안전성에 도달하기 위해서는 이 두가지 모두 보장된어야한다.

보안공학

  • 프로그래머와 엔지니어의 차이점?

    Problem Solving

    프로그래머번역가 같다. 실제로 필요한 시스템을 기계어로 바꿔주는것임

    엔지니어는 아예 새로운 것을 창조해내는 것을 말함

    • 품질 좋은 sw를 함께 개발할 수 있는 스킬을 개발하고 그걸 기반으로 프로젝트 싸이클을 경험한 사람이 엔지니어란느 것
    • SW 개발
      • 프로그래밍 - 상상력, 구현력(프로그램 능력)
    • 경험이 중요함
      • 문제의 발생부터 분석, 통합
      • 검증
  • 다루는 문제에 따라 또 접근방법이 달라짐

  • SW 공학 주요 목적 :

    • 품질과 생산성
      • 엔지니어링 작업에서는 비용, 일정, 품질과 같은 변수가 중요함

      • 비용 : Man-Month로 측정 ( 인건비와 직결 )

      • 일정: 짧은 time-to-market(기술의 급격한 발전에 따라 갈수록 짧아짐)

      • 품질(품질도 어떤 것을 포함하는지 알아야한다.)

    • 일관성과 재현성
      • 일관성 → 프로젝트의 결과를 어느정도 정확하게 예측가능하게 → 더 높은 품질의 제품을 생산 (기관/회사는 일관성 있는ㄴ 품질 수준을 유지)
      • 프로세스의 표준화가 필요
      • 재현성 → 개발한느 시스템마다 높은 품질과 생산성을 갖도록 만드는 것 → 개발능력, 결과의 재현성 → 일관성과 유사한 개념
  • SW 공학의 접근방법(단계적인 접근방법이 필요)

    • 프로젝트를 수행하는 동안 얻은 품질과 생산성은 여러 요인에 의해 좌우됨
    • 품질을 좌우하는 세 가지
      1. 인력
      2. 프로세스
      3. 기술 → 프로젝트 삼각 균형
    • 높은 품질과 생산성은 좋은기술, 좋은 프로세스, 잘 훈련된 인력을 사용해서 얻을 수 있음.
    • SW공학은 SW 제작과정에 집중
    • 적절한 “ 소프트웨어 프로세스 “의 설계와 관리는 SW공학의 중요 연구목표임
  • SW엔지니어링 작업의 종류

    • 소프트웨어 개발 프로세스 - 시스템에 대한 비전과 개념을 목표로하는...
    • 품질 보증 - SQA 개발 작업이 적절히 수행되었는지 확인
    • 프로젝트 관리 : 개발과 품질 보증 작업을 관리하고 감독
  • 단계적 개발 프로세스

    • 이 방법을 따르는 이유 : 소프트웨어의 문제를 나눠 여러개발단계에서 다른 관점을 다루기 때문임. : 개발하는 동안 정해진 시점에 품질과 진행을 체크할 수 있음.
  • 프로세스란?

    • 정의 : 어떤일을 하기 위한 특별한 방법으로 일반적으로 단계나 작업으로 구성됨

    • 소프트웨어를 개발하는 과정, 즉 작업 순서

      • 순서제약이 있는 작업의 집합
      • 원하는 결과 → 높은 품질과 생산성이 목표
    • 프로세스가 없는 개발 : 프로그래밍 → 만족할 때까지 수정 → 개선을 위한 아이디어 짜내기(좋지않음....)

    • 프로세스와 방법론 비교

      • 프로세스 : 소프트웨어를 개발하는데 필요한 작업을 정의-단계 전체를 통틀어 정의(WHAT)

      • 방법론 : 각 단계마다 어떤 순서/어떤 방법을 쓸지 결정하는 방법(HOW)

    • 소프트웨어 생명주기

      요구분석 → 설계 → 구현 → 테스팅 → 유지보수

      • 소프트웨어 개발에 대한 기술적, 관리적 이슈를 다루는 작업
        → 개발 모델별 컴포넌트 프로세스, 부프로세스 존재
        → 서로다른 목적
        → 서로 협력하여 전체 목적을 만족
    • 소프트웨어 프로세스

      이런 과정을 토대로 무엇을 만들어야할지 확립하고 진행하는 과정이 SW프로세스

    • 프로세스 명세

      • 플젝에서 수행되어야하는 작업과 이들의 수행순서를 정의 (우리 기업의 상품 서비스는 요구분석 사항이 더 길게 얘기 해봐야 해, 우리는 개발기간을 더 길게 잡아야 해 등등 구체적인 사항을 결정)
      • 실제 수행된는 실행 프로세스는 다를 수 있음
    • 프로세스 모델

      • 일반적인 프로세스를 기술(ex: 폭포수 모형)
      • 작업의 단계와 순서, 각 단계 수행의 제약사항이나 조건등을 모아 놓은 것
      • 프로세스(프로세스 명세)는 프로세스 모델의 인스턴스로 이해가능
    • 프로세스 종류

      • 개발 프로세스 : 실제 수행해야할 개발과 품질 보증 작업에 해당
      • 관리 프로세스 : 비용, 품질, 기타 목표를 맞추기 위한 계획, 제어 작업에 해당
      • 기타 프로세스
        • 형상 관리 프로세스 : 변경을 관리하여 제품의 일관성을 유지 (서비스 버전 관리)

        • 프로세스 관리 프로세스 : “ 프로세스”도 변함→ 자체를 관리 → 프로세스 개선이 목적

    • 프로세스 필수 사항 - 정의

      • 작업 결과검증 조건을 명확히 정의하여함.
      • 작업 방법 (방법론을 쓸건지 프로세스를 쓸건지를 판단)
      • 진입조건, 출구조건
        • 진입 : 각 단계의 작업을 시작하기 위해 만족해야할 조건
        • 출구 : 그 단계의 작업을 종료하기 위해서 결과물이 만족해야할 조건
    • 바람직한 프로세스 특징

      • 예측가능성 - 프로세스가 프로젝트를 완성하기 전에 얼마나 정확히 예측가능?
      • 테스팅과 유지보수 지원
      • 변경지원 → 변경을 쉽게 다룰 수 있는 프로세스(피드백이 잘 됨)
      • 결함 제거 → 오류 탐색과 수정은 SW개발전체 단계에 지속적인 프로세스가 되어야 함
  • 소프트웨어 공학과 유사한 작업들

    • 건물건축 : 요구분석 → 구조설계 → 상세설계 → 구현(코딩) → 테스트 → 유지보수
  1. 계획

    • 얼마나 비용? 얼마나 걸림? 얼마나 많은 인력이 필요? 얼마나 잘못될지?의 대답 찾는 단계
    • 범위 정하기
    • 산정
    • 리스크 분석
    • 일정 계획
    • 관리전략수립

    Why 단계
    Concept 정립
    ROI → Return on Investment

  2. 요구분석

    • 요구 - 시스템이 가져야 할 능력과 조건을 설정하는 단계

    💡 !!!! 주의 : 솔루션을 정하는 단계가 아님 → 오라클로 할래 자바로 할래 이런걸 정하는게 아님 주변 환경을 결정하는 단계라고 이해야해야함.

    • 응용분야(도메인)에 집중
    • 가장 중요하고도 어려운 단계
      • 조그만 차이가 큰 오류로 변함

    What 단계
    SRS 요구분석서

  3. 구조설계

    • 솔루션에 집중
    • 아키텍쳐, 데이터 베이스, ui, 상세 설계

    How 단계
    결과물 : 설계서 (SD)

  4. 구현

    • 코딩과 단위 테스트
    • 설계 또는 통합테스트단계와 겹치기도 함
      • 전체 일정을 줄이기
      • 협력 작업이 필요한 경우
    • 특징
      • 압력 증가
      • 최고의 인력 투입
    • 이슈
      • Last minute change
      • Communication overhead
      • 하청관리
  5. 통합과 테스트

    • 병행 : 통합해 나가면서 테스트 시작
    • 모듈의 통합으로 시작해서 점차 완성된 모듈을 추가
    • 통합은 개발자가, 테스트는 QA팀이 주로 담당을 함
    • 단계적인 테스트
      • 단위, 통합, 시스템
    • 목적중심 테스트 : 스트레스 테스트, 성능, 베타, Acceptance 테스트, Usability 테스트
  6. 설치와 유지보수

    • 시스템의 타입에 따라 다른 설치 방법(Web-based, CD-ROM, in-house,etc.)
    • migration(이전) 정책
    • 시스템의 사용을 시작하게 하는 방법 - 병행 운용
    • 설치는 개발 플젝의 일부, 유지보수는 별개이다 유지보수 - 결함을 고치고 새 기능을 추가하고 성능을 추가하는 방식
profile
김성은입니다.

2개의 댓글

comment-user-thumbnail
2023년 4월 23일

감사합니다.

답글 달기
comment-user-thumbnail
2023년 12월 15일

정말 정리가 잘되어있군요 잘읽고가요! 제가 최근 본 포스팅중에 제일 읽기 편했습니다

답글 달기