safety/safety_requirements.html · safety/safety_requirements.rst 공식 원문 ↗

Zephyr 3.7.0 · Safety · Requirements

Zephyr 안전 요구사항

현재 구현을 system·software requirement로 기술하고 UID와 traceability를 일관되게 관리하는 방법을 설명합니다.

Official pathsafety/safety_requirements.html
Source filesafety/safety_requirements.rst
Source versionZephyr 3.7.0
TranslationFull · reviewed

본문 기준: Zephyr 3.7.0 LTS3 · 이후 유지보수 패치는 별도입니다.

Part 1

요약·해설

Requirement repository의 kernel 범위, system/software 수준, strictDoc 자동 UID 절차, PR 원칙과 EARS 기반 작성 기준을 정리합니다.

Scope

Kernel · Actual implementation

Levels

System · Software

Quality

Atomic · Verifiable · Consistent

Part 2

접을 수 있는 영어 원문 전체

영어 원문 전체 펼치기
원문 SHA-256 79BB8211F3066A77BBF091669BE9F9A13E33018134D012DA2DD6B7B91FC44719
.. _safety_requirements:

Safety Requirements
###################

Introduction
************

The safety committee leads the effort to gather requirements that reflect the **actual** state of
the implementation, following the `route 3s <https://docs.zephyrproject.org/latest/safety/safety_overview.html#general-safety-scope>`_
approach of the project's safety effort. The goal is **NOT** to create new requirements to request
additional features for the project.

The requirements are gathered in the separate repository:
`Requirement repository
<https://github.com/zephyrproject-rtos/reqmgmt>`__

Guidelines
**********

Below are the guidelines for the requirements repository and the expectations of the safety
committee when adding requirements to the repository.

Scope
=====

The scope of the requirements covers the KERNEL functionalities.

Consistency
===========

Maintain consistency across all requirements. The language and choice of words shall be consistent.
(See: `Syntax`_)

Levels of requirements in the repository
========================================

System Requirements
  System requirements describe the behaviour of the Zephyr RTOS (= the system here).
  They describe the functionality of the Zephyr RTOS from a very high-level perspective,
  without going into details of the functionality itself.
  The purpose of the system requirements is to get an overview of the currently implemented features
  of the Zephyr RTOS.
  In other words a person writing these requirements usually has some knowledge of the Zephyr RTOS
  Project as the requirements are specific to an RTOS.

Software Requirements
  Software requirements refine the system-level requirements  at a more granular level so
  that each requirement can be tested.
  These requirements define the specific actions the feature shall be able to execute and the
  behavior of the feature.

Requirement UID (Unique identifier) Handling
============================================

The tool used to manage requirements, `strictDoc <https://strictdoc.readthedocs.io/en/stable/>`_, is
responsible for handling the Unique Identifier (UID) associated with each requirement. To manage
UIDs, follow these steps:

#. Don't add a requirement UID and UID field for new requirements
#. After completing work on the new requirements execute: ``strictDoc manage auto-uid .``
#. Establish links between the requirements with the new attributed UIDs if needed

After doing this, the requirements are ready and a pull request can be created.
The CI in the PR will check if the requirements UIDs are valid or if there are duplicates in it.
If there are duplicates in the PR, these need to be resolved by rebasing and re-executing
the steps above.

Requirement Types
=================

* Functional
* Non-Functional

Requirement title convention
============================

Use short and succinct requirement titles.

Pull Request requirement repository
===================================

* Adhere to the :ref:`contribute_guidelines` of the Zephyr Project.

  * As long as they are applicable to the requirements repository.

* Avoid creating large commits that contain both trivial and non-trivial changes.

* Avoid moving and changing requirements in the same commit.

Characteristics of a good requirement
=====================================

* Unambiguous
* Verifiable (e.g. testable for functional requirements)
* Clear (concise, succinct, simple, precise)
* Correct
* Understandable
* Feasible (realistic, possible)
* Independent
* Atomic
* Necessary
* Implementation-free (abstract)

Characteristics of a set of requirements
========================================

* Complete
* Consistent
* Non redundant

Syntax
======

* Use of a recognized Requirements Syntax is recommended.

  * `EARS <https://alistairmavin.com/ears/>`_ is a good reference. Particularly if you are
    unfamiliar with requirements writing.

  * Other formats are accepted as long as the characteristics of a requirement from above are met.

Part 3

한국어 전문 번역

소개

Safety Committee는 project 안전 활동의 route 3s 접근법에 따라 구현의 실제 상태를 반영하는 요구사항을 수집합니다. 목표는 project에 추가 기능을 요구하는 새 요구사항을 만드는 것이 아닙니다.

요구사항은 별도의 Requirement repository에서 관리합니다.

Guideline

다음은 requirements repository의 guideline과 repository에 요구사항을 추가할 때 Safety Committee가 기대하는 사항입니다.

범위

요구사항 범위는 KERNEL 기능을 포함합니다.

일관성

모든 요구사항 사이에서 일관성을 유지해야 합니다. 언어와 단어 선택도 일관돼야 합니다.

자세한 작성 방식은 아래 Syntax 절을 참조하십시오.

Repository의 요구사항 수준

System Requirements
System requirement는 여기서 system에 해당하는 Zephyr RTOS의 동작을 설명합니다. 기능 자체의 세부사항으로 들어가지 않고 매우 높은 수준에서 Zephyr RTOS의 기능을 설명합니다. 목적은 현재 구현된 Zephyr RTOS 기능을 전체적으로 파악하는 것입니다. 따라서 이를 작성하는 사람은 일반적으로 RTOS에 특화된 요구사항을 적을 수 있을 정도로 Zephyr RTOS Project를 알고 있습니다.
Software Requirements
Software requirement는 system 수준 요구사항을 각 항목별로 test할 수 있도록 더 세분된 수준으로 구체화합니다. 기능이 수행할 수 있어야 하는 구체적인 동작과 그 기능의 behavior를 정의합니다.

Requirement UID(Unique Identifier) 처리

요구사항 관리 도구인 strictDoc이 각 요구사항의 Unique Identifier(UID)를 관리합니다. UID는 다음 순서로 처리합니다.

  1. 새 요구사항에 requirement UID 또는 UID field를 직접 추가하지 않습니다.
  2. 새 요구사항 작업을 마친 뒤 strictDoc manage auto-uid .를 실행합니다.
  3. 필요하면 새로 부여된 UID를 사용해 요구사항 사이의 link를 설정합니다.

이 과정을 마치면 요구사항을 pull request로 제출할 수 있습니다. PR의 CI는 requirement UID가 유효한지와 중복이 있는지 검사합니다.

PR에 UID 중복이 있으면 rebase한 뒤 위 단계를 다시 실행해 해결해야 합니다.

요구사항 유형

  • Functional
  • Non-Functional

요구사항 제목 규칙

요구사항 제목은 짧고 간결하게 작성합니다.

Requirements repository의 pull request

  • Zephyr Project의 contribution guideline을 따릅니다.
    • Requirements repository에 적용 가능한 범위에서 따릅니다.
  • 사소한 변경과 사소하지 않은 변경을 함께 포함하는 큰 commit을 만들지 않습니다.
  • 같은 commit에서 요구사항을 이동하면서 동시에 내용을 변경하지 않습니다.

좋은 요구사항의 특성

  • 모호하지 않음
  • 검증 가능함: functional requirement라면 test할 수 있어야 함
  • 명확함: 간결하고 짧으며 단순하고 정확함
  • 올바름
  • 이해 가능함
  • 실현 가능함: 현실적이고 구현 가능함
  • 독립적임
  • Atomic함: 하나의 요구사항은 하나의 내용을 다룸
  • 필요함
  • 구현 방식과 독립적임: 추상적으로 기술함

요구사항 집합의 특성

  • 완전함
  • 일관됨
  • 중복되지 않음

Syntax

  • 널리 인정되는 Requirements Syntax 사용을 권장합니다.
    • 요구사항 작성에 익숙하지 않다면 EARS가 좋은 참고 자료입니다.
    • 위에 설명한 요구사항 특성을 충족한다면 다른 format도 허용합니다.

Source

출처

영어 원문에는 문단, 문서 지시문, 표, 코드, 코드 심벌, 경로를 그대로 보존했습니다.