1、电子教案制作人员邬 天 菊贾 长 云朱 敏 本书为配合国家技能型紧缺人才培养培训工程并根据计算机应用和软件专业领域技能型紧缺人才培养培训指导方案的要求而编写。本书针对职业院校学生的特点,充分体现指导方案中素质为基础、能力为本位、需求为依据、就业为导向的基本原则,教学内容注重选择当前软件工程中的一些新理论、新方法与新技术,通过一个小型软件项目为案例贯穿全书,使学生在学完后能基本掌握软件工程的基本理论与方法在软件项目开发中的实际应用。其主要内容涉及软件工程中的软件策划、需求分析、软件设计、编码实现、软件测试及实施与维护等方面的内容,考虑职业院校学生的就业定位,重点侧重于详细设计、软件编码、软件测试
2、、软件维护这几个方面的基本知识与技能。为保持教学内容的先进性同时便于对教学进行科学灵活的组织,对诸如UML方法、面向对象的分析、设计与编程、面向对象软件测试、CMM等也作了介绍。本书可以作为职业院校计算机类专业的软件工程课程的教材或教学参考书,也可作为IT行业程序员、测试员、维护员等的培训教材或参考书。主要内容主要内容第第1章章 软件工程概述软件工程概述第第2章章 系统策划系统策划第第3章章 需求分析需求分析第第4章章 软件设计软件设计第第5章章 编码编码第第6章章 软件测试软件测试第第7章章 软件实施与维护软件实施与维护第第8章章 软件项目管理软件项目管理第第9章章 软件过程管理软件过程管理
3、第一章 软件工程概述本章主要内容本章主要内容1.1 软件与软件工程软件与软件工程1.2 软件生存周期与开发模型软件生存周期与开发模型1.3 软件工程过程软件工程过程1.4 软件开发工具简介软件开发工具简介1.5 学习指南学习指南11 11 软件及软件工程软件及软件工程软件软件软件的定义软件的定义v在运行中能提供所希望的功能与性能的程序在运行中能提供所希望的功能与性能的程序 v使程序能够正确运行的数据及其结构使程序能够正确运行的数据及其结构v描述软件研制过程和方法所用的文档描述软件研制过程和方法所用的文档 软件的特点软件的特点v软件角色的双重性软件角色的双重性 v软件不是传统意义上的被制造软件不
4、是传统意义上的被制造 v软件不会软件不会“磨损磨损”,但会退化,但会退化 v软件都是手工定制的软件都是手工定制的 v开发过程的复杂与费用的昂贵开发过程的复杂与费用的昂贵 11 11 软件及软件工程软件及软件工程软件软件软件的分类软件的分类分类方法分类方法软件类型软件类型按功能按功能(1)(1)系统软件系统软件(2)(2)支撑软件支撑软件(3)(3)应用软件应用软件按版权按版权(1)(1)商业软件商业软件(2)(2)共享软件共享软件(3)(3)自由自由(免费免费)软件软件(4)(4)公有领域软件公有领域软件按工作方式按工作方式(1)(1)实时软件实时软件(2)(2)分时软件分时软件(3)(3)交
5、互式软件交互式软件(4)(4)批处理软件批处理软件按销售方式按销售方式(1)(1)订制软件订制软件(2)(2)产品软件产品软件11 11 软件及软件工程软件及软件工程软件工程软件工程软件危机软件危机v软件开发的生产率远远不能满足客观需要软件开发的生产率远远不能满足客观需要 v开发的软件产品往往不能满足用户的实际需要开发的软件产品往往不能满足用户的实际需要 v软件产品的质量低下且可维护性差软件产品的质量低下且可维护性差 v很难估计软件开发的进度计划与成本很难估计软件开发的进度计划与成本 软件神话软件神话v有了软件开发书籍,就可以解决软件开发中的一切问题有了软件开发书籍,就可以解决软件开发中的一切
6、问题v进度滞后了?好,增加程序员进度滞后了?好,增加程序员v只要程序正确,项目就成功,文档可有可无只要程序正确,项目就成功,文档可有可无v软件质量只能在正式投入运行后才知道软件质量只能在正式投入运行后才知道11 11 软件及软件工程软件及软件工程软件工程软件工程软件工程的定义软件工程的定义vIEEEIEEE定义:定义:软件工程是将系统化的、严格约束的、可软件工程是将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件。化应用于软件。v通俗地说,软件工程是指导软件开发和维护的一门工通俗地说,软件工程是指导软件开发和维
7、护的一门工程学科。它采用工程的概念、原理、技术和方法,把经程学科。它采用工程的概念、原理、技术和方法,把经过时间检验而证明是正确的管理技术和当前能够得到的过时间检验而证明是正确的管理技术和当前能够得到的最好的技术方法结合起来,用于开发和维护软件。最好的技术方法结合起来,用于开发和维护软件。质量焦点质量焦点11 11 软件及软件工程软件及软件工程软件工程软件工程软件工程软件工程层次化技术层次化技术过程过程方法方法软件工程软件工程三个要素:三个要素:方法、工具、过程方法、工具、过程工具工具11 11 软件及软件工程软件及软件工程软件工程软件工程软件工程的作用软件工程的作用v【成功案例】美国联邦速递
8、公司【成功案例】美国联邦速递公司(FedEX)的管理信息系统的管理信息系统 v【失败案例】英国伦敦的急救服务管理信息系统【失败案例】英国伦敦的急救服务管理信息系统 软件工程的基本原理软件工程的基本原理v用分阶段的生存周期计划严格管理用分阶段的生存周期计划严格管理 v坚持进行阶段评审坚持进行阶段评审 v实行严格的产品控制实行严格的产品控制 v采用现代程序设计技术采用现代程序设计技术 v结果应能清楚地审查结果应能清楚地审查 v开发小组的人员应该少而精开发小组的人员应该少而精 v承认不断改进软件工程实践的必要性承认不断改进软件工程实践的必要性 80:20原则12 12 软件生存周期与开发模型软件生存
9、周期与开发模型生存周期生存周期软件生存周期软件生存周期v人的生存周期人的生存周期婴儿婴儿幼儿幼儿儿童儿童少年少年青年青年中年中年老年老年死亡死亡 v软件的生存周期软件的生存周期软件定义软件定义软件开发软件开发软件支持软件支持问题定义问题定义可行性分析可行性分析需求分析需求分析概要设计概要设计详细设计详细设计编编 码码测测 试试软件发布软件发布软件运行软件运行维护或退役维护或退役12 12 软件生存周期与开发模型软件生存周期与开发模型生存周期生存周期软件定义阶段软件定义阶段v问题定义问题定义v可行性分析可行性分析v立项或签订合同立项或签订合同软件开发阶段软件开发阶段v需求分析需求分析v软件设计软
10、件设计v编码与测试编码与测试v 发布或安装验收发布或安装验收软件开发阶段软件开发阶段v软件的使用、运行软件的使用、运行v软件维护软件维护12 12 软件生存周期与开发模型软件生存周期与开发模型开发模型开发模型问题的提出问题的提出软件工程需要解决什么问题?软件工程需要解决什么问题?软件开发模型软件开发模型v做什么软件?做什么软件?v怎么做软件?怎么做软件?v软件如何适应变化?软件如何适应变化?v软件开发过程概括,是软件工程思想的具体化软件开发过程概括,是软件工程思想的具体化v它是跨越整个软件生存周期的各个阶段所需要的全部它是跨越整个软件生存周期的各个阶段所需要的全部工作与任务的结构框架工作与任务
11、的结构框架 12 12 软件生存周期与开发模型软件生存周期与开发模型开发模型开发模型瀑布模型瀑布模型线性顺序模型线性顺序模型可行性分析可行性分析需求分析需求分析设设 计计编编 码码测测 试试支支 持持定义阶段定义阶段开发阶段开发阶段支持阶段支持阶段12 12 软件生存周期与开发模型软件生存周期与开发模型开发模型开发模型瀑布模型的特点:瀑布模型的特点:瀑布模型的应用范围瀑布模型的应用范围v阶段间具有顺序性和依赖性阶段间具有顺序性和依赖性v每个阶段必须完成规定的文档每个阶段必须完成规定的文档;每个阶段结束前完成文每个阶段结束前完成文档审查档审查,及早改正错误及早改正错误,但:但:开发过程一般不能逆
12、转,否则代价太大。开发过程一般不能逆转,否则代价太大。实际的项目开发很难严格按该模型进行。实际的项目开发很难严格按该模型进行。客户往往很难清楚地给出所有的需求,而该模型却要求如此。客户往往很难清楚地给出所有的需求,而该模型却要求如此。软件的实际情况必须到项目开发的后期客户才能看到,这要软件的实际情况必须到项目开发的后期客户才能看到,这要求客户有足够的耐心求客户有足够的耐心。v用户的需求非常清楚全面,且在开发过程中没有或很用户的需求非常清楚全面,且在开发过程中没有或很少变化少变化 v开发人员对软件的应用领域很熟悉。开发人员对软件的应用领域很熟悉。v用户的使用环境非常稳定。用户的使用环境非常稳定。
13、v开发工作对用户参与的要求很低开发工作对用户参与的要求很低 12 12 软件生存周期与开发模型软件生存周期与开发模型开发模型开发模型原型模型原型模型用户测试用户测试运行原型运行原型建造建造/修改修改 原型原型 听取用听取用 户意见户意见12 12 软件生存周期与开发模型软件生存周期与开发模型开发模型开发模型原型模型的特点:原型模型的特点:原型模型的应用范围原型模型的应用范围v可以得到比较良好的需求定义,容易适应需求的变化。可以得到比较良好的需求定义,容易适应需求的变化。v有利于开发与培训的同步。有利于开发与培训的同步。v开发费用低、开发周期短、维护容易且对用户更友好。开发费用低、开发周期短、维
14、护容易且对用户更友好。客户与开发者对原型理解不同客户与开发者对原型理解不同准确的原型设计比较困难准确的原型设计比较困难不利于开发人员的创新不利于开发人员的创新v对所开发的领域比较熟悉而且有快速的原型开发工具对所开发的领域比较熟悉而且有快速的原型开发工具v项目招投标时,可以以原型模型作为软件的开发模型项目招投标时,可以以原型模型作为软件的开发模型v进行产品移植或升级时,或对已有产品原型进行客户进行产品移植或升级时,或对已有产品原型进行客户化工作时,原型模型是非常适合的。化工作时,原型模型是非常适合的。12 12 软件生存周期与开发模型软件生存周期与开发模型开发模型开发模型基于构件的开发模型基于构
15、件的开发模型特点:特点:v属于演化式开发或迭代式开发,其开发过程:属于演化式开发或迭代式开发,其开发过程:客户的交流,获得问题的定义客户的交流,获得问题的定义标识基本类标识基本类计划与风险分析计划与风险分析类的复用或重新开发类的复用或重新开发构造系统构造系统用户评估用户评估v采用了先进的面向对象技术。采用了先进的面向对象技术。v基于构件库的开发,这是软件复用的基础,开发速度基于构件库的开发,这是软件复用的基础,开发速度快。快。v 融合了螺旋模型特征融合了螺旋模型特征v支持软件开发的迭代方法,是一种演化型的开发技术。支持软件开发的迭代方法,是一种演化型的开发技术。13 13 软件工程过程软件工程
16、过程软件工程过程的概念软件工程过程的概念ISO9000v过程:软件工程的三要素之一过程:软件工程的三要素之一v从开发到维护软件相关产品所采取一系列管理活动。从开发到维护软件相关产品所采取一系列管理活动。主要包括项目管理、配置管理、质量管理、文档管理等。主要包括项目管理、配置管理、质量管理、文档管理等。vIS09001:设计、开发、生产、安装和服务的质量保证设计、开发、生产、安装和服务的质量保证模式模式 vIS09002:生产、安装和服务的质量保证模式:生产、安装和服务的质量保证模式 vIS09003:最终检验和试验的质量保证模式。最终检验和试验的质量保证模式。13 13 软件工程过程软件工程过
17、程CMMCMM软件能力成熟度模型软件能力成熟度模型 vCMM(Capability Maturity Model)CMM(Capability Maturity Model)CMM的级别初始级初始级InitialInitial可重复级可重复级RepeatableRepeatable已定义级已定义级DefinedDefined已管理级已管理级ManagedManaged优化级优化级OptimizingOptimizing开发工具的作用与功能开发工具的作用与功能14 14 软件开发工具简介软件开发工具简介CASECASE工具工具计算机辅助软件工程 CASE作用认识与描述系统需求 保存与管理开发过程
18、中的信息 代码的生成 文档的编制与生成 软件项目的管理 开发工具的分类开发工具的分类14 14 软件开发工具简介软件开发工具简介CASECASE工具工具分类方法按应用阶段划分 按功能划分设计工具分析工具项目管理软件配置质量保证分析设计计划工具界面开发客户服务器Web开发IBM RationalIBM Rational工具工具14 14 软件开发工具简介软件开发工具简介常用常用CASECASE工具工具 Rational公司是专门从事CASE工具研制与开发的软件公司,2003年被IBM公司收购。该公司所研发的Rational系列软件是完整的CASE集成工具,贯穿从需求分析到软件维护的整个软件生存周
19、期。需求分析与设计工具产品主要构成测试工具软件配置管理工具Rose PurifyPlus Robot ClearCase 北大青鸟工具北大青鸟工具14 14 软件开发工具简介软件开发工具简介常用常用CASECASE工具工具 北大青鸟系列CASE工具北京北大青鸟软件有限公司开发研制的,在国内有较高的知名度,北京大学软件工程国家工程研究中心就设在该公司。产品主要构成面向对象软件开发工具集 JBOO 构件库管理系统 JBCLMS 项目管理与质量保证 JBCM JBPM JBCCM 软件测试系统 Safepro 微软版本管理器微软版本管理器VSSVSS14 14 软件开发工具简介软件开发工具简介常用常
20、用CASECASE工具工具版本管理是软件配置管理中的核心工作,由Microsoft公司开发的Visual SourceSafe 6.0使用非常广泛而且很容易获得。文件检入与检出 产品主要功能版本控制 文件的拆分与共享 权限管理 本书案例介绍本书案例介绍教师教学网络测评系统教师教学网络测评系统 15 15 学习指南学习指南学习案例学习案例 为实现教学质量的量化考核,借此评价教师的教学水平并有针对性的提高教学质量,某高校开发了基于校园网的教学质量网上测评系统四大功能模块数据采集模块,学生对一个学期中所学课程的各任课教师的教学水平及师德两个方面给予的百分制评价分值数据统计模块,根据教务处规定的统计方
21、法统计出每位任课教师在一个学期中的教学水平及师德的最终测评得分。数据查询模块,查询全校任课教师的最终得分及名次,还能够查询各个班级的学生对任课教师的教学水平及师德的评分情况。辅助功能模块,包括基础数据的管理、测评类型的管理等。本书案例介绍本书案例介绍教师教学网络测评系统教师教学网络测评系统 15 15 学习指南学习指南学习案例学习案例系统运行界面浏览器端:本书案例介绍本书案例介绍教师教学网络测评系统教师教学网络测评系统 15 15 学习指南学习指南学习案例学习案例系统运行界面服务器端:第二章系 统 策 划这个项目是做还是不做呢?还是先去做一下市场调研或与客户谈谈签约的事吧!2.1可行性研究2.
22、2 软件项目计划本章主本章主 要内容要内容21可行性研究可行性研究-问题的定义问题的定义 问题定义 确定软件开发项目必须完成的目标。其关键问题是:“要解决什要解决什么问题么问题?”含义主要内容问题的背景、总体要求与目标、类型范围、功能规模、实现目标的方案、开发的条件、环境要求等问题定义报告应包括内容 项目名称 使用方 对问题的概括定义 项目的目标 项目的规模 21可行性研究可行性研究-问题的定义问题的定义 案例分析 某校在校生近某校在校生近5000人,每学期在期中都要进行一人,每学期在期中都要进行一次对教师的教学质量测评,要求所有学生都要参加。次对教师的教学质量测评,要求所有学生都要参加。以前
23、测评的方式都是手工操作,由教务处发出书面问以前测评的方式都是手工操作,由教务处发出书面问卷调查表,每个同学填写完成后交回到教务处。然后卷调查表,每个同学填写完成后交回到教务处。然后教务处再使用手工的方法对问卷进行统计汇总,最后教务处再使用手工的方法对问卷进行统计汇总,最后得出学生对每一位教师的总体评价。这种方法一方面得出学生对每一位教师的总体评价。这种方法一方面浪费了大量的财力、人力,另一方面统计繁琐且容易浪费了大量的财力、人力,另一方面统计繁琐且容易出错。考虑到现在学校校园网已经建成,为节省开支,出错。考虑到现在学校校园网已经建成,为节省开支,提高效率,学校决定委托计算机系开发一套基于校园提
24、高效率,学校决定委托计算机系开发一套基于校园网的网的教师教学网络测评系统教师教学网络测评系统 1、问题的提出21可行性研究可行性研究-问题的定义问题的定义 案例分析2、问题分析 系统分析人员经过与学校教务部门及各相关单位进行充分的调查后,了解了该项目的一些背景资料与基本要求。教师测评分两大部分,一是师德测评;二是教学质量测评。师德测评有4项指标,教学质量测评有14项指标。系统要实现的目标是:所有学生在指定时间内在指定机房的计算机上完成对任课教师的测评打分,测评过程全部采用选择的方法,不需要输入任何信息 所有的测评数据保存在学校中心服务器上,有较为严格的安全措施 系统能对所有的数据进行统计汇总,
25、得出每一位教师的测评结果,并能进行排序、输出。系统开发的大体费用在1.2万元左右,开发周期大约6个人月。21可行性研究可行性研究-问题的定义问题的定义 案例分析3 3、系统定义报告、系统定义报告 根据以上分析,形成如下的系统定义报告。案例文档之一案例文档之一系统定义报告系统定义报告用户单位:XX学校教务处 负责人:XXX开发单位:XX学校计算机系 分析员:XXX项目名称:基于校园网的教学质量测评系统问题概述:教师教学质量测评每学期必须进行一次,原有的手工方法存在资源浪费、效率极低、结果不准确等问题。(其它的相关说明)项目目标:开发一个效率高且相对通用的教师教学网络测评系统。项目规模:开发成本大
26、约1.2万元,开发周期约6个人月。可行性研究:建议进行一周,费用不超过500元。21可行性研究可行性研究-可行性研究的任务与步骤可行性研究的任务与步骤 一、可行性研究的任务 2、经济可行性 3、社会因素的考虑 分析成本收益与短期效益长远利益这两个方面。要作出投资的估算和系统投入运行后可能获得的经济效益或可节约的费用估算。分析利用现有的技术能否实现,能否解决系统中的技术难题,所开发的系统能否达到所要求的功能和性能,系统对技术人员的要求,现有的技术人员能否胜任,开发所需要的软件与硬件能否如期得到等 1、技术可行性 主要考虑的是市场、政策与法律方面的问题 21可行性研究可行性研究-可行性研究的任务与
27、步骤可行性研究的任务与步骤 二、可行性研究的步骤1、重新检查系统定义报告中相关内容,明确对目标系统限制与约束。2、研究目前正在使用的系统,找出其基本功能和所需要的基本信息,绘制系统流程图。3、设想新系统高层逻辑模型,分析归纳现有系统,最后建造新物理系统。4、导出各种实现方案并对方案进行评价 5、推荐可行性方案 6、编写可行性研究报告21可行性研究可行性研究-技术可行性分析技术可行性分析 技术可行性分析 的三个方面 1、在给定的时间内能否实现系统定义中的功能。2、软件的质量如何?如实时性、正确性和精确性。3、软件的生产率如何?高生产率意味着利润。做得了吗?做得好吗?做得快吗?先分析21可行性研究
28、可行性研究-技术可行性分析技术可行性分析 在进行技术可行性分析时,一个重要的内容是对现有系统与拟开发的系统绘制系统流程图。系统流程图中所用的符号与程序设计语言中的程序流程图所用的符号类似。但系统流程图与程序流程图不同,系统流程图表达的是信息在系统中各个部件之间的流动情况,而程序流程图表达的是程序对信息进行加工处理的控制过程 系统流程图21可行性研究可行性研究-技术可行性分析技术可行性分析 符 号名称含 义处理能改变数据或数据位置的加工或部件输 入/输出广义的不指明具体设备的输入与输出连接在同一页上指明转到图的另一部分或从图的另一部分转来换页连接指转到另一页或从另一页转来数据流连接其他符号,指明
29、数据的流动方向文档通常表示打印输出系统流程图中的常用符号 系统流程图中的常用符号 21可行性研究可行性研究-技术可行性分析技术可行性分析 联机 存储任何种类的联机存储磁盘磁盘的输入/输出,也表示存储在磁盘上的数据库或文件人工 输入在脱机情况下人工输入数据,如填写表格人工 操作人工完成的操作,如在表格上的签名通信 链路通过通信链路传送数据测评数据库测评设置测评人员管理人员数据处理数据提交验证验证测评测评结果教师教学网络测评系统流程图 21可行性研究可行性研究-技术可行性分析技术可行性分析 21可行性研究可行性研究-经济可行性分析经济可行性分析 经济可行性分析 1.成本分析 2.收益分析 办公成本
30、 人员成本 资源成本 其它成本 货币的时间价值 纯收入 如果从经济可行性的角度分析得出纯收入小于或等于零的结论,则这个项目是不能投资的 最难准确核算 纯收入=总收入折现-总成本折现 P=F(1+i)-n 称为折现21可行性研究可行性研究-经济可行性分析经济可行性分析 常用成本估算策略1、在项目后期进行估算,即完全精确核算2、基于已经完成的类似项目进行估算 3、使用相对简单的分解技术以生成项目成本及工作量的估算 4、使用一个或多个经验模型进行软件成本及工作量的估算估算 不能选择 比较切实可行 两种常用策略 21可行性研究可行性研究-经济可行性分析经济可行性分析 两种成本估算方法代码行法(LOC)
31、功能点法(FP)每行代码的平均成本乘以程序的行数 采用软件所提供的功能来测量的 21可行性研究可行性研究-案例分析案例分析(可行性研究)(可行性研究)可行性研究最终生成可行性研究报告可行性研究最终生成可行性研究报告案例文档之二案例文档之二可行性研究报告可行性研究报告1引言1.1编写目的本报告分析了教师教学网络测评系统开发的可行性,请院领导审阅并对是否进行该系统的开发做出批示。1.2项目背景建议进行教师教学网络测评系统的开发。(背景介绍略)我院计算机系具备进行该软件系统开发的能力并承担本软件系统的开发与维护工作。该软件系统由我院教务处使用。详见教材22软件项目计划软件项目计划系统定义报告 用户的
32、需求报告 可行性研究报告 项目开发计划及相关的一些专题计划 如:测试计划、质量保证计划、配置管理计划、人员培训计划、系统安装计划 22软件项目计划软件项目计划-软件项目计划的主要内容制订方法软件项目计划的主要内容制订方法 软件项目计划资源计划 软件估算计划 进度安排计划 人力资源 可复用的构件 开发环境 高层管理人员 项目经理 开发人员 客户、最终用户 软件/硬件环境 采用任务分解技术对软件的规模与工作量进行估算,并将总的开发费用分配到开发的各个阶段中 软件规模工作量进度成本进度安排要确定最终的软件交付日期,并在限定的日期内安排和分配工作量;或者在合理复用各种资源分配工作量的基础上确定最终交付
33、日期。其它专题计划 如质量保证计划、配置管理计划、里程碑及评审计划、测试计划等 22软件项目计划软件项目计划-案例分析(软件项目开发计划书)案例分析(软件项目开发计划书)案例文档之三案例文档之三软件项目开发计划书软件项目开发计划书1引言1.1编写目的为保证教师教学网络测评系统的开发成功,按期交付使用,特编写项目开发计划,请参与开发的人员遵照执行。1.2项目背景(略)1.3定义教师教学网络测评系统以下简称测评系统。详见教材第三章 需求分析本章主要内容本章主要内容3.1 需求需求分析概述分析概述3.2 结构结构化分析化分析3.3 面向面向对象分析对象分析3.4 UML概述概述31 31 需求分析概
34、述需求分析概述-需求分析的重要性需求分析的重要性 v需求分析是发现、求精、建模、规格说明和复审的过程;v需求分析是系统设计的基础,关系到程的成败和软件产品的质量。重要性需求获取困难,原因有三一是用户需求的动态性(不稳定性)二是需求的模糊性(不准确性)三是需求必须得到用户的确认,否则毫无意义 31 31 需求分析概述需求分析概述需求分析的任务需求分析的任务 1 1、确定对系统的综合要求:、确定对系统的综合要求:系统界面要求、系统功能要求、系统性能要求、系统界面要求、系统功能要求、系统性能要求、完全性可靠性保密性要求、系统运行要求、异常处理完全性可靠性保密性要求、系统运行要求、异常处理要求、将来可
35、能提出的要求、分析系统的数据要求。要求、将来可能提出的要求、分析系统的数据要求。2 2、分析系统的数据要求、分析系统的数据要求 3 3、异出系统的逻辑模型、异出系统的逻辑模型 4 4、修正项目开发划、修正项目开发划 5 5、开发原型系统、开发原型系统 需求分析任务需求工程需求开发需求管理需求获取需求分析编写需求文档需求确认需求工程层次分解图31 31 需求分析概述需求分析概述-需求分析的过程与方法需求分析的过程与方法 一、需求分析过程一、需求分析过程需求获取用户概要信息业务需求功能需求用户需求非功能性需求可行性报告系统定义报告系统分析员程序员分析调研座谈法调查表法观察法31 31 需求分析概述
36、需求分析概述-需求分析的过程与方法需求分析的过程与方法 需求分析获取数据分析、处理目标逻辑模型需求获取系统分析员从数据流和数据结构出发,找出系统各元素之间的联系、接口特征及设计限制、能否满足功能需求31 31 需求分析概述需求分析概述-需求分析的过程与方法需求分析的过程与方法 系统分析员需求规格说明书编写目标系统的基本描述系统各项需求系统限制及条件系统数据定义 需求分析结果需求文档编写31 31 需求分析概述需求分析概述-需求分析的过程与方法需求分析的过程与方法 评审、验证的四个方面一致性完整性现实性有效性所有需求必须一致,不能前、后和相互矛盾说明书应包括用户需求的每一方面在现有基础上可实现必
37、须证明需求有效,能解决用户提出的问题需求评审与确认31 31 需求分析概述需求分析概述-需求分析的过程与方法需求分析的过程与方法 31 31 需求分析概述需求分析概述-需求分析的过程与方法需求分析的过程与方法 二、需求分析的方法二、需求分析的方法 分析方法结构化分析方法面向对象的分析方法 面向数据的方法,以数据流为中心。其核心概念包括:进程、数据流、数据存储、外部实体、数据组和数据元素。有代表性的模拟工具有:数据流图、数据字典、原始进程规格说明。面向对象分析以对象及其服务作为建模标准,比较自然,对象也具有相对的稳定性。主要模拟的元素有:对象、类、属性、关系、方法、消息传递、用例等。其主要原理包
38、括分类、继承、层次、信息隐藏、汇集关系等。基本思想自顶向下逐层分解结构化分析(Structured Analysis)它是一种面向数据流的需求分析方法,适用分析大型数据处理系统,是一种简单、实用的方法。32 32 结构化分析结构化分析软件系统(S)D1 D2 D3 Dn问题域DiP1P2P3Pn问题PjF1F2F3Fn问题域问题行为(功能)对应于软件子系统对应于子软件的软构件对应于软件子系统32 32 结构化分析结构化分析自顶向下需求分析模型图S=D1,D2,D3,Dn Di=P1,P2,P3,Pm Pj=F1,F2,F3,Fk 概念是描述数据信息的集合,是对系统中所有数据元素定义的集合。包含
39、信息数据、控制项、数据存储或外部实体的主要名称和别名使用数据和对象的列表、使用对象的方式描述数据或控制内容的符号关于数据类型、预置值、限制等其他补充信息32 32 结构化分析结构化分析-数据字典数据字典 一、定义一、定义32 32 结构化分析结构化分析-数据字典数据字典 二、数据项的定义二、数据项的定义数据三种基本类型数据三种基本类型顺序选择循环即以确定次序连接两个或多个分量从两个或多个可能的元素选取一个即把指定的分量重复零次或多次算符意义=等价于或定义为+连接两个分量 或(从方括号内列出的若干个分量中选择一个),用“|”号分开供选择分量 重复(重复花括号内的分量)()可选(圆括号内的分量可有
40、可无)数据字典符号数据字典符号三、数据字典举例三、数据字典举例教师测评系统中教师测评系统中,数据字内部分内容数据字内部分内容测评子项得分=测评子项编号+子项得分学生评测数据=序号+教师姓名+所任课程+测评子项得分以测评子项得分为单位的评测数据记录=学期+被评对象编号+测评类型编号+评测者区别编号+测评子项名称+测评子项所得分值以测评类型得分为单位的评测数据记录=学期+被评对象编号+测评类型编号+评测者区别编号+本测评类型所得分值被评对象各测评类型的得分记录=学期+被评对象编号+测评类型编号+测评类型得分+本测评类型占总分的比率32 32 结构化分析结构化分析-数据字典数据字典 定义数据流变换数
41、据的处理数据存储数据的源/宿32 32 结构化分析结构化分析-数据流图数据流图数据流图(DFD)是一种图形化技术,它描绘信息和数据从输入到输出的过程中所经受的变换。符号数据流图说明:描绘“做什么”,不考虑“怎么做”箭头箭头:数据流图和程序图中用箭头表示的控制流有本质不同,不能混淆。在数据流图中应该描绘所有可能的数据流向,而不应该描绘出现某个数据流的条件。处理处理:处理并不一定是一个程序。一个处理框可以代表一系列程序、单个程序或者程序的一个模块,也可代表一个人工处理过程,如用户目视检查数据正确性。数据存储数据存储:一个数据存储并不等同于一个文件,它可以表示一个文件、文件的一部分、数据库的元素或记
42、录的一部分等;数据可以存储在磁盘、磁带、磁鼓、主存、微缩胶片、穿孔卡片及其他任何介质上(包括人脑)。数据存储和数据流都是数据,仅仅所处的状态不同。数据存储是处于静止状态的数据,数据流是处于运动中的数据。32 32 结构化分析结构化分析-数据流图数据流图32 32 结构化分析结构化分析-数据流图数据流图教师教学网络测评系统数据流图统计查询学生评测数据提交并存储以测评子项得分为单位评测数据记录以测评类型得分为单位评测数据记录被评对象各测评类型的得分记录被评对象各测评子项得分记录以评测类型为单位的测评表案例状态转换图简称状态图,描述的是系统的状态及引系统状态转换的事件,可用来表示系统的行为。状态图指
43、出了作为特定事件的结果将执行哪些动作(如处理数据)。所以说,状态图提供了行为建模机制。状态1do:行为1初始事件状态2do:行为2事件条件1结束事件表示从一个状态到另一个状态的转换,箭头的方向表示转换的方向。表示状态。定义符号状态图示例32 32 结构化分析结构化分析-状态转换图状态转换图软件需求规格说明阐述一个软件系统必须提供的功能和性能以及它所要考虑的限制条件,它不仅是系统测试和用户文档的基础,也是所有子系列项目规划、设计和编码的基础。它应该尽可能完整地描述系统预期的外部行为和用户可视化行为。除了设计和实现上的限制,软件需求规格说明不应该包括设计、构造、测试或工程管理的细节。说明格式见教材
44、32 32 结构化分析结构化分析-需求规格说明书需求规格说明书 3333面向对象的分析面向对象的分析 面向对象分析方法的核心是利用面向对象的概念和方法为软件需求建造模型。它包含面向对象的图形语言机制以及用于指导需求分析的面向对象的方法学。本节主要介绍面向对象的概念、面向对象方法及面向对象分析过程。3333面向对象的需求分析面向对象的需求分析-面向对象的概念面向对象的概念 面向对象对象分类继承通信面向对象对象分类继承通信对象对象是现实世界中个体或事物的抽象表示,它封装了特殊的属性(数据)和行为方法。例如,大型客机可视为对象,它具有位置、速度、颜色、容量等属性,对于该对象可施行起飞、降落、加速、维
45、修等操作,这些操作将或多或少地改变飞机的属性值(状态)。类类是具有相同属性和操作的一组相似对象的抽象 例如,飞行器类是所有能够飞行的器械的抽象(如各种飞机、航天器等),它可以包含位置、速度、颜色等属性,同时也具有起飞、降落、加速等操作。显然类是一个支持继承的抽象数据类型,而对象就是类的实例。3333面向对象的需求分析面向对象的需求分析-面向对象的概念面向对象的概念 实例是由某个特定的类所描述的一个具体的对象 例如,圆具有半径和圆心等属性,它是一个抽象类,可用circle类来定义,有许多不同半径和不同圆心的具体的圆,它们是类的一个个实例。3333面向对象的需求分析面向对象的需求分析-面向对象的概
46、念面向对象的概念 属性是类或对象中所定义的数据,它是描述客观世界实体静态特征的数据项。当类被实例化而形成具体的对象后,它不仅包含类所具有的一些属性,而且还有自己所特有的属性值 例如,Circle类中定义的代表圆心坐标、半径、颜色等的数据成员,就是圆类所具有的属性,当实例一个具体的圆后,其属性也必然存在,还可能增加一些特殊的属性。3333面向对象的需求分析面向对象的需求分析-面向对象的概念面向对象的概念 方法方法是对象所能执行的操作,也就是类中所定义的服务。方法描述了对象执行操作的算法,响应消息的方法 在C+语言中把方法称为成员函数。例如在圆的对象中可以定义一个方法GetColor(),用来取得
47、圆的颜色。3333面向对象的需求分析面向对象的需求分析-面向对象的概念面向对象的概念 消息就是要求某个对象执行在定义它的那个类中所定义的某个操作的规格说明。通常,一个消息由以下三部分组成:接收消息的对象;消息选择符即消息名;零个或多个变元。例如,MyCircle是一个半径4cm、圆心位于(100,200)的Circle类,也就是一个实例,当要求它以绿颜色在屏幕上显示自己时,在C+语言中应该向它发下列消息:MyCircle.Show(GREEN);其中,MyCircle是接受消息的对象名,Show是消息选择符(即消息名),圆括号内的GREEN 是消息的变元。当Mycircle接收到这个消息后,将
48、执行在Circle类中所定义的Show操作。3333面向对象的需求分析面向对象的需求分析-面向对象的概念面向对象的概念 封装所谓封装就是把某个事物包起来,使外界不知道该事物的具体内容。在面向对象的程序中,把数据和实现操作的代码集中起来放在对象内部。*数据与方法代码的内部细节对外界隐藏,这样对其的任何改变可能引起的副作用只能作用在内部,不会传播。*封装是软件复用的基础。*被封装对象间的接口大大地简化了,对象之间通过消息联系它时不再关心对象内部的数据结构,系统的耦合度降低了。含义优点3333面向对象的需求分析面向对象的需求分析-面向对象的概念面向对象的概念 继承含义分类类之间的继承关系是现实世界中
49、遗传关系的直接模拟,它表示类之间的内在联系以及对属性和操作的共享,即子类可沿用父类(被继承)的某些特征。当然也可以具有自己独有的属性和操作。单重继承 多重继承 子类仅从一个父类继承属性和行为,而且子类可以覆盖父类的部分属性和方法 子类可从多个父类继承属性和方法 3333面向对象的需求分析面向对象的需求分析-面向对象的概念面向对象的概念 类继承实例汽车类轿车类货车类商用轿车家用轿车汽车是抽象层次较高的概念,在汽车类的基础上可以分出轿车类与货车类等,如果再细分,还可在轿车类的基础上分出商用轿车与家用轿车等。由于商用轿车与家用轿车作为轿车在绝大多数的属性和行为上是一致的,可以把轿车类看成是家用轿车的
50、父类,而家用轿车这个子类继承了父类所拥有的属性与行为,并在父类的基础上加入了特殊化的属性与行为而形成了新的类。在类的层次结构中,相对上层的是超类(superclass),相对下层的是子类(subclass)3333面向对象的需求分析面向对象的需求分析-面向对象的概念面向对象的概念 3333面向对象的需求分析面向对象的需求分析-面向对象方法简介面向对象方法简介 面向对象方法支持三种基本的活动 识别对象和类描述对象和类之间的关系通过描述每个类的功能定义对象的行为。面向对象方法Booch方法:提出面象对象的软件工程的概念OMT方法:提出面象对象的建模技术方法OOSE方法:用例贯穿于软件整个开发过程U