《需求工程——软件建模与分析》阅读笔记二
在需求分析中,建立软件分析模型,可以帮助达成开发者和用户对需求信息的共同理解,有了共同理解,就可以创造软件系统解决方案。
“模型是对事物的抽象,帮助人们在创造一个事物之前可以有更好的理解”。建立软件模型可以降低应用的复杂性、更深刻的理解信息、帮助人们更好的记忆细节、更好的与其他开发人员进行交流、更好地与用户以及其他涉众进行交流、为以后的维护和升级提供文档。
计算机世界是基于计算机科学建立的,具有形式化的特征。计算机模型对信息描述具有明确化、准确化和确定花的特征,但在需求工程阶段,软件系统需要解决的问题,缺乏和软件实现相关的技术细节是考虑的重点,因此,需求分析阶段还无法建立一个形式化的计算模型。业务模型既可以抽取出需求信息最重要和最本质的内容,又可以达成用户和开发者的共同理解,但是问题世界的非形式化特征却使得它同样也不适合于需求建模。分析模型以对象、类、函数、过程、属性等作为模型的基本元素。分析模型在组元的表现上采用了业务模型的表现方式,使用业务概念、业务联系和问题与语言来表现组元的语义,这样的分析模型利于被用户和开发者同时理解。
模型可以表现为抽象知识体、视图、模型语言等,复杂的应用应该从多个视角分别进行建模,需要多种技术相互配合使用。需求分析技术多种多样,要把握每种技术的内涵,不仅需要广泛的阅读,还要进行很多的实践。
在对需求分析技术的综述和分类上,[Wieringa1998]和[Zachman1987,Sowa1992]的框架值得借鉴,[Wieringa1998]将需求分析技术分为外部功能、外部通信、外部行为、概念元组、元组功能、元组通信、元组行为。Zachman框架分为6行和6列的矩阵,行为目标/范围(规划者视图)、企业模型(所有者视图)、系统模型(设计师视图)、技术模型(构建者视图)、组件模型(集成者视图)、实际运行的系统,列为数据、功能、位置、人、时间、动机。
传统分析方法根本没有什么方法论,需求工作人员根据自己的个人习惯等进行建模和分析工作,使得结果存在着冗长、混乱、偏颇、无结构等问题。结构化分析方法是在形式化技术奠定计算机科学学科知识后,人们为寻找解决传统分析方法下的问题形成的,他通过数据流图、实体联系图、状态转移图等等对系统建模。随着人们对数据日益重视以及数据库管理系统的兴起,信息工程出现了,它与结构化方法不同之处在于,结构化主张功能入手,信息工程主张数据入手。面向对象分析方法受到了结构化分析方法的很多影响。
需求规格说明活动是在标准模板的基础上,依据自身项目特点对文档模板进行剪裁和调整得到需求规格说明文档模板,加入系统模型知识和系统需求知识形成软件需求规格说明书。编写需求规格说明文档的必要性是显而易见的:清晰、明确、结构化的文档可以将软件系统的需求信息和解决方案更好的传递给所有的开发者;文档可以拓展人们的只是记忆能力。需求规格说明书文档还有很多好处:例如,可以成为各方人员之间有关软件系统的协议基准,可以成为项目开发活动的一个重要依据,在编写过程中可以尽早的发现和减少可能性的需求错误,从而减少项目返工,降低项目工作量,可以成为有效的智力资产。
软件测试使人们最熟悉和常用软件质量保障措施,他以考察正在执行的软件的输入输出或者功能来验证软件的质量。软件系统的质量保障要求在实际可执行的代码产生之前,要尽可能的依据开发文档、模型或者其他各种可用物件进行分析和推理,及早地发现错误并进行修正,这种方法被称为静态分析。
参与评审的人员的任务都是查找缺陷和对其进行改进的机会。审查者要扮演组织者、仲裁者、作者、阅读人员、记录人员、收集人员、审查人员等等角色。在验证过程中发现的问题都应该及时修正,修正行为有需求澄清、发现缺失需求、解决需求冲突、修正不切实际的期望。