软件工程与项目案例教程t_第1页
软件工程与项目案例教程t_第2页
软件工程与项目案例教程t_第3页
软件工程与项目案例教程t_第4页
软件工程与项目案例教程t_第5页
已阅读5页,还剩334页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

软件工程与项目案例教程1经历华南理工大学,博士,计算机控制曾任职以下公司:中国民航信息广州公司(香港上市)技术总监广州金鹏集团(电子百强)项目总监广东金宇恒(佛山最大软企)技术总监曾获国家创新基金、广州科学技术奖中联通炫铃广东/湖南/广西项目负责人(用户800万)长期移动、民航、政府、互联网行业软件研发2项目一软件工程概述任务1软件工程

任务2软件生命周期与软件开发模型

任务3建模工具

3最富哲理的软件工程4UML是“三人帮”“捣”出来的5迭代开发过程这样流转6软件工程水平是这样提高的7敏捷开发过程-Scrum8任务1软件工程软件的定义及其特点软件危机软件工程概念9软件的定义及其特点软件的定义软件是计算机系统中与硬件相互依存的部分,它是包括程序、数据及相关文档的完整集合。软件的定义及其特点

软件=程序+数据+文档程序:按事先设计的功能和性能需求执行的指令序列数据:是程序能正常操纵信息的数据结构文档:与程序开发、维护和使用有关的图文材料10软件的定义及其特点软件的定义及其特点软件的特点(1)抽象性;(2)无明显的制造过程;(3)无磨损、老化的问题

(4)对硬件系统的依懒性;(5)复杂性;(6)成本昂贵;(7)社会性;11软件危机TacomaNarrows大桥的崩溃12软件危机

软件危机

在软件开发和维护过程中所遇到的一系列严重问题

软件危机的表现对软件开发成本和进度的估算很不准确用户很不满意质量很不可靠没有适当的文档软件成本比重上升供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势

软件危机

13软件危机软件危机

原因客观:软件本身特点逻辑部件规模庞大主观:不正确的开发方法忽视需求分析错误认为:软件开发=程序编写轻视软件维护14软件危机软件危机

产生的原因(软件开发人员的错误观点):“有一个对目标的概括描述就足以着手编写程序了,许多细节可以在以后再补充”“所谓软件开发就是编写程序并设法使它运行”“用户对软件的要求不断变化,然而软件是柔软而灵活的,可以轻易地改动”“软件投入生产性运行以后需要的维护工作并不多,而且维护是一件很容易做的简单工作”15软件危机的解决软件危机

解决途径组织管理工程项目管理方法技术措施软件开发技术与方法软件工具软件工程管理软件管理学软件经济学软件度量学软件工程学指导计算机软件开发和维护的工程学科工程管理+开发技术软件开发技术软件开发方法学软件工具软件工程环境16软件工程概念软件工程的概念

应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来解决软件问题,指导计算机软件开发和维护的一门工程学科。

软件工程的原则软件工程概念

17任务2软件生命周期

与软件开发模型软件生命周期软件开发模型18软件生命周期

软件定义阶段

软件开发阶段

软件的使用和维护阶段

退役Page19软件生命周期19

瀑布模型软件开发模型软件开发模型

问题定义可行性研究需求分析概要设计详细设计软件实现软件测试运行维护计划时期开发时期运行维护时期强调阶段的划分及其顺序性、各阶段工作及其文档的完备性,是一种严格线性的、按阶段顺序的、逐步细化的开发模式。20软件开发模型

演化模型

螺旋模型

喷泉模型

21

两种典型的建模工具:1.IBMRationalRose

2.MicrosoftOfficeVisio任务3建模工具22

IBMRationalRosePage23IBMRationalRose23Visio是一个图表绘制程序,可以帮助用户描述复杂设想以及系统的业务和技术图表。使用Visio创建图表可以使信息形象化,能够以更为直观有效的方式进行信息交流,这是单纯的文字和数字无法比拟的。Page24

MicrosoftOfficeVisioMicrosoftOfficeVisio

24软件工程课程设计考核方式:课程设计(附设计说明文档,正文字数不少于1000字)(60%)+平时作业及实验(30%)+平时表现(10%),按优秀、良好、中、及格、不及格五级评定成绩通过演示及讲述,讲解课程设计的整体情况,针对其设计提出一些技术及细节问题确认是否真正理解课程设计中的要点、是否掌握了进行系统设计的知识和能力、是否本人完成。如通发现没有真正设计或者不清楚技术细节,则课程设计不及格。答辩部分:40分(没有课程设计说明文档不予参加答辩)设计部分:60分选题:创新性,实用性,界面美观友好(15分)难度:设计包含的难度(15分)设计的完整性(30分)25迭代和增量开发方式26迭代过程的优势复杂系统-分解->多个简单系统提高软件项目可控性降低软件开发风险有效地应对需求变更在迭代过程中,功能的不确定性逐渐减小,我们对功能的描述越来越明确。27何时使用迭代开发?只对希望成功的项目使用2019年2月4日,马克·扎克伯格在大学的宿舍里鼓捣了一个约会网站28项目二统一建模语言UML任务1UML概述

任务2UML静态建模

任务3UML动态建模29任务1UML概述UML的概念UML的发展UML的主要内容30UML与OO(面向对象)OOUMLOOAOODDP…………

……

……

……UML是OO重要工具31UML的概念UML的概念UMLUnifiedModelingLanguage统一建模语言统一建模语言是一种通用的可视化建模语言,用于对软件系统的制品进行规范化、可视化处理,然后构造它们并建立它们的文档。UML的概念32UML的发展过程GradyBooch,JamesRumbaugh和IvarJacobson33图与语言谁一级棒?这把刀,也不知道有多长、多宽、多重、由什么材质铸成,由谁铸造?很普通,很平常,也许在我们手中!但,只要是他拿着,握着,这把刀就有了生命,有了气息,追魂的刀,亦是救命的刀,就看他是如何赋予它使命的!该用图用图该代码用代码34UML的优势过去数十种面向对象的建模语言各自为战,而UML可以消除一些潜在差异,一统江湖通过统一语义和符号表示,提高面向对象技术使项目建立在一个成熟的标准建模语言基础之上便于沟通和交流,统一的理解35UML主要内容

精确的元模型定义

UML表示法UML表示符

UML可视化的图形建模语言

UML提供了五类图形UML的主要内容

36任务2UML的概念模型UMLStructure构造块buildingblocks公共机制commonmechanisms构架architecture基本UML建模元素、关系和图达到特定目标的公共UML方法系统架构的UML视图37UML基本的构造块Page38构造块buildingblocks事物things关系relationships图diagrams建模元素本身把事物联系在一起,关系说明两个或多个事物时如何语义相关的UML模型的视图,它们展现事物的集合,“讲述关于软件系统的故事”,是我们可视化系统将做什么(分析级图)或者系统如何做(设计级图)的方法38事物事物things结构物件行为物件分组物件注解物件UML模型中的名词,如类、接口、协作、用例、活动类、组件、节点UML模型的动词,如交互、状态机包,它用于把语义上相关的建模元素分组为内聚的单元注解,它附加到模型以捕获特殊信息,同黄色便笺很相像39关系关系relationships关联association依赖dependency泛化generalization实现realization描述对象之间的一组链接事物的改变引起依赖物件的语义改变一个元素是另一个元素的特化,而且它可以取代更一般的元素类元之间的关系,一个类元说明一份契约,另一个类元保证实现该契约40图图diagrams类图classdiagrams对象图objectdiagrams构件图componentdiagrams部署图deploymentdiagrams用例图usecasediagrams顺序图sequence`diagrams协作图collaborationdiagrams状态图statechartdiagrams活动图activitydiagrams静态模型

(系统结构)动态模型

(系统行为)41UML公共机制公共机制commonmechanisms规格说明specifications修饰adornments公共分类commondivisions扩展机制extensibilitymechanisms42规格说明UML模型:使用图和图标可视化模型各种建模元素的规格说明所组成规格说明模型元素的特征和语义的文本描述—模型的“肉”形成了承载模型的语义背板,赋予模型意义,各种图仅仅是该背板的视图或者可视化投影43修饰修饰:图中建模元素上暴露的信息项任何UML图仅是模型的视图,只有在修饰增强了图的整体清晰性和可读性或者突出模型的某些重要特征时,才应该表示那些修饰Window44公共分类描述认识世界的特殊方法类和实例类元:一类事物的抽象概念;如“银行帐户”实例:一类事物的特定实例;如“张三丰帐户”接口和实现接口:说明事物行为的契约(做什么)实现:事物是如何工作的特殊细节(如何做)45扩展机制约束:允许对模型元素添加新的规则构造型:基于已有的建模元素引入新的建模元素标记值:允许为模型元素添加新的特性,是带有相关值得关键字46JAVA开发平台体系结构构架是一个系统的组织结构包括:1.系统分解成的各个部分2.它们的连接性3.交互机制4.通知系统设计的向导规则47JAVA开发平台架构构架是一个系统的组织结构包括:1.系统分解成的各个部分2.它们的连接性3.交互机制4.通知系统设计的向导规则48架构构架是一个系统的组织结构包括:1.系统分解成的各个部分2.它们的连接性3.交互机制4.通知系统设计的向导规则494+1视图50UML小结UML构造块公共机制架构物件关系图规格说明修饰公共分类扩展机制用例视图逻辑视图进程视图实现视图部署视图结构物件行为物件分组物件注解物件关联依赖泛化实现类图顺序图对象图协作图构件图状态图部署图活动图用例图51

用例图

类图

对象图

使用类图的建议

任务3UML静态建模机制52用例图Page53用例图

参与者

参与者1参与者2用例1用例253用例“捕获需求”用例图从系统外部、从用户角度出发描述系统的功能集用例图所描述的系统功能依靠外部用户或另一个系统激活,为用户或另一个系统提供服务54用例表达“做什么”用例图中可以包含若干个用例,用例表达了系统的功能用例只描述参与者和系统在交互过程中做些什么,并不描述怎么做。55用例图关联关系Page5656用例图泛化关系Page5757用例图泛化关系Page5858用例图Page59

保险销售用例

59用例图Page60

商品订单用例

60用例图Page61

教学管理用例

61用例用于什么情况?不知道什么情况不用用例如果没有用到用例,闭门反省62实例:监听器用例63实例:监听器用例功能需求监听删除操作,保证数据的安全。场景监听删除操作删除操作一旦执行,立即被监听器捕获到,进而在执行删除操作前执行自定义的函数体,即判断实体有无undeletable标签,有则中断删除操作,无则正常删除。步骤异常情况异常处理方法取得实体的类名ClassNotFoundException异常日志记录,然后包装成一个HibernateException,向上层抛出。获取undeletable标签,判断是否存在,是则执行函数体,否则执行父类函数体(onDelete)IllegalAccessException异常与InvocationTarget-Exception异常日志记录,然后包装成HibernateException,向上层抛出。64关系关联关系;依赖关系;泛化关系;关系的扩展

用例图Page65<<include>><<extend>>参与者用例系统边界关联扩展包含泛化注释体注释连接65类图类名称;属性;操作关联关系泛化依赖关系约束类图66类图类名称;属性;操作67类图类图68类图类图69类图类图泛化关联70类图类图71类图类图72何时用类图?类图是面向对象方法的支柱如果没用到类图??找电杆撞下,看是否用面向对象方法73用类图的危险!类图用滥了,建狗屋画了10页类图类图没分清粗细层次:概念类图规约类图实现类图74鸟类图75鸟类图76鸟类图77鸟类图78实例:监听器类图79使用类图的建议不要试图使用所有的符号根据项目开发的不同阶段,用正确的观点来画类图不要为每个事物都画一个模型,应该把精力放在关键的领域使用类图的建议80对象图

对象图

表示在某一时刻类的具体实例和这些实例之间的具体连接关系

对象图丁一家里的PC:计算机名称:DELL446内存:128丁一:作家姓名:丁一年龄:3081类与对象关系82类与对象关系对象图使用的是与类图相同的符号和关系

83类图和对象图的区别

84包包

一种分组机制,把各种各样的模型元素通过内在的语义连在一起成为一个整体就叫做包

包PackageABCAABC85包的关系引用使用86包--软件比赛作品87架构图--包图的变形88任务4UML动态建模机制对象之间的交互状态图交互图活动图四种图的运用89软件模型与现实模型与现实要匹配90对象之间的交互简单消息同步消息异步消息同步且立即返回消息对象之间的交互91什么是状态图?状态图

用来建模对象是如何改变其状态以响应事件,展示对象从创建到删除的生命周期状态图发票状态图92状态图状态标记符93状态图实例:打电话94状态图状态和转移事件状态图95状态图如果你太喜欢96状态图详细状态97状态图子状态状态图98状态图子状态状态图99状态图子状态状态图100航班状态101放松下102交互图顺序图交互图103交互图顺序图交互图104实例:监听器顺序图105电影动画-软件模型电影大量使用3D动画106交互图协作图:交互关系和链接关系

链接;消息流;对象生命周期

107交互图协作图:交互关系和链接关系

108交互图协作图

链接;消息流;对象生命周期

交互图109顺序图与协作图相同点描述对象间的交互关系不同点顺序图:交互的时间顺序协作图:交互的静态链接关系1103D电影动态建模111活动图-状态变种活动和转移泳道对象信号112活动图-状态变种活动和转移泳道对象信号113活动图活动和转移泳道对象信号活动图114活动图活动和转移泳道对象信号115四种图的运用动态建模目的、侧重不同状态图只有极少关键对象顺序图、协作图:单用例中几个对象的行为顺序图突出顺序,协作图着重对象间链接关系四种图的运用116项目三项目市场调研任务1.系统的研发背景任务2.软件开发计划

117油画创作背景波洛克《1948年第五号》1.4亿$,最昂贵画作这幅画在一副优雅的4x8英尺画布上以画家特有的滴溅泼洒的艺术手法来进行风暴式设计并拨开油彩。118任务1系统的研发背景追问:为什么呢?你好,这里是梦幻家园售楼处,我是蔡小姐。我是张总,我严重警告你。为什么呢?试用期2月了,你有业绩吗?你卖出去过一套房子吗?为什么呢?问你自己!哦……为什么呢?今天下班之前你要再不卖出一套房子去,你就给我卷铺盖走人!(电话挂了)为什么呢?119项目背景--钢琴练奏师问:为什么开发这个软件?答:传统的音乐播放器功能单一用户对音乐缺少参与感问:开发这个软件目标是什么?答:提高用户对音乐的学习和娱乐参与创作音乐120项目背景--钢琴练奏师问:为什么传统音乐程序不好?答:传统音乐程序功能单一,容易令人感到枯燥无味,没有吸引力;传统音乐程序强调单方向,用户没有参与感;传统音乐程序设计不够灵活,扩展性差。121项目背景--钢琴练奏师问:开发内容包括什么?答:本项目从Android的声音处理入手,实现音乐功能,根据用户的兴趣,提高用户参与度。问:有什么应用价值?答:本项目是一个能提高用户参与和娱乐程序的项目,具有一定的使用价值。122追求的结果--钢琴练奏师1.2项目背景传统的音乐播放器功能单一,用户对音乐缺少参与感,本项目志在提高用户对音乐的学习和娱乐,参与创作音乐:(1)传统音乐程序功能单一,容易令人感到枯燥无味,没有吸引力;(2)传统音乐程序强调单方向,用户没有参与感;(3)传统音乐程序设计不够灵活,扩展性差。本项目从Android的声音处理入手,实现音乐功能,根据用户的兴趣,提高用户参与度。本项目是一个能提高用户参与和娱乐程序的项目,具有一定的使用价值。123系统的研发背景1.图书馆系统的提出传统的手工方式对图书信息的管理已越来越不能适应社会发展的需要,尤其是随着计算机网络和Internet的普及,运用先进的信息管理系统对信息进行科学化和网络化管理,已成为图书信息管理系统发展的趋势。124系统的研发背景2.国内外研发现状图书管理系统的发展历史国内外应用的图书管理系统调研(1)开发方式(2)开发方法(3)结构形式(4)开发平台(5)系统使用的范围(6)按照系统开发主体面向的对象

国内图书管理系统应用情况125国内Android开发行业市场现状国内的Android开发还是以应用开发为主,主要分成3类:为企业开发应用开发通用应用(AndroidMarket或者其他AppMarket销售)游戏开发(AndroidMarket或者其他AppMarket销售)。126国内Android开发行业市场现状第一类开发者在较大的公司,为自有品牌或者其他品牌设计手机或者平板电脑的总体方案。根据需求对系统进行定制外,为系统编写定制的应用。第二类开发者在创业型公司或者是独立开发者,盈利方式主要2种:为国外公司外包开发,或者通过Google的移动广告(AdMob)点击分成。通过付费下载的形式来盈利的,现在国内鲜见成功者。第三类开发者和第二类开发者类似。开发者提交的应用开发数目远超游戏开发。127任务2软件开发计划问题定义可行性研究可行否?否是终止项目计划时期开发时期128任务2软件开发计划难于上青天!做项目计划,如同给一个待出生的婴儿写传记易如反掌!如果项目结束后再写计划,那就轻松多了,并且可以100%地准确129软件开发计划1.问题定义目标!目标!目标!。。。130软件开发计划1.问题定义(1)问题定义的任务开发目标开发规模开发时间(2)问题定义的内容文档化以上内定

131问题定义-案例⑴项目名称:教材销售系统⑵开发背景:人工发售教材手续繁琐,且易出错。⑶项目目标:建立一个效率比人工操作提高2倍、差错率下降50%的系统。⑷项目范围利用现有PC(不增加设备)软件开发费用不超过100万元完成时间2019年10月31日⑸初步想法:在系统中增加采购功能、对缺书的统计⑹可行性研究的计划进行大约2周的可行性研究132项目可行性遇到挑战(完成了,但超时或超支)成功

失败28%46%26%基于23,000多个项目统计133软件开发计划可行性分析:决定“做还是不做”需求分析:决定“做什么,不做什么”。实际案例:机票代理人项目老板的干活134软件开发计划2.可行性分析(1)主要内容

可行性分析四大要素:经济技术环境人

135可行性分析-案例1炫铃项目的可行性无人无积累(技术)环境(有市场前景)资金(1年)136可行性分析-案例2华为任正非早期冒险:人不够(一边开发,一边找人)无积累(无技术--红宝书)资金(前期约1年,后欠工资)环境(有市场,政策无支持)一拍脑袋:“豁出去,干!”137可行性分析-案例3联想集团柳传志没钱赚的事我们不干;有钱赚但投不起钱的事不干;有钱赚也投得起钱但没有可靠的人选,这样的事也不干。138成本收益分析成本:(1)办公室房租。(2)办公用品,如桌、椅、书柜、电器、空调。(3)计算机、打印机、网络等硬件设备。(4)电话、传真等通讯设备以及通讯费用。(5)资料费。(6)办公消耗,如水电费、打印复印费等。(7)软件开发人员与行政人员工资。(8)系统软件费用,如数据库、开发工具等。(9)市场调查、可行性分析、需求分析的费用。(10)公司人员培训费用。(11)产品宣传费用。(12)如果客户攻关费,吃喝玩乐的费用。(13)管理费。每戳一个公章都要化一把钞票。收入:项目收入(合同)人在钱没了139技术可行性技术可行性可以表述为:做得了吗?做得好吗?做得快吗?140社会环境的可行性社会环境的可行性:市场未成熟的市场成熟的市场将消亡的市场政策例:民航收费电信收费141人才可行性有人吗?手上的人挖掘一下够用吗?要多少才够成本超支可找吗?挖得到给得起¥21世纪人才最贵142软件开发计划2.可行性分析(2)可行性分析的主要步骤确定目标进行系统调查列出可能的技术方案技术先进性分析经济效益分析综合评价优选可取方案并写出可行性分析报告

143软件开发计划(3)可行性分析的评价原则效益性原则经济性原则可靠性原则

可比性原则144软件开发计划3.可行性分析报告可行性分析报告的一般格式可行性分析报告通常包括封面和内容两个部分可行性分析报告案例--图书管理系统145软件开发计划4.系统的开发计划开发计划主要任务

项目开发计划编写提示--图书馆管理

苹果飞船总部计划1.3万人146小结案例:图书馆管理系统研发背景问题定义可行性分析主要任务基本的步骤分析报告开发的计划主要任务计划的制订147项目四软件项目需求分析148项目四软件项目需求分析任务1.调查系统的需求任务2.模型任务3.事件任务4.事物任务5.实体—联系图任务6.类图陷阱:武器的进步149任务1.调查系统的需求1.调查系统的需求功能需求和技术需求系统相关者建立系统需求原型150需求分析的困难!(1)客户说不清楚需求;(2)需求自身经常变动;(3)分析人员或客户理解有误。151需求分析的困难!(1)客户说不清楚需求例:买鞋子脚大小形状152需求分析的困难!(2)需求自身经常变动没有一个软件的需求改动少于三次唯一改动需求两次的在去第三次改动需求的路上去世了例:时装153需求分析的困难!(3)分析人员或客户理解有误

154调查系统的需求1.功能需求和技术需求功能需求系统必须完成的活动,是系统将要投入的业务应用技术需求和企业的环境、硬件和软件有关的所有可操作目标

155调查系统的需求树上有10只鸟,打了1只,还有几只?“是无声手枪或别的无声的枪吗?”

“不是。”

“枪声有多大?”

“80-100分贝。”

“那就是说会震的耳朵疼?”

“是。”

“在这个城市里打鸟犯不犯法?”

“不犯。”

“您确定那只鸟真的被打死啦?”

“确定。”偶已经不耐烦了“拜托,你告诉我还剩几只就行了,ok”

“ok,树上的鸟里有没有聋子?”

“没有。”

“有没有关在笼子里的?”

“没有。”

“边上还有没有其他的树,树上还有没有其他鸟?”

“没有。”“有没有残疾的或饿的飞不动的鸟?”

“没有。”

“算不算怀孕肚子里的小鸟?”

“不算。”

“打鸟的人眼有没有花?保证是十只?”

“没有花,就十只。”偶已经满脑门是汗,且下课铃响,但他继续问,

“有没有傻的不怕死的?”

“都怕死。”

“会不会一枪打死两只?”

“不会。”

“所有的鸟都可以自由活动吗?”

“完全可以。”

学生满怀信心的说,“打死的鸟要是挂在树上没掉下来,那么就剩一只,如果掉下来,就一只不剩。”

156调查系统的需求2.系统相关者用户:实际使用系统处理日常事务的人客户:那些购买和拥有系统的人技术人员:确保系统运行的人外部实体:例如公司的顾客比尔-盖茨:“我家没有任何一款苹果产品,我们全家也从来不吃苹果。”

乔布斯:“我家一个窗户都没有。”

157调查系统的需求需求调查方法:直接与客户交谈足球评论员“大嘴”侃出需求有些需求客户讲不清楚请教行家“听君一席言,胜读十年书。”客户与分析人员想都没有想过分析同类软件,优点、缺点坐享其成巴乔在前有追兵,后有堵截的情况下带球冲入禁区...AC米兰队目前以1:3领先...球员30公里外一脚远射!158调查系统的需求3.建立系统需求原型(1)确定现有系统的物理过程和活动(2)从现有物理过程中提取出业务逻辑功能(3)为将在新系统中使用的方法开发出业务逻辑功能(删)(4)定义新系统的物理处理需求(物理改为业务)159任务2模型2.模型模型的作用及类型逻辑模型和物理模型例:法拉利牌坦克酷性能突出,流线型设计符合年轻人爱好战斗力很差160模型1.模型的作用及类型(1)模型的作用提取系统需求信息系统分析员整理思路系统的分析和集成记忆和把握相关细节系统开发小组间进行交流为维护和升级提供文档参考大爆炸宇宙模型161模型1.模型的作用及类型(2)模型的类型

数学模型描述系统技术方面的一系列数学公式如:利润=收入-成本描述模型描述系统某些方面的叙述性的备忘录、报表、列表、文字等如,监听删除操作:删除操作一旦执行,立即被监听器捕获到,进而在执行删除操作前执行自定义的函数体,即判断实体有无undeletable标签,有则中断删除操作,无则正常删除。图形模型描述系统的图表或系统某些方面的示意性表示162模型2.逻辑模型和物理模型(1)逻辑模型在系统分析阶段所建立的模型详细定义了系统需求但并没有局限于某一具体技术常用逻辑模型用例图类图顺序图状态图/协作图注意:面向对象与面向过程163模型2.逻辑模型和物理模型(2)物理模型在系统设计阶段建立的模型显示了如何使用具体技术来实现系统的某些方面常用模型界面报表数据库结构流程网络分布164任务3事件3.事件事件的概念和类型事件定义图书馆管理系统中的事件黑屏事件165事件1.事件的概念和类型(1)外部事件(2)临时事件(3)状态事件

2.事件定义(1)区分事件和触发事件的条件以及系统响应(2)跟踪事务处理的生命周期(3)暂不考虑技术依赖事件和系统控制

166事件3.图书馆管理系统中的事件书目查询帐户查询及更改预约/退订图书借/还书逾期罚款丢失赔偿催还图书借书排行167事件3.图书馆管理系统中的事件书目查询借/还书…事件触发器来源活动/用例响应目的地使用者查询书目信息书目查询查询者查询所需书目查询结果查询者168《金刚》-3D软件建模2.07亿美元3500台计算机“金刚”完全电脑特效电影技术进入电脑时代169任务4事物4.事物1.事物的概念和类型2.事物间的关系3.事物的属性4.数据实体和对象“人要么是天才,要么是笨蛋!”

“你想一辈子卖糖水,还是改变世界?”

“我们从不以偷窃别人的伟大作品为耻!”

“软件就是用户体验。”170事物1.事物的概念和类型171事物1.事物的概念和类型特征驱动开发(FDD)四色建模

172事物2.事物间的关系3.事物的属性173事物4.数据实体和对象数据实体与过程是分离的对象将数据和处理数据的方法封装成一个单元要让某个对象执行

某种操作,可以让

另外一个对象给该

对象发送一个消息174任务5实体—联系图数据存储需求结构化分析方法把重点集中在系统的数据存储需求上数据存储需求:数据实体数据实体的属性实体间的关系175任务5实体—联系图数据存储需求结构化分析方法--数据流图(DFD)176实体—联系图(ERD)用来定义数据存储需求的模型任务5实体—联系图177任务5实体—联系图只能一个(强制)0或多个(可选)1或多个(强制)0或1个(可选)实体之间关系的基数符号178任务5实体—联系图179任务5实体—联系图带有属性的扩展ERD图*表示标识符或关键字180任务6类图6.类图用面向对象的方法分析事物类图的符号

建模的目标

需求分析规格说明书编写提纲181类图1.用面向对象的方法分析事物分类分析方法(概括-具体)继承机动车辆小汽车卡车拖拉机轿车跑车体育用车机动车辆的泛化/具体层次图(继承关系)182类图1.用面向对象的方法分析事物分类分析方法(概括-具体)继承订单电话订单网上订单邮件订单183类图1.用面向对象的方法分析事物整体—局部分析方法聚合合成184类图2.类图的符号基于统一建模语言(UML)面向对象系统开发中建立模型的实际标准

185类图2.类图的符号基于统一建模语言(UML)面向对象系统开发中建立模型的实际标准

186类图3.建模的目标

结构化方法:--错误的!事件表->数据流图(DFD)面向对象方法:事件表->用例图->类图->顺序图/状态图187类图3.建模的目标

结构化方法--错误的!面向对象方法188需求分析规格说明书

仅仅建模还是不够的需求分析成果->需求分析说明书需求分析规格说明书提纲1.引言2.任务概述3.需求规定4.运行环境设定5.缩写词表6.参考文献189送餐管理系统--需求分析过程分析员:“在你们打理生意时,哪些事情促使你们决定采用计算机管理?告诉我通常这些业务是如何进行的。”客户:“是这样,当客户打电话订餐时,我需要把它记下来,然后通知给相应的餐馆。我需要决定派哪一个司机去送货,因此要司机打电话告诉我他们什么时间有空。有时,客户会又打电话更改订单内容,因此我必须找到原始订单,然后通知餐馆更改。”分析员:“好的,那你们又怎么管理现金呢?”客户:“司机取饭菜时会从餐馆直接拿到账单的副本,账单和我们的计算应该是一致的,然后司机送货时收取相应的现金并加上服务费。在下班时,司机报账,我们把司机收到的现金汇总起来,和我们的记录进行比较,所有的司机都交完账后,我们需要开张银行存款单,存入当天的现金总收入。每周末,我们按提前约定的批发价来计算欠餐馆多少钱,把结算单和支票寄给他们。”190送餐管理系统--需求分析过程分析员:“那你们还想从这个系统中获取别的信息吗?”客户:“如果每周末能统计出每个餐馆有多少订单、城里每个区有多少订单等信息就更好了。这能帮助我们制定广告策略及与餐馆的合同,而且我们还需要每月财务状况统计结果。”在客户说话时,分析员记下了几个要点,画了几张草图。之后,他花了一些时间仔细考虑,总结出“送餐管理”的需求状况。191送餐管理系统--需求分析过程1.在发生如下事件时,系统

可以进行处理:客户打电话下订餐订单客户打电话修改订单送货司机汇报工作情况送货司机上交一天的收入2.在特定时间内系统产生所

需信息:生成日结算存款单生成周末餐馆支付帐单生成周销售报表生成月财务报表3.需要建立业务实体:餐馆菜单客户订单订单支付帐单司机(送餐员)192送餐管理系统--用例图193送餐管理系统--类图194送餐管理系统--顺序图195小结面向对象分析方法(掌握)用例图类图顺序图状态图/协作图(可选)结构化分析方法(了解)实体-联系图数据流图196项目五软件项目总体设计197软件项目总体设计1.总体设计基本内容2.结构化软件设计3.面向对象软件设计198任务1软件总体设计1.总体设计的基本内容软件设计定义总体设计的目标与步骤总体设计的基本任务总体设计的准则设计编码测试维护测试编码维护有软件设计

没有软件设计199软件设计分解过程总体设计详细设计200总体设计的基本内容1.软件设计设计解决从需求(做什么?)到(怎么做?)概要设计(总体设计)将软件需求转化为软件体系架构确定系统级接口全局数据结构或数据库模式详细设计确立每个模块的实现算法和局部数据结构用适当方法表示算法和数据结构的细节201软件设计总体设计体系结构就如同人的骨架如骨架是猴子,无论怎样喂养和美容,始终是猴子,成不了人。模块(子系统)就如同人的器官,有特定的功能最出色的子系统是手,只有几种动作,却能做无限多的事情。最糟糕的模块设计之一是嘴巴,混合毫无相干的功能(如吃饭、说话、亲吻)202软件设计详细设计数据结构与算法如同人的血脉和神经(发挥功能)聋子天生就是哑巴(关系)人体的数据结构与算法设计十分神奇也十分可笑用户界面如同人的外表,让人一见钟情(或一见呕吐)Unix系统是健壮的汉子和妇人Windows系统是妩媚的小白脸和狐狸精化妆可以获得更好的界面203总体设计的基本内容1.总体设计的目标设计合理的软件架构分解为合理的模块(包)2.总体设计的步骤:(1)用户需要->系统逻辑模型(2)系统分解成一组模块(包)(3)确定模块的功能满足需求(4)形成总体设计文档204总体设计的基本任务1.设计软件结构2.数据结构及数据库设计(一般在详细设计)3.编写总体设计文档4.评审

205总体设计的基本内容1.软件设计软件架构是总体设计的核心内容206体系结构是本质的软件系统中最本质的东西对复杂事物的一种抽象在一定的时间内保持稳定常见层次结构和WEB结构207总体设计--层次结构为什么分层次?系统太复杂无法一口气干完与人的认识符合208总体设计-体系结构JAVA开发平台体系结构209总体设计--网络结构JAVA开发平台网络结构210总体设计--系统架构JAVA开发平台架构211总体设计--模块功能划分体系结构-(决定)

各模块功能从功能上划分模块模块化设计原则保持“功能独立”抽象(事物本质)信息隐藏212总体设计--模块功能划分保持“功能独立”降低开发、测试、维护等阶段的代价沟通成本最低例:美国独立战争(独立国家)213总体设计--模块功能划分抽象(事物本质)抽象是设计的本质例:微软和联通有仇?国际码,“啊”:B0A1214总体设计--模块功能划分信息隐藏模块只提供对外的接口模块内部不对外开放好事不出门,坏事传千里!(克林顿)老师:要是坐在后排聊天的同学能象中间打牌的同学那么安静,就不会影响到前排睡觉的同学。215总体设计--UI模块JAVA开发平台UI模块216总体设计--DAO模块JAVA开发平台DAO模块217总体设计--DAO模块JAVA开发平台MVC模块218总体设计--DAO模块JAVA开发平台Model模块219总体设计的基本内容3 系统架构

3.1 系统总体架构3.1.1 UI构件 3.1.2 DAO构件 3.1.3 MVC构件 3.1.4 MODEL构件 总体设计的说明1 前言 1.1 目标 1.2 系统设计特点1.3 系统体系结构2 系统网络结构 2.1 系统网络拓扑2.2 软硬件要求 220总体设计的准则Davis的设计准则(1)设计考虑各种可选方案,根据需求/资源/概念决定(2)设计应可以跟踪需求分析模型(3)设计资源都是有限的(4)设计应体现统一的风格(5)设计的结构应尽可能满足变更的要求(6)设计的结构应能处理异常(7)设计不是编码,编码也不是设计(8)设计的质量评估应在设计的过程中进行(9)设计评审应关注概念性的错误,而不是细节程序猿

221任务2结构化的软件设计1.结构化设计的基本概念(1)模块

(2)模块的独立性(3)抽象(4)信息隐蔽冷兵器222结构化的软件设计2.结构化的设计方法(1)功能模块划分设计(2)面向数据流设计(3)输入/输出设计223模块划分的设计功能模块划分设计系统管理图书管理读者管理224面向数据流设计变换型数据流设计225面向数据流设计事务型数据流226输入/输出设计输入/处理/输出设计227结构化的软件设计3.运行环境设计

硬件平台CPU硬盘内存软件平台操作系统数据库228任务3面向对象设计面向对象的的设计方法系统行为−图书管理系统的用例图对象交互−图书管理系统的交互图对象行为−图书管理系统的状态图229

面向对象的软件设计230

面向对象的软件设计是一种新的程序设计范型是一种运用对象、类、继承、封装、聚合、消息传送、多态性等概念来构造系统的软件开发方法231面向对象方法主要思想从现实世界中存在的事物出发建立软件系统以问题域(现实世界)中的事物为中心来思考问题、认识问题根据这些事物的本质特征,抽象地表示为系统中的对象使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌充分运用人类日常的思维方式232面向对象方法主要思想从现实世界中存在的事物出发建立软件系统充分运用人类日常的思维方式运用人类在日常的逻辑思维中采用的思想方法与原则,例如抽象、分类、继承、聚合、封装等软件开发者能更有效地思考问题,其他人能看得懂的方式把自己的认识表达出来233面向对象开发方法的开发过程面向对象分析面向对象设计面向对象编程234软件开发全过程运用面向对象方法面向对象语言正取得令人振奋的发展编程并不是软件开发问题的主要根源需求分析与设计问题更为普遍并且更值得解决适合于解决分析与设计期间的复杂性实现分析与设计的复用在软件生命周期采用一种全新的方法——《软件工程百科全书》235面向对象方法对象:属性+服务(独立的系统单位)尽可能隐蔽对象的内部细节售报亭属性服务报刊A报刊B…钱箱报刊零售款货清点顾客236面向过程与面向对象的区别数据结构+算法=程序设计以对象为中心组织数据与操作数据对象的属性操作对象的服务类型与变量类与对象实例函数(过程)调用消息传送类型与子类型一般类与特殊类,继承构造类型整体-部分结构,聚合指针关联237

面向对象的软件设计1.面向对象的的设计方法设计特点:抽象性信息隐藏性功能独立性模块化设计步骤:识别对象确定属性定义操作确定对象之间的通信完成对象定义2381识别对象—例子家庭安全系统--潜在的对象房主传感器安全系统控制板监控服务……….2391识别对象对系统进行描述对描述进行语法分析找出名词或者名词短语根据这些名词或者名词短语确定对象对象可以是240关键抽象在线拍卖拍卖和拍卖物项信用卡竞拍

分类

用户帐户和未付款项关键抽象业务实体

实体之间的关系例:一个拍卖就含多个拍卖物项241是系统范围上的重要概念主要从需求中得到(例如词汇表、业务规约以及用例模型)会涉及到业务领域知识表现为系统的实体关键抽象强调与系统设计有关的实体排除系统外部多余的实体最后,关键抽象成为分析模型中的类

2422确定属性找出对象的一组有意义的属性研究系统描述,选择与对象相关联的信息例:“家庭安全系统”的属性传感器信息=传感器类型+传感器编号+警报临界值报警响应信息=延迟时间+电话号码+警报类型起动/撤销信息=主口令+允许尝试的次数+暂时口令标识信息=系统表示号+验证电话号码+系统状态2433定义操作研究系统的需求描述进行语法分析,隔离出动词选择与对象相联关的动词(操作)选择属于对象的操作(方法)

例:“家庭安全系统”“传感器被赋予一个编号和类型”“设置一个主口令使系统处于警报状态或警报解除状态”。2444确定对象之间的通信仅定义对象不够对象之间必须建立一种通信机制,即消息作用:要求一个对象执行某个操作就要向它发送一个消息告诉对象做什么245完成对象定义SecuritySystemIDVerificationphonenumberSystemstatusSystemtableSensortypeSensornumberAlarmthresholdAlarmdelaytimeTelephonenumberAlarmtypeMasterpasswordTemporarypassword

ProgramDisplayResetQueryModifyCall

类名属性操作246

面向对象的软件设计247

面向对象的软件设计2.系统行为−图书管理系统的用例图(1)用例、参与者以及场景(2)用例和参与者关系以及用例之间的关系关联关系248

面向对象的软件设计2.系统行为−图书管理系统的用例图(1)用例、参与者以及场景(2)用例和参与者关系以及用例之间的关系包含关系一个用例包含另一个用例的行为249

面向对象的软件设计2.系统行为−图书管理系统的用例图(1)用例、参与者以及场景(2)用例和参与者关系以及用例之间的关系扩展关系基础用例的增量扩展250

面向对象的软件设计2.系统行为−图书管理系统的用例图(1)用例、参与者以及场景(2)用例和参与者关系以及用例之间的关系泛化关系子用例是父用例的特例251图书管理系统的用例图252图书管理系统的用例图253图书管理系统的用例图254

面向对象的软件设计3.对象交互−图书管理系统的交互图(1)顺序图的基本构成255

面向对象的软件设计3.对象交互−图书管理系统的交互图(1)顺序图的基本构成(2)如何开发顺序图确定所有与场景有关的对象和参与者确定完成场景的消息将消息排序,放在合适的参与者和对象上,标示对象生命线256图书馆管理系统中的顺序图257图书馆管理系统中的顺序图258图书馆管理系统中的协作图259图书馆管理系统中的协作图260图书馆管理系统中的协作图261图书馆管理系统中的协作图262

面向对象的软件设计4.对象行为−图书管理系统的状态图(1)对象状态和状态转换263

面向对象的软件设计4.对象行为−图书管理系统的状态图(2)如何开发状态图选择状态复杂的关键类辨识类的所有状态从初始状态开始,按转换顺序联接状态,到终止状态标示转换消息264图书馆管理系统的状态图265图书馆管理系统的状态图266小结系统总体(概要)设计面向结构化设计面向对象设计案例:图书馆管理系统以面向对象设计方法运用UML建模语言描述了系统设计的过程267项目六软件项目详细设计

268项目六主要任务1.系统详细设计的基本内容2.图书管理系统的详细设计269系统详细设计1.系统详细设计的基本内容详细设计概述详细设计的基本任务详细设计方法2.图书管理系统的详细设计系统包图类的类型以及类之间的关系图书馆管理系统的类图设计类图的开发270项目六主要任务3.用户界面设计用户界面设计应具有的特点用户界面设计的基本类型和基本原则图书馆管理系统的界面设计271系统详细设计的基本内容1.详细设计概述表达过程规格说明的工具叫做详细设计工具,它可以分为如下三类。(1)图形工具把过程的细节用图形方式描述出来。(2)表格工具用一张表来表达过程细节,这张表列出了各种可能的操作及其相应条件,也就是描述了输入、处理和输出信息。(3)语言工具用某种高级语言(伪码)来描述过程细节。272系统详细设计的基本内容2.详细设计的基本任务详细设计过程中需要完成的工作主要是确定软件各个组成部分的算法以及各部分的内部数据结构和确定各个组成部分的逻辑过程,此外,还要做以下工作。(1)处理方式的设计(2)物理设计(3)可靠性设计(4)其他设计(5)编写详细设计说明书(6)详细设计的评审273系统详细设计的基本内容3.详细设计方法(1)传统的详细设计方法图形符号的设计方式流程图(Flowchart)是用图形化的方式,表示程序中一系列的操作以及执行的顺序。表格的设计方式在很多的软件应用中,一个模块需要对一些条件和基于这些条件下的任务进行一个复杂的组合。而决策表(DecisionTable)提供了将条件以及其相关的任务组合为表格的一种表达方式。程序设计语言程序设计语言(ProgramDesignLanguage)也称为伪代码,它使用结构化编程语言的风格描述程序算法,但不遵循特定编程语言的语法,程序设计语言允许用户在此代码更高的层次上进行设计,通常省略与算法无关的细节。274系统详细设计的基本内容(2)面向对象的详细设计算法和数据结构的设计算法是设计对象中每个方法的实现规格,当方法(操作)比较复杂的时候,算法实现可能需要模块化。数据结构的设计与算法是同时进行的,因为这个方法(操作)要对类的属性进行处理。方法(操作)对数据进行的处理有很多类,主要包括三类:对数据的维护操作(如增、删、改等);对数据进行计算;监控对象事件。模块和接口决定软件设计质量非常重要的一个方面是模块,所有模块最后组成了一个完整的程序。其中复杂的部分也可以进行再模块化,同时我们还要定义对象之间的接口和对象的总结构。模块和接口设计应当用类似编程语言的方式表达出来。

275图书管理系统的详细设计1.系统包图包图是一个高层图在概念上它与结构化方法的系统流程图很相似。包图的目标是标识一个完整系统的主要部分。在一个大的系统中,通常要把许多系统分成很多子系统,每个子系统的功能相互之间都是独立的。2.类的类型以及类之间的关系(1)类的类型在面向对象的系统中,对象分为三类:实体类、边界类和控制类。通过这些对象的合作来实现用例。(2)类之间的关系276图书管理系统的详细设计3.图书馆管理系统的类图4.设计类图的开发(1)决定需要设计的类(2)找到属于这个类的所有方法(3)详细描述带有逻辑的方法277

用户界面设计1.用户界面设计应具有的特点(1)可使用性使用的简单性用户界面中的术语标准化和一致性拥有HTML帮助功能速的系统响应和低的系统成本用户界面应具有容错能力、错误诊断功能(2)灵活性

算法的可隐可显性用户可以根据需要制定和修改界面形式系统能够按照用户的希望和需求,提供不同详细程度的系统响应信息与其他软件系统一样应有标准的界面

278用户界面设计(3)复杂性与可靠性用户界面的规模和组织的复杂程度就是界面的复杂性用户界面的可靠性是指无故障使用的间隔时间2.用户界面设计的基本类型和基本原则(1)用户界面设计的基本类型(2)用户界面设计的基本原则(3)用户界面设计的基本方法(4)继续做原型(5)设计用户界面类(6)依据现有图形用户界面进行设计

279用户界面设计3.图书馆管理系统的界面设计(1)用户登录界面设计(2)图书馆管理系统主界面设计(3)修改图书记录界面设计(4)修改学生记录界面设计(5)生成预约图书报表界面设计(6)生成催还图书报表界面设计(7)修改密码设置界面设计(8)图书服务系统主界面设计(9)查询/借阅/预约图书界面设计(10)查询个人借阅信息和归还已借阅图书界面设计280小结项目6讲述了详细设计的基本任务及详细设计的结构化方法及面向对象方法,根据面向对方法给出了图书馆管理系统的类的设计、图书馆管理系统的界面设计等。完成图书馆管理系统详细的整个过程。281项目七软件项目实现282项目七主要任务面向对象程序语言的概念和特点程序语言的分类程序复杂度算法283结构化程序设计结构化程序设计的原则1.自顶向下2.逐步求精3.模块化4.限制使用goto语句结构化程序设计的原则

284结构化程序设计结构化程序的基本结构与特点顺序结构是一种简单的程序设计,它是最基本、最常用的结构。顺序结构就是按照程序语句行的自然顺序,一条语句一条语句地执行程序。选择结构又称为分支结构,它包括简单分支结构和多分支结构,这种结构可以根据设定的条件,判断应该选择执行哪一条分支的语句序列。循环结构。它根据给定的条件,判断是否需要重复执行同一相同的程序段,利用循环结构可以简化大量的程序行。在程序设计语言中,循环结构对应两类循环语句,对先判断后执行循环体的称为“当”型循环结构;对先执行循环体后判断的称为“直到”型循环结构。

结构化程序的基本结构与特点

285结构化程序设计在结构化程序设计的具体实施中,要注意把握以下原则和方法1.使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑。2.选用的控制结构只允许有一个入口和一个出口。3.程序语句组成容易识别的语句序列块,每块只允许有一个入口和一个出口。4.复杂结构的程序设计时,仅用嵌套的基本控制结构进行组合嵌套来实现。5.严格控制GOTO语句的使用。

结构化程序设计原则和方法

286面向对象程序设计287面向对象程序设计1.抽象即去掉与主题无关的次要部分,而仅仅抽象取出与工作有关的实质的内容加以研究。计算机技术常用的抽象分为过程抽象与数据抽象。(1)过程抽象。将整个系统的功能划分成为若干部分,强调功能完成的过程和步骤。面向过程的程序设计就采用这种方法。(2)数据抽象。与过程抽象不同的抽象方法,它把系统中需要处理的数据和这些数据的的操作结合在一起,根据功能、性质、作用等因素抽象成不同的抽象数据类型,每个数据类型即包括了数据,又包括了针对这些数据的操作。数据抽象和封装

288面向对象程序设计2.封装就是利用抽象数据类型将数据和基于数据的操作封装在一起,数据被保护在抽象数据类型的内部,系统的其它部分只有通过封装在数据外部的被授权的操作,才能够与这个抽象数据类型进行交流。

在面向对象编程(OOP)中,抽象数据类型是利用类这种结构来实现的,每个类里面封装了相关的数据和操作。在实际的开发过程中,类用来构建系统内部的模块,由于封装性把类内的数据保护得很好,模块与模块间仅仅通过严格控制的界面进行交互,使它们之间的耦合和交叉大大减少,从而降低了开发过程的复杂性,提高效率和质量,减少了可能的错误,同时也保证了程序中数据的完整性和安全性。

数据抽象和封装

289面向对象程序设计继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为”子类”或”派生类”。被继承的类称为“基类”、“父类”或”超类”。继承的过程,就是从一般到特殊的过程。继承概念的实现方式有三类:实现继承、接口继承和可视继承。实现继承是指使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。继承290代码这样来产生多态

291面向对象程序设计多态性(Polymorphisn)是允许你将父对象设置成为一个或更多的他的子对象的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。实现多态,有二种方式,覆盖,重载。1.覆盖覆盖是指子类重新定义父类的函数的做法。2.重载重载是指允许存在多个同名函数,而这些函数的参数表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)。

多态

292程序设计语言程序设计语言通常简称为编程语言,是一组用来定义计算机程序的语法规则。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。程序设计语言原本是被设计成专门使用在计算机上的,但它们也可以用来定义算法或者数据结构。正是因为如此,程序员才试图使程序代码更容易阅读。程序设计语言

293程序设计语言从发展历程来看,程序设计语言可以分为4代。1.第一代语言(机器语言)

2.第二代语言(汇编语言)3.第三代语言(高级语言)高级语言是面向用户的、基本上独立于计算机种类和结构的语言。4.第四代语言(简称4GL)4GL是非过程化语言,编码时只需说明“做什么”,不需描述算法细节。数据库查询和应用程序生成器是4GL的两个典型应用。程序设计语言分类294程序复杂度一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))随着模块n的增大,算法执行的时间的增长率和f(n)的增长率成正比,所以f(n)越小,算法的时间复杂度越低,算法的效率越高。在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数,再找出T(n)的同数量级(它的同数量级有以下:1,Log2n,n,nLog2n,n的平方,n的三次方,2的n次方,n!),找出后,f(n)=该数量级,若T(n)/f(n)求极限可得到一常数c,则时间复杂度T(n)=O(f(n))时间复杂度

295程序复杂度空间复杂度是程序运行所以需要的额外消耗存储空间,也用O()来表示。算法中基本操作的执行次数一般是与问题规模有关的。对于结点个数为n的数据处理问题,用T(n)表示算法中基本操作的执行次数。在评价算法的时间复杂性时,不考虑两算法执行次数之间的细小区别,而只关心算法的本质差别。为此,引入一个所谓的O()号,则T1(n)=2n=O(n),T2(n)=n+1=O(n)。一个函数f(n)是O(g(n))的,则一定存在正常数c和m,使对所有的n>m,都满足f(n)<c*g(n)。空间复杂度

296项目八软件测试297项目八主要任务了解软件测试的目的和原则。了解软件错误的分类。理解软件测试的过程和策略。掌握程序静态测试的方法。了解程序调试的概念。掌握软件测试中的可靠性分析方法298软件测试基础什么是软件测试

299软件测试基础软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序错误的过程。软件测试在软件生命周期中横跨两个阶段:通常在编写出每一个模块之后就对它做必要的测试(称为单元测试)。模块的编写者与测试者是同一个人。编码与单元测试属于软件生命周期中的同一个阶段。在这个阶段结束之后,对软件系统还要进行各种综合测试,这是软件生命周期的另一个独立的阶段,即测试阶段,通常由专门的测试人员承担这项工作。什么是软件测试

300软件测试基础1.软件测试的目的GrenfordJ.Myers就软件测试目的提出以下观点:(1)测试是程序的执行过程,目的在于发现错误;(2)一个好的测试用例在于能发现至今未发现的错误;(3)一个成功的测试是发现了至今未发现的错误的测试。设计测试的目标是以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。如果我们成功地实施了测试,就能够发现软件中的错误。测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。此外,实施测试收集到的测试结果数据为可靠性分析提供了依据软件测试的目的和原则

301软件测试基础2.软件测试的原则(1)应当把“尽早地和不断地进行软件测试”作为软件开发者的座右铭。(2)测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成。(3)程序员应避免检查自己的程序。(4)在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。(5)充分注意测试中的群集现象。(6)严格执行测试计划,排除测试的随意性。(7)应当对每一个测试结果做全面检查。(8)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。软件测试的目的和原则

302软件测试基础1.按错误的影响和后果分类(1)较小错误(2)中等错误(3)较严重错误(4)严重错误(5)非常严重的错误(6)最严重的错误程序错误分类

303软件测试基础2.按错误的性质和范围分类(1)功能错误(2)系统错误(3)加工错误(4)数据错误(5)代码错误程序错误分类

304软件测试方法1.黑盒测试根据软件产品的功能设计规格,在计算机上进行测试,以证实每个实现了的功能是否符合要求。这种测试方法就是黑盒测试。2.白盒测试根据软件产品的内部工作过程,在计算机上进行测试,以证实每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。这种测试方法就是白盒测试。

黑盒测试和白盒测试

305软件测试方法测试过程按4个步骤进行,即单元测试、组装测试、确认测试和系统测试。单元测试集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。然后进行集成测试,根据设计规定的软件体系结构,把已测试过的模块组装起来。在组装过程中,检查程序结构组装的正确性。确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。最后是系统测试,把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。软件测试步骤

306面向对象软件测试面向对象程序是把功能的实现分布在类中。能正确实现功能的类,通过消息传递来协同实现设计要求的功能。正是这种面向对象程序风格,能够将出现的错误能精确定位在某一具体的类。因此,在面向对象编程(OOP)阶段,忽略类功能实现的细则,将测试集中在类功能的实现和相应的面向对象程序,主要体现在两个方面:1.数据成员是否满足数据封装的要求2.类是否实现了要求的功能

面向对象软件测试定义

307面向对象软件测试测试计划主要包含以下内容:测试范围、测试策略

、测试类型、测试工具、测试资源、异常事项的处理等制定测试计划注意以下几点:1、计划宁可时间多一些,也不要少2、测试计划要根据具体情况来确定3、计划随着工作的开展进行修改4、要按照计划来执行测试计划

308面向对象软件测试1.面向对象的单元测试面向对象单元测试主要考虑两个方面的问题:

(1)继承的成员函数是否需要测试(2)对父类的测试是否能照搬到子类2.面向对象集成测试面向对象的集成测试能够检测出相对独立的单元测试无法检测出、类相互作用才会产生的错误。基于单元测试对成员函数行为正确性的保证,集成测试只关注于系统的结构和内部的相互作用。面向对象的集成测试可以分成两步进行:先进行静态测试,再进行动态测试。面向对象的测试

309面向对象软件测试3.面向对象的系统测试系统测试是对测试步骤的抽象描述,它体现的具体测试内容包括:(1)功能测试(2)强度测试(3)性能测试(4)安全测试(5)恢复测试(6)可用性测试面向对象的测试

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论