How to write a software requirements specification
如何编写软件需求规格书
by Robert Japenga
__________________________________________________________________________________________
What is the difference between a System Specification and a Software Specification?
系统规格书和软件规格书之间有何不同?
Very often we find that companies do not understand the difference between a System specification and a Software Specification. Important issues are not defined up front and Mechanical, Electronic and Software designers do not really know what their requirements are.
通常,我们发现有些公司不清楚系统规格书和软件规格书之间有什么区别。之初是没有定义重要像的,机械、电器、和软件设计人员并不真正知道他们的需求什么。
The following is a high level list of requirements that should be addressed in a System Specification:
下面在较高的层面列出了在系统规格书中需要关注的需求:
One job of the System specification is to define the full functionality of the system. In many systems we work on, some functionality is performed in hardware and some in software. It is the job of the System specification to define the full functionality and like the performance requirements, to set in motion the trade-offs and preliminary design studies to allocate these functions to the different disciplines (mechanical, electrical, software).
系统规格书的一个任务就是定义系统的全部功能。在我们所接触的许多系统中,一些功能是由硬件来实现,一些功能是由软件来实现。系统规格书需要定义所有的功能,例如性能需求,并进行权衡和初步的设计,将这些功能分配到不同的模块中(机械、电气、软件)。
Another function of the System specification is to specify performance. For example, if the System is required to move a mechanism to a particular position accurate to a repeatability of 1 millimeter, that is a System’s requirement. Some portion of that repeatability specification will belong to the mechanical hardware, some to the servo amplifier and electronics and some to the software. It is the job of the System specification to provide that requirement and to set in motion the partitioning between mechanical hardware, electronics, and software. Very often the System specification will leave this partitioning until later when you learn more about the system and certain factors are traded off (For example, if we do this in software we would need to run the processor clock at 40 mHz. However, if we did this function in hardware, we could run the processor clock at 12 mHz). [This implies that a certain level of research or even prototyping and benchmarking needs to be done to create a System spec. I think it is useful to say that explicitly.]
系统规格书的另一个功能是来规范性能。例如,如果系统需要将一个机械装置移动到特定的位置,并且其精度要求是1ms(可重复),那么这是一个系统需求。可重复性规格的一部分隶属于机械硬件,一部分隶属于伺服放大器,一部分隶属于软件。系统规格书的目的是提供需求,使得能将机械硬件、电气、软件的功能区分开。通常系统规格书将这项工作推迟,知道了解到更多关于系统和特定因素之间的权衡。(例如,如果通过软件来实现,那么我们知道运行软件的处理器的时钟频率为40mHz。然而,如果我们通过硬件来实现,12mHz的处理器就可以了)[这就意味着,在编写系统规格书的时候,可能需要特性级别的研究,或者甚至需要原型和基准。我想这里有必要明确的指出来。]
However, for all practical purposes, most of the systems we are involved with in small to medium size companies, combine the software and the systems documents. This is done primarily because most of the complexity is in the software. When the hardware is used to meet a functional requirement, it often is something that the software wants to be well documented. Very often, the software is called upon to meet the system requirement with the hardware you have. Very often, there is not a systems department to drive the project and the software engineers become the systems engineers. For small projects, this is workable even if not ideal. In this case, the specification should make clear which requirements are software, which are hardware, and which are mechanical.
然而,实际上,我们接触的大多数中小规模的公司的系统,软件和硬件文档是在一起的。主要是是因为系统的复杂性主要在软件层面。当硬件满足有一个功能需求时,通常要求对软件通过文档进行描述。通常,基于硬件来通过软件实现系统需求。通常,没有系统部门来驱动项目,因此软件工程师便成为了系统工程师。对于小项目,即使这么做不理想,但是仍然是可行的。在这种情况下,规格书应描述清楚哪些是软件需求,哪些是硬件需求,哪些是机械需求。
如何编写软件需求规格书(1)
如何编写软件需求规格书(2)
如何编写软件需求规格书(3)
如何编写软件需求规格书(4)
如何编写软件需求规格书(5)
如何编写软件需求规格书(6)
如何编写软件需求规格书(7)