软件工程电子教案

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1软件工程使用教材:软件系统开发技术(修订版)2第一章软件工程概述3§1.1软件工程的背景和历史1968年由NATO(北大西洋公约组织)在德国Garmish召开的学术会议上,FeitzBauer首先提出了“软件工程”概念。4软件工程与编程前者是一门学科,一种科学理论来指导软件系统开发,标准化,自动化的过程考虑如何分解一个系统,以便各人分工开发;考虑如何说明每个部分的规格要求;怎样才能易于维护单纯的代码编写是软件工程发展的前身是软件工程中占据很少时间和空间的一部分5计算机学科的发展计算机科学(CS)计算机科学(CS)计算机工程(CE)软件工程(SE)信息系统(IS)计算学科(computingdiscipline)660年代以来工厂管理病人监护工资统发图书馆管理机票预定学籍管理早期第二阶段第三阶段第四阶段面向批处理多用户分布式系统强大的桌面系统有限的分布实时嵌入“智能”面向对象技术自定义软件数据库低成本硬件专家系统软件产品消费者的影响人工神经网络并行计算网络计算机195019601970198019902000Evolutionofsoftware#8为什么发展如此之快不准确的时间和金钱的估算软件质量的低下相对硬件产品开发软件开发费用的增加维护、增强软件系统的必要性硬件价格大幅度下降9软件技术面临的问题•规模•复杂性•生产率Windows95有1000万行代码Windows2000有5000万行代码例:Exchange2000和Windows2000开发人员结构Exchange2000Windows2000项目经理25人约250人开发人员140人约1700人测试人员350人约3200人11《人月神话》焦油坑史前史中,没有别的场景比巨兽在焦油坑中垂死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越是猛烈,焦油纠缠得越紧,没有任何猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。12软件危机的主要特征软件开发周期大大超过规定日期;软件开发成本严重超标;软件质量难于保证。13软件工程的定义FritzBauer在NATO会议上给出的定义:“软件工程是为了经济地获得可靠的和能在实际机器上高效运行的软件而确立和使用的健全的工程原理(方法)。”14软件工程的定义(2)IEEE【IEE83】给出的软件工程定义:“软件工程是开发、运行、维护和修复软件的系统方法。”15软件工程的定义(3)IEEE【IEE93】给出了一个更加综合的定义:“将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化应用于软件中。”软件工程是一门交叉学科软件工程的主要研究内容软件开发技术:软件开发方法学软件开发过程软件工具和软件工程环境软件工程管理:软件管理学软件经济学软件心理学软件工程所包含的内容不是一成不变的,随着人们对软件系统的研制开发和生产的理解。应用发展的眼光看待它。17软件工程—一种层次化技术工具方法过程质量焦点Softwareengineeringlayers软件工程三个要素:方法、工具、过程18软件工程与一般工程的差异软件是逻辑产品而不是实物产品软件的功能依赖于硬件和软件的运行环境以及人们对它的操作软件设计的复杂性软件特征:功能的多样性实现的多样性能见度低软件结构合理性差智力密集及知识产权保护19软件工程知识结构2001年5月ISO/IECJTC1(ISO和IEC的第一联合技术委员会)发布了《SWEBOK指南V0.95(试用版)》SWEBOK把软件工程学科的主体知识分为10个知识领域。20软件工程知识结构软件需求软件设计软件构造软件测试软件维护软件配置管理软件工程管理软件工程过程软件工程工具和方法软件质量21“软件工程”课程与其它软件专业课的区别(1)立足于系统的整体。(2)讲授系统分析、系统设计、测试及维护的理论和方法。(3)构筑一个软件系统,实践软件开发全过程。22“软件工程”课程教学的目标转变对软件的认识:上升程序系统转变思维定式:上升程序员系统工程师(系统分析员)23软件产品的标准化软件开发过程的标准化24软件的工业化生产过程应具备的特点:明确的工作步骤详细具体的规范化文档明确的质量评价标准“一个好的工业,应有一套良好的标准来配套”25软件工程技术的两个特点强调规范化强调文档化26§1.2软件和软件生命期模型(SoftwareLifeCycle)软件产品或软件系统从设计、投入使用到被淘汰的全过程。27软件生存期的阶段划分(1)可行性研究与计划(2)需求分析(3)总体设计(4)详细设计(5)实现(6)集成测试(7)确认测试(8)使用和维护成长期(开发期)怀孕期(计划期)成年期(运行期)28新的国际标准定义的软件生存过程(1995ISO/IEC12207)软件生存期过程支持过程组织过程主要过程获取过程供应过程开发过程运行过程维护过程文档编制过程配置管理过程质量保证过程验证过程确认过程联合评审过程审核过程问题解决过程管理过程基础设施过程改进过程培训过程29软件工作的范围只考虑编写程序涉及整个软件生存周期扩展到30软件开发模型是软件开发全部过程、活动和任务的结构框架。它能直观表达软件开发全过程,明确规定要完成的主要活动、任务和开发策略。软件开发模型也常称为:软件过程模型软件生存周期模型软件工程范型软件开发模型可行性研究与计划需求分析设计编码运行维护测试定义阶段开发阶段维护阶段瀑布模型(WaterfallModel)32开发软件不仅仅是编程开发维护设计编写模块测试联合测试分析33按照传统瀑布模型开发软件的特点1.阶段间具有顺序性和依赖性。2.推迟实现的观点。3.每个阶段必须完成规定的文档;每个阶段结束前完成文档审查,及早改正错误。34原型模型(快速原型模型)原型范型用户测试运行原型建造/修改原型听取用户意见采用原型模型的软件生存周期分析定义系统需求生成原型系统设计程序设计编码测试运行和维护原型化含原型化的软件生存期36§1.3软件质量的评价成功的标准:用户在用用户可很容易做完要做的事失败的根本原因:开发人员写出的东西达不到用户要求(人的问题.技术问题)37质量与生产率质量是软件需求方最关心的问题,用户即使不图物美价廉,也要求个货真价实质量与生产率之间有着内在的联系,高生产率必须以质量合格为前提质量与生产率的提高就指望程序员与程序经理非得在质量与生产率之间分个主次不可,那么应该是质量第一,生产率第二38质量与生产率(2)质量直接体现在软件的每段程序中,高质量自然是开发人员的技术追求,也是职业道德的要求高质量对所有的用户都有价值,而高生产率只对开发方有意义如果一开始就追求高生产率,容易使人急功近利,留下隐患39不贪污的官就是好官吗“运行正确”的程序就是高质量的程序吗?也许运行速度很低并且浪费内存;也许代码写得一塌糊涂40软件的质量因素软件的质量因素很多,如正确性、精确性、可靠性、容错性、性能、效率、易用性、可理解性、简洁性、可复用性、可扩充性、兼容性等等(还可以列出十几个)一般说来倾向于可维护性、可靠性、可理解性和效率41软件质量因素分类和武学分类正确性与精确性易用性可理解性与简洁性性能与效率可复用性与可扩充性少林派、武当派华山派昆仑派峨嵋派崆峒派42正确性与精确性机器不会主动欺骗人,软件运行不正确或者不精确一般都是人造成的需求分析错了,那么对客户而言这个软件也存在错误如果软件没有100%地按需求规格执行,那么这个软件也存在错误程序员要为“正确”、“精确”四个字竭尽全力43性能与效率用户都希望软件的运行速度高些(高性能),并且占用资源少些(高效率)旧社会地主就是这么对待长工的:干活要快点,吃得要少点通过优化算法、数据结构和代码组织来提高软件系统的性能与效率优化的关键工作是找出限制性能与效率的“瓶颈”44易用性导致软件易用性差的根本原因是开发人员犯了“错位”的毛病:他以为只要自己用起来方便,用户也一定会满意当用户真的感到软件很好用时,一股温暖的感觉油然而生,于是就用“友好”来评价易用性45可理解性与简洁性(Note1)开发人员只有在自己思路清晰时才可能写出让别人能理解的程序编程时还要注意不可滥用技巧,应该用自然的方式编程简洁是一种美如果把学术文章写得很简洁,让人很容易理解,它往往中不了46可复用性与可扩充性一种方式是原封不动地使用现成的软件构件一种方式是对现成的软构件进行必要的扩充后再使用可复用性好的程序一般也具有良好的可扩充性47可行性研究与计划需求分析设计编码运行维护测试测试已经开始返回上级,再…..瀑布模型的质量保障体系48小结(Note2)软件的高质量主要是设计出来的不是“管”出来的更不能依赖质量检查。49第二章可行性研究与计划50系统流程图(Note3)输入单据磁盘文件处理输出单据51数据流程图数据源点和终点变换数据的加工文件数据逻辑关系符号:与、或、异或52§2.1可行性研究基本概念可行性研究的任务:可行性研究的主要任务是“了解客户的要求及现实环境,从技术、经济和社会因素等三方面研究并论证本软件项目的可行性,编写可行性研究报告,制定初步项目开发计划。”53可行性研究的内容(1)技术可行性(2)经济可行性(3)操作可行性(4)社会可行性(法律可行性)(5)抉择54技术可行性(Note4)度量一个特定技术信息系统解决方案的实用性及技术资源的可用性考虑的问题开发风险分析资源分析相关技术的发展(现有技术能否实现新系统,技术难点、建议采用技术的先进性)55经济可行性度量系统解决方案的性能价格比考虑的问题成本/效益分析有形成本、效益无形成本、效益价值和成本的关系质量与价值、成本的关系价值/成本的均衡56经济可行性考虑的问题(Note5)成本和效益的估算•开发成本的估算•开发效益的估算•运行成本的估算•运行效益的估算57成本分析代码行技术(page19)任务估算技术(page20)总成本、总人力相对误差在内Putnam估算模型(page21)COCOMO模型比较复杂20%58效益分析系统的经济效益=使用新系统增加收入+使用心系统可以节省的运行费用总的效益和软件生存周期有关货币的时间价值(page23)投资回收期(page23)投资回收率(page23)纯收入(page23)投资回收率59系统开发和每年运行费用举例1.系统开发费用(一次).2名系统分析员(450小时/名,45美元/小时)$40,500.5名系统开发人员(275小时/名,36美元/小时)$49,500.1名数据库管理员(30小时/名,42美元/小时)$1,260.2名技术写作者(120小时/名,25美元/小时)$6,000.1名秘书(160小时/名,15美元/小时)$2,40060系统开发和每年运行费用举例.1名数据通讯专家(60小时/名,42美元/小时)$2,4002名在转换期间数据输入人员$49,500(40小时/名,12美元/小时)61系统开发和每年运行费用举例培训:三天的开发人员内部培训课程$7,00030个用户,三天的内部培训课程$10,000物资:复印$500磁盘、纸张等消耗品$65062系统开发和每年运行费用举例购买硬件、软件:20台工作站Windows软件$1,00020台工作站内存升级$8,000网络软件$17,50020台工作站办公软件产品$20,000系统开发总费用$161,67063系统开发和每年运行费用举例2.年运行费用(每年)人员:维护程序员/分析员(250小时/年,42美元/小时)$10,500网络管理员(300小时/年,50美元/小时)$15,000购买硬件、软件升级:硬件$5,000软件$6,000物资和杂项$3,500每年总运行费用$40,00064操作可行性•用户使用可能性•时间进度可行性•组织和文化上的可行性65社会

1 / 510
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功