软件工程原理方法与应用第二版复习纲要.docx
《软件工程原理方法与应用第二版复习纲要.docx》由会员分享,可在线阅读,更多相关《软件工程原理方法与应用第二版复习纲要.docx(18页珍藏版)》请在冰豆网上搜索。
软件工程原理方法与应用第二版复习纲要
第一章:
绪论
1、计算机软件定义:
计算机运行所需要的各种程序和数据的总称,包括操作系统、汇编程序、编译程序、数据库、文字编辑及维护使用手册等。
2、软件的特点
☐
(1)软件产品的生产主要是脑力劳动,还未完全摆脱手工开发方式,大部分产品是“定做”的。
☐
(2)软件是一种逻辑产品,它与物质产品有很大的区别,它是脑力劳动的结晶。
软件产品是看不见摸不着的,因而具有无形性。
它以程序和文档的形式出现,保存在存储介质上,通过计算机的运行才能体现它的功能和作用。
☐(3)软件产品不会用坏,不存在磨损、消耗问题。
☐(4)软件产品的生产主要是研制。
其成本主要体现在软件的开发和研制上,软件开发研制完成后,通过复制就产生了大量软件产品。
☐(5)软件费用不断增加,软件成本相当昂贵。
软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本非常高。
3.软件危机定义:
所谓软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
包括:
1)软件“不能正常运行”。
2)主要是指如何开发软件?
3)怎样满足对软件日益增长的需求?
4)如何维护数量不断膨胀的现有软件?
4.软件危机的原因
(1)软件的规模愈发庞大。
(2)软件开发的管理困难。
(3)软件本身的独有特点确实给开发和维护造成一些客观困难,但是人们在长期的实践中也积累了不少成功的经验。
(4)软件开发和维护中许多错误认识和方法的形成可以归结与计算机发展早期软件开发的个体化特点。
(5)软件开发技术落后。
(6)生产方式落后。
(7)开发工具落后,生产率提高缓慢。
5、软件工程的定义
将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程及上述方法的研究。
6、软件工程的基本原理
☐1.用分阶段的生命周期计划严格管理
☐2.坚持进行阶段评审
☐3.实行严格的产品控制
☐4.采纳现代程序设计技术
☐5.结果应能清楚地审查
☐6.开发小组的人员应少而精
☐7.承认不断改进软件工程实践的必要性
7、软件工程的目标
在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。
8、软件工程原则
为了达到软件系统开发目标,在软件开发过程中必须遵循下列软件工程原则:
抽象、信息隐藏、模块化、局部化、一致性、完整性和可验证性。
9、软件的发展
程序设计时代(1946~1956年)
程序系统时代(1956~1968年)
软件工程时代(1968年至今)
10、3种编程范例与3代软件工程
☐1、过程式编程范例
☐——20世纪50——80年代
☐2、面向对象范例
☐——90年代开始
☐3、基于构件(组件)技术的范例
☐——OO的延伸和归宿
第二章:
基本理论
1、软件工程过程
瀑布模型、快速原型模型、增量模型、螺旋模型、构件集成模型、转换模型、净室模型
2、软件生命周期
☐定义:
软件生命周期(SoftwareLifeCycle),也称为软件生存周期,是软件工程最基础的概念。
软件工程的方法、工具和管理都是以软件生命周期为基础的活动。
换句话说,软件工程强调的是使用软件生命周期方法学和使用成熟的技术和方法来开发软件。
☐典型阶段:
问题定义、可行性研究、需求分析、概要设计(总体设计)、详细设计、编码、测试和维护等八个阶段。
3、软件生命周期模
种类:
☐瀑布模型、原型模型、增量模型、螺旋模型、喷泉模型、基于知识的模型和变换模型。
瀑布模型的特点:
1)阶段间的顺序性和依赖性
顺序性:
由前至后
依赖性:
后依赖前
2)推迟实现的观点
——逻辑设计和物理实现清楚区分
3)保证质量的观点
——文档和复审
(瀑布模型的局限性
——理想的线性开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。
——往往要进行返工,或者在运行中进行大量修改,代价巨大。
同时,随着软件开发项目的规模日益扩大,瀑布模型缺乏灵活性的缺点引发的问题更为严重。
)
4、软件开发方法
1结构化方法(结构化方法(StructureMethod)是最早的、最传统的软件开发方法。
结构化方法由结构化分析、结构化设计和结构化程序设计构成,也称Yourdon方法。
它适用于一般数据处理系统,是一种较流行的软件开发方法。
)
2面向对象的开发方法(面向对象方法是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法。
)
5、可行性分析
可行性研究的主要内容是对问题的定义,要初步确定问题的规模和目标,问题定义后,要导出系统的逻辑模型。
然后从系统的逻辑模型出发,选择若干供选择的主要系统方案。
(1)技术可行性研究。
根据客户提出的系统功能、性能及实现系统的各项约束条件,从技术的角度研究实现系统的可行性。
(2)经济可行性研究。
进行成本效益分析,评估项目的开发成本,估算开发成本是否会超过项目预期的全部利润。
分析系统开发对其他产品或利润的影响。
(3)法律可行性研究。
研究在系统开发过程中可能涉及的各种合同、侵权、责任以及各种与法律相抵触的问题。
(4)开发方案的选择性研究。
提出并评价实现系统的各种开发方案,从中选出一种用于软件项目开发。
第三章:
结构化分析与设计
△1、需求分析
☐定义:
需求分析是软件定义时期的最后一个阶段,其基本任务是回答“系统必须做什么”这个问题。
——对目标系统提出完整、准确的具体要求。
☐需求分析阶段结束时,要提交:
——详细的数据流图、数据字典和算法描述。
2、需求分析的任务
☐需求分析的基本任务是要准确地理解旧系统,定义新系统的目标。
☐需求分析的任务还不是确定系统怎样完成它的工作,仅仅是确定系统要完成哪些工作,也就是对系统提出完整、准确、清晰、具体的要求。
3、需求分析的方法
☐软件分析方法比较多,其中最有影响的是功能分解法、数据流法、信息建模法和面向对象的分析。
4、结构化分析方法
结构化分析、结构化设计和结构化程序设计。
(SA,SD和SP)
5、结构化分析步骤
建立现行系统的物理模型
抽象出现行系统的逻辑模型
建立目标系统的逻辑模型
进一步补充和优化
△6、DFD
(会画)(元素)
☐数据流图(DataFlowDiagram,简称DFD)是结构化分析的最基本的工具。
数据流图描述系统的分解,即描述系统由哪几部分组成,各部分之间有什么联系等。
例:
☐数据流图只有四种基本符号元素:
数据流(DataFlow)、数据处理(Process)、数据存储(DataStore)和外部实体(ExternalEntity)。
☐→:
箭头,表示数据流。
☐○:
圆或椭圆,表示加工。
☐=:
双杠,表示数据存储。
☐□:
方框,表示数据的源点或终点。
7、△结构化设计过程
总体设计和详细设计。
8、结构化设计总体设计
软件系统结构设计
数据结构及数据库设计
网络系统设计
软件总体设计文档
评审
9、△模块的耦合
耦合(Coupling)表示软件结构内不同模块彼此之间相互依赖(连接)的紧密程度,是衡量软件模块结构质量好坏的度量,是对模块独立性的直接衡量指标。
耦合强弱取决于模块间接口的复杂程度,进入或访问一个模块的点,以及通过接口的数据。
10、模块的内聚
内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。
简单地说,理想内聚的模块只做一件事情。
11、结构设计的一般准则
☐1.模块独立性准则
☐2.软件结构的形态特征准则
△软件结构的深度、宽度、扇入及扇出应适当。
☐3.模块的大小准则
☐4.模块的接口准则
12、变换型数据流图
☐事务型数据流图
13、△结构化设计方法转换的步骤:
1)数据流图:
把数据流图转换成软件结构图前,设计人员要参照规范说明书,仔或不合理之处,进行必要的修改。
2)确定数据流图类型:
通常将系统的数据流图视为变换流。
3)找出变换中心:
输入流是一条路径,经过这条路径数据从外部形式转换为内部形式。
输出流则相反,从内部形式转换为外部形式。
4)第一层分解:
如果是变换流,要把数据流图映射为一种输入、变换、输出的特殊结构。
5)第二层分解:
这一步的任务是把数据流图中的各个变换映射成为相应的模块。
细地研究分析数据流图并参照数据字典,认真理解其中的有关元素,检查有无遗漏
6)根据优化准则对软件结构求精。
7)描述模块功能、接口及全局数据结构。
8)复查,如果有错,转步骤
(2)修改完善,否则进入详细设计。
第四章:
面向对象与UML
1、统一建模语言定义:
统一建模语言(UnifyModelingLanguage,简称UML)是一种整合多种模型的语言,这种语言是用来描述软件系统的标准化、可视化及文件化。
☐UML具备以下三种结构:
☐
(1)静态对象结构(StaticObjectStructure)。
看到同一时刻、同时发生的同步操作。
☐
(2)动态行为(DynamicBehavior)。
☐(3)系统部署(SystemDeployment)
2、△用例图构成
参与者、用列、关联
3、△五种视图、九种图
用列视图、逻辑视图、进程视图、构件视图、部署视图;
类图、对象图、用例图、状态图、顺序图、活动图、协作图、构件图、部署图
第五章:
需求工程与需求分析
1、软件需求的层次
△2、需求工程过程
需求获取、需求建模、需求描述、需求验证
3、需求获取技术:
1)用户面谈;
2)需求讨论会;
3)问卷调查;
4)现场考察;
5)原型化方法;
6)基于用例的方法。
△4、用例建模步骤:
第六章:
面向对象分析
1、面向对象分析的主要任务:
理解用户需求,分析,提取类和对象,建模。
2、OOA的优点:
1)同时加强对问题空间和软件系统的理解;
2)改进交流
3)适应性较强;
4)复用性较好;
5)保持需求到设计的一致。
△3、面向对象分析过程
分析类(实体类、边界类、控制类)
例题:
已知一个软件项目的记录,开发人员M=5人,其代码行数L=12.0KLOC,工作量E=24PM,成本S=168000美元,错误数N=30,文档页数Pd=360页。
试计算开发该软件项目的生产率P、平均成本C、代码出错率EQR和文档率D。
1)软件开发的生产率P为:
P=L/E=12.1×103LOC/24PM=504LOC/PM
2)开发每行代码的平均成本C为:
C=S/L=168000美元/12000LOC=14美元/LOC
3)代码出错率EQR为:
EQR=N/L=30个/12KLOC=2.5个/KLOC
4)软件的文档率D为:
D=Pd/L=360页/12KLOC=30页/KLOC
第七章:
面向对象设计
△1、面向对象设计包括:
系统设计和对象设计
第八章:
编码和测试
1、编码
(课本定义):
编码俗称编程序。
软件开发的最终目标,是产生能在计算机上执行的程序
△2、编码风格
模块化、简单化、文档化、清晰化
3、错误类型
逻辑错误、数据文档错误、算法错误
4、测试定义
5、测试活动
单元测试集成测试系统测试(功能、性能、安全、验收、安装)
6、测试方法
黑盒测试:
常用方法等价分类法、边界值法、错误猜测发
白盒测试:
(逻辑覆盖测试、循环测试、路径测试)
第九章:
软件维护
△1、维护
在一个软件产品交付使用后对其进行的修改,以纠正故障、改进其性能和其他属性,或使产品适应改变了的环境。
△2、维护类型
完善性维护、适应性维护、纠错性维护、预防性维护
△3、维护副作用
修改编码副作用、修改数据副作用、修改文档副作用
第十一章:
软件工程管理
1、项目管理
2、管理活动
成本估算、风险分析、进度安排、人员管理
3、成本估算
(方法)
☐自顶向下的估算方法
☐自底向上的估算法
☐差别估算法
(模型)
IBM模型、Putnam模型、COCOMO模型(ConstructiveCostModel)
4、△风险分析
风险含义:
在软件工程的环境中考虑时,风险的含义一是关心未来,风险是否会导致软件项目失败;二是关心变化,在用户需求、开发技术、目标机器,以及所有其他与项目有关的实体中会发生的变化?
三是必须解决选择问题:
应当采用什么方法和工具,应当配备多少人力,在质量上强调到什么程度才满足要求?
风险分析实际上是4个不同的活动:
风险识别、风险估算、风险评价和风险驾驭
5、进度管理
进度安排的图形方法:
甘特图(GanttChart)是常用的多任务安排工具。
用水平线段表示任务的工作阶段,用垂直线表示当前的执行情况;线段的起点和终点分别对应着任务的开工时间和完成时间;线段的长度表示完成任务所需的时间。
网络图
6、人员管理
主程序员制小组、民主制小组、层次式小组
第十二章:
软件质量管理
1、质量定义:
(1)软件产品具备满足给定需求的特性及特征的总体的能力。
(2)软件拥有所期望的各种属性组合的程度。
(3)用户认为软件满足他们综合期望的程度。
(4)软件组合特性可以满足用户预期需求的程度。
2、△质量管理:
(度量)
☐客观性:
如果不存在来自测试者对度量的主观影响,则度量是客观的。
☐可靠性:
如果在重复度量中,在同样条件下达到相同的效果,则认为度量是可靠的。
☐适用性:
如果度量结果能够明确地说明质量特性时,则可以说度量是适用的。
☐标准化:
标准化是指必须有一个可以明确表示度量结果的标度,当这个可比较的标度存在时,度量被认为是达到标准化的。
☐可比较性:
当某项度量与其他度量相关时,则度量具有可比较性。
☐经济性:
当度量是在低成本下进行时,它是经济的。
度量的经济与否取决于度量过程的自动化程度和度量的数据量,使用工具可以大大改善软件度量的自动化水平。
☐有效性:
有效形式是最难证明的。
但是不说明度量标准是有效时,就不能客观的评价软件质量。
(保证)软件质量保证原则
☐
(1)尽可能做到质量特征的具体化及量化。
☐
(2)要找出每个阶段的具体质量特征。
☐(3)针对具体产品和相应项目制定质量计划。
☐(4)检查质量测试结果。
☐(5)进行各种质量评审。
☐(6)优化的建设性的质量保证。
☐(7)尽早发现并改正错误和缺陷。
☐(8)集中进行质量保证。
☐(9)独立的质量测试。
☐(10)对所应用的软件质量保证措施的评价。
软件质量保证计划:
☐
(1)软件质量保证计划的用途。
☐
(2)参考文件。
☐(3)软件质量保证计划的管理。
☐(4)软件质量文档。
☐(5)标准、规范和约定。
☐(6)评审和审计。
☐(7)软件配置管理。
☐(8)存在的问题及修改的报告。
☐(9)软件工程。
☐(10)编码控制。
☐(11)其他内容。
软件质量保证的措施:
☐
(1)制定计划和管理方面的质量保证措施。
☐
(2)建设性的质量保证措施。
☐(3)分析的质量保证措施。
☐(4)心理学方面的质量保证措施。
3、度量模型:
McCabe度量法
☐计算线性无关环路数:
根据图论理论,一个强连通的有向图中线性无关环路个数计算公式如下:
☐V(G)=e-n+1
☐其中:
V(G):
有向图G中的环路个数。
、e:
G的弧的条数。
、n:
G的节点数。
☐Halstead软件复杂性度量方法
4、△CMM模型:
(软件能力成熟度模型)