Be Coder
소프트웨어 개발 단계 : 품질 / 프로젝트 관리 / IT 용어 정리 본문
소프트웨어 품질
소프트웨어 품질 정의
- 사용자의 요구와 부합되는 정도
- 개발자 관점에서의 좋은 소프트웨어
- 결함 없는 프로그램
- 요구 분석 명세서대로 만든 소프트웨어
• 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이나 애자일 개발을 할 때의 중요한 것은 요구사항을 얼마나 빨리 적용하는냐에 초점을 맞춤.
'소프트웨어 공학' 카테고리의 다른 글
소프트웨어 개발 단계 : 설계 / 구현 / 테스트 (0) | 2020.03.08 |
---|---|
소프트웨어 개발단계 : 계획 / 요구 분석 / 위험 (0) | 2020.03.08 |
소프트웨어 개발단계 : 프로세스 모델 (0) | 2020.03.08 |
소프트웨어 공학이란 (0) | 2020.03.08 |