세리프 따라잡기

소프트웨어공학 1 본문

소프트웨어공학

소프트웨어공학 1

맑은 고딕 2021. 3. 31. 16:01

 

시스템 공학

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
Comments