Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Be Coder

소프트웨어 개발 단계 : 품질 / 프로젝트 관리 / IT 용어 정리 본문

소프트웨어 공학

소프트웨어 개발 단계 : 품질 / 프로젝트 관리 / IT 용어 정리

ForzaCoding 2020. 3. 8. 21:24

소프트웨어 품질

 

소프트웨어 품질 정의

- 사용자의 요구와 부합되는 정도

- 개발자 관점에서의 좋은 소프트웨어

   - 결함 없는 프로그램

   - 요구 분석 명세서대로 만든 소프트웨어

 

• US DoD: 개발된 소프트웨어가 사용자의 요구 사항을 만족할 수 있는 능력

• IEEE: 소프트웨어가 필요한 속성을 보유하고 있는 정도 - 사용자의 기대 수준을 만족할 수 있는 정도를 결정하는 소프트웨어의 특성

 

 

품질 목표

1. 정확성 : 개발된 소프트웨어가 사용자의 기능적 요구 사항을 담은 프로그램 명세서와 얼마나 일치하는지를 나타낸다.

2. 신뢰성 : 기능이 정확하고 일관성 있는 정도를 나타낸다.

3. 효율성 : 사용자가 요구하는 기능을 수행하는 데CPU와 메모리 같은 자원을 얼마나 사용하는가와 관련된 특성이다

4. 무결성 : 허가 받지 않은 사용자가 데이터 접근을 통해 변경을 시도했을 때 얼마나 보호할 수 있는지를 나타낸다.

5. 접근 사용성 : 사용자가 쉽게 이용 가능한지를 나타낸다.

6. 유지보수 용이성 : 소프트웨어를 변경하기 쉽고 편하게 만든 정도를 나타내는 품질 요소

7. 테스트 용이성 : 사용자가 요구하는 기능을 만족할 만큼 잘 수행하고 있는지에 대해 얼마나 쉽고, 철저하게 테스트할 수 있는지를 나타낸다.

8. 유연성 : 운영 환경의 변화에 따라 새로운 기능을 쉽게 추가할 수 있는지, 다른 환경에 적용할 수 있도록 운용되는 프로그램을 얼마나 쉽게 수정할 수 있는지를 나타낸다.

9. 이식성 : 하드웨어 또는 운영체제와 같은 환경에서 또 다른 환경으로 옮겨도 환경 변화에 무리 없이 잘 작동할 수 있도록 프로그램을 수정하여 이식하는 것이 얼마나 쉬운가를 나타낸다

10. 재사용성 : 시스템의 일부나 전체를 다른 애플리케이션에서도 얼마나 쉽게 사용할 수 있는지를 나타낸다.

11. 상호운용성 : 다른 소프트웨어와 얼마나 쉽게 연계 또는 결합하여 정보를 교환할 수 있는지를 나타낸다.

 

 

품질 특성

- McCall : 제품 수정 / 제품 변환 / 제품 운영

- Garvin : 성능 / 특성품질 / 신뢰성 / 일치성 / 내구성 / 서비스 / 미적 / 지각

- Boehm : 이식성 / 신뢰성 / 효율성 / 인간공학성 / 테스트성 / 이해성 / 수정(변경)성

 

 

품질 평가 표준 모델

> 제품 품질 특성 평가 

- 완성된 제품에 대한 평가

- ISO/IEC 9126에서 제시하는 모델이 소프트웨어 품질에 대한 표준적인 모델

- ISO/IEC 14598, ISO/IEC 12119, ISO/IEC 25000

> 프로세스 품질 특성 평가

- 소프트웨어 제품의 개발 프로세스를 평가

- 소프트웨어 개발 과정의 각 단계마다 평가

- ISO/IEC 9000, ISO/IEC 12207, CMMI, SPICE

 

 

CMMI 모델

C: 능력(Capability) : 개발 목표(주어진 기간, 정해진 비용, 고품질 등)를 달성할 수 있는 힘

M: 성숙도(Maturity) : 임감이 있는 조직으로서 개발 과정에서 객관적이고 정량적인 근거에 따라 프로세스가 측정되고 지속적인 개선이 이루어지는 조직

M: 모델(Model) : 프로세스를 감사(audit)하는 의미로 사용, 기준대로 하고 있는지, 그렇지 않은지를 검사. 

                            CMMI는 그 기준을 제시하고 있는데 그것이 ‘수행 지침(best practice)’이라는 모델

I: 통합(Integration) :  CMMI 여러 가지 프로세스의 기준을 하나로 통합했다는 의미, 소프트웨어 개발 생명주기의 각 단계를 통합한 모델이라는 의미

 

CMMI는 조직의 프로세스에 대한 가이드이자 기준

-> ‘능력’과 ‘성숙도’로 조직의 프로세스를 측정하고 평가하는 모델의 통합 버전인 프로세스 개선 성숙도 모델

 

 

SPICE(ISO 15504) 모델

- 소프트웨어 프로세스 평가를 위한 프레임워크를 제공
- 정보 시스템 분야에 특화된 품질 표준이자 인증 규격의 역할

 

 

프로젝트 관리

 

1. 프로젝트 정의 및 특징

> 프로젝트 PMI

- 유일한 제품이나 서비스를 만들기 위해 일정한 기간을 정해놓고 수행하는 작업

> 프로젝트의 특징

- 한시성 : 일의 시작과 끝이 명확히 정해져 있다.

- 유일성 : 기간이 종료되어 만들어 내는 인도물은 유일하다.

- 참여자의 일시성 : 참여 인력은 프로젝트 시작과 동시에 참여하고, 종료되면 해체된다.

- 한정성 : 프로젝트가 종료되면 사용된 자원은 원래의 위치로 돌아가던가 없앤다.

 

 

 PMBOK의 5가지 프로세스 그룹

> 시작(initiating) 그룹
  - 핵심 프로세스: 범위 관리 착수 및 프로젝트 또는 프로젝트를 구성하는 단계 정의 및 승인

기획(planning) 그룹
   - 프로젝트 목표 설정 및 목표 달성을 위한 활동 계획과 예산, 인력, 자원 등의 계획 수립

• 범위 기획: 프로젝트의 목적을 정의하는 ‘범위 기술서 개발

• 범위 정의: 프로젝트 수행을 위해 더 작고 관리 가능한 구성 요소로 세분화

• 작업 정의: 프로젝트 수행을 위해 실행되어야 할 특정 활동들 식별

• 작업 순서: 활동 간의 상호 의존성을 식별하고 기록

• 작업 기간 산정: 단위별 활동을 완료하기 위해 필요한 작업 기간 산정

• 일정 개발: 활동 순서와 활동 기간, 프로젝트 일정을 세우기 위해 필요한 자원 산정

• 위험 관리 기획: 위험 관리를 위한 접근 방법과 계획을 세운다.

• 자원 기획: 프로젝트 수행 시 필요한 자원의 종류와 양 결정

• 비용 산정: 프로젝트 수행 시 필요한 비용 산정

• 비용 예산 수립: 개별적인 작업들에 소요되는 모든 비용 산정

• 프로젝트 계획 개발: 다른 기획 프로세스에서 세운 결과들과 일관되고 명확하게 문서화

실행(executing) 그룹 
  - 핵심 프로세스는 프로젝트 계획 실행으로 계획을 세운대로 실제 프로젝트 수행

> 통제(controlling) 그룹

  - 프로젝트 통제: 계획 대비 목표의 진척 상황을 주기적으로 감시하고 성과를 측정

  • 성과 보고: 상태 보고, 진척도 측정, 예측 등이 포함된 성과 정보를 수집하고 배포

  • 통합된 변경 통제: 프로젝트의 변경 사항 조정

> 종료(closing) 그룹

  • 계약 종료: 진행 중인 모든 항목들을 마무리하고 계약 종료

  • 관리 종료: 공식적으로 프로젝트를 완료하기 위해 정보를 생성, 수집, 보급

 

 

PMBOK의 9가지 관점

> 통합 : 프로젝트 헌장, 범위 진술서, 계획을 개발. 프로젝트 변화를 지시하고, 관리하며, 모니터링하고 통제.

> 범위 : 기획, 정의 작업분류체계(WBS) 작성, 비준 및 통제.

> 시간 : 정의, 연결, 자원 및 기간 추정, 일정개발 및 일정관리.

> 비용 : 자원 기획, 비용 추정, 예산 및 통제.

> 품질 : 품질계획, 품질보장 및 품질 통제.

> 인적 자원 : 인적자원 계획, 인력 충원, 인력 개발 및 프로젝트 팀 관리.

> 통신 : 커뮤니케이션 계획, 정보 제공, 성과보고, 이해관계자 관리.

> 위험 : 리스크 계획 및 확인, 리스크 분석, 리스크 대응 계획 및 리스크 모니터링 및 통제

> 조달 : 획득 및 계약 계획, 판매자 대응 및 선택, 계약관리 및 계약 종료.

 

정보시스템 감리의 정의

-> 법 제 2조 제 14호

  : 감리 발주자 및 피감리인의 이해관계로부터 독립된 자가 정보시스템의 효율성을 향상시키고 안전성을 확보하기 위하여, 제 3자적 관점에서 정보시스템의 구축 및 운영 등에 관한 사항을 종합적으로 점검하고 문제점을 개선하도록 하는 것.

-> 전자정부법에서도 다룸. 

 

감리의 목적

- 정보시스템의 효과성 확보 : 사전 설정된 목표를 달성하게 함.

- 정보시스템의 효율성 확보 : 사용자 측면에서는 응답시간, 시스템 측면에서는 처리량 & 자원 이용도

- 정보시스템 안전성 확보 : 무결성, 가용성, 기밀성

- 법적 요건의 준수 확인 : 업무 관련 기준, 규정, 정보화사업 추진 관련 규정 등

 

감리 대상

- 정보시스템의 구축 및 운영 등

정보시스템 구축(개발) 사업

-> DB 구축, 운영, 유지보수, ISP, ITA 등

 

 

 

기술용어 정리

1. 데이터 마이닝

- 정의 : 대용량의 데이터로부터 사용자의 요구사항에 맞는 의미있는 정보와 지식을 분석하여, 추출하는 방법.

- 등장 배경 

   - 기술적 측면 : 프로세싱 속도, 자료저장 구조, 기계학습 기술의 발전. 대량의 데이터 축적 및 마이닝 도구 발전.

   - 비즈니스 측면 : Mass 마케팅에서 Target 마케팅으로 패러다임 변화. 빅데이터에서 의미있는 정보 추출해 새로운 비즈니스 창출, 개선.

- OLAP

 

2. 웹 마이닝

- 정의 : 웹 환경에서 얻어지는 웹 문서, 정보, 데이터로 부터 특정 행위, 패턴 등의 유용한 정보를 이용해, 마케팅 및 의사결정에 활용하기 위한 마이닝 기법

- 특징

 > 대용량 : 대량의 웹로그를 기반으로 정부 수집, 자료 정제 및 클리닝 수행

 > 실시간성 : Batch 작업 성격이 강한 일반 데이터 마이닝과 구별

 > One  to One : 고객 행위 분석을 통한 개인화 지향(데이터 마이닝은 일반화)

 > 마이닝 기법 : 신경망, 연관성, 순서화, 군집화, 의사결정 등에 마이닝 활용

 

3. BCP(Business Continuity Planning)

- 정의 : 지진, 홍수, 천재지변 재해 발생 시, 시스템 복구, 데이터 복원 등과 같은 단순 복구 차원을 포함해, 기업 비즈니스 연속성을 보장할 수 있는 체계

- 등장배경 

> 기술적 측면 : 재해 대비 시스템 복구 기능이 필수, 기업 IT시스템 안정성 법죽 규제 추세

> 내부환경 측면 : 시스템 중지로 인한 영업 손실에 대한 기회 비용 발생 방지. 재해 발생 시 조직 및 개인의 업무 정의 필요. 

> 외부환경 측면 : 고객 정보 보호 및 업무연속성 확보를 위한 안전장치 마련. 시스템 중단으로 인한 기업 이미지 실추 예방.

- BCP 프레임워크 내의 주요 계획

> 재해 예방 : 재해 발생 전 재해발생요인을 사전에 대응 및 처리. 위기 관리(정량적, 정성적 분석) & 예방

> 대응 및 복구 : 재해에 대한 정성적, 정량적 평가항목 도출. BIA를 통한 파급효과 분석 및 대응 방안 수립. continuity Planning으로 복구.

> 유지 보수 : 운영 형태별 센터 유형 선택.

> 모의 훈련 : 주기적 테스트를 통해 미비점 파악 및 보완. 실제 훈련에 적용.

 

4. BCM(Business Continuity Management)

- 정의 : 예기치 않은 상황에서도 비즈니스를 지속적으로 운영하기 위해, 시스템 복구 등과 같은 24시간 365일 기업 비즈니스 연속성을 보장할 수 있는 경영

- 특징 

> 복원 능력(Resilience) - 업무 중단 발생시 견뎌낼 수 있는 능력

> 반복 훈련(Simulation) - 계획이 예상대로 수행되고, 개선됨을 보장

> 업무중단관리 - IMP(Incident Management Plan, 사고 초기 확산 통제) / BCP(핵심프로세스 지속 보장)

 

5. DRS(Disaster Recovery System)

- 정의 : 정보시스템에 대한 비상 대비체계 유지와 각 업무 조직별 비상사태에 대비한 복구 계획 수립을 통한 업무 연속성을 유지할 수 있는 체제

- 필요성 : 재해 장애 상황에서의 서비스 연속성 필요. 업무 중단으로 인한 기업 손실 및 신뢰도 하락 방지

 

6. BIA(Business Impact Analysis)

- 정의 : 재해 발생시 영향을 미칠 수 있는 위험을 정의하고, 업무 중단 영향에 대한 정량적/정성적 분석을 통해 복구 우선순위를 도출하는 과정

- 목적 

> 핵심 우선순위 결정 : 모든 핵심 사업 단위 프로세스에 우선순위 부여

> 중단시간 산정 : 견딜 수 있는 최대 극복 상태로 빠지기 전까지, 견딜 수 있는 최장시간 산정

> 자원 요구 : 시간에 민감한 프로세스에 대부분의 자원 할당

 

 

질문 정리

 

1. 왜 소프트웨어 공학이 왜 필요한가?

-> 방법론을 근간으로, 한 단계식 (설계, 기획, 구현, 테스팅 등) 진행하면, 좀 더 실수 없이, 완성된 결과물을 만들 수 있다. 

-> 놓친 부분을 점검하고, 그 부분을 완성시키기 위해.

-> 업무에서나, 커뮤니케이션에서 업무의 진행 단계를 이해하기 위해.

이를 통해, 회사가 원하는 업무를 보다 잘 이해할 수 있고, 진행할 수 있다. 타 부서(기획 - 개발 등)와의 소통에도 도움이 된다.

 

2. 소프트웨어 개발 경험을 설명하라

-> 프로젝트를 설명할 때,

제가 만든 웹/앱은, ~~ 목적으로, ~~한 기능을 ~~~ 기술을 활용하여 개발하였습니다.

~~과정, ~~한 문제, ~~ 한 해결 방법 등을 준비. + 본인이 부족하다고 생각하는 점.

 

3. 애자일 방법론에 대해 설명하시오.

-> 고객의 요구를 빨리 받아들여, 제품에 서비스를 적용/반영시키는 것. 

스크럼, XP 등의 기법이 있음.

 

4. Lean 개발 방법론에 대해 설명하시오.

-> 프로세스 중에 고객의 요구사항을 반영하고 처리하는데, 어떻게 프로세스를 정의하고 관리하는지에 대한 것.

최근 Lean이나 애자일 개발을 할 때의 중요한 것은 요구사항을 얼마나 빨리 적용하는냐에 초점을 맞춤.