Programmer!/Good Program

소프트웨어 공학, 개론.

petitCoding 2012. 4. 12. 11:27

1. 소프트웨어 : 프로그램+ 프로그램의 개발, 운용, 보수에 필요한 정보 일체

 * 소프트웨어 생산

  -> 소프트웨어는 프로그램의 동적인 실체

      프로그램은 형식 언어로 표현된 지적 노동의 결과물

      닳아 없어지는 것이 아니라 소용없어 못쓰게 됨

      논리적인 요소로 구성

      소프트웨어 산업

 * 사회적, 경제적인 소프트웨어 의존도 커짐

 

2. 소프트웨어 시스템

 * 유기적으로 상호 작용하는 개체들의 모임

 * 소프트웨어는 컴퓨터를 기반으로 하는 여러 시스템과 관계를 맺고 있음

 * 특징

   -> 시너지 효과, 역동적으로 발전, 변경, 상층되는 요구와 이해 관계의 절충

 * 소프트웨어 자체도 하나의 시스템

 

3. 정보 시스템(Information System)

 * 자료의 분류, 저장, 검색에 관점

 * 데이터베이스를 대화식으로 접근

 * 조직의 문제 해결을 위한 도구

 * 특징 : 대규모 자료, 정적이 아님, 시스템 분석, 유지보수가 중요

 * MIS : 운영, 관리, 의사결정을 위하여 정보를 제공하는 시스템

 

4. 제어 시스템(Control System)

 * 사건을 감지하여 처리하고 자동적으로 보고

   -> 센서의 감지

       제어 기기의 상태 보고

       오퍼레이터의 입력 처리

       인터페이스

 

5. 탑재 시스템

 * 계산이 주된 기능이 아닌 시스템의 한 구성요소

 * 특징

  : 대규모, 장기 사용, 테스트하기 어려움

   인터페이스가 복잡, 비동기, 병렬, 분산

   대규모의 자료를 접근, 변경, 출력

   실시간 제어, 인터페이스

   엄격한 요구 : 실시간 반응, 고장에 대한 안전, 신뢰성

 

6. 소프트웨어 공학

 * 정의 

 1) 질 좋은 소프트웨어를 경제적으로 생산하기 위하여 공학, 과학 및 수학저 원리와 방법을 적용하 

     는 것

 2) 소프트웨어의 개발, 운용, 유지보수  및 소멸에 대한 체계적인 접근 방법

 3) 품질, 효율, 비용, 인정에 관한 공학적인 접근 원리

 * 목표 : 품질, 생산성

 

7. 소프트웨어 품질

 * 소프트웨어를 대하는 입장에 따라 품질에 대한 관점이 달라짐

 * 정확성 : 기능적으로 맞게 동작, 표준에 적합, 요구 분석시의 기능과 일치하느지 점검

 * 신뢰성 : 소프트웨어가 주어진 기간동안 제대로 작동할 확률, 오류에 비례, 정확성을 위한 필요조

               건

 * 강인성 : 요구 명세에 표시하지 않은 상황에서도 제대로 작동하는 성질

 * 성능 : 수행속도, 알고리즘의 시간 복잡도, 시뮬레이션, 스트레스 테스트

 * 사용 용이성 : 시스템을 친근하게 느낄수 있는 성질, 사용자 인터페이스

 * 유지보수성 : 보수성(정해진 기간에 소프트웨어 결함 해결할수있는 성질), 진화성

 * 재사용성 ; 소프트웨어 부품의 성질, 확장가능성, 적응성, 이용 용이성

 

8. 소프트웨어 생산성

 * 생산과정에 크게 영향

 * 개발경험의 성숙도에 의해 좌우

 * 생산성에 영향을 미치는 요소 : 프로그래머의 능력, 팀의사 전달, 제품의 복잡도, 기술 수준 등

 

9. 소프트웨어 개발 모형

 * 소프트웨어 라이프 사이클

 * 개발 프로세스

 * 개발 모형 : 개발 단계, 입력 자료, 수행 결과

 * 실정에 맞는 개발 팀의 고유한 모형의 정립 필요

 * 중요한 모형 : 폭포수 모형, 프로토타이핑 모형, 점증적 모형

 

10. 폭포수 모형

 * 1970년대 소개 : 항공 방위 소프트웨어 개발 경험으로 습득

 * 각 단계가 다음 단계 시작 전에 끝나야 함

 * 단순하거나 응용 분야를 잘 알고 있는 경우 적합

 * 결과물 정의가 중요

 * 단점

  -> 처음 단계를 지나치게 강조하면 코딩, 테스트가 지연

     각 단계의 전환에 많은 노력

     프로토 타입과 재사용의 기회가 줄어듦

     소용없는 다종의 문서를 생산할 가능성 있음

 

11. 프로토타이핑 모형

 * 시범 시스템의 적용 : 사용자의 요구를 더 정확히 추출

 * 프로토타이핑 도구 : 화면 생성기, 비주얼 프로그래밍, 4세대 언어 등

 * 공동의 참조 모델 제공

 * 개발 단계에서 유지보수가 이루어짐

 * 단점 : 오해, 기대심리 유발, 관리가 어려움(중간 산출물 정의가 난해)

 

12. 나선형 모형

 * 소프트웨어의 기능을 나누어 점증적으로 개발 : 실패의 위험 줄임, 테스트 용이, 피드백

 * 여러 번의 점증적인 릴리즈

 * 진화 단계

   1) 계획 수립 : 목표, 기능 선택, 제약 조건의 결정

   2) 위험 분석 : 기능 선택의 우선순위, 위험요소의 분석

   3) 개발 : 선택된 기능의 개발

   4) 평가 : 개발 결과의 평가

 * 대규모 시스템 개발에 적합

 * 반복적인 개발 및 테스트 : 강인성 향상

 * 단점 : 관리가 중요, 위험 분석이 중요, 새로운 모형

 

반응형

'Programmer! > Good Program' 카테고리의 다른 글

Design Pattern  (0) 2012.08.28
S/W 계층 구조  (0) 2012.04.12
S/W Process  (0) 2012.04.12
Critical System  (0) 2012.04.12
소프트웨어 공학 - 프로젝트 관리  (0) 2012.04.12