용's
[Chap 2] Software Quality 본문
2.1 Software Quality
1) Software Quality의 정의
- 많은 정의가 있지만, 대체적으로 제품 또는 서비스의 특징들이 요구사항을 얼마나 만족시키고 또 얼마나 적합한지를 나타내는 것.
- 사실 Quality는 절대적이지도 않고, 다차원적이며, 제약점도 많고, 판단기준도 독립적이지 않아 어려움이 있음.
2) Software Quality의 분류
- 뚜렷하게 나눠지는 것은 아니나, External Quality와 Internal Quality로 나눠짐.
External Quality: 시스템의 사용자들에게 보이는 부분의 Quality
Internal Quality: 시스템 개발자들의 고려사항 부분의 Quality
- 보통 Internal quality를 통해 개발자들이 External Quality를 성취할 수 있다고 여거짐.
- 그러면 제품(product)의 Quality가 중요할까, 개발 과정(Process)의 Quality가 중요할까?
3) Product Quality 와 Process Quality
- 이 둘의 관계는 매우 연관되 있다. Process를 통해 Product를 만들어 내기 때문.
- Product Quality의 Criteria
=> Functionality, Usability, Efficiency, Reliability, etc
- Process Quality의 Criteria
=> Productivity, Effectiveness of methods & tools, Use of standards, Management, etc
2.2 Why Software Quality is different from other types of Quality?
- 소프트웨어는 물리적인 것이 아니다.
- 시작부터 고객들의 요구사항이 완벽하지가 않다.
- 요구사항은 항상 변한다.
- 하드웨어와 소프트웨어의 발전 변화속도가 빠르다.
- 고객들은 높은 기대감을 가지고 있다.
2.3 Representative Qualities
1) Correctness(정확성)
- 프로그램이 기능들의 명시(specification)대로 올바르게 작동하느냐 않하느냐를 말함.
- 프로그램의 specification을 만족한다면, 프로그램이 모호한지 아닌지를 결정할 수 있게 됨.
2) Reliability(신뢰성)
- 의존성과 같은 뜻으로, 유저가 이 프로그램을 믿을 수 있는지 아닌지를 말함.
- 제품의 failure(장애 결과)의 빈번함과 위험성을 측정함.
- 상대적인 부분임.
- 신뢰성이 있다는 말은 정확성이 있다는 말과 동일하게 됨.(역은 불가능)
3) Robustness(견고성)
- 요구 조건 명세서에서 예상되지 않는 상황들에 대해서 얼마나 합리적으로 작동할 수 있느냐 없느냐를 말함
- 예를 들면, 작동되는 조건들의 범위라던가, 유효한 입력에 대한 잘못된 결과, 불유효한 입력에 대한 제품의 응낙성
4) Performance(성능)
- 'Space 또는 time의 효율 또는 능률'과 같다고 봄.
- 평가하는 방법으로는 모니터링, 분석, 시뮬레이션이 있음.
5) User Friendliness
- 사용하기 편한지를 말함.
- 시스템이 하드웨어 환경에서 설정과 적용이 쉽게 이루어 지는지.
6) Verifiability(검증 가능성)
- 시스템의 특징들이 안전한지 아닌지 검증할 수 있는 능력
- Testing이나 Formal analysis 방법들로 수행될 수 있음
7) Maintainability
- 유지보수할 수 있는 능력을 말함
- 수정(Corrective) 유지보수, 적용(Adaptive) 유지보수, 완전(Perfective) 유지보수가 있음.
- 유지보수를 통해 제품은 고쳐(Repairability)지거나 진화(Evolvability)할 수 있는 것임.
=> Repairability: 소프트웨어가 제한된 일의 양에서 결함들을 수정할 수 있으면 Repairable하다. 사용자들의 적절한 Tools를 통해 향상될 수 있으며, 모듈화(modularization)을 통해 달성할 수 있다.
=> Evovability: 새로운 요구사항을 만족시키기 위해 소프트웨어가 변한다면 Evolvable하다.
8) Reusability(재사용성)
- 새로운 제품(product)를 제작하기 위해 기존에 존재하는 요소들을 사용할 수 있는지를 말함.
9) Portability(이식성)
- 다른 환경에서 실행될 수 있는지를 말함.
10) Understandability
- 소프트웨어의 이해성을 나타내는 척도
- 완성된 프로그램의 작성 목적이 제 3자에게 명확한 표현으로 표시되어 있는 경우 나타남
- Internal quality 요소에 영향을 주는 부분으로, 다른 많은 Quality을 달성하기는데에 도움을 줌
- 유지보수를 쉽게 할 수 있도록 함
11) Interoperability(상호운용성)
- 한 시스템이 다른 시스템과 협력하고 공존하기 위한 능력
12) Productivity
- 소프트웨어 생산 과정의 Quality. (Process(과정)의 효율성을 측정함)
- 단순한 측정방법은 LOC(Line of Code)이지만 측정하기 어려움.
- Tool들은 생산성을 높임.
13) Timeless
- 시간을 맞춰 줄 수 있는지에 대한 것을 말함.
- 주의깊은 스케줄링과, 정확한 작업의 판단, 명확하게 명시된 Milestone 등이 요구됨
14) Visibility
- 이는 process와 관련된 것으로, 모든 단계와 상태들이 문서화 되어있으면 Visible 하다고 한다.
2.4 Quality Requirements in Specific Application Areas(특정 응용 영역들에서의 품질 요구사항들)
1) Information Systems
- 정보를 읽고 썼다하는 시스템
- 요구되는 사항들은, Data Integrity, Data availability, Transaction performance, Security, UI
2) Real-time Systems
- 미리 정의된 엄격한 시간 내에 응답해야하는 시스템
- 제어 중심의 시스템(Control-oriented)
- 시간에 응답하는 Quality 요구됨(Correctness에 속하는..)
3) Distributed Systems(분산 시스템)
- 분산 정도는 Data/Control/Hardware로 나눠질 수 있다.
- 요구되는 Quality는 시스템 가용성(System availability: 어떤 순간에 내가 어떤 시스템을 사용하고 싶을 때 사용할 수 있는 확률을 말함)
'Computer Science > Software Engineering' 카테고리의 다른 글
[Chap 6] Object-Oriented Concepts (0) | 2014.12.05 |
---|---|
[Chap 5] Behavioral Modeling (0) | 2014.12.04 |
[Chap 4] Requirements Engineering (0) | 2014.10.22 |
[Chap 3] Software Process (0) | 2014.10.21 |
[Chap 1] Introduction to Software Engineering (0) | 2014.10.17 |