石头:2229 - 371 x
Sudhir辛格1,拉杰·库马尔博士2
|
通讯作者:苏希尔•辛格电子邮件:(电子邮件保护) |
有关文章载于Pubmed,谷歌学者 |
更多相关文章请访问全球计算机科学研究杂志
本标准并不旨在解决与其使用相关的所有安全问题或所有适用的法规要求。本标准的使用者有责任在使用前建立适当的安全和健康实践,并确定监管限制的适用性。我们设计了有助于识别和约束问题的前置和后置条件,然后提出了一些方法和技术,以帮助细化边界,并识别问题的基本特征。问题识别的重点是了解客户的问题领域,并确定客户所观察到的症状的根源。另一方面,问题分解是将我们对问题的理解转化为为解决方案规范提供基础的需求陈述的过程。由人类执行的软件开发活动转向描述需要计算机解决什么问题,而不是计算机如何解决特定问题。本文提出了一种利用这些技术辅助软件需求模型构建的系统,即支持思想形成和基于知识的建模的方法
介绍 |
同时,由于需要将计算机系统应用于各种各样的领域,将目标领域专家(即系统用户和计算机专家)整合到确定需求规范的过程中变得至关重要。然而,从不是软件开发专家的用户那里确定系统的完整需求是非常困难的,更不用说在软件设计中将这些需求转换为正式的规范了。需求空间是一个度量空间,它使用户能够可视化需求概念及其与用户原始想法的关系,主要由抽象的和领域相关的表达式组成。需求模型是一个初始的软件模型,它有助于将用户的需求制定到后续的阶段,如详细说明、规范和实现。 |
历史的视角 |
Royce介绍的原始瀑布模型概述了一系列活动,这些活动仍然存在于今天的大多数软件开发过程中。主导开发过程的是需求分析活动,其次是设计、编码和集成与测试。概念框架为如何开发软件提供了重要的见解。此外,它为定义许多类似的模型和范式铺平了道路,这些模型和范式由本质上相同的基本活动集组成,例如面向对象的模型和螺旋模型。需求工程可以分为两个主要的活动组。(1)需求开发:该活动包括需求的启发式文档化、分析和验证的过程。(2)需求管理:该活动包括可维护性管理、变更管理和需求可追溯性的过程。 |
问题识别过程 |
问题识别的目标是在问题定义上达成一致。在实现这一目标的道路上常见的障碍有 |
顾客对问题只有粗略的了解 |
(b)客户确信某个问题的表述与症状不一致。 |
(c)客户在对潜在问题有任何理解之前,就已经在解决方案空间中思考了 |
需求工程师缺乏领域知识 |
一旦分析师和客户原则上就问题达成一致,分析师就需要产生一个正式的问题声明。Leffingwell和Widrig概述了这种声明的格式。更具体地说,问题陈述必须 |
(a)提供问题因素的说明 |
(b)查明受问题影响的利益相关者 |
(c)描述问题对利益相关者和业务活动的影响,以及 |
(d)说明拟议的解决办法及其一些主要好处。 |
这两个概念模型描述了求解者、用户和软件知识工程师如何看待环境以及相关概念和软件产品需求之间的关系。对于所有的视点来说,在系统的单一表示中收敛是很重要的。这种表示法显示了软件要做什么,何时以及如何做,以及要使用哪些知识 |
(a)环境分析过程:执行该过程是为了在外部环境中设置软件。当软件要嵌入到更大的系统中时,这种方法尤其有效。需求陈述是环境分析、确定输入、所需输出和全部系统功能的基础。 |
(b)知识分析过程:知识分析过程旨在定义所有现有的概念、属性和功能,从而生成静态和动态的知识结构,使工程师能够表示自己对求解器知识的理解,求解器能够识别工程师的概念错误;这个结构被称为知识模型。 |
需求定义过程 |
需求定义过程的目标是将涉众需求转换为一组技术需求。 |
(a)解决方案定义过程:解决方案定义过程用于为逻辑解决方案需求生成可接受的设计解决方案,开发人员应定义一组或多组经过验证的符合系统技术要求的逻辑解决方案表示 |
(b)系统分析过程:在分析过程中,开发商进行风险分析,制定风险管理策略,支持风险管理,支持决策。风险分析的步骤可以产生一些安全需求,而不是由收购方和利益相关者定义的安全需求。这些新的要求必须加以考虑。 |
(c)需求验证过程:需求验证是成功开发和实施系统产品的关键。当确定需求描述了输入需求和目标,从而产生的系统产品能够满足需求时,需求就会得到验证。(d)系统验证过程:系统验证过程用于确定生成的系统设计方案符合其来源要求,特别是安全要求。 |
结论 |
传统软件开发的一个主要问题在于,那些迄今为止主要参与软件开发的人不愿意认识到,在大多数情况下,软件开发主要是一个职业和/或组织规划的问题。如果要从这样的角度进行软件开发,就应该从一开始就计划在软件设计过程中聘请职业和组织规划方面的专家。 |
参考文献 |
|