> [!abstract] Introduction > 모든 집단 활동에는 규칙이나 가이드라인, 또는 특징이 있다. 소프트웨어도 한 사람이 모든 것을 제공하는 것이 아니기 때문에 당연히 공동의 합의가 존재한다. 다시 말해, 모든 소프트웨어에는 표준*standard*이 따라온다. 소프트웨어마다 사용하는 도구가 다를 수 있고 개발 환경도 다를 텐데, 그렇다면 소프트웨어의 표준*standard*에는 도대체 무엇이 있는 것일까? 소프트웨어의 표준은 곧 품질 모델*Quality Model*이라고 봐도 좋을 정도로 소프트웨어에서의 표준은 소프트웨어의 품질에 초점을 맞추고 있다. # 품질 ^0e8453 그렇다면 소프트웨어의 품질은 어떻게 결정되는 걸까? 소프트웨어의 품질은 고객 및 사용자의 필요, 기대사항, 요구사항을 충족할 수 있는 능력으로 정의된다. > [!info] Definition > Product quality (System and/or Software Quality) is a capability of a system or its components to satisfy stated and implied quality needs when used under specified conditions (ISO/IEC 25002:2024) 시스템 또는 컴포넌트가 명시된 조건에서 사용될 때 명시적/암묵적 요구를 충족하며 가치를 제공할 수 있는 정도가 곧 시스템 혹은 소프트웨어의 품질이 된다. 이때 중요한 것은 그 요구가 고객 및 사용자로부터 나오며 정작 그들 자신 또한 무엇을 원하는지 잘 모른다는 것이다. 그렇기에 고객의 의견을 듣고 그것만 반영하면 오히려 무언가 부족한 결과물이 나오게 되고, 소비자들이 잘 모르는 자신들의 욕구를 생산자가 끄집어내야 한다. # 표준 이렇게 끄집어낸 요구들을 소프트웨어가 충족해야 할 가이드라인이 담긴 문서로 정리하면서 소프트웨어의 표준이 탄생하게 되었다. 이를 통해 개발자 입장에서는 개발의 효율성을 높이고 개발 비용을 낮춘다. 기술 부채가 줄어들고 시장으로의 접근성 또한 개선된다. 소프트웨어의 표준은 품질의 하한선을 보장해주기 때문에 고객으로부터 더 많은 신뢰를 얻을 수 있도록 해주고, 기업과 기업 간의 계약 협상을 풀어나갈 때도 도움을 준다. 공동의 합의가 있다는 것은 계약의 기틀이 있다는 뜻이다! 이렇게 전세계 어디에서나 동일하게 적용되는 개발 표준이 존재하는 덕분에 크기가 작은 기업도 글로벌 시장에 접근하기 쉽다. 소비자와 공급자 사이를 연결하고, 호환성과 품질을 보장하고 무역 장벽을 낮추는 것도 바로 이 표준이다. ## ISO/IEC 제품 품질 표준 소프트웨어의 표준도 여러가지가 있지만 가장 대표적인 표준은 ISO*International Organization for Standardization*와 IEC*International Electrotechnical Commission*에서 정하는 표준이다. 2023년 표준 ISO/IEC 25010:2023을 기준으로 제품 품질 표준에 속하는 평가 항목은 다음과 같다. ### Functional Suitability > [!quote] > capability of a product to provide functions that meet stated and implied needs of intended users when it is used under specified conditions. 사용자의 명시적 및 암묵적 요구를 충족하는지를 따진다. #### Functional Completeness > [!quote] > capability of a product to provide a set of functions that covers all the specified tasks and intended users’ objectives 제품이 모든 명시된 작업과 의도된 사용자 목적을 포괄하는 일련의 기능을 제공할 수 있는 능력이다. #### Functional Correctness > [!quote] > capability of a product to provide accurate results when used by intended users 제품이 정확한 결과를 제공할 수 있는 능력을 의미한다. #### Functional Appropriateness > [!quote] > capability of a product to provide functions that facilitate the accomplishment of specified tasks and objectives 명시된 작업과 목표를 달성할 수 있도록 기능을 적절히 제공하는 제품의 능력이다. 제품이 작업을 완수하는 데 필요한 충분하고 필수적인 단계만 제공하고, 불필요한 단계는 배제한다. ### Performance Efficiency > [!quote] > capability of a product to perform its functions within specified time and throughput parameters and be efficient in the use of resources under specified conditions 명시된 조건하에서 명시된 시간과 처리량 기준을 만족하고 효율적으로 리소스를 사용하는지를 따져본다. #### Time-behaviour > [!quote] > capability of a product to perform its specified function under specified conditions so that the response time and throughput rates meet the requirements 제품이 명시된 조건에서 요구된 응답 시간 및 처리량을 만족시키며 기능을 수행할 수 있는 능력이다. #### Resource Utilization > [!quote] > capability of a product to use no more than the specified amount of resources to perform its function under specified conditions 제품이 명시된 조건에서 기능을 수행할 때 지정된 자원량을 초과하지 않고 사용할 수 있는 능력이다. 이때 자원에는 CPU, 메모리, 저장 장치, 네트워크 장치, 다른 소프트웨어, 에너지, 종이 등의 원자재 또한 포함된다. #### Capability > [!quote] > capability of a product to meet requirements for the maximum limits of a product parameter 제품 파라미터의 최대 한계에 대한 요구사항을 충족할 수 있는 능력을 의미한다. 파라미터에는 저장 가능한 항목 수, 동시 사용자 수, 통신 대역폭, 거래 처리량, 데이터베이스 크기 등이 포함될 수 있다. ### Compatibility >[!quote] > capability of a product to exchange information with other products, and/or to perform its required functions while sharing the same common environment and resources 다른 제품과 정보를 교환하거나 동일한 환경과 자원을 공유할 수 있는 능력을 의미한다. #### Co-existence > [!quote] > capability of a product to perform its required functions efficiently while sharing a common environment and resources with other products, without detrimental impact on any other product 제품이 다른 제품과 자원 및 환경을 공유하면서도 성능 저하 없이 요구된 기능을 수행할 수 있는 능력을 의미한다. #### Interoperability > [!quote] > capability of a product to exchange information with other products and mutually use the information that has been exchanged 제품이 다른 제품과 정보를 교환하고, 그 정보를 상호 활용할 수 있는 능력이다. 여기서 정보는 의미 있는 데이터를 의미하며, 정보 교환에는 데이터 변환도 포함된다. ### Interaction Capability > [!quote] > capability of a product to be interacted with by specified users to exchange information between a user and a system via the user interface to complete the intended task 특정 사용자가 사용자 인터페이스를 통해 시스템과 상호작용하며 의도한 작업을 완료할 수 있는지를 평가하는 기준이다. #### Appropriateness Recognisability > [!quote] > capability of a product to be recognized by users as appropriate for their needs 사용자가 제품이 자신의 요구에 적합하다고 인식할 수 있는 능력이다. 데모, 튜토리얼, 홈페이지 안내 등 사용자가 제품을 본격적으로 사용하기 전에 채택, 획득 또는 사용에 대한 결정을 내리는 데 도움이 되는 정보를 제공하는지를 본다. #### Learnability > [!quote] > capability of a product to have specified users learn to use specified product functions within a specified amount of time 명시된 사용자들이 명시된 시간 내에 제품 기능을 학습할 수 있는 능력을 뜻한다. #### Operability > [!quote] > capability of a product to have functions and attributes that make it easy to operate and control 제품을 쉽게 조작하고 제어할 수 있도록 기능과 속성이 제공되는 능력을 의미한다. 예를 들어 Undo, 대용량 데이터를 파일로 입력 등 편리하게 데이터를 조작할 수 있는 기능이나 마우스, 터치팬, 보이스 등 다양한 인터페이스를 통한 상호작용이 여기에 해당한다. #### User Error Protection > [!quote] > capability of a product to prevent operation errors 제품이 조작 오류를 방지할 수 있는 능력을 의미한다. #### User Engagement > [!quote] > capability of a product to present functions and information in an inviting and motivating manner encouraging continued interaction 제품이 기능과 정보를 흥미롭고 동기부여되는 방식으로 제공하여 지속적인 상호작용을 유도하는 능력을 뜻한다. 조화로운 색상, 직관적인 사용자 인터페이스, 친절한 음성 안내와 같이 사용자의 기쁨과 만족을 높이는 제품의 특성이 여기에 해당한다. #### Inclusibility > [!quote] > capability of a product to be utilised by people of various backgrounds 연령, 능력*ability*, 문화, 민족, 언어, 성별, 경제적 상황, 교육 수준, 지리적 위치, 생활 상황 등 다양한 배경*background*을 가진 사람들이 제품을 사용할 수 있는 능력을 의미한다. #### User Assistance > [!quote] > capability of a product to be used by people with the widest range of characteristics and capabilities to achieve specified goals in a specified context of use 다양한 특성과 능력을 가진 사용자가 명시된 사용 맥락*context of use*에서 명시된 목표를 달성할 수 있는 능력이다. 이 기준에서 높은 평가를 얻기 위해서는 언어, 시력, 청력, 신체 조건 등의 차이와 재난으로 인한 위급상황, 저전력 상황, 비행기 모드 등 시스템이 사용되는 상황과 상황의 변화(skill의 변화, 부상과 회복 등)를 고려해야 하며 반복적 품질 개선 사이클을 통해 문제를 해결할 수 있어야 한다. #### Self-Descriptiveness > [!quote] > capability of a product to present appropriate information, where needed by the user, to make its capabilities and use immediately obvious to the user without excessive interactions with a product or other resources 제품이 과도한 상호작용이나 외부 도움 없이 기능과 사용법을 즉시 인식할 수 있도록 적절한 정보를 제공하는 능력을 의미한다. 예를 들어, 사용자 조작 지침이 단계별로 나뉘어 표시되거나 상호작용적으로 적절한 시점에 안내되는 상황은 Self-Descriptiveness 항목에서 높은 평가를 얻을 수 있다. ### Reliability > [!quote] > capability of a product to perform specified functions under specified conditions for a specified period of time without interruptions and failures 중단이나 실패 없이 특정 기능을 수행할 수 있는지를 평가하는 기준이다. #### Faultlessness > [!quote] > capability of a product to perform specified functions without fault under normal operation 제품이 통상적인 상황에서 명시된 기능을 결함 없이 수행될 수 있는 능력을 의미한다. #### Availability > [!quote] > capability of a product to be operational and accessible when required for use 제품이 필요한 시점에 정상적으로 작동하고 접근 가능한 능력. 여기에는 결함 없음, 결함 허용성, 복구 가능성 등의 요소가 결합된다. (시스템 이중화, 자동 장애 전환 등) #### Fault tolerance > [!quote] > capability of a product to operate as intended despite the presence of hardware or software faults 하드웨어나 소프트웨어 결함이 존재해도 의도한 대로 작동할 수 있는 제품의 능력 (네트워크 품질이 나빠지면 화질은 낮추지만 재생은 끊기지 않음, 일부 센서 고장나도 안전비행유지, 장애시 백업시스템으로 전환 등) #### Recoverability > [!quote] > capability of a product in the event of an interruption or a failure to recover the data directly affected and re-establish the desired state of the system 중단이나 실패 발생 시 영향을 받은 데이터를 복구하고 시스템의 원하는 상태를 재구성할 수 있는 능력. 고장 이후의 사용 불가능 시간 길이에 영향을 준다. ### Security > [!quote] > capability of a product to protect information and data so that persons or other products have the degree of data access appropriate to their types and levels of authorization, and to defend against attack patterns by malicious actors 정보 및 데이터를 보호하고 악의적 공격 패턴으로부터 방어할 수 있는지를 평가하는 항목이다. #### Confidentiality > [!quote] > capability of a product to ensure that data are accessible only to those authorized to have access 허용된 사용자만 데이터에 접근할 수 있도록 보장하는 능력이다. #### Integrity > [!quote] > capability of a product to ensure that the state of its system and data are protected from unauthorized modification or deletion either by malicious action or computer error 시스템 및 데이터를 무단 수정 또는 삭제로부터 보호하는 능력이다. #### Non-Repudiation > [!quote] > capability of a product to prove that actions or events have taken place, so that the events or actions cannot be repudiated later 사건이나 행위가 발생했음을 증명하여 나중에 부인할 수 없도록 하는 능력이다. #### Accountability > [!quote] > capability of a product to enable actions of an entity to be traced uniquely to the entity 엔티티의 행위를 해당 엔티티로 고유하게 추적할 수 있도록 하는 능력이다. (관리자 로그인 기록 및 작업 로그 추적 등) #### Authenticity > [!quote] > capability of a product to prove that the identity of a subject or resource is the one claimed 주체나 자원의 신원이 주장된 대로임을 증명할 수 있는 능력이다. #### Resistance > [!quote] > capability of a product to sustain operations while under attack from a malicious actor 악의적 공격 하에서도 운영을 지속할 수 있는 능력이다. (랜섬웨어 공격 중에도 중요 서비스 유지 등) ### Maintainability > [!quote] > capability of a product to be modified by the intended maintainers with effectiveness and efficiency 유지보수 담당자가 코드를 효과적이고 효율적으로 수정할 수 있는지를 알아보는 항목이다. #### Modularity > [!quote] > capability of a product to limit changes to one component from affecting other components 한 구성요소의 변경이 다른 구성요소에 영향을 주지 않도록 제한하는 능력 (독립적인 모듈로 구성된 시스템 구조 등) #### Reusability > [!quote] > capability of a product to be used as assets in more than one system, or in building other assets 여러 시스템에서 자산으로 활용될 수 있는 능력이다. #### Ananlysability > [!quote] > capability of a product to be effectively and efficiently assessed regarding the impact of an intended change to one or more of its parts, to diagnose it for deficiencies or causes of failures, or to identify parts to be modified 변경의 영향, 실패 원인 진단, 수정 필요 부분 식별을 효과적으로 할 수 있는 능력이다. 예를 들어, 오류 발생 시 로그 및 자동 진단 기능을 제공하는 경우가 이에 해당한다. #### Modifiability > [!quote] > capability of a product to be effectively and efficiently modified without introducing defects or degrading existing product quality 기존 품질이 저하되는 일 없이 효과적·효율적으로 변경할 수 있는 능력이다. #### Testability > [!quote] > capability of a product to enable an objective and feasible test to be designed and performed to determine whether a requirement is met 요구사항 충족 여부를 판단할 수 있는 객관적이고 실현 가능한 테스트 설계 및 수행이 가능한 능력이다. ### Flexibility > [!quote] > capability of a product to be adapted to changes in its requirements, contexts of use, or system environment 제품이 요구사항, 사용 맥락, 시스템 환경의 변화에 맞춰 얼마나 잘 적응하는지를 평가하는 항목이다. #### Adaptability > [!quote] > capability of a product to be effectively and efficiently adapted for or transferred to different hardware, software or other operational or usage environments 다양한 환경에 맞게 제품을 효과적·효율적으로 전환하거나 적응할 수 있는 능력이다. (개인화, 의도하지 않은 환경(수중, 우주), 제한운영모드 (밧데리 부족,재난), 오프라인 상태, 의도하지 않은 상황) #### Scalability > [!quote] > capability of a product to replace another specified product for the same purpose in the same environment 동일한 목적 및 환경에서 다른 제품으로 교체될 수 있는 능력을 의미한다. ### Safety > [!quote] > capability of a product under defined conditions to avoid a state in which human life, health, property, or the environment is endangered 인명, 건강, 재산 또는 환경이 위협받는 상태를 얼마나 피할 수 있는지를 평가하는 항목이다. #### Operational Constraint > [!quote] > capability of a product to constrain its operation to within safe parameters or states when encountering operational hazard 위험 상황에서도 안전한 범위 내에서 동작을 제약하는 능력이다. (ex. 조종사 실수나 환경조건(난기류 등)에도 항공기가 추락하지 않도록 방지 기능 작동 등) #### Risk Identification > [!quote] > capability of a product to identify a course of events or operations that can expose life, property or environment to unacceptable risk 생명, 재산, 환경에 대한 수용 불가한 위험을 유발할 수 있는 사건이나 작업을 식별할 수 있는 능력을 의미한다. #### Fall safe > [!quote] > capability of a product to automatically place itself in a safe operating mode, or to revert to a safe condition in the event of a failure 고장 발생 시 안전 모드로 진입하거나 안전 상태로 복귀할 수 있는 능력이다. (ex. 교통신호등 고장시 모든 방향으로 빨간색 등을 깜빡임) #### Hazard Warning > [!quote] > capability of a product to provide warnings of unacceptable risks to operations or internal controls so that they can react in sufficient time to sustain safe operation 위험 발생 전 경고를 제공하여 대응할 시간을 확보하게 하는 능력을 의미한다 (ex. 보행자 교통신호 잔여 시간 표시) #### Safe integration > [!quote] > capability of a product to maintain safety (3.9) during and after integration with one or more components 구성 요소 통합 시에도 전체 시스템의 안전성을 유지하는 능력이다. ## ISO/IEC 사용 품질 표준 소프트웨어의 표준은 제품의 품질뿐만 아니라 사용 품질*Quality-in-use*로 확장된다. 마찬가지로 2023년 표준 ISO/IEC 25019:2023를 기준으로 사용 품질 표준의 평가 항목은 다음과 같다. ### Beneficialness > [!quote] > extent of benefit resulting from the use of a product, system or service 여기서는 제품의 사용으로부터 오는 유익*Benefit*의 정도를 평가한다. #### Usability > [!quote] > extent to which a system , product or service can be used by specified users to achieve specified goals with effectiveness, efficiency, and satisfaction in a specified context of use 명시된 맥락*context of use*에서 특정 사용자가 특정 목표를 효과적이고 효율적이며 만족스럽게 달성할 수 있는 시스템, 제품 또는 서비스의 정도를 의미한다. #### Accessibility > [!quote] > extent to which products , systems , services, environments and facilities can be used by people from a population with the widest range of user needs, characteristics and capabilities to achieve identified goals in identified contexts of use 다양한 사용자 요구, 특성, 능력을 가진 사람들이 명시된 맥락에서 목표를 달성하기 위해 제품, 시스템, 서비스, 환경, 시설을 사용할 수 있는 정도를 의미한다. #### Suitability > [!quote] > extent to which behaviours or outcomes, or both, of a product meet (satisfy) specified quality requirements when used 제품의 동작이나 결과가 명시된 품질 요구사항을 만족시키는 정도를 의미한다. ### Freedom from Risk > [!quote] > extent to which a product or system mitigates the potential risk to economic status, human life, health, society , financial values, enterprise activities, or the environment 사용자의 신체적, 재무적, 사회적, 환경적 잠재 위험을 완화하는 정도를 평가하는 항목이다. #### Freedom from Economic Risk > [!quote] > extent to which a product or system mitigates the potential risk to financial status, efficient operation, commercial property, reputation, or other aspects in the intended contexts of us 제품 또는 시스템이 재정 상태, 운영 효율성, 상업적 자산, 평판 등에 대한 잠재 위험을 줄이는 정도를 의미한다. #### Freedom from Environmental and Societal Risk > [!quote] > extent to which a product or system mitigates the potential risk to the environment and society at large in the intended contexts of use 제품 또는 시스템이 환경과 사회 전반에 대한 잠재 위험을 줄이는 정도를 의미한다. #### Freedom from Health Risk > [!quote] > extent to which a product or system mitigates the potential risk to people’s health in the intended contexts of use 제품 또는 시스템이 사용 맥락에서 사람의 건강에 대한 잠재 위험을 줄이는 정도를 의미한다. #### Freedom from Human Life Risk > [!quote] > extent to which a product or system mitigates the potential risk to people’s lives in the intended contexts of use 제품 또는 시스템이 사용 맥락에서 사람의 생명에 대한 잠재 위험을 줄이는 정도를 의미한다. ### Acceptability > [!quote] > extent to which a human response is favourable when accepting or installing a product , system or service software tool designed to perform some frequently used function 사용자가 제품, 시스템 또는 서비스를 수용(accept)하거나 설치할 때 호의적 반응 정도를 평가하는 항목이다. #### Experience > [!quote] > extent to which users or stakeholders accumulate knowledge or skill acquired over time, especially that gained in a particular profession (e.g. help weather monitoring users to improve their knowledges or skills for a weather forecasting) 사용자가 특히 특정 직무 또는 분야에서 오랜 시간 동안 지식이나 기술을 축적한 정도(기상 데이터 재생/분석을 통해 기상 예보 능력을 향상시키는 사용자 등)를 평가하는 항목이다. #### Trustworthiness > [!quote] > extent to which users or stakeholders have confidence that their expectations are met in a verifiable way 사용자가 제품 또는 서비스가 자신들의 기대를 검증 가능한 방식으로 충족한다고 신뢰하는 정도(온라인 쇼핑 시 상품 정보, 사용자 평가, 반품 정책 등으로 구매 신뢰 판단 등)를 평가하는 항목이다. #### Compliance > [!quote] > extent to which a user or other stakeholder has confidence that a product , system , software, or service in use meets requirements, as required by rules or laws 제품, 시스템, 소프트웨어 또는 서비스가 사용 중 법률이나 규칙에 의해 요구되는 요구사항을 만족한다고 생각하는 사용자 또는 이해관계자의 신뢰 정도를 평가하는 항목이다.