版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章软件工程学概述软件危机定义:在计算机软件的开发和维护过程中所遇到的一系列严重的问题两个问题:如何开发,如何维护典型表现:对软件开发成本和进度的估计常常很不准确.用户对”已开发”软件系统不满意的现象经常发生.软件产品的质量往往靠不住.软件常常是不可维护的.软件通常没有适当的文档资料.软件成本在计算机系统总成本中所占的比例逐年上升软件开发生产率提高的速度,远远更不上计算机应用迅速普及深入的趋势.其实不止这些.....原因本身特点:是逻辑部件,缺乏”可见性,所以控制和管理十分困难.而且本身规模较大.错误的认识和做法:不做有效的需求分析,没有认识到程序只是完整的软件产品的一个组成部分.轻视维护消除途径消除错误观念良好的组织和管理软件工程定义:软件工程是指导计算机软件开发和维护的一门工程学科.本质特征:软件工程关注大型程序的构造.软件工程的中心课题是控制复杂性.软件经常变化.开发软件效率非常重要.和谐地合作是开发软件的关键.软件必须有效地支持它的用户.在软件工程领域中通常是由具有一种文化北京的人替具有另一种文化背景的人创造产品.基本原理:用分阶段的生命周期严格管理.坚持进行阶段评审.实行严格的产品控制.采用现代程序设计技术.结果应能清楚地审查.开发小组人员应该少而精.承认不断改进软件工程实践的必要性.软件工程方法学:传统方法学(生命周期方法学或结构化范性)面向对象方法学软件生命周期软件定义:问题定义,可行性研究,需求分析软件开发:总体设计,详细设计,编码和单元测试,综合测试运行维护:软件维护软件过程(1)瀑布模型阶段件具有顺序性和依赖性推迟实现的观点质量保证的观点文档驱动强迫开发人员采用规范的方法(结构化技术),每阶段都有严格的文档,每阶段的产品都经过严格的验证.快速原型模型增量模型能在较短的时间内给用户一部分产品逐步增加功能让用户有时间学习和适应新产品要求设计开放螺旋模型引入了风险分析风险驱动的喷泉模型多次迭代无缝Rational统一过程敏捷过程与极限编程微软过程第二章可行性研究可行性研究的任务技术可行性经济可行性操作可行性可行性研究的过程复查系统规模和目标研究目前正在使用的系统导出新系统的高层逻辑模型进一步定义问题导出和评价供选择的解法推荐行动方针草拟开发计划书写文档提交审查系统流程图系统流程图是概括物理系统的传统工具表达的是数据在系统各个部件之间的流动数据流图(DFD)描述的是信息流和数据从输入到输出的过程中所经受的变换.是系统逻辑功能的图形表示用途用于交流的工具作为分析和设计的工具数据字典1)内容:数据流数据流分析(数据元素)数据存储处理用途分析阶段的工具,便于交流,避免许多接口错误是开发数据库的第一步6.成本/效益分成本估计代码行技术任务分解技术自动估计成本技术成本/效益分析方法货币的时间价值F=P(1+i)An投资回收期纯收入投资回收率(就是年利率)第三章需求分析需求分析的任务确定对系统的综合要求功能需求性能需求可靠性和可用性需求出错处理需求接口需求约束逆向需求将来可能提出的需求分析系统的数据要求(建立数据模型)导出系统逻辑模型(数据流图,实体联系图,状态转换图,数据字典,主要的处理算法)修正系统开发计划与用户沟通的方法访谈面向数据流自顶向下求精(数据流图,数据字典,IPO图)建议的应用规格说明快速建立软件原型第四代技术可重用的软件构件形式化规格说明和原型环境分析建模与规格说明:三个模型:数据模型(实体联系图),功能模型(数据流图),行为模型(状态转换图)规格说明应通俗易懂实体-联系图(86)数据规范化(三范式86)状态转换图(87)其他图形工具(89)层次方框图Warnier图IPO图(IPO表)验证软件需求验证方面:一致性(需求不能自相矛盾)完整性现实性有效性验证软件需求的方法一致性:规格说明使用形式化语言完整性和有效性:试用或者软件原型现实性:仿真或者性能模拟技术第四章略第五章总体设计设计过程设想供选择的方案选取合理的方案低成本中等成本高成本每个方案都需要有:系统流程图,组成系统的物理元素清单,成本/效益分析,实现这个系统的进度计划推荐最佳方案功能分解结构设计功能设计细化数据流图使用IPO图简述每个处理的算法设计软件结构(层次图或结构图)设计数据库制定测试计划书写文档系统说明用户手册测试计划详细的实现计划数据库设计结果审查和复审设计原理模块化抽象逐步求精信息隐藏和局部化模块独立耦合:数据耦合(最低),控制耦合,特征耦合(参数结构体过大),公共环境耦合,内容耦合(最高).内聚:低内聚:偶然内聚,逻辑内聚(完成的功能属于一类),时间内聚(同一时间运行)中内聚:过程内聚,通信内聚(使用同一个输入和同一个输出)高内聚:顺序内聚,功能内聚(单一功能)启发规则改进软件结构提高模块独立性模块规模应该适中深度,宽度,扇出,扇入都应适当4)模块的作用域应在控制域之内5)力争降低模块接口的复杂程度6)设计单入口单出口的模块7)模块功能应该可以预测描绘软件结构的图形工具1)层次图和HIPO图2)结构图面向数据流的设计方法(数据流图->结构图)1)变换流(一般都是变换流)2)事务流(如果有事务中心)3)设计过程设计优化(先使它工作,再使它快起来)第六章详细设计结构程序设计1)经典定义:如果额程序的代码块仅仅通过顺序,选择和循环这三种基本控制结构进行连接,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的.2)更全面的定义:结构程序设计是尽可能少使用goto语句的程序设计方法,最好仅在检测出错误时才使用goto语句,而且应该总是使用前向goto语句.3)扩展的结构程序设计允许使用的语句:DO_CASEDO_UNTIL4)修正的结构程序设计:break;人机界面设计1)设计问题(1)系统响应时间(稳定)(2)用户帮助设施(3)出错信息处理(4)命令交互2)设计过程创建设计模型,再用原型实现这个设计模型.(用户界面工具箱,用户界面开发系统)过程设计的工具1)程序流程图(程序框图)(1)缺点诱使程序员过早考虑细节可以随意转移控制不易表示数据结构2)盒图(N-S图)3)PAD图4)判定表5)判定树6)过程设计语言(PDL伪码)面向数据结构的设计方法1)Jackson图2)改进的jackson图a.Jackson图是组成关系3)Jackson方法a.伪代码程序复杂程度的定量度量1)McCabe方法(1)流图(程序图)(2)复杂度计算2)Halstead方法(公式)第七章实现(通常把编码和测试统称为实现)7.1编码选择程序设计语言总体来说高级语言优于汇编语言标准:系统用户的要求.可以使用的编译程序.可以得到的软件工具.工程规模.程序员的知识.软件可移植性条件.软件的应用领域.编码风格源程序代码应该逻辑简明清晰,易读好懂.原则程序内部的文档(注释)数据说明语句构造输入输出效率(时间,空间,输入输出)7.2软件测试基础软件测试的目标(G.Myers)测试是为了发现程序中的错误而执行程序的过程好的测试方案是极可能发现迄今为止尚未发现错误的测试方案成功的测试是发现了至今为止尚未发现的错误的测试软件测试准则所有的测试都能追溯到用户需求应该远在测试开始之前就制定测试计划把Pareto原理(28法则)应用到软件测试中应该从"小规模”测试开始,并逐步进行”大规模”测试穷举测试是不可能的为了达到最佳的测试效果,应该有独立的第三方从事测试工作测试方法:黑盒,白盒测试步骤模块测试子系统测试系统测试(整合)验收测试(功能)平行测试(投入生产前)测试阶段的信息流软件配置测试配置7.3单元测试1)测试重点模块接口局部数据结构(3)重要的执行通路⑷出错处理通路⑸边界条件2)代码审查3)计算机测试7.4集成测试(渐增方式)1)自顶向下2)自底向上3)比较(1)改进的自顶向下的方式(早期使用自底向上的方法)(2)混合法4)回归测试(当有新的模块结合的时候,重新做原来的测试)7.5确认测试(黑盒)1)确认测试的范围2)软件配置复查3)Alpha(受控环境)和Beta测试7.6白盒测试1)逻辑覆盖(1)语句覆盖(每个语句至少一次)(2)判定覆盖(每个分支至少因此)(3)条件覆盖(判定表达式每一个结果一次)(4)判定/条件覆盖(5)条件组合覆盖2)控制结构测试(1)基本路径测试(路径数=环形复杂度)(2)条件测试(BRO)(3)循环测试7.7黑盒测试技术1)等价划分2)边界值分析3)错误推测7.8调试1)定义:调试就是把症状和原因联系起来的尚未被人深入认识的智力过程1)调试过程2)调试途径(1)蛮干发(2)回溯法(3)原因排除法7.9软件可靠性1)软件可靠性:程序在给定的时间内,按照规格说明的规定成功地运行的概率.2)软件可靠性:程序在给定的时间点,按照规格说明的规定成功地运行的概率3)公式4)平均无故障时间第八章软件维护分类:完善性维护,改正性维护,适应性维护(硬件发展),预防性维护特点:结构化与非结构化差距大代价高昂问题多不宜理解别人代码没有合适文档不易修改没有成就感维护过程决定软件可维护性的因素可理解性可修改性可测试性可重用性可移植性文档:用户文档,系统文档软件在工程库存目录分析文档重构逆向工程代码重构数据重构正向工程第九章面向对象方法学定义:OO=objects+classes+inheritance+communicationwithmessages优点:与人类习惯的思维方法一致稳定性好可重用性好较易开发大型产品可维护性好概念对象的特点:以数据为中心对象是主动的实现了数据封装本质上有并行性模块独立性好建模:对象模型动态模型功能模型对象模型(静态实体):UML动态模型(状态):状态转换图功能模型(做什么):用例图第十章面向对象分析三个子模型五个层次三个子模型:静态结构(对象模型)交互次序(动态模型)数据交换(功能模型)五个层次:主题层类与对象层结构层属性层服务层动态模型图先画事件跟踪图再画状态转换图功能模型图数据流图或用例图第十一章面向对象设计设计准则(1)模块化抽象化信息隐藏弱耦合(交互耦合继承耦合)强内聚(服务内聚类内聚一般-特殊内聚)可重用启发规则设计结果应该清晰易懂一般-特殊结构的深度结构应适当设计简单类使用简单的协议使用简单的服务把设计变动减至最小重用代码重用设计结果重用分析结果重用类构件的重用:实例重用继承重用多态重用重用的效益:质量生产率成本(公式C=Cs-Cr-Cd)系统分解子系统的交互方式:客户-供应商平等伙伴组织系统的两种方案:层次组织块状组织混合结构子系统:人机交互部分,问题与,任务管理,数据管理第十二章面向对象的实现程序设计语言优点:一致的表示方法可重用性可维护性技术特点:支持类与对象概念的机制实现整体-部分结构的机制实现一般-特殊化结构的机制实现属性和服务的机制类型检查类库效率持久保持对象参数化类开发环境选择面向对象语言:将来是否能占主导地位可重用性类库和开发环境其他因素程序设计风格提高可重用性:提高方法的内聚减小方法的规模保持方法的一致性把现实与策略分开全面覆盖尽量不使用全局信息利用继承关系机制提高可扩充性:封装实现策略不要用一个方法遍历多个关键链避免使用多分支语句(CASE)精心确定共有方法提高健壮性:预防用户的操作失误检查参数的合法性不要预先确定限制条件先测试后优化测试策略面向对象的单元测试面向对象的集成测试:基于线程基于使用面向对象的确认测试:可以用黑盒方法,常用的是动态模型和脚本设计测试用例单元测试的方法:随机测试,划分测试(基于状态,属性,功能),基于故障集成测试的方法:多类测试,从动态模型导出测试用例(每一个路径都走)第十三章软件项目管理1.估算软件规模代码行技术功能点技术(FP)信息域特性Inp(输入)Out(输出)Inq(查询)Maf(主文件)Inf(外部接口)估算功能点的步骤UFP->TCF->FP=UFP*TCF工作量估算静态单变量模型面向代码行面向FP动态多变量模型COCOM2模型进度计划估算开发时间估算生产率Gantt图工程网络估算工程进度EETLET人员组织民主制程序员:适合人
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 课题申报参考:江南古戏台建筑装饰图案及其谱系研究
- 课题申报参考:坚持和发展新时代“枫桥经验”法治化路径研究
- 2025年度个人知识产权代理与服务合同3篇
- 2025版文化旅游项目建议书编制指南与规范3篇
- 二零二五年度医疗物资临时运输合同4篇
- 二零二五版畜牧养殖与旅游观光结合合作承包协议3篇
- 二零二五版xx公司上海地区员工劳动合同样本3篇
- 二零二五年度宠物食品供应链合作协议12篇
- 2025年度爱读书学长主办的读书挑战赛组织合同3篇
- 2025年度文化节庆活动联合承办合作协议8篇
- 河南省濮阳市2024-2025学年高一上学期1月期末考试语文试题(含答案)
- 割接方案的要点、难点及采取的相应措施
- 2025年副护士长竞聘演讲稿(3篇)
- 2024年08月北京中信银行北京分行社会招考(826)笔试历年参考题库附带答案详解
- 原发性肾病综合征护理
- (一模)株洲市2025届高三教学质量统一检测 英语试卷
- 基础护理学导尿操作
- DB11∕T 1028-2021 民用建筑节能门窗工程技术标准
- (初级)航空油料计量统计员技能鉴定理论考试题库(含答案)
- 中国古代文学史 马工程课件(中)24第六编 辽西夏金元文学 绪论
- 最新交管12123学法减分题库含答案(通用版)
评论
0/150
提交评论