3학년 2학기 공부 과정/소프트웨어공학

01. 소프트웨어 공학 개요

환성 2022. 12. 16. 02:33
728x90

 

 

소프트웨어 특성 및 유형

  • 소프트웨어
    • 프로그램 + 프로그램의 개발, 운용, 보수에 필요한 정보 일체
    • 동적인 실체
    • 지적 노동의 결과물
    • 제조업 vs. 서비스업
    • 논리적 요소로 구성
    • 사회적, 경제적인 SW 의존도가 커짐
  • 소프트웨어 특성
    • 비가시성
    • 테스트 가능
    • 복잡성
    • 변경성
    • 순응성
    • 장수
    • 복제가능
  • 소프트웨어 유형(주문형, 패키지, 임베디드)

 

 

시스템

  • 공통의 목적을 달성하기 위해 하나 이상의 구성요소가 상호 관련된 유기적인 결합체
  • 필요한 기능을 실현시키기 위한 관련 요소를 어떤 법칙에 따라 조합한 집합체
  • 자연 시스템
    • Ex.) 사람, 동물 식물 시스템
  • 인공 시스템
    • Ex.) 사회제도, 운송시스템, 통신시스템

1.1 소프트웨어 시스템

  • 유기적으로 상호 작용하는 개체들의 모임
  • 특징
    • 시너지 효과
    • 역동적으로 발전
    • 상충되는 요구와 이해 관계의 절충

정보 시스템(Information System)

  • 자료의 분류, 저장, 검색에 관점, DB를 대화식으로 접근
  • 대규모 자료, 정적 X, 시스템 분석, 유지보수 중요
    • Ex.) 항공권 예약 시스템, 신용 카드 검색 서비스, 뱅킹 시스템
  • MIS
    • 운영 관리, 의사결정을 위하여 정보 제공 시스템

 

제어 시스템(Control System)

  • 사건을 감지하여 처리하고 자동적 보고
    • 센서 감지
    • 제어 기기 상태 보고
    • 인터페이스
    • Ex.) 교통제어, 공정제어, 수치 제어, 의료 시스템, 무기

 

탑재 시스템(Embedded System)

  • 계산이 주된 기능이 아닌 시스템의 한 구성요소
    • Ex.) 전자 기계 장치, 공정 제어, 비행기 유도, 스위칭 시스템
  • 특징
    • 대규모, 장기 사용, 테스트 X
    • 인터페이스가 복잡, 비동기, 병렬, 분산
    • 대규모 자료 접근, 변경, 출력
    • 실시간 제어, 인터페이스
    • 엄격한 요구

 

 

소프트웨어 개발 작업

  • 명세화 → 설계 → 코딩 → 검증 → 유지보수
  • 명세화의 어려움
  • 재사용의 어려움
  • 예측의 어려움
  • 유지보수의 어려움

 

1.2 소프트웨어의 위기

  • SW 수요가 급격히 증가하고 그 복잡성 증가에 따라 기존 방법이 충분치 않아 발생한 문제
  • 접근법
    • 즉흥적인 개발의 문제점 극복
      • 개발 지연과 예산 초과
      • 낮은 품질
      • 유지보수 곤란
      • 재작업

 

  • SW 공정의 문제점
    • 비용 초과
    • 기간 지연
    • 성능 저하
    • 비신뢰성
    • 유지보수 X, 많은 비용
    • SW 요구와 그 공급 능력 간의 차이가 갈수록 심화

 

1.3 소프트웨어의 공학의 정의 및 목표

  • 소프트웨어의 개발, 운영, 유지보수, 소멸에 대한 체계적인 접근 방법
  • 반복 사용 가능

 

 

  • 목표
    • 복잡도 낮춤
    • 비용 최소화
    • 개발 기간 단축
    • 대규모 프로젝트 관리
    • 효율성

 

소프트웨어의 공학의 주제

단계적 프로세스

  • 코딩에 치중 X, 요구분석, 설계, 코딩, 테스팅 등 정해진 절차를 따라 작업하는 것

 

품질 보증

프로젝트 관리

  • 프로젝트 계획, 자원 관리, 리스크 관리, 모니터링

 

 

연관 분야


  • 컴퓨터 공학의 원리나 기술과 관련된 원리
  • 이를 적용하여 특정한 문제를 해결하려는 응용 도메인

소프트웨어 품질(Software Quality)

 

  • 정확성(Correctness)
    • 기능적으로 맞게 동작, 표준에 적합
  • 신뢰성(Reliability)
    • SW가 주어진 기간 동안 제대로 작동할 확률
  • 강인성(Robustness)
    • 요구 명세에 표시하지 않은 상황에서도 제대로 작동하는 성질
  • 성능(Performance)
    • 수행속도, 시간 복잡도, 시뮬레이션
  • 사용 용이성(Usability)
    • 친근하게 느끼는 성질, 사용자 인터페이스
  • 유지 보수성(Maintainability)
    • 보수성, 진화성
  • 재사용성(Reusability)
    • 부품의 성질, 확장 가능성, 적응성, 이용 용이성

 

소프트웨어 생산성(Software Productivity)

  • 생산 과정에 크게 영향
  • 개발 경험의 성숙도에 의해 좌우
    • CMM level : 1~5
  • 영향 미치는 요소
    • 프로그래머 능력
    • 팀 의사 전달
    • 제품 복잡도
    • 기술 수준

 

1.4 소프트웨어 프로젝트 성패에 미치는 요소

의사 소통(Communication Skill)

  • 인터뷰 기술, 프로토 타입, 요구 취합 방법, 정형적 방법
  • 개발자들 사이의 의사 소통(Mythical Man-month, 문서화)

프로젝트 성격

  • 자료처리 중심, 제어 중심, 시스템 SW, 인공지능
  • 크기, 복잡도

프로그래머의 역량(Maturity)

  • SW 개발 - 노동집약적 작업
  • 프로그래머의 능력(프로그래밍, 커뮤니케이션, 응용 분야 이해, 도구에 대한 이해)
  • Sackman의 실험
    • 프로그래밍 생산성 - 1:25
    • 디버깅 능력 - 1:28

관리(Management)

  • SW 개발 관리
    • 프로그래밍 경험, 관리 능력
  • SW 프로세스 관리
    • 일정 관리
    • 예산, 인력 관리
    • 형상 관리
    • 품질 관리
  • CMM 모델
  • QA(Quality Assurance)

 

 

'3학년 2학기 공부 과정 > 소프트웨어공학' 카테고리의 다른 글

05. 요구 모델링  (0) 2022.12.21
04. 요구 분석  (2) 2022.12.19
03. 프로젝트 계획과 관리  (0) 2022.12.19
02. 프로세스와 방법론  (0) 2022.12.19
00. 소프트웨어 공학 소개  (0) 2022.12.16