软件件系统开发技术软件工程.ppt
《软件件系统开发技术软件工程.ppt》由会员分享,可在线阅读,更多相关《软件件系统开发技术软件工程.ppt(512页珍藏版)》请在三一办公上搜索。
1、2023/9/16,1,课名:软 件 工 程,主 讲:谢 明 志Email:,使用教材:软件系统开发技术(修订版)潘锦平 施小英 姚天昉 西安电子科技大学出版社,2023/9/16,2,第一章 软件工程概述,2023/9/16,3,1.1 软件工程的背景和历史,1968年由NATO(北大西洋公约组织)在德国Garmish召开的学术会议上,Feitz Bauer首先提出了“软件工程”概念。,2023/9/16,4,软件工程与编程,前者是一门学科,一种科学理论来指导软件系统开发,标准化,自动化的过程考虑如何分解一个系统,以便各人分工开发;考虑如何说明每个部分的规格要求;怎样才能易于维护,单纯的代码
2、编写是软件工程发展的前身是软件工程中占据很少时间和空间的一部分,2023/9/16,5,计算机学科的发展,计算机科学(CS),计算机科学(CS),计算机工程(CE),软件工程(SE),信息系统(IS),计算学科(computing discipline),2023/9/16,6,60年代以来,工厂管理病人监护工资统发图书馆管理机票预定学籍管理,早期 第二阶段 第三阶段 第四阶段面向批处理 多用户 分布式系统 强大的桌面系统有限的分布 实时 嵌入“智能”面向对象技术自定义软件 数据库 低成本硬件 专家系统 软件产品 消费者的影响 人工神经网络 并行计算 网络计算机,1950,1960,1970,
3、1980,1990,2000,Evolution of software#,2023/9/16,8,为什么发展如此之快,不准确的时间和金钱的估算软件质量的低下相对硬件产品开发软件开发费用的增加维护、增强软件系统的必要性硬件价格大幅度下降,2023/9/16,9,软件技术面临的问题,规模 复杂性 生产率,Windows95有1000万行代码 Windows2000有5000万行代码,例:,Exchange2000和 Windows2000开发人员结构,2023/9/16,11,人月神话焦油坑,史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣
4、扎。它们挣扎得越是猛烈,焦油纠缠得越紧,没有任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。,2023/9/16,12,软件危机的主要特征,软件开发周期大大超过规定 日期;软件开发成本严重超标;软件质量难于保证。,2023/9/16,13,软件工程的定义,Fritz Bauer在NATO会议上给出的定义:“软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理(方法)。”,2023/9/16,14,软件工程的定义(2),IEEE【IEE83】给出的软件工程定义:“软件工程是开发、运行、维护和修复软件的系统方法。”,2023/9/16,15
5、,软件工程的定义(3),IEEE【IEE93】给出了一个更加综合的定义:“将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。”,软件工程是一门交叉学科,软件工程的主要研究内容软件开发技术:软件开发方法学 软件开发过程 软件工具和软件工程环境 软件工程管理:软件管理学 软件经济学 软件心理学 软件工程所包含的内容不是一成不变的,随着人们对软件系统的研制开发和生产的理解。应用发展的眼光看待它。,2023/9/16,17,软件工程 一种层次化技术,工具,方法,过程,质量焦点,Software engineering layers,软件工程三个要素:方法、工具
6、、过程,2023/9/16,18,软件工程与一般工程的差异,软件是逻辑产品而不是实物产品软件的功能依赖于硬件和软件的运行环境以及人们对它的操作软件设计的复杂性软件特征:功能的多样性 实现的多样性 能见度低 软件结构合理性差智力密集及知识产权保护,2023/9/16,19,软件工程知识结构,2001年5月ISO/IEC JTC 1(ISO和IEC的第一联合技术委员会)发布了 SWEBOK指南V0.95(试用版)SWEBOK把软件工程学科的主体知识分为10个知识领域。,2023/9/16,20,软件工程知识结构,软件需求 软件设计 软件构造 软件测试 软件维护 软件配置管理 软件工程管理 软件工程
7、过程 软件工程工具和方法 软件质量,2023/9/16,21,“软件工程”课程 与其它软件专业课的区别,(1)立足于系统的整体。(2)讲授系统分析、系统设计、测试及维护的理论和方法。(3)构筑一个软件系统,实践 软件开发全过程。,2023/9/16,22,“软件工程”课程教学的目标,转变对软件的认识:上升 程序 系统 转变思维定式:上升 程序员 系统工程师(系统分析员),2023/9/16,23,软件产品的标准化,软件开发过程的标准化,2023/9/16,24,软件的工业化生产过程应具备的特点:明确的工作步骤详细具体的规范化文档明确的质量评价标准,“一个好的工业,应有一套良好的标准来配套”,2
8、023/9/16,25,软件工程技术的两个特点,强调规范化 强调文档化,2023/9/16,26,1.2 软件和软件生命期模型,(Software Life Cycle)软件产品或软件系统从设计、投入使用到被淘汰的全过程。,2023/9/16,27,软件生存期的阶段划分,(1)可行性研究与计划(2)需求分析(3)总体设计(4)详细设计(5)实现(6)集成测试(7)确认测试(8)使用和维护,成长期(开发期),怀孕期(计划期),成年期(运行期),2023/9/16,28,新的国际标准定义的软件生存过程(1995 ISO/IEC 12207),软件生存期过程,支持过程,组织过程,主要过程,获取过程,
9、供应过程,开发过程,运行过程,维护过程,文档编制过程,配置管理过程,质量保证过程,验证过程,确认过程,联合评审过程,审核过程,问题解决过程,管理过程,基础设施过程,改进过程,培训过程,2023/9/16,29,软件工作的范围,只考虑编写程序,涉及整个软件生存周期,扩展到,2023/9/16,30,软件开发模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。软件开发模型也常称为:软件过程模型 软件生存周期模型 软件工程范型,软件开发模型,可行性研究与计划,需求分析,设计,编码,运行维护,测试,定义阶段,开发阶段,维护阶段,瀑布模型(
10、Waterfall Model),2023/9/16,32,开发软件不仅仅是编程,2023/9/16,33,按照传统瀑布模型开发软件的特点,1.阶段间具有顺序性和依赖性。2.推迟实现的观点。3.每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。,2023/9/16,34,原型模型(快速原型模型),原型范型,用户测试运行原型,建造/修改 原型,听取用 户意见,采用原型模型的软件生存周期,分析定义系统需求,生成原型,系统设计,程序设计,编码,测试,运 行和维护,原型化,含原型化的软件生存期,2023/9/16,36,1.3 软件质量的评价,成功的标准:用户在用 用户可很容易做完
11、要做的事失败的根本原因:开发人员写出的东西达不到 用户要求(人的问题.技术问题),2023/9/16,37,质量与生产率,质量是软件需求方最关心的问题,用户即使不图物美价廉,也要求个货真价实 质量与生产率之间有着内在的联系,高生产率必须以质量合格为前提 质量与生产率的提高就指望程序员与程序经理 非得在质量与生产率之间分个主次不可,那么应该是质量第一,生产率第二,2023/9/16,38,质量与生产率(2),质量直接体现在软件的每段程序中,高质量自然是开发人员的技术追求,也是职业道德的要求 高质量对所有的用户都有价值,而高生产率只对开发方有意义 如果一开始就追求高生产率,容易使人急功近利,留下隐
12、患,2023/9/16,39,不贪污的官就是好官吗,“运行正确”的程序就是高质量的程序吗?也许运行速度很低并且浪费内存;也许代码写得一塌糊涂,2023/9/16,40,软件的质量因素,软件的质量因素很多,如正确性、精确性、可靠性、容错性、性能、效率、易用性、可理解性、简洁性、可复用性、可扩充性、兼容性等等(还可以列出十几个)一般说来倾向于可维护性、可靠性、可理解性和效率,2023/9/16,41,软件质量因素分类和武学分类,2023/9/16,42,正确性与精确性,机器不会主动欺骗人,软件运行不正确或者不精确一般都是人造成的 需求分析错了,那么对客户而言这个软件也存在错误 如果软件没有100%
13、地按需求规格执行,那么这个软件也存在错误程序员要为“正确”、“精确”四个字竭尽全力,2023/9/16,43,性能与效率,用户都希望软件的运行速度高些(高性能),并且占用资源少些(高效率)旧社会地主就是这么对待长工的:干活要快点,吃得要少点 通过优化算法、数据结构和代码组织来提高软件系统的性能与效率优化的关键工作是找出限制性能与效率的“瓶颈”,2023/9/16,44,易用性,导致软件易用性差的根本原因是开发人员犯了“错位”的毛病:他以为只要自己用起来方便,用户也一定会满意 当用户真的感到软件很好用时,一股温暖的感觉油然而生,于是就用“友好”来评价易用性,2023/9/16,45,可理解性与简
14、洁性(Note 1),开发人员只有在自己思路清晰时才可能写出让别人能理解的程序 编程时还要注意不可滥用技巧,应该用自然的方式编程 简洁是一种美 如果把学术文章写得很简洁,让人很容易理解,它往往中不了,2023/9/16,46,可复用性与可扩充性,一种方式是原封不动地使用现成的软件构件 一种方式是对现成的软构件进行必要的扩充后再使用 可复用性好的程序一般也具有良好的可扩充性,2023/9/16,47,测试已经开始,返回上级,再.,瀑布模型的质量保障体系,2023/9/16,48,小结(Note 2),软件的高质量主要是设计出来的不是“管”出来的更不能依赖质量检查。,2023/9/16,49,第二
15、章 可行性研究与计划,2023/9/16,50,系统流程图(Note 3),输入单据磁盘文件处理输出单据,2023/9/16,51,数据流程图,数据源点和终点,变换数据的加工,文件,数据,逻辑关系符号:与、或、异或,2023/9/16,52,2.1可行性研究基本概念,可行性研究的任务:可行性研究的主要任务是“了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。”,2023/9/16,53,可行性研究的内容,(1)技术可行性(2)经济可行性(3)操作可行性(4)社会可行性(法律可行性)(5)抉择,2023/9/16,54
16、,技术可行性(Note 4),度量一个特定技术信息系统解决方案的实用性及技术资源的可用性考虑的问题开发风险分析资源分析相关技术的发展(现有技术能否实现新系统,技术难点、建议采用技术的先进性),2023/9/16,55,经济可行性,度量系统解决方案的性能价格比考虑的问题 成本/效益分析有形成本、效益无形成本、效益 价值和成本的关系质量与价值、成本的关系价值/成本的均衡,2023/9/16,56,经济可行性考虑的问题(Note 5),成本和效益的估算开发成本的估算开发效益的估算运行成本的估算运行效益的估算,2023/9/16,57,成本分析,代码行技术(page 19)任务估算技术(page 20
17、)总成本、总人力相对误差在 内Putnam估算模型(page 21)COCOMO模型比较复杂,2023/9/16,58,效益分析,系统的经济效益使用新系统增加收入使用心系统可以节省的运行费用总的效益和软件生存周期有关货币的时间价值(page23)投资回收期(page23)投资回收率(page23)纯收入(page23)投资回收率,2023/9/16,59,系统开发和每年运行费用举例,1.系统开发费用(一次).2名系统分析员(450小时/名,45美元/小时)$40,500.5名系统开发人员(275小时/名,36美元/小时)$49,500.1名数据库管理员(30小时/名,42美元/小时)$1,26
18、0.2名技术写作者(120小时/名,25美元/小时)$6,000.1名秘书(160小时/名,15美元/小时)$2,400,2023/9/16,60,系统开发和每年运行费用举例,.1名数据通讯专家(60小时/名,42美元/小时)$2,4002名在转换期间数据输入人员$49,500(40小时/名,12美元/小时),2023/9/16,61,系统开发和每年运行费用举例,培训:三天的开发人员内部培训课程$7,00030个用户,三天的内部培训课程$10,000物资:复印$500磁盘、纸张等消耗品$650,2023/9/16,62,系统开发和每年运行费用举例,购买硬件、软件:20台工作站Windows软件
19、$1,00020台工作站内存升级$8,000网络软件$17,50020台工作站办公软件产品$20,000系统开发总费用$161,670,2023/9/16,63,系统开发和每年运行费用举例,2.年运行费用(每年)人员:维护程序员/分析员(250小时/年,42美元/小时)$10,500网络管理员(300小时/年,50美元/小时)$15,000购买硬件、软件升级:硬件$5,000软件$6,000物资和杂项$3,500每年总运行费用$40,000,2023/9/16,64,操作可行性,用户使用可能性 时间进度可行性 组织和文化上的可行性,2023/9/16,65,社会可行性(法律可行性),开发项目是
20、否会在社会上或政治上引起侵权、破坏或其它责任问题,2023/9/16,66,可行性研究计划的完成,可行性研究计划,2023/9/16,67,2.3 可行性研究的步骤(page15),(1)复查确认系统目标、规模(2)研究正使用系统工作流程(3)导出新系统高层逻辑模型(4)重新定义问题(5)导出和评价供选择的方案(6)推荐可行的方案(7)草拟开发计划(8)编写可行性研究报告,送审,2023/9/16,68,第三章 需求分析和规格说明,2023/9/16,69,3.1 为什么需要需求分析,开发人员往往急于求成希望对开发进行指导希望开发人员对用户的要求理解希望用户理解开发人员测试部门有理可依,202
21、3/9/16,70,需求分析的任务,准确地定义未来系统的目标,确定为了满足用户的需求系统必须做什么。用 规范的形式准确地表达用户的需求。,2023/9/16,71,什么是用户需求,思考、涉及的几个问题如何识别、获取需求?你能够采取何种手段与用户进行交流沟通?何为需求建模?你如何理解模型与建模?,2023/9/16,72,软件需求分析的几个阶段,问题分析问题评估和方案综合建模规约复审 系统分析员的主要焦点是“做什么(what)”,不是“怎样做(how)”,2023/9/16,73,需求获取面临的挑战(Note 6),客户说不清楚需求 需求易变性问题的复杂性和对问题空间 理解的不完备性与不一致性,
22、2023/9/16,74,3.2 需求获取的常用方法(Note 7),建立分析小组 领域专家:主角 系统分析员:导演客户访谈问题分析与确认,某出版社系统调查表,某出版社系统调查表,2023/9/16,77,听一个故事(Note 8),主人公:C o n t o s o制药公司的高级管理长官Gerhard C o n t o s o公司的信息系统开发小组的新管理员Cynthia内容:客户的需求观,2023/9/16,78,谁是客户,客户是指直接或间接从产品中获得利益的个人或组织 软件客户包括提出要求、支付款项、选择、具体说明或使用软件产品的项目风险承担者(s t a k e h o l d e
23、r)或是获得产品所产生的结果的人。,2023/9/16,79,客户与开发人员之间的合作关系(Note 10),高质量的需求来源于客户与开发人员之间有效的交流与合作 通常,开发人员与客户或客户代理人成为一种对立关系,2023/9/16,80,软件客户需求权利书(1)(Note 11),客户有如下权利:1.要求分析人员使用符合客户语言习惯的表达。2.要求分析人员了解客户系统的业务及目标。3.要求分析人员组织需求获取期间所介绍的信息,并编写软件需求规格说明。4.要求开发人员对需求过程中所产生的工作结果进行解释说明。5.要求开发人员在整个交流过程中保持和维护一种合作的职业态度。,2023/9/16,8
24、1,软件客户需求权利书(2)(Note 12),6.要求开发人员对产品的实现及需求都要提供建议,拿出主意。7.描述产品使其具有易用、好用的特性。8.可以调整需求,允许重用已有的软件组件。9.当需要对需求进行变更时,对成本、影响、得失(t r a d e-o ff)有个真实可信的评估。10.获得满足客户功能和质量要求的系统,并且这些要求是开发人员同意的。,2023/9/16,82,软件客户需求义务书(1)(Note 13),客户有下列义务:1.给分析人员讲解业务及说明业务方面的术语等专业问题。2.抽出时间清楚地说明需求并不断完善。3.当说明系统需求时,力求准确详细。4.需要时要及时对需求做出决策
25、。5.要尊重开发人员的成本估算和对需求的可行性分析。,2023/9/16,83,软件客户需求义务书(2)(Note 14),6.对单项需求、系统特性或使用实例划分优先级。7.评审需求文档和原型。8.一旦知道要对项目需求进行变更,要马上与开发人员联系。9.在要求需求变更时,应遵照开发组织确定的工作过程来处理。10.尊重需求工程中开发人员采用的流程(过程)。,2023/9/16,84,“签约”意味着什么(Note 15),客户与开发人员关系中的重要部分 客户代表经常把“签约”看作是毫无意义的 更为重要的是签名是建立在一个需求协议的基线上 与你的重要客户一起讨论权利书和义务书,以达成协议,并付诸实践
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件 系统 开发 技术 软件工程
链接地址:https://www.31ppt.com/p-6027854.html