세리프 따라잡기
소프트웨어공학 1 본문
시스템 공학
1. 공학 vs 과학
- 공학: 과학을 통해 발견하고 이해하게 된 자연 원리를 인간을 위해 응용하는 학문 분야
- 과학: 자연적 현상을 발견하고 이해하는 학문 분야
2. 시스템 공학이란?
- 시스템의 개발과 운용, 유지보수를 합리적으로 행하기 위한 사고방법, 절차, 조작 및 기법 등을 총칭
- 시스템 공학의 기능
기술적(technical) 측면 | 관리적(management) 측면 |
시스템을 구성하는 물리적 요소의 적합성과 이의 효과적인 조합에 의한 효율의 극대화를 추구 | 시스템 개발에 관련된 업무가 제대로 이루어지도록 인원, 설비, 자재 등에 대한 계획과 통제를 행하는 관리기술을 의미 |
3. 시스템 평가 기준
시간, 성능, 안전성, 비용, 신뢰성, 보전성(고장이 발생했을 때 이를 발견하고 회복시킬 수 있는 능력. 보전성 척도: MTTR[평균수리시간])
4. 컴퓨터 시스템 공학이란?
- 높은 수준에서 시스템의 기능들을 정의·분석하여 HW, SW 또는 사람을 비롯한 시스템의 구성요소에 할당하는 활동
- 시스템 개발 단계
시스템 개발의 정의 | 사용자가 요구하는 목표와 시스템의 제약 조건으로부터 정의 |
시스템 구성요소 할당 | 시스템의 주요 기능, 성능 제약 조건, 설계 제약 조건, 인터페이스, 정보구조 등을 할당 |
소프트웨어 개발 및 확장 | 요구되는 기능과 성능을 제공하기 위한 소프트웨어 엔지니어들의 작업을 의미 |
5. 시스템 구성 요소
구분 | 내용 |
입력(input) | 처리할 데이터, 처리 방법, 조건 등을 시스템에 입력하는 것을 의미 |
처리(process) | 입력된 데이터를 처리 방법과 조건에 따라 처리 |
출력(output) | 처리된 결과를 시스템에서 출력 |
제어(control) | 자료를 입력하여 출력될 때까지의 처리 과정이 올바르게 진행되는지 감독 |
피드백(feedback) | 출력된 결과가 예정된 목표를 만족시키지 못할 경우 목표 달성을 위해 반복하여 처리 |
[ 입력 - 처리 - 출력 ] 과정을 감독하는 [ 제어 ] 이에 대한 결과를 [ 피드백 ] 하며 반복하는 과정
소프트웨어 개요
1. SW란?
- 사용자가 원하는 기능을 제공해주는 컴퓨터 프로그램
- 원하는 정보를 알맞게 처리하도록 해주는 자료구조를 의미
- 프로그램의 사용에 도움을 주는 설명문서 등의 총칭
2
-1. 특징 [빨간줄(4개✔) 기억하기]
상품성 | 개발된 S/W는 상품화되어 판매됨 |
견고성 | 일부 수정으로 S/W 전체에 영향을 줄 수 있음 |
복잡성 | 개발과정이 복잡하고 비표준화되어 이해와 관리가 어려움 |
순응성 | - 사용자의 요구에 따라 만들어져야 함✔ - 환경 변화에 적절히 변경할 수 있음✔ |
비가시성 | S/W 구조가 외관으로 나타나지 않고 코드 속에 숨어 있음 [사용자는 볼 수 X, 개발자는 O] |
비마모성 | 사용에 의해 마모되거나 소멸되지 않음✔ |
비제조성 | H/W처럼 제작되지 않고 논리적인 절차에 맞게 개발됨✔ |
비과학성 | S/W 개발 자체는 수학적, 과학적이 아니라 조직(인력), 시간, 비용, 절차 등이 중심 |
-2. 소프트웨어와 하드웨어의 비교
소프트웨어 | 하드웨어 |
개발 | 제조 |
생산 | 조립 |
논리적 시스템 | 물리적 시스템 |
소모되지 않음 | 소모됨 |
3. 소프트웨어 분류 [구분 정도만 하기. 자세히 볼 필요는 X]
-1. 기능 분류
시스템 소프트웨어 (System S/W) |
컴퓨터 하드웨어를 운영하기 위해 개발된 소프트웨어 ex. 운영체제나 네트워크, 데이터베이스 관리 시스템 등 |
임베디드 소프트웨어 (Embedded S/W) |
시스템에 내장되어 특정 기능을 수행하는 소프트웨어 ex. 연료제어, 계기판, 브레이크 시스템 등 |
응용 소프트웨어 (Application S/W) |
사용자가 원하는 목적에 맞게 개발된 소프트웨어 ex. 워드프로세서, 게임 프로그램 등 |
웹 응용 소프트웨어 (Web Application) |
인터넷을 위한 hyper text or 웹으로 가동되는 응용 시스템용 S/W ex. 온라인 회원관리, 인터넷 뱅킹 등 |
-2. 도입방법에 의한 분류
인하우스 개발 (In-house dev.) |
중·소규모 프로젝트 개발시 조직 내부에서 자체 개발 인력을 활용하여 S/W를 개발하는 방법 |
SI (Sys. Integration) |
주어진 시간내에 대규모 또는 신규 프로젝트를 완료하고자 할 때, 전문 개발업체에 의뢰하여 프로젝트를 진행하는 방법 |
패키지 (package) |
상품화된 신뢰성 있는 제품을 사용하는 방법 * 수정 보완 사항이 적을수록 좋다. |
4. S/W의 위기 (crisis) [시험에 낼 확률 多]
- SW 생산성을 높일 수 있는 기술과 전문 인력이 절대적으로 필요한 반면 공급이 수요를 충족하지 못해서 SW에 대한 사용자들의 요구사항을 처리할 수 없는 문제가 발생한 것
2000년 이전 | 하드웨어가 급속하게 발전하고, 컴퓨터가 대중화 되었다. SW 개발 및 생산 활동은 매우 저조했다 |
2000년 이후 | SW 전문가들이 늘어나 생산성이 높아졌다. 사용자의 요구사항 및 품질에 대한 기대감이 계속 증가하여 SW 위기 발생 요인은 계속되고 있다. |
SW 위기 발생 요인 | SW 위기 결과 |
① SW 규모의 증대와 복잡도에 따른 비용 증가 ② 프로젝트 관리 기술의 부재 ③ SW 개발기술에 대한 교육/훈련 부족 ④ SW 품질의 미흡 ⑤ SW 생산성 저조 |
① 유지 보수가 어렵다. ② 성능 및 신뢰성이 부족. ③ 개발 기간 지연 및 개발 비용의 증가로 연계 ④ 개발 전문가 부족과 이로 인한 인건비 상승 |
5. SW의 위기 해결 방안
- 단일 방법론으로 해결되지 않아 다양한 방법론을 혼합하여 해결
1) SW 개발 측면
- 표준화된 방법론 적용, 객체지향 프로그래밍, 구조적 프로그래밍, SW 컴포넌트화, SW 프로토타이핑, 반복형 개발, 버그/이슈 관리시스템, 버전 관리 시스템, 품질보증 기법 적용, 통합개발 환경, 애자일 개발 프로세스 등을 프로젝트 성격에 맞게 적용
2) SW 유지보수 측면
- SW 재사용, 객체지향기술, 캡슐화, CBD 응용, 디자인 패턴(model + view + controller), 가비지 컬렉션, 멀티쓰레드 프로그래밍 등을 활용
소프트웨어공학
1. SW 공학이란? [개념 정의 시험에 낼 확률 多]
- 인간에게 필요한 프로그램과 프로그램의 개발, 운용, 유지보수에 필요한 관련 정보 일체를 의미하고 여러가지 방법론과 도구, 관리 기법을 통하여 SW 품질과 생산성 향상을 목적.
- 공학적 원리에 의해 SW를 개발하는 학문으로 SW 제품의 생산, 유지보수 관련 기술, 경영에 관한 학문.
- 과학적 지식을 컴퓨터 프로그램 설계와 제작에 실제 응용하는 것이며, 이를 개발 운영하고 유지 보수하는데 필요한 문서화 작성 과정을 포함 (= SDLC) - Boehm(1976)
- SW 위기를 극복하기 위해 개발한 학문으로 SW개발, 운용, 유지보수 및 폐기에 대한 체계적인 접근 방법 - 국제전기전자공학회(IEEE, 1983)
2. SW 공학의 영역
분야 | 의미 | 사례 |
방법(method) | SW 제작에 사용하는 기법이나 절차 | - 구조적 분석 - 객체지향 분석 - 설계 방법 |
도구(tool) | 자동화된 시스템 | - 설계 도구 - 프로그래밍 도구 - 테스트 도구 |
프로세스(process) | 도구와 기법을 사용하여 작업하는 순서 | - unified process - eXtreme programming |
패러다임(paradigm) | 접근 방법, 스타일 | - 구조적 방법론 - 객체지향 방법론 |
3. 목표 - (QCD의 만족 / Quality 품질, Cost 비용, Delivery 유지보수)
① 오류가 없는 고품질 소프트웨어를
② 계획된 개발기간을 넘기지 않고
③ 추가적인 예산의 요청 없이
④ 사용자가 원하는 기능을
⑤ 유지보수가 용이하도록 복원력이 좋은 소프트웨어를 개발하는 것
목표 | 필요 기법 |
고품질 소프트웨어의 생산 | 요구사항 관리, 품질관리(QA) |
정해진 비용, 기간, 자원으로 소프트웨어 생산 | 요구사항 관리, 프로젝트 관리 |
사용자 만족도 증진 | 요구사항 관리, 품질관리 |
소프트웨어 생산 프로세스 수행능력 개선 | 요구사항 관리, 적정한 SDLC |
생산성(productivity) 향상 | 요구사항 관리, 부품화, 모듈화, 패턴화 기법 |
4. 기본 원칙
① 현대적인 프로그래밍 기술을 지속적 적용
② SW 품질이 유지되도록 지속적인 검증을 시행
③ SW 개발 관련 사항 및 결과에 대한 명확한 기록을 유지
5. 좋은 SW 특성 [빨간색 4가지✔는 기억하기]
① 유지보수가 용이해야 한다.✔
② 사용자가 원하는 대로 정확히 동작해야 한다.
③ 신뢰성이 높아야 하며, 효율적이어야 한다.✔
④ 잠재적인 에러가 가능한 적어야 한다.
⑤ 사용하기 쉬워야 한다.
⑥ 문서화가 잘 되어 있어야 한다.
⑦ 연관된 SW 개발 시 재사용이 가능해야 한다.
⑧ 여러 환경에서 동작될 수 있도록 이식성이 좋아야 한다.
⑨ 적절한 사용자 인터페이스(UI)를 제공해야 한다.✔
⑩ 하드웨어 자원을 효율적으로 이용할 수 있어야 한다.✔
'소프트웨어공학' 카테고리의 다른 글
소프트웨어 품질보증 (0) | 2021.05.31 |
---|---|
소프트웨어공학 3 (0) | 2021.04.05 |
소프트웨어공학 2 (0) | 2021.03.31 |