용's

[Chap 2] Software Quality 본문

Computer Science/Software Engineering

[Chap 2] Software Quality

TaeYOng's 2014. 10. 19. 00:59

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: 어떤 순간에 내가 어떤 시스템을 사용하고 싶을 때 사용할 수 있는 확률을 말함)



Comments