可行性研究1、软件工程项目可行性研究实质是一次大大压缩和简化了的分析和设计过程,主要在较高层次上以较抽象的方式进行,其目的是在尽可能短的时间内以最小的代价确定该项目是否能够开发,是否值得开发。
2、可行性研究不是去开发一个软件项目,而是研究该项目能否在给定的资源和给定的时间开发,是否能够开发,是否值得开发。
3、可行性研究的内容:技术可行性(相关技术分析、资源有效性分析、风险分析);经济可行性(成本估计、效益分析);操作可行性,又称社会可行性和运行可行性(就政治意识形态、法律法规、社会道德、民族意识以及系统运行的组织机构或人员等,分析系统能否运行及运行好坏程度)。
4、可行性研究的步骤:对系统目标和范围的定义→对现行系统进行分析研究→导出新系统的逻辑模型→设计新系统的物理方案→推荐可行的方案。
5、可行性研究阶段,成本估计的方法:①基于已完成的类似项目进行估算;(自顶向下估计)缺点:对开发中某些局部问题难以预估,导致考虑不周②使用简单的“分解技术”来进行成本及工作量的估算;(自底向上估计)③使用经验模型进行成本及工作量的估算。
(经验算法估计)主要经验模型:静态单变量模型;动态多变量模型;COCOMO模型。
COCOMO模型:Boehm将软件成本估算分成3个由粗到细的层次:基本层、中间层和详细层。
每个层次又按软件项目的应用领域和复杂程序分成3种类型:组织型、半独立型和嵌入型。
6、效益分析:系统的效益有两部分:经济效益和社会效益。
经济效益是指用使用新系统而增加的收入,包括使用新系统节省的运行费用,是一种有形的效益。
(经济效益度量指标:货币的时间价值、纯收入、投资回收期、投资回收率);社会效益是一种无形的效益,主要从性质上、心理上进行衡量,很难直接量化,但在某些情况下,无效的效益能转化成有形的效益。
7、系统流程图是描绘物理系统的传统工具,可以采用系统流程图来描述项目的大概业务处理流程,其基本思想是用图形符号以黑盒子形式描绘系统各部件(如程序、数据库、文档、人工过程等)。
系统流程图表达的是信息在系统中各部件之间流动的情况,而不是对信息进行加工处理的控制过程。
(信息有流动无处理)8、数据流图描述的是系统的逻辑模型,图中没有具体的物理元素,只是描绘信息在系统中的流动和处理情况。
(数据流图是逻辑系统的图形表示)软件项目计划1、软件项目计划的目标就是提供一个框架,使管理者有能够对资源、成本、风险及进度进行合理的估算分析和调度,为软件工程过程提供管理依据。
项目计划一般由软件项目的管理员、系统分析员与用户经过“可行性研究后”共同制订,并在“需求分析”阶段确定软件系统的详细需求后定稿,随着项目的进展定期更新。
2、软件项目计划的主要内容:风险分析、进度安排和项目组织。
3、风险分析活动:风险标识(项目风险、技术风险和商业风险)、风险估计、风险评价和风险管理与监控。
4、进度安排方法:PERT技术和Gantt图方法(看看书上的过程)。
5、小结:由于经过风险分析,能够做到“知已知彼”(彼即风险),从而“百战不殆”,使得开发者能够战胜风险带来的损失,使项目成功。
进度安排的落空不仅会造成项目开发成本的提高,造成有形的经济损失,而且会使客户的不满意度、不信任度增加,造成无形的经济损失。
在软件开发过程中,人是最活跃的部分。
需求分析1、需求分析是指开发人员通过细致的调查分析,详细、准确和完整地理解用户需要什么样的软件,将用户非形式的需求陈述转化为完整的需求定义,再将需求定义转换到相应的需求规格说明的过程。
2、通常,把一整套的需求分析方法、技术和工具等的集合称为建模方法。
3、需求收集的方式:访谈(程式化的访谈和非程式化的访谈);问卷调查;使用用例;用户资料收集;建立快速原型。
4、需求分析主要任务:问题分析、需求描述、需求评审。
5、需求分析主要目的:确定用户需要系统做什么。
6、需求规格说明:需求分析的主要成果是得到需求规格说明(SRS)。
需求规格说明为用户、分析人员、设计人员和测试人员之间的理解和交流提供了方便,是系统设计、测试和验收的依据。
大量统计数字表明,软件系统中15%的错误起源于需求的错误。
一个有效的需求规格说明应具有如下特征:正确性、无歧义性、完整性、一致性、可验证性、可理解性、可修改性、可追踪性和注释等。
需求分析说明书的作用:①用户与开发人员之间的合同②概要设计的依据③软件验收测试的依据。
数据流建模(功能建模)因为盒子内部的结构如何无从得知。
16、IDEF0图:也称为活动图形。
主要元素是简单的盒子及箭头。
盒子代表系统的功能(活动)。
箭头表示系统处理的数据约束,可以是具体的事物,也可以是抽象的信息。
IDEF0功能建模方法要求一张IDEF0图中的盒子最多只能有6个(子图形还要求不少于3个)。
17、IDEF0建模步骤:IDEF0方法在详细的功能需求调研基础上,用严格的自顶向下、逐层分解的方式来进行;确定建模的范围、观点及目的;建立系统的内外关系图,即A-0图;建立A0图的一系列子图;书写文字说明。
(P49)IDEF1X(数据建模)18、IDEF1X数据建模:IDEF1X方法是IDEF1方法的扩展版本。
IDEF1用来表示系统的信息结构和语义。
IDEF1X方法增强了图形的表达能力,丰富了语义和简化了开发过程。
19、IDEF1X图:实体是具有相同属性或特征的现实或抽象事物的集合,这个集合中的一个元素便称为实体的一个实例。
在一张IDEF1X图中,一个实体只能在图中出现一次。
属性:表示现实或抽象的事物一种特性或性质。
IDEF1X建模步骤:0阶段——确定建模目标和计划;1阶段——定义实体;2阶段——定义联系;3阶段——定义键;4阶段——定义属性。
需求分析(2)面向对象方法1、UML建模语言:是一种可以应用于任面向对象软件开发方法的标记法和语义语言。
2、UML各种图:动态模型图(反映系统行为):用例图、顺序图、协作图、状态图、活动图。
静态模型图(反映系统结构):类图、包图、组件图、部署图、对象图。
3、UML特点:统一了面向对象方法的基本概念(UML融合了Booch方法、OMT方法和OOSE方法中的有关概念);具有更强的建模能力(正如G. Booch 在他的一本书中所说:“如果你有好的思想,那它也是我们的。
”);独立于特定的开发语言和开发过程。
4、UML应用:需求分析(用例图---功能的需求;类图---静态结构;状态图、顺序图和协作图等---类之间所需的协作,实现用例。
);设计(定义软件系统中的技术细节用到的类,如引入处理用户交互的类、处理数据的类、处理通信和并行性的类等。
);实现(组件图---代码组件的物理结构以及组件之间的关系;部署图---硬件的拓扑结构和组件的分布。
);测试(类图---单元测试;组件图、协三水哥呕心沥血之作,只为与你相约中南作图---集成测试;用例图---确认测试)概要设计1、软件设计:需求分析:软件系统必须“做什么”;软件设计:“如何做”才可以满足需求规格说明中规定的各项需求。
2、从工程管理的角度来看,软件设计通常分为两步,即概要设计和详细设计。
3、概要设计的基本目的是回答“概括地说,软件系统应如实现”这一问题。
因此,概要设计有时称为初步设计或总体设计。
概要设计的主要任务是确定软件的总体结构,即确定软件系统的组成成份(子系统或模块)以及各组成成份之间的相互关系。
方法:结构化方法、面向对象方法。
详细设计是对概要设计结果的进一步细化,其主要任务是确定软件系统各组成成份内部的数据结构和算法过程。
4、抽象与求精:抽象,即过程抽象、数据抽象和控制抽象。
抽象使得设计人员能够避开过早地陷入细节之中刻画过程和数据。
求精能够帮助设计人员随着设计过程的深入而不断呈现更低层次的信息。
5、模块化和信息隐藏:软件应该分解成可单独命名的且可访问的部件,这些部件称为模块。
由Parnas倡导的“信息隐藏”是指模块中所包含的信息(包括数据和过程)对不需要这些信息的其它模块是不可访问的。
抽象有助于定义组成软件的过程(或信息)实体;隐藏定义并加强了对模块内部访问的约束,有助于分离模块的实现者和使用者。
6、模块独立性:模块独立性是模块化、抽象和信息隐藏的直接产物。
模块的功能独立性可以使得模块既容易开发又容易维护。
模块独立性有两个定性的度量标准:内聚度和耦合度。
7、内聚度:模块内部各成分联系紧密的程度。
内聚度越高,模块的独立性就越强。
内聚程度从高到低的顺序是:功能内聚、信息内聚、通信内聚(数据相关—数据或标记耦合)、过程内聚(程序流程图;过程相关---控制耦合)、时间内聚(初始化模块)、逻辑内聚和偶然内聚。
设计模块时,应该尽可能避免使用偶然内聚等低级内聚的模块,争取高级内聚的模块,以提高模块的独立性。
8、耦合度:模块之间相互关联紧密的程度。
模块的耦合度越低,模块的独立性越强。
耦合程度从低到高也可分为七种:非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合、内容耦合。
在设计模块时,应该尽量使用数据耦合,必要时使用标记耦合,少用控制耦合,限制使用公共耦合,最好不要使用内容耦合。
结构化设计方法- 5 -面向数据流图的软件结构设计面向数据流图的设计方法是一种结构化设计方法。
过程:首先,研究、分析和审查数据流图,确保数据流图符合实际,必要时还要进一步精化数据流图;然后,确定数据流图的类型,即变换型数据流或事务型数据流;再依据数据流图的类型采用变换分析法或事务分析法导出系统初始的软件结构;最后,依据软件设计原理和一些优化策略改进系统初始的软件结构,形成最终的软件结构。
1、在结构化设计方法中,软件结构是软件系统模块层次结构,反映了整个系统功能及其之间的关系。
软件结构图的主要内容有:模块、模块间的调用关系和模块之间传递的信息。
2、模块:在软件系统的软件结构图中,有6种类型的模块:传入模块、传出模块、变换模块、协调模块、源模块和漏模块。
在软件结构图中,模块用方框来表示,并用名字标识该方框。
3、调用关系:在软件结构图中,模块间的调用关系主要有三种:顺序调用、选择调用和循环调用。
方框之间的箭头表示模块之间的调用与被调用关系。
模块间调用的次序,习惯上是从左至右。
4、数据或控制信息:在软件结构中,模块传递的信息用带名称的短线箭头来表示。
箭头方向代表信息传递的方向。
若箭头线尾是带空心圆圈,则表示该箭头线代表的是数据;若箭头线尾是带实心圆圈,则表示该箭头线代表的是控制。
5、数据流变换分析法:一种将变换型数据流图映射为变换型软件结构图的软件系统设计方法。
(P101)6、数据流事务分析法:是将事务型数据流图映射为事务型软件结构图的软件系统设计方法。
(P103)7、软件结构图的改进:模块大小适中、模块扇入扇出合理、模块的作用域应在控制域内。
模块的扇出是指模块直接调用多少其它模块。