7. 喷泉模型在实现时,由于活动不同,可分为系统实现和对象实现,这既反映了全系统的开发过程,也反映了对象族的开发和重用过程
5)智能模型
智能模型也称为基于知识的软件开发模型,是知识工程与软件工程在开发模型上结合的产物,以瀑布模型与专家系统的综合应用为基础建立的模型,该模型通过应用系统的知识和规则帮组设计者认识一个特定的软件的需求和设计,这些专家系统已成为开发过程的伙伴,并指导开发过程。
从图中可以清楚地看到,智能模型与其他模型不同,它的维护并不在程序一级上进行,这样就把问题的复杂性大大降低了。
智能模型的主要优点有:
① 通过领域的专家系统,可使需求说明更加完整、准确和无二义性。
② 通过软件工程的专家系统,提供一个设计库支持,在开发过程中成为设计的助手。
③ 通过软件工程知识和特定应用领域的知识和规则的应用来提供开发的帮助。
但是,要建立合适于软件设计的专家系统,或建立一个既适合软件工程由适合应用领域的知识库都是非常困难的。目前,在软件开发中正在使用AI技术,并已取得局部进展;例如在CASE工具系统中使用专家系统,又如使用专家系统实现测试自动化。
第二章
1.需求分析的定义
在传统软件工程生命周期中,涉及软件需求的阶段称做需求分析。
2.需求工程的定义
需求工程是一个包括创新和维护系统需求文档所必须的一切活动,是对系统应该提供的服务和所受到的约束进行理解、分析、检验和建立文档的过程。
3. 需求的获取和分析
需求的获取和分析是需求工程的关键和核心步骤,直接影响到后期的开发工作和系统的成败。
·需求获取
在深入实际调查研究,充分理解用户需求的基础上,获取系统需求。获取过程为:
①了解领域知识,工程技术人员需要依靠领域专家,学习和理解相关的专业知识,才能正确抽取用户需求。
②需求收集,与项目相关人员进行沟通,在进一步了解专业领域的基础上,发现系统需求的过程。
·需求分析
需求分析的过程是对收集到的需求进行提炼、分析和审查的过程,最终确定需求,并确保所有项目相关人员对需求取得一致性认识。分析阶段的主要工作包括:
①确定系统范围。确定系统与其他外部实体或其他系统的边界和接口。
②分类排序。对所收集的需求进行重新组织、整理、分类和筛选,并对每类需求进行排序,确定哪些是最重要的需求。
③建立需求分析模型。这是分析阶段的核心工作。需求分析模型是对需求的主要描述手段,是根据不同的分析方法建立的各种视图,例如数据流图(DFD)、实体关系图(E-R)、用例图(Use Case)、类图、状态图、各种交互图等。还可建立辅助的说明,如数据词典。
④建立需求规格说明。软件需求规格说明(Software Requirement Specification,SRS)是将需求的结果按照不同开发方法规定的格式用图形和文档形式描述出来。需求规格说明在整个开发过程中具有很重要的作用,是用户和开发人员之间进行交流和理解系统的手段。用户通过需求规格说明检查是否符合和满足所提出的全部需求。开发者则通过需求规格文档,了解和理解所开发系统的内容,并以此作为软件设计和软件测试的依据。项目管理人员以它为依据,规划软件开发过程、计划,估算软件成本和控制需求的变更过程。
第三章
·软件体系结构设计
仓库模型(The repository model)
也称“容器模型 ”,是一种集中式的模型。在这种结构模型当中,应用系统用一个中央数据仓库来存储各个子系统共享的数据,其它的子系统可以直接访问这些共享数据。当然,每个子系统可能会有自己的数据库。为了共享数据,所有的子系统之间紧密耦合的,并且围绕中央数据仓库,如下图:
仓库模型的主要优点:
①数据由一个子系统产生,并且被另外一些子系统共享;
②共享数据能得到有效的管理,各子系统之间不需要通过复杂的机制来传递共享数据。
③一个子系统不必关心其他的子系统是如何使用它产生的数据的。
④所有的子系统都拥有一致的基于中央数据仓库的数据视图。如果新子系统也采用相同的规范,则将它集成与系统中是容易的。
仓库模型的主要缺点:
①为了共享数据 ,各子系统必须有一致的数据视图 ,不可避免地会影响了整个系统的性能。
②一个子系统发生了改变,它产生的数据结构也可能发生改变。为了其他共享的目的,数据翻译系统会被用到。但这种翻译的代价是很高的,并且有时是不可能完成的。
③中央数据仓库和各子系统拥有的数据库必须有相同的关于备份、安全、访问控制和恢复的策略,这可能会影响子系统的效率。
④集中式的控制使数据和子系统的分布变得非常困难甚至成为不可能。这里分布指的是将数据或子系统分散到不同的机器上。
一般来说,命令控制系统、CAD系统等常采用这种结构。
分布式结构
分布式结构有如下一些优势:
①资源共享:系统中每个服务结点上的资源都可以被系统中的其他结点访问。
②开放性高:系统可以方便地增删不同软、硬件结构的结点。
③可伸缩性好:系统可以方便的增删新的服务资源以满足需要。
④容错能力强:分布式系统中的信息冗余可以容忍一定程度的软、硬件故障。
⑤透明性高:系统中的结点一般只需知道服务的位置而不必清楚系统的结构。
分布式结构有如下一些不足:
①复杂性:分布式系统比集中式系统要复杂的多。集中式系统的性能主要依赖于主机的处理能力,而分布式系统的性能则还要依赖于网络的带宽,这让情况变得更加复杂。
②安全性:网络环境随时面临着各种威胁,如病毒、恶意代码、非法访问等,如何保证安全性是一个让人头痛的问题。
③可管理性:分布式系统的开放性造成了系统的异构性,显而易见,管理异构的系统比管理主机系统要困难得多。
④不可预知性:这主要指系统的响应时间。网络环境本身的特点决定了网络负载会明显地影响整个系统的响应时间。
下面主要讨论几种不同的分布式结构.
1)客户-服务器模型(Client/Server Architectural Model)
客户-服务器结构(Client/ServerArchitecture)是一种典型的分布式结构。典型的客户-服务器C/S 结构的系统包括三个组成部分:
①服务器(Server):多个独立的服务器为系统提供诸如Web、文件共享、打印等服务。
②客户(Client&#x