본문 바로가기

Software Architect

[Software Architecture] SW 공학

SW 위기

SW 위기 = F.L.바우어 1968년 SW 공학 학회에서 사용 / 독일 가미시

  • 규모의 대규모화, 복잡화 -> 개발비용 증대
  • HW 비용에 대한 SW 가격 상승폭 증가
  • 유지보수 어려움 및 개발정체 현상 발생
  • 신기술에 대한 교육 및 훈련 부족

 

-> 프로젝트의 성공 확률이 높지 않은 편임
    - Success = be completed on-time & on-budget
    - Challenged = be completed and operational but over-budget, over the time estimate, and offers fewer features
                          and function than originally specified

-> 대형 프로젝트 일수록 성공보다 실패의 확률이 높게 나타남 

 

SW 공학 출현

대량생산체계가 급격한 수요의 증가에 대응할 수 있는 공급 체계를 갖출 수 있게 했다는 사실
- SW 개발에도 이와 같은 원리를 적용 (Software Engineering)

IEEE SW 공학에 대한 정의
= 소프트웨어의 개발, 운용, 유지보수 및 파기에 대한 체계적인 접근 방법
= 사용자 요구사항을 만족하고 품질이 좋은 SW를 최소한의 비용으로 계획된 일정에 맞추어 개발하는 방식을 정의한
   방법 및 절차와 산출물

 

SW 공학 계층 구조

  • 도구
    - 개발과정에서 사용되는 툴 지칭
    - Estimation (LoC, FP 등) 툴, 요구사항 관리 툴, 설계(UML 등) 툴, Testing 툴, 문서화 툴, Case 툴
    - CASE는 SW 개발 전 단계 지원하는 도구

  • 방법론
    - 프로세스 중심 방법론 ('70년대)
       > 자료의 변환과정과 프로세스 강조 
       >  파일시스템에 기반한 절차적 언어 (Fortran, Cobol, Basic, Pascal, c 등)
    - 자료 중심 방법론
       > 프로그램 개발에 사용할 자료를 정의하고 자료와 자료간의 관계를 분석하여 자료구조를 정의하고
          이를 토대로 프로세스 구조를 고안
       > DB에 기반한 쿼리 중심의 프로그램 방식 (ADABAS/NATURAL)
    - OO 방법론
       > 객체(Object = Data + Process) 를 캡슐화 함으로써 좀더 쉽게
          프로세스의 모듈화, 정보은닉, 코드 재사용의 효율을 꾀하는 방법
       > 프로세스 중심 방법론과 자료 중심 방법론의 장점을 묶어 진화한 방법
      
  • 프로세스
    - SW 개발에 필요한 작업 이름, 내용, 결과물
    - 영역
       > SW 명세 (요구분석)
       > SW 개발 : 명세를 바탕으로 SW 개발하는 과정
       > SW 검증 : Validation(분석, 설계 검토, 단위 테스트 / 검토) & Verification (통합, 시스템, 인수 테스트 / 테스트)
       > SW 진화 : SW의 버전업 작업
SW 프로세스 : Carnegie Mellon University SEI (Software Engineering Institute)
프로세스 일반적인 정의
- 주어진 목적 달성을 위해 수행하는 행위의 집합
- 도구, 방법, 자료, 사람을 포함
- 프로세스, 기술, 사람
- PSP = 개인들이 설계를 할때, 투입된 시간을 기록 -> 거기 맞도록 돈을 받어 (담배피는 시간도 일하는 시간에 포함)
- CMMI 
CMMI 성숙도
  • 품질