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 |