您现在的位置是:首页 >其他 >软件工程——十大模型网站首页其他
软件工程——十大模型
目录
1.软件生命周期模型
软件生命周期由软件定义、软件开发与运维(也称软件维护)3个时期组成,每个时期又进一步划分成若干个阶段。
问题定义:“要解决的问题是什么?”通过对客户的访问调查,系统分析员扼要地写出关于问题性质、工程目标和工程规模的书面报告,经过讨论和必要的修改之后这份报告应该得到客户的确认。
问题定义的方法(3W):
- Who:为谁设计,用户是谁。
- What:要解决哪些问题。
- Why:为什么要解决这些问题。
可行性研究:“对于上一个阶段所确定的问题有行得通的解决办法吗?”可行性研究的结果是客户做是否继续进行这项工程的决定的重要依据。
最终生成一个文档:可行性研究报告。
需求分析:“为了解决这个问题,目标系统必须做什么”,主要是确定目标系统必须具备哪些功能。在需求分析阶段确定的系统逻辑模型是以后设计和实现目标系统的基础,因此必须准确完整地体现用户的要求。
需求分析阶段的一项重要任务:生成规格说明书。其方法有访谈,会议,调查问卷,情景带入,对原有系统考察,快速原型。
最终生成一个文档:需求分析报告。
总体设计:“概括地说,应该怎样实现目标系统?”总体设计又称为概要设计。
一方面通常至少应设计出低成本,中等成本和高成本3种方案,并推荐一个最佳方案。另一方面就是设计程序的体系结构。
产生一个文档:总体设计报告。
详细设计:“应该怎样具体地实现这个系统呢?”就是把解法具体化。总体设计阶段以比较抽象概括的方式提出了解决问题的办法。
产生一个文档:详细设计文档。
编码和单元测试:这个阶段的关键任务是写出正确的容易理解、容易维护的程序模块。
测试方法:单元测试(白盒法)。
综合测试:这个阶段的关键任务是通过各种类型的测试(及相应的调试)使软件达到预定的要求。
测试方法:
- 集成测试(子系统测试-白盒法,系统测试-黑盒法),
- 确认测试(用户测试)。
软件维护:维护阶段的关键任务是,通过各种必要的维护活动使系统持久地满足用户的需要。有四种维护:改正性维护;适应性维护;完善性维护;预防性维护。
2.瀑布模型—结构化下的软件生产过程模型
传统的瀑布模型:
实际的瀑布模型:
瀑布模型核心: 一步一步。
瀑布模型将软件生命周期分为三个大阶段:定义阶段,开发阶段,运行和维护阶段。瀑布模型的阶段间具有顺序性和依赖性:前一阶段完成后,才能开始后一阶段;前一阶段的输出文本为后一阶段的输入文本。
在瀑布模型的每个阶段都坚持:
(1)每个阶段都必须完成每个阶段规定的文档。
(2)每个阶段结束前都要对所完成的文档进行评审,以便于尽早发现问题,改正错误。
3.结构化下的需求分析模型
分析模型包括数据模型、功能模型、行为模型。该模型以“数据字典”为核心,描述了软件使用的所有数据对象,围绕这个核心的是“实体关系图”、“数据流图”、“状态转换图”。
实体关系图:描述数据对象以及对象间的关系,用于数据建模。
数据流图:描述了数据流在系统中流动的过程,以及指明对数据流进行变换的功能,是用于功能建模的基础。
状态转换图:描述了对外部事件的响应方式,表示了系统的各种行为模式(称为状态)以及在状态间进行变迁的方式,用于行为建模。
4.结构化下的软件设计模型
分析模型中的每一个提供了建立设计模型所需的信息。软件设计,根据用数据、功能和行为模型表示的软件需求,采用某种设计方法进行数据设计、体系结构设计、接口设计和过程设计。
数据设计:将实体关系图中描述的对象和对象之间的关系,以及数据字典中描述的详细数据内容转为数据结构的定义。
体系结构设计:定义软件系统各主要成分的关系,主要需要分析数据之间怎样从一个模块流向另一个模块以及在模块内部的流向。
总体设计分为数据设计和体系结构设计。
接口设计:根据数据流图定义软件内部各成分之间、软件与其他协同系统之间及软件与用户之间的交互机制,主要分析数据从不同的模块之间如何设计接口,需要用到数据流图。
过程设计:把结构成分转化为软件的过程性描述,牵扯到数据状态的转换,以及状态变化的方式。
5.结构化下的软件测试模型
测试时,首先进行单元测试,再进行组装测试,最后进行确认测试。
模块测试:即单元测试。每个模块对应一个独立的子功能,将每个模块作为一个独立的实体进行测试,确认每一个单元能够正常运行,在该阶段的错误通常是编码和详细设计的错误。由编码人员自己完成(白盒法)。
系统集成测试:即接口测试、组装测试。将经测试后的单元模块按照一定的顺序组装成系统,同时进行测试。重点是模块之间的相互通信与协调。当规模系统庞大时,进行集成测试一般分为子系统与系统测试(黑盒法)。应当验证系统是否能够实现需求分析的功能与性能,由专门的测试部门完成。
确认测试:合格测试或验收测试。验证系统是否达到系统规定的要求。
回归测试:在集成测试与确认测试之间加入回归测试。当某一个系统测试出现问题时,与该系统相关的系统进行局部测试,不用进行完全测试,节省时间应该返回就行回归测试。
6.面向对象软件方法学模型
6.1面向对象方法学概念
1.对象:具有相同状态的一组操作的集合,对状态和操作的封装。
形象表示:
2.类:对具有相同状态和相同操作的一组相似对象的定义。
3.实例:实例是由某个特定类所描述的一个具体对象。
6.2 与传统方法学比较
6.3 面向对象方法学优点
1.与人类习惯思维方法一致:对象是对现实世界正确抽象,问题空间和解空间结构一致。
2.稳定性好:软件系统结构根据问题领域模型建立,功能需求变化不会引起软件结构整体变化,作局部性修改。如从已有类派生新子类实现功能扩充或修改。
3.可重用性好
传统软件重用技术:标准函数库。
面向对象重用技术:类,派生类和创建类的实例
4.易开发大型软件产品
封装性好,易于分解,易于合作开发。
5.可维护性好
稳定性好、容易修改、容易理解、易于测试和调试。
7.喷泉模型
喷泉模型特点:无缝衔接,反复迭代。
集成和测试阶段,编码阶段的两个圈重叠度高的原因:编码阶段也有测试。
维护期和进一步开发两个圈大小不一样的原因:两者工作量不同,投入的人力、时间不同。
喷泉模型的优点:可以提高软件项目开发效率,节省开发时间,适应于面向对象的软件开发过程。
喷泉模型的缺点:由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。
8.面向对象需求分析模型—OOA模型
模型特点:返回上一层时不受限(可越级)。
模型里的详细说明相当于结构化下需求分析里的三图一表中的数据字典(表)。
原型开发:指向发现对象,对象也指向原型开发。因为原型开发综合其他活动进行是为了找出所有对象。早期的原型用于证实客户的需求,晚期原型:用于修改交付用户前使用的状态。
建立用况图:是用户使用/需求情况图。
发现对象:是必要操作,是建立分析模型的必要环节。
详细说明与发现对象、定义属性与服务、建立结构与连接、划分主题有双向箭头,详细分析对模型中的成分进行规范的定义和文字说明,可集中可分散。
建立交互图、状态图、活动图:是辅助模型,可有可无。
9.面向对象的软件设计模型
面向对象软件设计模型分为四大系统:问题域、人机交互、任务管理、数据管理。
右边主要是面向对象分析模型,5个过程之间无严格层次,先抽取一部分对象,按照其属性与服务相同的归为一个类,当有很多类时存在结构划分,当有更多的结构时划分为主题。对象是在不断发现的,所以在发现新的对象时,又重新开始进行类与对象的划分。
10.建模过程模型
在进行一个软件模型建立时,应该具有先验知识、演绎分析、归纳程序、目标协调,然后进行模型构建,再进行可信度分析得到最终模型。
建模过程
1.建模过程的信息源
(1) 建模目的
(2) 先验知识
(3) 实验数据
2.建模途径
(1) 演绎法
(2) 归纳法
3.建模的可信性
(1) 在演绎中的可信性
(2) 在归纳中的可信性
(3) 在目的方面的可信性