《浙江中医药大学软件工程复习整理》由会员分享,可在线阅读,更多相关《浙江中医药大学软件工程复习整理(33页珍藏版)》请在金锄头文库上搜索。
1、软件软件配置主要包括程序、数据(结构)及相关文档组成。程序是能够完成预定功能和性能的可执行的指令序列数据是使程序能够适当地处理信息的数据结构文档是开发、使用和维护程序所需要的图文资料。软件工程的概念指导计算机软件开发和维护的一门工程学科。软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。软件工程是:1把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件;2研究1中提到的途径。软件工程基本原理:(7条)(1) 用分阶段的生命周期计划进行严格管理(2)坚持进行阶段评审 (3)实行严格的产品控制 (4)采用现代程序设计技术
2、(5)结果应能清楚地审查 (6)开发小组的人员应该少而精 (7)承认不断改进软件工程实践的必要性 7、软件生命周期分为:软件定义、软件开发、软件维护三个时期。3个时期的8个阶段(在每个阶段结束之前都应该进行严格的技术审查和管理复审)软件定义(1)问题定义 弄清用户要计算机解决的问题是什么。结果:得出关于规模和目标的报告文档。(目标与范围说明书)(2)可行性研究,为前一阶段提出的问题寻求一种至数种在技术上可行、且在经济上有较高效益的解决方案。结果:导出系统的高层逻辑模型和成本/效益分析(数据流图(可行性论证报告)(3)需求分析,弄清用户对软件系统的全部需求,主要是确定目标系统必须具备哪些功能。结
3、果:得出完整准确的系统逻辑模型。(需求说明书)(规格说明书)软件开发(4)总体设计,设计软件的结构,即确定程序由哪些模块组成以及模块间的关系。结果:第一确定可能的方案策略,第二设计软件结构。(层次图或结构图)(设计文档)(5)详细设计,把解法具体化,设计出程序的详细规格说明。(HIPO图或PDL语言)(设计文档)(6)编码与单元测试,写出正确的容易理解、容易维护的程序模块;结果;源程序清单;单元测试方案和结果。(程序)(7)综合测试,通过各种类型的测试(及相应的调试)使软件达到预定的要求(测试报告)软件维护(8) 软件维护,通过各种必要的维护活动使系统持久的满足用户的需要(维护报告)面向对象方
4、法=对象+类+继承+消息改正性维护:诊断和改正在使用过程中发现的软件的错误适应性维护:修改软件以适应环境的变化完善性维护:根据用户的要求改进或扩充软件使它更完善预防性维护:修改软件,为将来的维护活动先做准备瀑布模型快速原型模型增量模型螺旋模型喷泉模型思想软件的开发严格的按照线性方式进行,当前活动的工作结果,实施完成所需要的工作结果需要验证,如果验证通过,则结果作为下一项活动的输入,继续。否则返回。快速原型模型利用的是原型辅助软件开发的一种思想。经过简单、快速的分析,快速实现一个原型,用户与开发人员在试用原型过程中加强通信与反馈,通过反复评价和改进原型,减少误解,弥补漏洞,适应变化,最终提高软件
5、质量。软件被看作是一系列的增量构建来设计、实现、集成和测试,每一个构建由多种相互作用的模块所形成的提供特定功能呢的代码片段构成。 开发出一部分就向用户展示一部分,及早的发现问题。先开发一个原型模型的软件,完成模型的主要功能。展示给用户征求意见。这种模型的每一个周期都包括需求定义、风险分析、工程实现和评审4个阶段,由这4个阶段进行迭代。软件开发过程的各个阶段是相互迭代的、无间歇的。软件的某个部分常常被重复工作多次,相关对象在每次迭代中加入渐近的软件成分优点一种有效的管理视图。每项开发活动均处于一个质量环节。文档驱动,以项目阶段评审和文档控制为手段有效的对整个开发过程进行指导。(1)快速模型克服瀑
6、布模型的特点,减少由于软件需求不明确带来的开发风险,具有显著的效果 。(2)能快速吸引用户,从而抢占市场。1.缩短时间 2.开发人员与用户可以通过原型充分的交流; 3.有利于用户的培训和开发的同步。 4.加入构建必须不破坏已构造好的体系结构。 5.模型的灵活性可以使其适应需求的变化(1)可以在项目的各个阶段进行变更(2)可以分段来构建大型系统,使成本计算变得简单、容易。(3)用户参与开发,保证项目不偏离正确方向。可以提高软件项目开发效率,节省开发时间。缺点缺乏灵活性,太过于理想化。 如果开发其中,客户难以明确需求,需求错误在后期就难以纠正。(1)没有考虑软件的整体质量和长期的可维护性。(2)这
7、种模型在大部分情况下是不适合的,采用该模型往往是为了演示功能的需要或它的方便性。(3)由于达不到质量要求可能被抛弃,而采用新的模型重新设计。很容易退化为边做边改模型(1)不能让用户确信这种演化方法结果是可控的。(2)建设周期长不利于项目管理适用适合于客户的需求较明确的情况下。用户需求不明确、小型或是交互型式的系统、大型系统的某些部分技术风险较大、用户需求较为稳定的软件系统适合于大型复杂的系统面向对象的软件开发过程模型V模型:优点:1.既有底层测试又有高层测试。底层:单元测试。高层:系统测试。2.将开发阶段清楚的表现出来,便于控制开发的过程。当所有阶段都结束时,软件开发就结束了。缺点:1.容易让
8、人误解为测试是在开发完成之后的一个阶段。2.由于它的顺序性,当编码完成之后,正式进入测试时,这时发现的一些bug可能不容易找到其根源,并且代码修改起来很困难。3. 实际中,由于需求变更较大,导致要重复变更需求、设计、编码、测试。返工量大。1软件测试过程模型V模型是软件开发瀑布模型的变种,主要反映测试活动与分析和设计的关系;局限性:把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现eg:假设自己是一家软件公司的总工程师,当把图1.1给手下的软件工程师们观看,告诉他们及时发现并改正错误的重要性时,有人不同意这个观点,认为要求在错误进入软件之前就清楚它们是不现实的,
9、并举例说:“如果一个故障是编码错误造成的,那么,一个人怎么能在设计阶段清除它呢?”应该怎么反驳他?答:在软件开发的不同阶段进行修改付出的代价是很不相同的,在早期引入变动,涉及的面较少,因而代价也比较低;在开发的中期,软件配置的许多成分已经完成,引入一个变动要对所有已完成的配置成分都做相应的修改,不仅工作量大,而且逻辑上也更复杂,因此付出的代价剧增;在软件“已经完成”是在引入变动,当然付出的代价更高。一个故障是代码错误造成的,有时这种错误是不可避免的,但要修改的成本是很小的,因为这不是整体构架的错误。第二章1、 可行性研究的目的目的:用最小的代价在尽可能短的时间内确定问题是否能够解决2、从何角度
10、研究每种解法的可行性?(1)技术可行性:使用现有的技术能实现这个系统吗?(2)经济可行性:这个系统的经济效益能超过它的开发成本吗?(3)操作可行性:系统的操作方式在这个用户组织内行得通吗?(4)法律可行性(5)社会效益可行性可行性研究的过程1、 复查系统规模与目标2、 研究目前正在使用的系统3、 导出新系统的高层逻辑模型4、 进一步定义问题5、 导出和评价供选择的解法6、 推荐行动方针7、 草拟开发计划8、 书写文档提交审查3、系统流程图 4、数据流图(DFD)P43Eg: 题目:银行计算机储蓄系统的工作过程大致如下:储户填写的存款单或取款单由业务员键入系统,如果是存款则系统记录存款人姓名、住
11、址(或电话号码)、身份证号码、存款类型、存款日期、到期日期、利率、密码(可选)等信息,并印出存款单给储户;如果是取款而且存款时留有密码,则系统首先核对储户密码,若密码正确或存款时未留密码,则系统计算利息并印出利息清单给储户。解答: 处理步骤: (1)业务分类处理:系统首先根据储户所填的存/取款单,确定本次业务的性质,并将存/取款单和存折交下一步处理;(2)存款处理:系统将存款单上的存款金额分别记录在存折和帐目文件中,并将现金存入现金库;最后将存折还给储户;(3)取款处理:系统将取款单上的取款金额分别记录在存折和帐目文件中,并从现金库提取现金;最后将现金和存折还给储户。绘制该系统的数据流图 顶层
12、: 一层: 二层: 绘制该系统的实体关系图: 身份证信息5、 数据字典:关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合数据字典的定义内容:数据流、数据流分量(数据元素)、数据存储、处理。P541) 数据流2) 数据流分量(数据元素)3) 数据存储4) 处理7、采用的符号符号名称 说明= 被定义为 x=a + 和(与) x=a+b x被定义为 a与b的和 , 或 x=a,b x被定义为a或b | 重复 x=ax由个或多个a组成 mn重复 x=man x至少由m个a,至多n个a组成 nm 重复() 可选 x=(a) x中可有也可没有a “ ” 元素 x=”a” x由元素a组成
13、连接 x=19x由至中任一元素组成 第三章1、需求分析解决系统必须做什么2、需求分析的任务1)功能需求2)性能需求3)可靠性和可用性需求4)出错处理需求5)接口需求6)约束7)逆向需求8)将来可能提出的需求与用户沟通获取需求的方法访谈、调查问卷状态转换图初态、中间状态、终态。初态只能有一个,但终态可以有0个或多个事件某个特定事件发生的事情、对引起系统做出动作或从一个状态转换为另一个状态的外界事件的抽象P5、从哪些方面验证软件需求的正确性(1)一致性:所有需求必须是一致的,任何一条需求不能和其他需求互相矛盾。(2)完整性:需求必须是完整的,规格说明书应该包括用户需要的每一个功能或性能。(3)现实
14、性:指定的需求应该是用现有的硬件技术和软件技术基本上可以实现的。(4)有效性:必须证明需求是正确有效的,确实能解决用户面对的问题。第五章1、 总体设计(概要设计或初步设计,概述系统如何实现)过程两个主要阶段:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。2、 设计过程1) 设想供选择的方案2) 选取合理的方案3) 推荐最佳方案4) 功能分解5) 设计软件结构6) 设计数据库7) 制定测试计划8) 书写文档9) 审查和复查设计原理1) 模块化2) 抽象和封装3) 逐步求精4) 信息隐藏和局部化5) 模块独立3、 模块独立性重要的理由:第一,有利于软件开发实现;第二,有利于维护测试.4、 衡量模块的独立程度的定性标准度量:高内聚和低耦合. 耦合是对一个软件结构内不同模块之间互连程序的度量. 取决于接口复杂度 内容耦合 公共环境耦合 特征耦合 控制耦合 数据耦合(从高到低) 内聚:一个模块