软件工程电子教案_第1页
软件工程电子教案_第2页
软件工程电子教案_第3页
软件工程电子教案_第4页
软件工程电子教案_第5页
已阅读5页,还剩507页未读 继续免费阅读

下载本文档

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

文档简介

1、1软软 件件 工工 程程使用教材:软件系统开发技术(修订版)使用教材:软件系统开发技术(修订版) 2第一章 软件工程概述31.1 1.1 软件工程的背景和历史软件工程的背景和历史n19681968年年由由nato ( (北大西洋公约组织北大西洋公约组织) )在德国在德国garmish召开的学术召开的学术会议会议上,上,feitz bauerfeitz bauer首首先提出了先提出了“软件工程软件工程”概念。概念。4软件工程与编程软件工程与编程n前者是一门学科,一前者是一门学科,一种科学理论来指导软种科学理论来指导软件系统开发,标准化,件系统开发,标准化,自动化的过程自动化的过程n考虑如何分解一

2、个系考虑如何分解一个系统,以便各人分工开统,以便各人分工开发;考虑如何说明每发;考虑如何说明每个部分的规格要求;个部分的规格要求;怎样才能易于维护怎样才能易于维护n单纯的代码编写单纯的代码编写n是软件工程发展的前是软件工程发展的前身身n是软件工程中占据很是软件工程中占据很少时间和空间的一部少时间和空间的一部分分5计算机学科的发展计算机学科的发展计算机科学计算机科学(cs)计算机科学计算机科学 (cs)计算机工程计算机工程(ce)软件工程软件工程(se)信息系统信息系统(is)计算学科计算学科(computing discipline)660年代以来年代以来n工厂管理工厂管理n病人监护病人监护n

3、工资统发工资统发n图书馆管理图书馆管理n机票预定机票预定n学籍管理学籍管理 早期早期 第二阶段第二阶段 第三阶段第三阶段 第四阶段第四阶段面向批处理面向批处理 多用户多用户 分布式系统分布式系统 强大的桌面系统强大的桌面系统有限的分布有限的分布 实时实时 嵌入嵌入“智能智能” ” 面向对象技面向对象技术术自定义软件自定义软件 数据库数据库 低成本硬件低成本硬件 专家系专家系统 软件产品软件产品 消费者的影响消费者的影响 人工神经网络人工神经网络 并行计算并行计算 网络计算机网络计算机195019601970198019902000evolution of software#8为什么发展如此之快

4、为什么发展如此之快n不准确的时间和金钱的估算不准确的时间和金钱的估算n软件质量的低下软件质量的低下n相对硬件产品开发软件开发费用的增加相对硬件产品开发软件开发费用的增加n维护、增强软件系统的必要性维护、增强软件系统的必要性n硬件价格大幅度下降硬件价格大幅度下降9软件技术面临的问题软件技术面临的问题 规模规模 复杂性复杂性 生产率生产率 windows9595有有10001000万行万行代码代码 windows20002000有有50005000万行万行代码代码例:例:exchange2000和和 windows20002000开发人员结构开发人员结构exchange2000windows200

5、02000项目经理项目经理25人人约约250人人开发人员开发人员140人人约约1700人人测试人员测试人员350人人约约3200人人11人月神话人月神话焦油坑焦油坑 n史前史中,没有别的场景比巨兽在焦油坑中垂史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。上帝见证着恐龙、死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越是猛烈,焦油纠缠得越紧,没有任何猛兽足够是猛烈,焦油纠缠得越紧,没有任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。最后都沉到了坑

6、底。 12软件危机的主要特征软件危机的主要特征n软件开发周期大大超过规定软件开发周期大大超过规定 日期日期; ;n 软件开发成本严重超标软件开发成本严重超标; ;n 软件质量软件质量难于难于保证。保证。13软件工程的定义软件工程的定义 fritz bauer在在nato会议会议上给出的定义:上给出的定义: “软件工程软件工程是是为了经济地获得可靠的和能为了经济地获得可靠的和能在实际机器上高效运行的软件在实际机器上高效运行的软件而确立和使用而确立和使用的的健全健全的工程的工程原理(方法)原理(方法)。”14软件工程的定义(软件工程的定义(2) ieee ieee【iee83】给出的给出的软件工程

7、软件工程定义:定义:“软件工程是软件工程是开发、运行、开发、运行、维护和修复软件的系统方法维护和修复软件的系统方法。”15软件工程的定义(软件工程的定义(3) ieeeieee【iee93】给出了一个更加给出了一个更加综合的定义:综合的定义: “将系统化的、规范的、可将系统化的、规范的、可度量的方法应用于软件的开发、度量的方法应用于软件的开发、运行和维护的过程,即将工程化运行和维护的过程,即将工程化应用于软件中应用于软件中。”软件工程是一门交叉学科软件工程是一门交叉学科软件工程的主要研究内容u软件开发软件开发技术技术: :软件开发方法软件开发方法学学 软件开发过程软件开发过程 软件工具软件工具

8、和软件工程和软件工程环境环境 u软件工程管理软件工程管理: :软件管理软件管理学学 软件经济学软件经济学 软件软件心理学心理学 软件工程所包含的内容不是一成不变的,软件工程所包含的内容不是一成不变的,随着人们对软件系统的研制开发和生产的理解。随着人们对软件系统的研制开发和生产的理解。应用发展的眼光看待它。应用发展的眼光看待它。17软件工程软件工程 一种层次化技术一种层次化技术工具工具方法方法过程过程质量焦点质量焦点software engineering layers软件工程软件工程三个要素:三个要素:方法、工具、过程方法、工具、过程18软件软件工程与一般工程的差异工程与一般工程的差异u软件是

9、逻辑软件是逻辑产品产品而不是而不是实物实物产品产品u软件的功能依赖于硬件和软件的运行环境以及人们软件的功能依赖于硬件和软件的运行环境以及人们对它的操作对它的操作u软件设计的复杂性软件设计的复杂性u软件特征软件特征: 功能的多样性功能的多样性 实现的多样性实现的多样性 能见度低能见度低 软件结构合理性差软件结构合理性差u智力密集及知识产权保护智力密集及知识产权保护19软件工程软件工程知识结构知识结构20012001年年5 5月月iso/iec jtc 1iso/iec jtc 1(isoiso和和ieciec的第一联合的第一联合技术委员会)发布了技术委员会)发布了 swebok指南指南v0.95

10、(v0.95(试用试用版版) )swebok把软件工程学科的主体知识分为把软件工程学科的主体知识分为10个知个知识领域。识领域。20软件工程软件工程知识结构知识结构n 软件需求软件需求n 软件设计软件设计n 软件构造软件构造n 软件测试软件测试n 软件维护软件维护n 软件配置管理软件配置管理n 软件工程管理软件工程管理n 软件工程过程软件工程过程n 软件工程工具和软件工程工具和方法方法n 软件质量软件质量21“软件工程软件工程”课程课程 与其它软件专业课的区别与其它软件专业课的区别(1) (1) 立足于系统的整体。立足于系统的整体。(2) (2) 讲授系统分析、系统设计、讲授系统分析、系统设计

11、、 测试及维护的理论和方法。测试及维护的理论和方法。(3) (3) 构筑一构筑一个软件个软件系统系统,实践,实践 软件开发全过程软件开发全过程。22“软件工程软件工程”课程教学课程教学的目标的目标u转变转变对软件的认识:对软件的认识: 上升上升 程序程序 系统系统u 转变转变思维定式:思维定式: 上升上升 程序员程序员 系统工程师系统工程师 ( (系统分析员系统分析员) )23软件产品的标准化软件产品的标准化软件开发过程的标准化软件开发过程的标准化24软件的工业化生产过程应具备的特点:软件的工业化生产过程应具备的特点:f明确的工作步骤明确的工作步骤f详细具体的规范化文档详细具体的规范化文档f明

12、确的质量评价标准明确的质量评价标准“一个好的工业,应有一套良好的标准来配套”25软件工程技术的两个特点u 强调规范化强调规范化u 强调文档化强调文档化261.2 1.2 软件和软件生命期模型软件和软件生命期模型(software life cycle) 软件产品或软件系统从设计、投入使用软件产品或软件系统从设计、投入使用到被淘汰的全过程。到被淘汰的全过程。27软件生存期的阶段划分(1)(1)可行性研究与计划可行性研究与计划(2)(2)需求分析需求分析(3)(3)总体设计总体设计 (4)(4)详细设计详细设计(5)(5)实现实现(6)(6)集成测试集成测试(7)(7)确认测试确认测试 (8)(8

13、)使用和维护使用和维护成长期(开发期)成长期(开发期)怀孕期(计划期怀孕期(计划期) 成年期(运行期)成年期(运行期)28新的国际标准定义的新的国际标准定义的软件生存软件生存过程(过程(1995 iso/iec 12207)软件生存期过程软件生存期过程支持过程支持过程组织过程组织过程主要过程主要过程获获取取过过程程供供应应过过程程开开发发过过程程运运行行过过程程维维护护过过程程文文档档编编制制过过程程配配置置管管理理过过程程质质量量保保证证过过程程验验证证过过程程确确认认过过程程联联合合评评审审过过程程审审核核过过程程问问题题解解决决过过程程管管理理过过程程基基础础设设施施过过程程改改进进过过

14、程程培培训训过过程程29软件工作的范围只考虑只考虑编写程序编写程序 涉及整个涉及整个软件生存软件生存周期周期扩展到扩展到30 软件软件开发开发模型是软件开发全部过程、活动和任务模型是软件开发全部过程、活动和任务的的结构框架结构框架。它能直观表达软件开发全过程,明确规定。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。要完成的主要活动、任务和开发策略。 软件软件开发开发模型模型也常称为:也常称为: 软件软件过程过程模型模型 软件生存软件生存周周期模型期模型 软件工程范型软件工程范型软件开发模型软件开发模型可行性研究与计划可行性研究与计划需求分析需求分析设计设计编码编码运行维

15、护运行维护测试测试定义定义阶段阶段开开发发阶阶段段维护阶段维护阶段瀑布模型( (waterfall model) )32开发软件不仅仅是编程开发软件不仅仅是编程开发开发维护维护设计设计编写编写模块测试模块测试联合测试联合测试分析分析33按照传统瀑布模型开发软件的特点按照传统瀑布模型开发软件的特点1.1.阶段间具有顺序性和依赖性。阶段间具有顺序性和依赖性。2.2.推迟实现的观点。推迟实现的观点。3.3.每个阶段必须完成规定的文档每个阶段必须完成规定的文档; ; 每个阶段结束前完成文档审查每个阶段结束前完成文档审查, , 及早改正错误。及早改正错误。34原型模型(快速快速原原型模型型模型)原型范型

16、原型范型用户测试用户测试运行原型运行原型建造建造/ /修改修改 原型原型 听取用听取用 户意见户意见采用原型模型的软件生存周期分析定义分析定义系统需求系统需求生成生成原型原型系统系统设计设计程序程序设计设计编码编码测试测试运运 行行和维护和维护原型化原型化含原型化的含原型化的软件生存期软件生存期361.3 1.3 软件质量的评价软件质量的评价n成功的标准成功的标准: 用户在用户在 用户可很容易做完要做的事用户可很容易做完要做的事n失败的根本原因:失败的根本原因: 开发人员写出的东西达不到开发人员写出的东西达不到 用户要求用户要求( (人的问题人的问题. .技术问题技术问题) )37质量与生产率

17、质量与生产率n质量是软件需求方最关心的问题,用户即使不质量是软件需求方最关心的问题,用户即使不图物美价廉,也要求个货真价实图物美价廉,也要求个货真价实 n质量与生产率之间有着内在的联系,高生产率质量与生产率之间有着内在的联系,高生产率必须以质量合格为前提必须以质量合格为前提 n质量与生产率的提高就指望程序员与程序经理质量与生产率的提高就指望程序员与程序经理 n非得在质量与生产率之间分个主次不可,那么非得在质量与生产率之间分个主次不可,那么应该是质量第一,生产率第二应该是质量第一,生产率第二 38质量与生产率(质量与生产率(2)n质量直接体现在软件的每段程序中,高质量自质量直接体现在软件的每段程

18、序中,高质量自然是开发人员的技术追求,也是职业道德的要然是开发人员的技术追求,也是职业道德的要求求 n高质量对所有的用户都有价值,而高生产率只高质量对所有的用户都有价值,而高生产率只对开发方有意义对开发方有意义 n如果一开始就追求高生产率,容易使人急功近如果一开始就追求高生产率,容易使人急功近利,留下隐患利,留下隐患 39不贪污的官就是好官吗不贪污的官就是好官吗n“运行正确运行正确”的程序就是高质量的程序吗?的程序就是高质量的程序吗?n也许运行速度很低并且浪费内存;也许代码写也许运行速度很低并且浪费内存;也许代码写得一塌糊涂得一塌糊涂 40软件的质量因素软件的质量因素 n软件的质量因素很多,如

19、正确性、精确性、可软件的质量因素很多,如正确性、精确性、可靠性、容错性、性能、效率、易用性、可理解靠性、容错性、性能、效率、易用性、可理解性、简洁性、可复用性、可扩充性、兼容性等性、简洁性、可复用性、可扩充性、兼容性等等(还可以列出十几个)等(还可以列出十几个) n一般说来倾向于可维护性、可靠性、可理解性一般说来倾向于可维护性、可靠性、可理解性和效率和效率41软件质量因素分类和武学分类软件质量因素分类和武学分类 正确性与精确性易用性可理解性与简洁性性能与效率可复用性与可扩充性少林派、武当派华山派昆仑派峨嵋派崆峒派42正确性与精确性正确性与精确性 n机器不会主动欺骗人,软件运行不正确或者不机器不

20、会主动欺骗人,软件运行不正确或者不精确一般都是人造成的精确一般都是人造成的 n需求分析错了,那么对客户而言这个软件也存需求分析错了,那么对客户而言这个软件也存在错误在错误 n如果软件没有如果软件没有100% 地按需求规格执行,那地按需求规格执行,那么这个软件也存在错误么这个软件也存在错误n程序员要为程序员要为“正确正确”、“精确精确”四个字竭尽全四个字竭尽全力力 43性能与效率性能与效率 n用户都希望软件的运行速度高些(高性能),用户都希望软件的运行速度高些(高性能),并且占用资源少些(高效率)并且占用资源少些(高效率) n旧社会地主就是这么对待长工的:干活要快点,旧社会地主就是这么对待长工的

21、:干活要快点,吃得要少点吃得要少点 n通过优化算法、数据结构和代码组织来提高软通过优化算法、数据结构和代码组织来提高软件系统的性能与效率优化的关键件系统的性能与效率优化的关键n工作是找出限制性能与效率的工作是找出限制性能与效率的“瓶颈瓶颈” 44易用性易用性 n导致软件易用性差的根本原因是开发人员犯了导致软件易用性差的根本原因是开发人员犯了“错位错位”的毛病:他以为只要自己用起来方便,的毛病:他以为只要自己用起来方便,用户也一定会满意用户也一定会满意 n当用户真的感到软件很好用时,一股温暖的感当用户真的感到软件很好用时,一股温暖的感觉油然而生,于是就用觉油然而生,于是就用“友好友好”来评价易用

22、性来评价易用性 45可理解性与简洁性可理解性与简洁性(note 1) n开发人员只有在自己思路清晰时才可能写出让开发人员只有在自己思路清晰时才可能写出让别人能理解的程序别人能理解的程序 n编程时还要注意不可滥用技巧,应该用自然的编程时还要注意不可滥用技巧,应该用自然的方式编程方式编程 n简洁是一种美简洁是一种美 n如果把学术文章写得很简洁,让人很容易理解,如果把学术文章写得很简洁,让人很容易理解,它往往中不了它往往中不了 46可复用性与可扩充性可复用性与可扩充性 n一种方式是原封不动地使用现成的软件构件一种方式是原封不动地使用现成的软件构件 n一种方式是对现成的软构件进行必要的扩充后一种方式是

23、对现成的软构件进行必要的扩充后再使用再使用 n可复用性好的程序一般也具有良好的可扩充性可复用性好的程序一般也具有良好的可扩充性 47可行性研究与计划可行性研究与计划需求分析需求分析设计设计编码编码运行维护运行维护测试测试测试已经开始返回上级,再.瀑布模型的质量保障体系48小结小结(note 2)n软件的高质量主要是设计出来的软件的高质量主要是设计出来的n不是不是“管管”出来的出来的n更不能依赖质量检查。更不能依赖质量检查。 49第二章第二章 可行性研究与计划可行性研究与计划50系统流程图系统流程图(note 3)输入单据输入单据磁盘文件磁盘文件处理处理输出单据输出单据51数据流程图数据流程图数

24、据源点数据源点和终点和终点变换数据变换数据的加工的加工文件文件数据数据逻辑关系符号:与、或、异或逻辑关系符号:与、或、异或 52 2.1可行性研究基本概念可行性研究基本概念n可行性研究的任务:可行性研究的主要任务是可行性研究的主要任务是“了解客户的要求及了解客户的要求及现实环境,从技术、经济和社会因素等三方面现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。研究报告,制定初步项目开发计划。”53可行性研究的内容( (1)1)技术可行性技术可行性(2)(2)经济可行性经济可行性(3)(3)操作可

25、行性操作可行性(4)(4)社会可行性社会可行性( (法律可行性法律可行性) )(5)(5)抉择抉择54技术可行性技术可行性(note 4)(note 4)n度量一个特定技术信息系统解决方案度量一个特定技术信息系统解决方案的实用性及技术资源的可用性的实用性及技术资源的可用性考虑的问题考虑的问题n开发风险开发风险分析分析n资源资源分析分析n相关技术的发展相关技术的发展(现有技术能否实现新系(现有技术能否实现新系统,技术难点、建议采用技术的先进性)统,技术难点、建议采用技术的先进性)55经济可行性经济可行性度量系统解决方案的性能价格比度量系统解决方案的性能价格比考虑的问题考虑的问题 成本成本/ /效

26、益分析效益分析n有形成本、效益有形成本、效益n无形成本、效益无形成本、效益 价值和成本的关系价值和成本的关系n质量与价值、成本的关系质量与价值、成本的关系n价值价值/ /成本的均衡成本的均衡56经济可行性考虑的问题经济可行性考虑的问题(note 5)(note 5)成本和效益的估算成本和效益的估算开发成本的估算开发成本的估算开发效益的估算开发效益的估算运行成本的估算运行成本的估算运行效益的估算运行效益的估算57成本分析成本分析n代码行技术代码行技术n(page 19)n任务估算技术任务估算技术n(page 20)n总成本、总人力相对误差在总成本、总人力相对误差在 内内nputnam估算模型估算

27、模型n(page 21 )ncocomo模型比较复杂模型比较复杂20%58效益分析效益分析n系统的经济效益使用新系统增加收入使用系统的经济效益使用新系统增加收入使用心系统可以节省的运行费用心系统可以节省的运行费用n总的效益和软件生存周期有关总的效益和软件生存周期有关n货币的时间价值(货币的时间价值(page23)n投资回收期(投资回收期(page23)n投资回收率(投资回收率(page23)n纯收入(纯收入(page23)n投资回收率投资回收率59系统开发和每年运行费用举例系统开发和每年运行费用举例1.1.系统开发费用(一次)系统开发费用(一次). .2 2名系统分析员名系统分析员(450(4

28、50小时小时/ /名名,45,45美元美元/ /小时小时) $40,500) $40,500. .5 5名系统开发人员名系统开发人员(275(275小时小时/ /名名,36,36美元美元/ /小时小时)$49,500)$49,500. .1 1名数据库管理员名数据库管理员(30(30小时小时/ /名名,42,42美元美元/ /小时小时) $1,260) $1,260. .2 2名技术写作者名技术写作者(120(120小时小时/ /名名,25,25美元美元/ /小时小时) $6,000) $6,000. .1 1名秘书名秘书(160(160小时小时/ /名名,15,15美元美元/ /小时小时)

29、$2,400) $2,40060系统开发和每年运行费用举例系统开发和每年运行费用举例n. .1 1名数据通讯专家名数据通讯专家(60(60小时小时/ /名名,42,42美元美元/ /小时小时) ) $2,400$2,400n2 2名在转换期间数据输入人员名在转换期间数据输入人员 $49,500$49,500 (40 (40小时小时/ /名名,12,12美元美元/ /小时小时) )61系统开发和每年运行费用举例系统开发和每年运行费用举例培训:培训:l三天的开发人员内部培训课程三天的开发人员内部培训课程 $7,000$7,000l3030个用户,三天的内部培训课程个用户,三天的内部培训课程 $10

30、,000$10,000物资:物资:l复印复印 $500$500l磁盘、纸张等消耗品磁盘、纸张等消耗品 $650$65062系统开发和每年运行费用举例系统开发和每年运行费用举例购买硬件、软件:购买硬件、软件:l2020台工作站台工作站windowswindows软件软件 $1,000$1,000l2020台工作站内存升级台工作站内存升级 $8,000$8,000l网络软件网络软件 $17,500$17,500l2020台工作站办公软件产品台工作站办公软件产品 $20,000$20,000系统开发总费用系统开发总费用 $161,670$161,67063系统开发和每年运行费用举例系统开发和每年运行

31、费用举例2.2.年运行费用(每年)年运行费用(每年)人员:人员:l维护程序员维护程序员/ /分析员分析员( (250250小时小时/ /年年,42,42美元美元/ /小时小时) ) $10,500$10,500l网络管理员网络管理员( (300300小时小时/ /年年,50,50美元美元/ /小时小时) $) $15,00015,000购买硬件、软件升级:购买硬件、软件升级:l硬件硬件 $ $5,0005,000l软件软件 $ $6,0006,000物资和杂项物资和杂项 $ $3,5003,500每年总运行费用每年总运行费用 $40,000$40,00064操作操作可行性可行性 用户使用可能性

32、用户使用可能性 时间进度可行性时间进度可行性 组织和文化上的可行性组织和文化上的可行性65社会可行性社会可行性( (法律可行性法律可行性) )开发项目是否会在社会上或政治上开发项目是否会在社会上或政治上引起侵权、破坏或其它责任问题引起侵权、破坏或其它责任问题66可行性研究计划的完成可行性研究计划的完成n可行性研究计划672.3 2.3 可行性研究的步骤可行性研究的步骤(page15page15) (1)(1)复查确认系统目标、规模复查确认系统目标、规模 (2)(2)研究正使用系统工作流程研究正使用系统工作流程 (3)(3)导出新系统高层逻辑模型导出新系统高层逻辑模型 (4)(4)重新定义问题重

33、新定义问题 (5)(5)导出和评价供选择的方案导出和评价供选择的方案 (6)(6)推荐推荐可行的方案可行的方案 (7)(7)草拟开发计划草拟开发计划 (8)(8)编写可行性研究报告编写可行性研究报告,送审,送审68第三章第三章 需求分析和规格需求分析和规格说明说明693.1 3.1 为什么需要需求分析为什么需要需求分析n开发人员往往急于求成开发人员往往急于求成n希望对开发进行指导希望对开发进行指导n希望开发人员对用户的要求理解希望开发人员对用户的要求理解n希望用户理解开发人员希望用户理解开发人员n测试部门有理可依测试部门有理可依70需求分析的任务需求分析的任务准确地准确地定义定义未来系统的目标

34、,确定为未来系统的目标,确定为了满足用户的需求系统必须做什么。用了满足用户的需求系统必须做什么。用 规范的形式准确地表规范的形式准确地表达用户的达用户的需求需求。71什么是用户需求什么是用户需求n思考、涉及的几个问题思考、涉及的几个问题v如何识别、获取需求如何识别、获取需求? ? 你能够采取何种手段与用户进行交流沟通你能够采取何种手段与用户进行交流沟通? ?v何为需求建模何为需求建模? ? 你如何理解模型与建模你如何理解模型与建模? ?72软件需求分析的几个阶段软件需求分析的几个阶段问题分析问题分析问题评估和方案综合问题评估和方案综合建模建模规约规约复审复审 系统分析员的主要系统分析员的主要焦

35、点焦点是是 “ “做什么做什么(whatwhat)” ” ,不是,不是 “ “怎样做(怎样做(howhow)”73需求获取面临的挑战需求获取面临的挑战(note 6)(note 6)l 客户说不清楚需求客户说不清楚需求l 需求易变性需求易变性l问题的复杂性和对问题空间问题的复杂性和对问题空间 理解的不完备性与不一致性理解的不完备性与不一致性743.2 3.2 需求获取的常用方法需求获取的常用方法(note 7note 7)建立分析小组建立分析小组 领域专家:领域专家: 主角主角 系统分析员:导演系统分析员:导演客户访谈客户访谈问题分析与确认问题分析与确认 某出版社系统调查表某出版社系统调查表编

36、号提出问题1您在哪个部门工作?您在哪个部门工作?2出版业务流程是什么?出版业务流程是什么?3您每日都处理那些文件、数据、报表?您每日都处理那些文件、数据、报表?4工作中手工处理特别麻烦的事情是什么?工作中手工处理特别麻烦的事情是什么?5工作中手工处理什么问题解决不了?影响效率的工作中手工处理什么问题解决不了?影响效率的问题有哪些?问题有哪些?6您认为提高工作效率,节省工作时间,减轻工作您认为提高工作效率,节省工作时间,减轻工作强度可采取哪些办法?强度可采取哪些办法?某出版社系统调查表某出版社系统调查表编号提出问题7您的部门需要成本核算和统计的内容有哪些?您的部门需要成本核算和统计的内容有哪些?

37、8您的部门采用计算机管理工作情况如何?您的部门采用计算机管理工作情况如何?9如何改进业务流程使之更合理?如何改进业务流程使之更合理?10哪些问题是目前传统手工方法根本无法解决的?哪些问题是目前传统手工方法根本无法解决的?11出版社计算机管理信息系统需要解决什么问题?出版社计算机管理信息系统需要解决什么问题?77听一个故事听一个故事(note 8)n主人公:主人公:nc o n t o s o制药公司的高级管理长官制药公司的高级管理长官gerhard nc o n t o s o公司的信息系统开发小组的新管公司的信息系统开发小组的新管理员理员cynthian内容:内容:n客户的需求观客户的需求观

38、 78谁是客户谁是客户n客户是指直接或间接从产品中获得利益的个人客户是指直接或间接从产品中获得利益的个人或组织或组织 n软件客户包括提出要求、支付款项、选择、具软件客户包括提出要求、支付款项、选择、具体说明或使用软件产品的项目风险承担者体说明或使用软件产品的项目风险承担者( s ( s t a k e h o l d e r )t a k e h o l d e r )或是获得产品所产生或是获得产品所产生的结果的人。的结果的人。79客户与开发人员之间的合作关系客户与开发人员之间的合作关系(note 10) n高质量的需求来源于客户与开发人员之间有效高质量的需求来源于客户与开发人员之间有效的交流

39、与合作的交流与合作 n通常,开发人员与客户或客户代理人成为一种通常,开发人员与客户或客户代理人成为一种对立关系对立关系 80软件客户需求权利书(软件客户需求权利书(1)(note 11) 客户有如下权利:客户有如下权利:1. 要求分析人员使用符合客户语言习惯的表达。要求分析人员使用符合客户语言习惯的表达。2. 要求分析人员了解客户系统的业务及目标。要求分析人员了解客户系统的业务及目标。3. 要求分析人员组织需求获取期间所介绍的信要求分析人员组织需求获取期间所介绍的信息,并编写软件需求规格说明。息,并编写软件需求规格说明。4. 要求开发人员对需求过程中所产生的工作结要求开发人员对需求过程中所产生

40、的工作结果进行解释说明。果进行解释说明。5. 要求开发人员在整个交流过程中保持和维护要求开发人员在整个交流过程中保持和维护一种合作的职业态度。一种合作的职业态度。81软件客户需求权利书(软件客户需求权利书(2)(note 12)6. 要求开发人员对产品的实现及需求都要提供要求开发人员对产品的实现及需求都要提供建议,拿出主意。建议,拿出主意。7. 描述产品使其具有易用、好用的特性。描述产品使其具有易用、好用的特性。8. 可以调整需求,允许重用已有的软件组件。可以调整需求,允许重用已有的软件组件。9. 当需要对需求进行变更时,对成本、影响、当需要对需求进行变更时,对成本、影响、得失(得失( t r

41、 a d e - o ff)有个真实可信的评估。)有个真实可信的评估。10. 获得满足客户功能和质量要求的系统,并且获得满足客户功能和质量要求的系统,并且这些要求是开发人员同意的。这些要求是开发人员同意的。 82软件客户需求义务书软件客户需求义务书 (1)(note 13)客户有下列义务:客户有下列义务:1. 1. 给分析人员讲解业务及说明业务方面的术语给分析人员讲解业务及说明业务方面的术语等专业问题。等专业问题。2. 2. 抽出时间清楚地说明需求并不断完善。抽出时间清楚地说明需求并不断完善。3. 3. 当说明系统需求时,力求准确详细。当说明系统需求时,力求准确详细。4. 4. 需要时要及时对

42、需求做出决策。需要时要及时对需求做出决策。5. 5. 要尊重开发人员的成本估算和对需求的可行要尊重开发人员的成本估算和对需求的可行性分析。性分析。83软件客户需求义务书(软件客户需求义务书(2)(note 14)6. 6. 对单项需求、系统特性或使用实例划分优先对单项需求、系统特性或使用实例划分优先级。级。7. 7. 评审需求文档和原型。评审需求文档和原型。8. 8. 一旦知道要对项目需求进行变更,要马上与一旦知道要对项目需求进行变更,要马上与开发人员联系。开发人员联系。9. 9. 在要求需求变更时,应遵照开发组织确定的在要求需求变更时,应遵照开发组织确定的工作过程来处理。工作过程来处理。10

43、. 10. 尊重需求工程中开发人员采用的流程(过尊重需求工程中开发人员采用的流程(过程)。程)。 84“签约签约”意味着什么意味着什么 (note 15)n客户与开发人员关系中的重要部分客户与开发人员关系中的重要部分 n客户代表经常把客户代表经常把“签约签约”看作是毫无意义的看作是毫无意义的 n更为重要的是签名是建立在一个需求协议的基更为重要的是签名是建立在一个需求协议的基线上线上 n与你的重要客户一起讨论权利书和义务书,以与你的重要客户一起讨论权利书和义务书,以达成协议,并付诸实践达成协议,并付诸实践 85高质量的需求过程带来的好处高质量的需求过程带来的好处(note 16)n开发后期和整个

44、维护阶段的重做的工作大大减开发后期和整个维护阶段的重做的工作大大减少少 n强调需求质量并不能引起某些人的重视强调需求质量并不能引起某些人的重视, ,他们他们错误地认为在需求上消耗多少时间就会导致产错误地认为在需求上消耗多少时间就会导致产品开发推迟多少时间品开发推迟多少时间n将选定系统的需求明确地分配到各软件子系统,将选定系统的需求明确地分配到各软件子系统,强调采用产品工程的系统方法。这样能简化硬强调采用产品工程的系统方法。这样能简化硬软件的集成软件的集成 86优秀需求具有的特性优秀需求具有的特性(note 17)(note 17)n1. 1. 完整性完整性 n2. 2. 正确性正确性 n3.

45、3. 可行性可行性 n4. 4. 必要性必要性 n5. 5. 划分优先级划分优先级 n6. 6. 无二义性无二义性 n7. 7. 可验证性可验证性 873.3 3.3 需求获取的内容需求获取的内容 1.1.用户需求分类用户需求分类 (1)(1)功能性需求功能性需求: : 定义了系统做什么(描述系统必须支持定义了系统做什么(描述系统必须支持 的功能和过程)的功能和过程) (2)(2)非功能性需求(技术需求)非功能性需求(技术需求): : 定义了系统工作时的特性定义了系统工作时的特性 (描述操作环境和性能目标)(描述操作环境和性能目标)88两类需求包括的内容两类需求包括的内容(1) (1) 功能功

46、能(2) (2) 性能性能(3) (3) 环境环境(4) (4) 界面界面(5) (5) 用户或人用户或人的的因素因素(6) (6) 文档文档 (7) (7) 数据数据(8) (8) 资源资源(9) (9) 安全保密安全保密(10)(10)软件成本消耗软件成本消耗与开发进度与开发进度(11)(11)质量保证质量保证89(1) (1) 功能需求功能需求 系统做什么?系统做什么? 系统何时做什么?系统何时做什么? 系统何时及如何修改系统何时及如何修改 或升级?或升级?90(2) (2) 性能需求性能需求软件开发的技术性指标软件开发的技术性指标例如:例如: 存储容量限制存储容量限制 执行速度、相应时

47、间执行速度、相应时间 吞吐量吞吐量91(3) (3) 环境需求环境需求硬件设备:硬件设备:机型、外设、接口、机型、外设、接口、 地点、分布、温度、地点、分布、温度、 湿度、磁场干扰等湿度、磁场干扰等软件:软件: 操作系统操作系统 网络网络 数据库数据库92(4) (4) 界面需求界面需求 有来自其它系统的输入吗?有来自其它系统的输入吗? 到自其它系统的输出吗?到自其它系统的输出吗? 对数据格式有规定吗?对数据格式有规定吗? 对数据存储介质有规定吗?对数据存储介质有规定吗?93(5) (5) 用户或人的因素用户或人的因素 用户类型?用户类型? 各种用户熟练程度?各种用户熟练程度? 需受何种训练?

48、需受何种训练? 用户理解、使用系统的难度?用户理解、使用系统的难度? 用户错误操作系统的可能性?用户错误操作系统的可能性?94(6) (6) 文档需求文档需求 需哪些文档?需哪些文档? 文档针对哪些读者文档针对哪些读者?95(7) (7) 数据需求数据需求 输入、输出数据的格式?输入、输出数据的格式? 接收、发送数据的频率?接收、发送数据的频率? 数据的准确性和精度?数据的准确性和精度? 数据流量?数据流量? 数据需保持的时间?数据需保持的时间?96(8) (8) 资源需求资源需求 软件运行时所需的数据、软件。软件运行时所需的数据、软件。 内存空间等资源。内存空间等资源。 软件开发、维护所需的

49、人力、软件开发、维护所需的人力、 支撑软件、开发设备等。支撑软件、开发设备等。97(9) (9) 安全保密要求安全保密要求 需对访问系统或系统信息加以控制吗?需对访问系统或系统信息加以控制吗? 如何隔离用户之间的数据?如何隔离用户之间的数据? 用户程序如何与其它程序和操作系统隔离?用户程序如何与其它程序和操作系统隔离? 系统备份要求?系统备份要求?98(10) (10) 软件成本消耗软件成本消耗 与开发进度需求与开发进度需求开发有规定的时间表吗?开发有规定的时间表吗?软硬件投资有无限制软硬件投资有无限制?99(11) (11) 质量保证质量保证 系统的可靠性要求?系统的可靠性要求? 系统必须监

50、测和隔离错误吗?系统必须监测和隔离错误吗? 规定系统平均出错时间?规定系统平均出错时间? 出错后,重启系统允许的时间?出错后,重启系统允许的时间? 系统变化如何反映到设计中?系统变化如何反映到设计中? 维护是否包括对系统的改进?维护是否包括对系统的改进? 系统的可移植性?系统的可移植性?100怎样写需求分析报告怎样写需求分析报告n作报告时要先从宏观上讲一、二、三、四、五,作报告时要先从宏观上讲一、二、三、四、五,再从细节上讲再从细节上讲a a、b b、c c、d d、e e。需求分析不象。需求分析不象侦探推理那样从蛛丝马迹着手。应该先了解宏侦探推理那样从蛛丝马迹着手。应该先了解宏观的问题,再了

51、解细节的问题观的问题,再了解细节的问题 n如图如图n s = d1,d2,d3, dn n di = p1,p2,p3, pm n pj = f1,f2,f3, fk 101怎样写需求分析报告怎样写需求分析报告1023.4 3.4 需求的开发和管理需求的开发和管理整个软件需求工程研究领域划分为需求开发和整个软件需求工程研究领域划分为需求开发和需求管理两部分更合适需求管理两部分更合适 需求工程域的层次分解示意图需求工程域的层次分解示意图 103需求开发需求开发(note 18) n问题获取(问题获取( e l i c i t a t i o ne l i c i t a t i o n)n分析分

52、析( a n a l y s i s )( a n a l y s i s )n编写规格说明(编写规格说明(s p e c i f i c a t i o ns p e c i f i c a t i o n)n验证(验证(v e r i f i c a t i o nv e r i f i c a t i o n) 104知识技能知识技能 (note 19)绝大部分的软件开发人员都没有接受过高效需求绝大部分的软件开发人员都没有接受过高效需求工程所需技能的正规培训工程所需技能的正规培训n培训需求分析人员所有的开发人员都应接受一个培训需求分析人员所有的开发人员都应接受一个基本的需求工程培训基本的

53、需求工程培训n培训软件需求的用户代表和管理人员参与软件开培训软件需求的用户代表和管理人员参与软件开发的用户代表应接受为期一天左右发的用户代表应接受为期一天左右, ,关于需求工程关于需求工程的培训,开发管理者和客户管理者也应参加的培训,开发管理者和客户管理者也应参加 n让开发人员了解应用领域的基本概念组织一些简让开发人员了解应用领域的基本概念组织一些简短的关于客户业务活动、术语、目短的关于客户业务活动、术语、目n标等方面的讨论会以帮助开发人员对应用领域有标等方面的讨论会以帮助开发人员对应用领域有个基本了解个基本了解 105需求获取需求获取(1)(note 20) n确定需求开发过程确定需求开发过

54、程 n编写项目视图和范围文档项目视图编写项目视图和范围文档项目视图 n将用户群分类并归纳各自特点将用户群分类并归纳各自特点 n选择每类用户的产品代表选择每类用户的产品代表 n建立起典型用户的核心队伍把同类产品或你的建立起典型用户的核心队伍把同类产品或你的产品的先前版本用户代表召集起来,从他们那产品的先前版本用户代表召集起来,从他们那里收集目前产品的功能需求和非功能需求里收集目前产品的功能需求和非功能需求 106需求获取需求获取(2)(note 21)n让用户代表确定使用实例让用户代表确定使用实例 n召开应用程序开发联系会议召开应用程序开发联系会议 n分析用户工作流程观察用户执行业务任务的过分析

55、用户工作流程观察用户执行业务任务的过程程 n确定质量属性和其它非功能需求在功能需求之确定质量属性和其它非功能需求在功能需求之外再考虑一下非功能的质量特点外再考虑一下非功能的质量特点 n通过检查当前系统的问题报告来进一步完善通过检查当前系统的问题报告来进一步完善 n可查看需求是否有足够的灵活性以允许重用一可查看需求是否有足够的灵活性以允许重用一些已有的软件组件些已有的软件组件 107需求分析需求分析(note 22)n绘制系统关联图。绘制系统关联图。n建立数据字典。建立数据字典。n为需求建立模型。为需求建立模型。n建立用户接口原型。建立用户接口原型。n确定需求优先级。确定需求优先级。 108需求

56、规格说明(需求规格说明(srs)(note 23)n采用原始模板在你的组织中要为编写软件需求采用原始模板在你的组织中要为编写软件需求文档定义一种标准模板文档定义一种标准模板 n指明需求的来源指明需求的来源 n为每项需求注上标号制定一种惯例来为每项需为每项需求注上标号制定一种惯例来为每项需求提供一个独立的可识别的标号或记号求提供一个独立的可识别的标号或记号 n记录业务规范业务规范记录业务规范业务规范n创建需求跟踪能力矩阵创建需求跟踪能力矩阵 109需求验证需求验证(note 24note 24)n对需求文档进行正式审查对需求文档进行正式审查 n以需求为依据编写测试用例以需求为依据编写测试用例n编

57、写用户手册在需求开发早期即可起草一份用编写用户手册在需求开发早期即可起草一份用户手册户手册n确定合格的标准让用户描述什么样的产品才算确定合格的标准让用户描述什么样的产品才算满足他们的要求和适合他们使用的满足他们的要求和适合他们使用的 110需求管理需求管理(note 25)n确定一个选择、分析和决策需求变更的过程确定一个选择、分析和决策需求变更的过程 n建立变更控制委员会建立变更控制委员会 n评估每项选择的需求变更评估每项选择的需求变更n跟踪所有受需求变更影响的工作产品跟踪所有受需求变更影响的工作产品 n建立需求基准版本和需求控制版本文档建立需求基准版本和需求控制版本文档 n维护需求变更的历史

58、记录记录维护需求变更的历史记录记录 n跟踪每项需求的状态建立一个数据库跟踪每项需求的状态建立一个数据库n衡量需求稳定性记录基准需求的数量和变更数量衡量需求稳定性记录基准需求的数量和变更数量 n使用需求管理工具商业化的需求管理工具使用需求管理工具商业化的需求管理工具 111项目管理项目管理(note 26note 26)n选择一种合适的软件开发方法生存周期选择一种合适的软件开发方法生存周期n项目开发计划的进度安排将会不断改变项目开发计划的进度安排将会不断改变 n发生需求变更时协商项目约定发生需求变更时协商项目约定 n编写文档和管理与需求相关的风险编写文档和管理与需求相关的风险 n跟踪需求工程所耗

59、的工作量跟踪需求工程所耗的工作量 112分析分析编写文档编写文档评审,商议评审,商议基准需求说明基准需求说明需求变更过程需求变更过程管管理理客户客户需求需求市市场场当前基线当前基线修正后基线修正后基线市场,市场,客户,客户,管理管理项目环项目环境境需求开发与需求管理之间的界限需求开发与需求管理之间的界限(note 27) 1133.5 3.5 改进需求过程改进需求过程(note 28)(note 28)软件开发过程的改进有以下两个主要目标:软件开发过程的改进有以下两个主要目标:n解决在以前项目或目前项目中遇到的问题。解决在以前项目或目前项目中遇到的问题。n防止和避免你可能在将来的项目中要遇到的

60、问防止和避免你可能在将来的项目中要遇到的问题。题。114四条改进软件的原则四条改进软件的原则 (note 29)(note 29)n改进过程应该是革命性的、彻底的、连续的、改进过程应该是革命性的、彻底的、连续的、反复的反复的 n人们和组织机构都只有在他们获得激励时才愿人们和组织机构都只有在他们获得激励时才愿意变更意变更 n过程变更是面向目标的过程变更是面向目标的n将改进活动看作一些小项目将改进活动看作一些小项目115过程改进周期过程改进周期(note 30)(note 30) 评价当前采用的方法指定活动改进计划创建、实验和实施新过程评价结果图:软件开发过程改进的周期发现和建议活动计划新的过程,实验结果,获得经

温馨提示

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

评论

0/150

提交评论