软件所软件工程讲义(经典).ppt
- 文档编号:9913926
- 上传时间:2023-05-22
- 格式:PPT
- 页数:128
- 大小:4.24MB
软件所软件工程讲义(经典).ppt
《软件所软件工程讲义(经典).ppt》由会员分享,可在线阅读,更多相关《软件所软件工程讲义(经典).ppt(128页珍藏版)》请在冰点文库上搜索。
软件工程SoftwareEngineering,主讲:
郑有才单位:
软件学院(软件工程研究所)教材:
实用软件工程中郑人杰殷人昆陶勇雷清华大学出版社出版,软件工程(教学内容),概述第一章软件工程概论第二章系统分析第三章软件需求分析第四章软件设计第五章用户界面设计第六章程序编码第七章软件测试第八章软件维护第九章软件工程标准化与软件文档第十章软件项目管理与计划,软件工程,参考书:
1.软件工程技术概论中朱三元等2.软件工程美ShariLawrencePfleeger全英3.软件项目管理美PhilipMetzger中译4.软件开发的滑铁卢美RobertL.Glass中译5.现代软件工程(上)管理技术篇中周之英,科学出版社6.软件工程学教程中周苏王文科学出版社,软件工程(序一),1软件产业软件产业是一个朝阳的、新兴的知识型产业。
一个国家软件业的发达程度,同样体现了国家的综合国力,决定着国家未来的国际竞争地位。
目前,中国的软件企业正处于高速发展、急需规范管理并以项目为主导的环境中。
企业每天所面对的不仅仅是几个越来越多的大型项目,而将是成百上千不断发生和进行的项目。
产生这种变化的因素是多方面的,这包括客户需求的不断提高导致产品生命周期缩短;产品开发项目数量大增;新技术的引入;为了提高业务赢利能力,改进业务模式的项目大增等。
在这种多项目并发、技术含量高、变化速度快、资源有限的环境下,如何对企业、项目、资源实施科学的管理,加强团队能力,实现软件企业生产的规模化、规范化、国际化,是当前我国软件业面临的最大挑战。
调查表明,大约70%的软件开发项目超出了估算的时间,大型项目平均超出计划时间20%到50%,90%以上的软件项目开发费用超出预算,并且项目越大,超出项目计划的程度越高。
软件工程(序二),1软件产业(续)中国目前软件企业的落后状况,实际上已不是技术本身的问题,而是科学管理的问题,软件工程理论与软件项目管理的实际应用与经验,是我国软件企业急待学习和渴望的。
中国软件业在各个层次上的管理问题,目前已经制约了中国软件走向国际化的进程。
(以上观点出自:
信息产业部电子信息产品管理司司长,中国软件行业协会副理事长陈冲)。
2差距根据印度全印软件服务公司协会统计,2000年至2001年度印度计算机软件出口额达到62亿美圆,比上一年度增长55%。
在全球软件开发市场中占据份额为16.7%,出口软件在国际软件市场的占有率接近20%,仅次于美国。
在世界银行对各国出口软件能力的调查中,印度软件的出口规模、质量、成本三项指标位居世界首位。
比尔.盖茨曾宣称,未来的软件超级大国不是美国,不是日本,也不是欧洲,而是印度。
欧洲的农牧业国家爱尔兰也充分抓住了世界信息技术发展的机遇,推动软件产业的发展,经过近10年的发展,其信息产业的发展水平已经走在了世界前列。
和印度比,我国的软件产业总产值只相当于印度的1/3,而软件出口额则只有印度的1/40。
(以上数据出自:
北京现代卓越管理技术交流中心陈勇强)。
软件工程(序三),3思考西方发达国家在软件行业的发展初期也吃了重技术轻管理的苦头,付出了高昂的代价。
如前所述,印度虽然综合国力并不很强,但软件行业也成为其支柱产业之一,成为世界公认的软件大国。
中国如此之大,人才济济,为什么不能超过印度?
本人认为除了国家应该在政策方面给予倾斜外,一个重要的方面就是软件行业自身如何提高软件项目管理水平?
4解决1)国家政策的倾斜:
主要体现在三个方面
(1)自主软件
(2)软件企业的税收优惠(3)软件管理层人才的培养-35所软件学院2)软件项目管理水平的提高最原始的,也是最有效的-软件工程和管理人才的培养,第一章软件工程概述
(1),1.1软件的定义软件是程序、数据及其相关文档的集合。
程序:
按事先设计的功能和性能要求执行的指令序列。
数据:
使程序能正常操纵信息和正确运行的的数据结构。
文档:
与程序开发、维护和使用有关的图文资料。
1.2软件的特点1.软件是一种逻辑实体,而不是具体的物理实体。
具有抽象性。
无法看到软件的形态,必须通过观察、分析、思考、判断了解它的功能、性能和其它特性。
2.软件没有明显的生产过程。
可复制性。
引发的问题:
软件的质量控制在开发过程中进行;产品保护。
第一章软件工程概述
(1),软件的定义(图示),软件,程序,文档,数据,源程序,目标程序,输入数据输出数据,报告书设计书说明书,功能说明书使用说明书维护说明书,第一章软件工程概述
(2),3.软件没有磨损和老化,存在退化问题。
(SoftwareEngineeringTheoryandPracticeP464)Awhiledoconstructsdonotwearoutafter10,000loopsandsemicolonsdonotfallofftheendsofstatement.失效率(U型),退化原因(适应软件环境、用户需求),引发维护问题。
4.软件开发和运行常常受到计算机系统的限制(系统依赖性)。
引发移植性问题。
U,时间,失效率,磨和调整,磨损用坏,硬件失效曲线,第一章软件工程概述(3),.软件开发至尽尚未完全摆脱手工艺方式。
引发软件工程、软件重用、自动化生成等技术。
时间,失效率,实际曲线,理想曲线,软件失效率曲线,修改点,第一章软件工程概述(4),.软件是高度的复杂系统有人认为:
人类能够创造的最复杂的产物是计算机软件。
其复杂性来自于它反映的问题的复杂性。
软件技术滞后。
.软件成本是相当昂贵的软件的研制要投入大量的、复杂的、高强度的脑力劳动。
.软件工作是涉及到社会因素如:
企业管理软件(人、制度、业务流程等)法律因素,年份,成本,100,1995,软件,硬件,第一章软件工程概述(5),1.3软件的发展与软件危机1.软件发展(三各阶段,教材P.7)2.软件危机1)诱因
(1)软件开发无计划性
(2)软件需求不充分(变化)(3)软件开发过程无规范(4)软件产品无评测手段2)主要表现
(1)经费预算上升,完成时间一再拖延
(2)开发软件不满足用户需求(3)可维护性差(4)没有软件质量保证体系,软件可靠性差3)主要原因软件的研制和维护本身是工程性任务,但软件人员所采用的方法却未能工程化。
4)结果软件危机5)解决的办法:
60年代末70年代初,兴起“软件工程”。
第一章软件工程概述(6),1.4软件工程过程和软件生存周期1.软件过程定义:
软件工程过程是再获取、供应、开发、操作和维护软件时,要实施的活动和任务。
主要过程:
获取过程、供应过程、开发过程、操作过程、维护过程、管理过程和支持过程。
2.软件生存期定义:
指一个软件从立项开始,经过制造、测试、使用、维护直到废弃为止的整个时期。
阶段:
6阶段(教材p.10)8阶段(国家标准)(计算机软件开发规范)1)可行性研究与计划;2)需求分析;3)概要设计;4)详细设计;5)实现;6)综合测试;7)确认测试;8)使用和维护。
第一章软件工程概述(7),3.软件生存期模型1)瀑布模型(W.Royce1970),可行性研究与计划,需求分析,设计,实现,测试,使用和维护,计划,开发33,维护67,20,15,20,45,第一章软件工程概述(8),1.5软件工程的基本目标1.软件工程定义定义:
B.Boehm运用现代科学技术知识来设计并构造计算机程序及为开发、运行、管理和维护这些程序所必须的相关文件资料。
IEEE1983:
对软件开发、运行、维护和退役的系统研究方法。
软件工程学教程陈明:
软件工程是指导计算机软件开发和维护的一门学科。
它采用工程的概念、原理、技术和方法,把经过时间考验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,用于软件开发和维护。
2.软件工程的基本目标1)付出较低的开发成本;2)达到要求的软件功能;3)取得较好的软件性能;4)开发的软件易于移植;5)需要较低的维护费用;6)按时完成开发,及时交付。
(目标的互斥性),EndofChapterOneThanks2/9,2004,第二章系统定义与计划
(1),系统定义与计划,系统的概念,可行性研究,项目开发计划,研究报告,具体步骤,成本效益,系统流程,主要任务,第二章系统定义与计划
(2),第一节系统的概念一、基于计算机的系统二、计算机系统工程1.项目考虑2.商业考虑3.技术分析4.生产评估5.人员问题6.环境界面7.法律考虑三、硬件和硬件工程四、软件和软件工程,第二章系统定义与计划(3),第二节可行性研究1.经济可行性2.技术可行性3.社会可行性4.抉择附件1.教学附件(可行性研究报告)附件2.计算机软件开发文档编写指南,第二章系统定义与计划(4),第三节项目开发计划附件1.教学附件(项目开发计划),第二章系统定义与计划(5),第四节成本效益分析第十三章项目管理一章详细论述,EndofChapterTwoThanks4/9,2003,第三章软件需求分析,软件需求分析,需求分析概述,Sa方法,基本任务,需求规格说明书,基本概念,描述工具,分析步骤,分析策略,加工逻辑,数据流图,数据字典,第三章软件需求分析,第一节需求分析的基本任务,需求分析,需求规格说明书等,Whatwanttodo?
功能,性能,限制,分析员,用户,领域专家,第三章软件需求分析,当前系统,模型化,物理模型,逻辑模型,具体化,物理模型,实例化,抽象化,逻辑模型,目标系统,理解需求,表达需求,做什么?
怎么做?
第三章软件需求分析,第二节需求分析的过程,一、问题识别,1.功能需求,2.性能需求,3.环境需求,4.可靠性需求,5.安全保密需求,6.用户界面需求,7.资源使用需求,8.软件成本需求,9.开发进度需求,10.产品交付需求,第三章软件需求分析,二、分析与综合,1.功能的可实现性,2.性能可实现性,3.环境可满足性,4可靠性可保证性,5.安全保密可实现性,6.用户界面合理性,7.资源可用性,8.软件成本可行性,9.开发进度可行性,10.产品交付及时性,目标系统解决方案,第三章软件需求分析,三、编制需求文档,需求规格说明书等,四、需求评审,第三章软件需求分析,第三节需求分析原则,一、表达和理解问题的数据域和功能域所有软件开发工作最终是对数据形式的一种转换。
其转换过程历经:
输入、加工、结果呈现三个阶段。
需求分析是对软件的数据域和功能域的分析表示方法。
即提供一种功能和数据表示机制,确定软件的功能和其他特性。
最终建立系统的逻辑模型。
数据域有三种属性:
数据流、数据内容、数据结构。
例:
学籍管理系统中的学生名册数据。
数据内容:
班级、人数、学生:
学号、姓名、性别、成绩等数据结构:
逻辑组织形式(线性表、层次、网)数据流:
网上招生作为原始数据,第三章软件需求分析,二、自顶向下、逐步求精(Top-Down,Refine-By-Step)),数据转换机制功能分解机制,第三章软件需求分析,第四节需求分析方法,一、概述需求分析方法是对软件的数据域和功能域的分析表示方法。
即提供一种功能和数据表示机制,确定软件的功能和其他特性。
最终建立系统的逻辑模型。
二、结构化分析方法(70年代末,YourdonE.etc)1.范围:
数据处理类型2.特点:
图形表示需求。
清晰、简明、易学3.要点:
按照软件内部数据转换关系、自顶向下原则逐步分解,达解。
4.方法:
DeMarco:
数据流图、数据字典、结构化英语、判定数、判定表,第三章软件需求分析(8),1.事务处理:
银行取款的数据流图,第一部分数据流图(DFDDataFlowChart),储户,检验,登录,付款,取款信息,帐卡,存折,存折,取款单,检验问题,日历,付款信息,现金,第三章软件需求分析(9),2.DFD方法的图形部件与图标(Icon),1)数据流:
箭头所示的数据通道2)加工:
动词断语3)数据源点、数据汇点4)数据存贮文件为了表示更复杂的加工和数据处理关系,引入其他数据流图符号。
3.数据流图的的画法1)先找数据源点和汇点(数据、接口、表示)2)外部数据源(接口、表示、传输)3)列举加工4)逐层求精例子:
(综合服务平台)5)检查与修改(P.56),第三章软件需求分析(10),第二部分.数据字典,1定义:
定义数据流图中每一个命名的图形元素。
2方法:
1)数据流词条描述数据名称:
说明:
简要介绍作用:
即产生的原因和结果数据流来源:
数据流去向:
数据流组成:
数据量和流通量:
第三章软件需求分析(11),第二部分.数据字典,2)数据元素词条描述数据元素名称:
类型:
数字(离散、连续)、文字(编码类型)长度:
取值范围:
相关的数据元素及数据结构:
第三章软件需求分析(12),第二部分.数据字典,3)数据文件词条描述数据文件名称:
简述:
输入数据:
输出数据:
数据文件的组成:
数据结构存储方式:
顺序、直接存取频率:
存储量:
第三章软件需求分析(13),第二部分.数据字典,4)加工逻辑词条的描述加工名:
加工编号:
简要描述:
输入数据流:
输出数据流:
加工逻辑(程序、顺序、性能):
第三章软件需求分析(14),第二部分.数据字典,5)源点及汇点词条描述外部实体名:
简要描述数目,第三章软件需求分析(15),第三部分:
数据字典的作用,1数据查找2数据驱动(元数据改变程序行为)3数据维护(系统维护、0编译)实例说明,第三章软件需求分析(16),第四部分:
数据结构的描述方法,1定义式1)定义式记号系统2)实例存折户名所号帐号开户日性质(印密)1存取行50户名2字母24所号“001”.“999”帐号“000000001”.“999999999”(九位)开户日年月日性质“1”.“6”,第三章软件需求分析(17),第四部分:
数据结构的描述方法,2Warnier图(层次结构图),报纸,头版,社论,副刊,头条,国内,本地,第三章软件需求分析(18),第五部分:
加工逻辑说明,1三点要求1)每一个基本加工,必须有一个加工说明2)描述:
数据输入、数据输出、加工规则3)描述加工策略不描述加工细节2方法1)结构化英语2)判定表3)判定树开户日年月日性质“1”.“6”,第三章软件需求分析(19),第四节系统动态行为分析,一、状态迁移图,1.记号:
表示可得到的系统状态,表示状态间的迁移,2.例操作系统中进程调度状态1:
就绪(Ready):
等待分配CUP状态2:
运行(Running):
CPU正在处理状态3:
等待(Wait):
放弃CPU事件定义:
t1:
因I/O等事件发生而要求中断t2:
中断事件已处理,t表示状态迁移的驱动事件,第三章软件需求分析(20),2.例操作系统中进程调度事件定义:
t3:
分配CPUt4:
已分配的CPU时间状态迁移图:
运行,就绪,等待,t3,t4,t1,t2,第三章软件需求分析DFD设计实例(21),视频监控系统顶层:
一个加工,定义了系统输入和输出,视频监控系统,用户操作信息,t4,监控记录,监控结果,用户,备份外设,第三章软件需求分析DFD设计实例(22),0层:
加工的分解,整体功能的描述,进行实时监控3,要求监控的命令,查询结果,要求查询的记录,按条件查询记录,身份验证,操作选择,视频数据库,查询条件,视频文件,监控现场,无效身份,验证通过,用户操作信息,日志文件,报表打印,第三章软件需求分析DFD设计实例(23),1层:
加工3的描述,云台控制3.2,转动云台命令,画面切换3.3,响应命令3.1,移动侦测3.4,画面设置3.5,报警条件,监控现场,选择画面命令,监控命令,画面设置命令,EndofChapterThreeThanks5/9,2004,第四章软件设计
(1),软件设计,基本任务,设计方法,数据库设计,模块化、抽象、信息隐蔽,数据结构设计,Jackson设计方法,结构化设计方法,基本原理,设计优化,设计评审,设计文档,模块独立性,软件结构图,设计优化准则,第四章软件设计
(2),第一节软件设计的任务和目标,软件设计,设计说明书(概要、详细、数据、用户手册、初测计划),Howtodo?
制定规范,系统结构总体设计,处理方式设计,设计人员,需求分析结果,数据保护设计,数据结构设计,可靠性设计,编写设计文档设计评审,第四章软件设计(3),阅读理解需求规范,设计文档编制规范,信息编码规范,一、制定规范,第四章软件设计(4),设计方法选取,模块功能的确定,模块间的调用关系,二、系统结构的总体设计,模块划分质量的评估,模块间的接口,第四章软件设计(5),算法选取、评估,算法性能,周转时间,三、处理方式的设计,吞吐量,响应时间,精度,第四章软件设计(6),输入、输出数据结构,算法所需数据结构及操作,数据结构的影响范围,四、数据结构设计,数据结构使用规则,第四章软件设计(7),防卫性设计,一致性设计,完整性设计,五、数据的保护性设计,冗余性设计,第四章软件设计(8),概要设计说明书,详细设计说明数,用户手册,六、编写设计文档,初步测试计划,第四章软件设计(9),可追溯性,接口,风险,七、设计评审,使用性,可维护性、质量、各种选择方案、限制,第四章软件设计(10),第二节软件设计基础,将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据逐层细化,直到用程序设计语言能够实现为止,从而最后确立整个体系结构。
一、自顶向下、逐步细化(Top_DownRefine_By_Step,NiklausWirth),第四章软件设计(11),实例:
软件功能的自顶向下,逐步细化,常规业务,活期,定期,定活两便,存本取息,零存整取,开户,存款,取款,清户,第四章软件设计(12),软件结构:
程序模块的层次结构和数据结构两部分。
1.程序结构(不同的软件设计方法,可得到不同的软件结构)
(1)程序的树状结构和网状结构
(2)结构图(StructureChart):
精确表示程序结构的图示方法。
1)模块:
程序中单独命名和可编址部分2)模块间的调用关系和接口3)模块间的信息传递4)两个辅助符号5)结构图的形状特征1)结构的深度2)结构的宽度3)结构的扇入和扇出,二、软件结构(Top-DownRefine-By-Step),第四章软件设计(13),2.数据结构(数据的各个元素之间的逻辑关系的一种表示)主要设计内容:
1)组织、存储方式2)相关程度3)处理方法4)两个辅助符号数据结构课程3.模块化1)模块的大小2)模块的数量下图关系说明。
二、软件结构(Top_DownRefine-By-Step),第四章软件设计(14),总的软件成本,最小成本范围,模块数大小减小,模块数增加,模块个数模块数/模块大小,联接成本,成本/模块,成本和工作量,第四章软件设计(15),4.抽象化(设计的每一步均可视为抽象,只虑共性,不虑细节)
(一)过程抽象例:
绘图软件1)抽象层次一:
处理环境术语描述绘图功能:
直线、折线、矩形、园等2)抽象层次二:
任务描述(英语加注释)CADSOFTWARETASKS:
CAD软件任务UserInteractiontasks;用户交互任务2-Ddrawingcreationtasks;二维图形产生任务Graphicsdisplaytask;图形显示任务Drawingfilemanagementtasks图形文件管理任务END.结束3)抽象层次三:
程序过程实现参考教材P.87,二、软件结构(Top_DownRefine-By-Step),第四章软件设计(16),软件结构:
程序模块的层次结构和数据结构两部分。
4.抽象化(设计的每一步均可视为抽象,只虑共性,不虑细节)
(二)数据抽象参考教材P.885.模块的独立性
(一)模块的定义
(二)模块独立性的定义(三)耦合性(相互关联),二、软件结构(TopDownRefine-By-Step),非直接耦合,数据耦合,标记耦合,控制耦合,外部耦合,公共耦合,内容耦合,高,低,耦合性,第四章软件设计(17),5.模块的独立性(四)七种耦合关系实例介绍(五)内聚性(六)七种内聚实例介绍,功能内聚,信息内聚,通信内聚,过程耦合,时间内聚,逻辑内聚,巧合内聚,低,内聚性,高,第四章软件设计(18),第三节软件设计方法(SD),1.构图模块(4种)1)传入模块2)传出模块3)变换模块4)协调模块2.变换型系统结构图及其设计3.事务型系统结构图及其设计二、模块设计的改进三、设计后处理1)处理说明2)接口说明3)数据结构说明,一、系统结构图,第四章软件设计(19),第四节数据设计及文件设计,一、数据设计的原则(R-S-Pressman)1.任务1)确定逻辑数据结构、算法、操作2)操作的程序模块2.原则(7条)二、数据结构的选择三、文件的设计1文件设计过程2文件存储媒体的选择3确定文件的组织方式4确定记录的布局,第四章软件设计(20),第五节过程设计(详细设计、程序设计),一、任务1.确定各个模块的实现算法2.精确表达算法3.算法的评估二、过程表示方法1.图形语言2.表格工具3.语言描述,第四章软件设计(21),表示方法一:
图示工具1.程序流程图(ProgramFlowChart)1)程序的五种基本结构2)五种基本结构的图形表示3)国际标准2.N_S图(Nassi和ShneidermanBox-Diagram)1)程序的五种基本结构2)五种基本结构的图形表示3)N_S图的特点3.PAD图(ProgramAnalysisDiagram)1)程序的五种基本结构2)五种基本结构的图形表示3)PAD图的特点,第四章软件设计(22),表示方法二:
表格工具1.判定表1)多重嵌套的条件选择2)例表示方法三:
语言描述(PDLProgramDesignLanguage)1)伪码2)外语法、内语法3)语言要素,EndofChapterFourThanks16/9,2004,第五章用户界面设计
(1),用户界面设计,界面特征,界面类型,可用性,用户模型、用户观点,8种,设计任务,工作方式,可靠性,灵活性,任务模型,第五章用户界面设计
(2),可使用性,灵活性,可靠性,用户界面特性,使用简单性属于操作一致性提示与帮助容错能力,用户层次界面定制主流界面设计技术,功能数目无故障时间,第一节界面特征,第五章用户界面设计(3),用户,用户类型,界面设计,理念分析,用户系统数据,群体分析,界面规格描述,界面类型,特征分析类型:
外行初学熟练专家,特性分析使用频度思维能力熟练程度生理技能,第二节界面设计任务,第五章用户界面设计(4),第三节界面设计类型,一、菜单二、图像三、对话四、窗口五、描述语言,第五章用户界面设计(5),第四节分类设计,一、数据输入界面1.数据输入规则2.输入表格设计3.其他数据输入方法二、数据显示界面1.数据显示规则2.字符数据显示三、图形显示界面1.二维图形2.三维图形四、控制界面1.提问频度与确认2.用户分析中地流程五、命令语言界面1.命令词地选择2.行语法3.参数,EndofChapterFiveThanks13/10,2003,第六章程序编码
(1),程序编码,语言特性,程序效率,心理特征,项目应用领域,语言选择,设计风格,技术特性,工程特性,软件开发方法,软件执行环境,开发人员的知识,算法何数据结构地复杂性,第六章程序编码
(2),心理特征,工程特征,技术特征,语言特征,歧义性简洁性局部性传统性,可移植性开发工具的可利用性软件的可重用性可维护性,对软件设计质量的影响对工程各阶段的影响,第一节
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 软件工程 讲义 经典