第1章软件工程的思想_第1页
第1章软件工程的思想_第2页
第1章软件工程的思想_第3页
第1章软件工程的思想_第4页
第1章软件工程的思想_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

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

文档简介

计算机科学与技术学院

软件工程研究室王宇颖

wangyy@

软件工程SoftwareEngineering软件开发既是一门科学,又是一门工程,也是一门艺术

授课对象:软件工程专业

授课学时:

40学时,课程设计2周先修课程:高级语言程序设计、数据结构、数据库技术等

后继课程:面向对象的软件开发技术系统分析与设计软件质量保证与测试等。

软件工程的教学目的

本课程的教学目的是培养学生的基本软件工程素质,重视软件项目开发的阶段和过程,初步具备对软件项目的需求分析和设计的能力,为学习后续课程奠定基础,为今后从事规范化软件开发奠定基础,为培养优秀的软件工程人才奠定基础。软件工程知识是从事软件行业职业的基础软件程序员系统分析员软件设计员系统架构师软件集成师测试工程师实施工程师首席技术官软件质量经理软件项目经理系统管理员数据库管理员软件售前人员软件营销人员本课程的主要内容和知识结构

第1章软件工程的思想第2章软件开发过程模型第3章软件开发过管理第4章软件需求分析

(软件开发关键的一步)第5章软件设计-实现的前提第6章实现-初始结果第8章软件维护-延长软件寿命第7章软件测试和质量保证-得到可交付的结果软件工程教材丛书需求分析系列设计系列实现系列测试与度量系列项目管理系列质量管理系列面向对象技术系列建模语言系列可用性与复用系列前沿论题系列软件工程软件工程方法与技术软件项目管理软件过程系列

史济民等,软件工程-原理、方法与应用,

高等教育出板社ISBN7-04-011561-12007.08.第8次印刷.

孙家广,软件工程-理论、方法与实践,

高等教育出板社,

2006年5月参考书

SoftwareEngineeringAPractitioner’sApproachAuthor:Rogers.Pressman(软件工程实践者的研究方法机械工业出版社)课程的基本要求

了解软件工程的思想、范围、基本要素、规范,软件开发方法和工具。

掌握软件开发的过程和初步建模

学会运用所学知识进行初步的软件项目开发。8考试要求

平时成绩:占总成绩的20%完成一个小型软件系统的分析、设计文档,阶段性成果占总成绩的20%考试成绩:占总成绩的60%财富可以通过辛勤劳动获取,也可能由于喜中彩票大奖获得。知识却必须是通过一点一滴努力学习逐渐积累而获得的。珍惜每一天,每一节课,每一分钟。听课复习阅读讨论练习,从知到会实践,从会到通知识—方法—能力如何学习软件工程

学习读书

知识课程

你们的收获不会仅仅局限在本课程之内……课堂教学复习作业参考资料实践渗透总结属于自己的“最佳实践”多动手、多实践,方可成为合格的软件工程师;实践越多、参与的项目越大,积累经验越多;首先遵循他人提出的“最佳实践”,进而创造自己的“最佳实践”。从“程序员”成长为“软件工程师”程序员软件工程师软件工程课程(课堂)+课程设计(实践)+课后孜孜不倦的练习、实践、总结、归纳(…越多越好)实践作业1)分析和设计下列问题之一,并写出文档.3)自定题目,如:教学管理软件教学网站网上售书,网上购物超市管理食堂管理工寓管理

题目要有创新性。

2)课程阶段性报告

学生体会

从他的历史发展中我明白了很多道理,从他的前景中我感到了振奋和鼓舞,感谢软件工程又给了我很多问题去思考,很多方法去实践,更多的命题要在生活和实践中慢慢领悟。

任何事物都有它美的一面,软件的美是博大精深的,有待我们去细细体味,而这种美又是由我们赋予的.

希望认真沟通实践创新14第1章

软件工程的思想SoftwareEngineering软件工程研究室15内容:

1.1软件

1.2软件工程的概念

1.3软件工程的作用

1.4软件工程的发展

1.5软件工程三要素

1.6软件开发的基本策略1.7软件工程的目标

161.1软件

20世纪五十年代

软件=程序面向过程的程序=算法+数据结构

20世纪六十年代

软件=程序+文档

20世纪七十年代

软件=程序+文档+数据

面向对象的程序=对象+消息面向构件的程序=构件+构架

1.1.1软件的定义软件比程序更复杂软件必须能够模拟现实世界,才能解决现实世界的问题。现实世界是复杂的,软件是复杂的。17软件是是被开发或设计的,而不是被制造的人的作用不同,构建方法不同,质量问题不同,成本构成不同。故障率时间初期故障率磨损实际理想故障率时间修改软件故障曲线硬件故障曲线图1-1硬件、软件故障图1.1.2软件的特征软件是产品交付使用的载体。软件不会磨损,软件需求变化快,维护软件困难。18*系统软件:和硬件交互多,数据结构复杂*应用软件*商业软件*工程和科学计算软件*嵌入式软件*个人计算机软件*人工智能软件*基于web软件*工具包软件*开源软件

*遗留软件1.1.3软件的分类191.2软件工程P.Wegner和B.Boehm认为:

科学知识在设计和构造计算机程序,以及开发、运作和维护这些程序所需求的有关文档编制中的实际应用。F.L.Bauer认为:

为了经济地获得软件,这个软件是可靠的并且能在实际的计算机上工作,所需要的健全的工作原理(方法)的确立和使用。IEEE(电气和电子工程师协会83)指出:软件工程是开发、运行、维护和修复软件的系统化方法。IEEE(93)指出:

软件工程是将系统化的、规范的、可度量的方法应用于软件的开发、运行和维护的过程,即将工程化的方法应用于软件开发中。201.3软件工程的作用软件开发失败的例子1962年6月,美国飞向金星的第1个空间探测器(水手1号)飞行中偏移了航线,失败了。

原因:飞舱中的导航程序中的一个语句的语义错。世界上精心设计的并花费巨额投资的美国阿波罗8号太空飞船登月飞行计划的软件的错误,使存储器一部分信息丢失;阿波罗14号的飞行10天中,出现18个软件错误。原因:软件的可靠性问题。1963~1966年IBM开发OS/360操作系统,投资几千万美元,工作量5000多人年,拖延几年才交付使用,而且每年要发现近100个错误。原因:计划上的问题,无法控制进度。21美国肯尼迪发射的一枚“阿脱拉斯火箭,当飞地面几十英里高空时,翻转.地面控制中心被迫下令炸毁,结果损失1850万美元。原因:飞行计划程序漏掉一个“连”接字符。由此可看出:软件需求量不断增大,复杂度越来越高,软件可靠性无保障软件维护费用不断上升软件进度无法预测成本增长无法控制程序人员无限度地增加程序功能。22上述原因导致了60年代末的“软件危机1968年北大西洋公约组织(NATO)的计算机科学家在联邦德国的幕尼黑召开的一次计算机软件国际会议上,对软件开发的方法、技术进行了广泛的讨论,首次提出了“软件工程”的概念。软件工程的作用:解决60年代出现的软件危机。解决软件当前面临的问题。

软件开发周期长,成本高,找错误难,度量困难,软件可靠性、重用性、维护性存在问题。告诉人们怎样去开发软件、管理软件。现代软件开发对人才的要求。

提高软件产品的质量,降低软件开发的成本。

231.4软件工程的发展传统的软件工程时代过程软件工程时代对象软件工程时代构件软件工程时代(构件技术,中间件技术,集成技术)自动化的流水线装配软件工程的发展方向

分布式、大规模的软件开发

遍在计算移动计算网络资源开源软件

软件的网络化,服务化,全球化的发展。24为屏蔽计算机硬件的异构性,发展了操作系统.NET/COMWebServicesJ2EE/EJBUNIXWindowsLinuxC/C++语言Java语言为屏蔽操作系统和编程语言的异构性,发展了支撑软件和中间件为了屏蔽中间件之间的异构性,出现了Web技术。Fortran语言为了祢补应用软件与现实计算环境之间的距离

网络层

综观软件技术的发展图1-2应用系统操作系统支撑软件

中间件251.5软件工程三个要素

工具

Softwareengineeringlayers图1-3软件工程三个要素方法(步骤、原则)

过程(任务(活动))质量焦点工具26

提供完成系统开发每一步的详细指导,包括具体的模型、工具和技术(的使用说明)。

1.5.1系统的开发方法(SystemDevelopmentMethodology)结构化方法:

使用结构化分析,结构化设计,结构化编程技术的系统开发方法。

面向对象方法:使用面向对象的分析,面向对象的设计,面向对象的编程技术的系统开发方法。27系统开发中使用的一些工具

项目管理应用程序制图/图形应用程序字处理器应用程序集成开发环境(IDE)数据库管理应用程序反向工程工具代码生成工具

1.5.2工具(Tool)

为软件开发方法或开发过程提供自动或半自动支持。

CASE(Computer-AidedSoftwareEngineering)工具28

(1)

MicrosoftVisio(2)VisibleAnalyst()(3)OracleDesigner()(4)RationalRose()(5)Togethersoft()29DFDonCASEToolVisualAnalyst

Figure1-4显示DFD的可视化工具30RationalRoseShowingOODiagramsFigure1-5显示交互图的ROSE工具31TogetherJShowingClassDiagramandSynchronizedJavaCodeFigure1-6显示类图和JAVA源代码的往返工程工具32过程:定义了活动的时间、人员、工作内容

和达到预期目标的途径.

如一个通用过程框架(建模活动

(分析任务(获取、分析建立DFD图…文档),设计任务(结构、数据、接口…设计文档)))

1.5.3软件过程331.6软件开发的基本策略“软件复用”、“分而治之”、“优化—折中”。

1.6.1软件复用(Reuse)

构造新的软件系统,使用已有的软构件,即组装(或加以合理修改)成新的系统。

据统计,世上已有1000亿多行程序,无数功能被重写了成千上万次,真是浪费!

在一个新系统中,大部分的内容是成熟的,只有部分内容是创新的。复用已有的功能模块,既可以提高开发效率,也可以改善新开发过程中带来的质量问题。将复杂问题分解为若干可独立的简单子问题,并分别独立求解,以降低复杂性;将各子问题的解综合起来,形成最初复杂问题的解。1.6.2分而治之(DivideandConquer)Figure1-7显示模块的分解与组装分治的好处:开发工作可并行进行独立部分小,易于理解一个部分出了问题,易替换,影响范围小。局限:只了解自己工作部分,不能深入了解全部内容。35

优化就是精简,去掉繁锁。

例如:

#在算法设计时要考虑空间和时间的折中;

#低成本和高可靠性的折中;

#安全性和速度的折中。1.6.3优化——折中

软件中的折中(Trade-off):不同的需求之间往往存在矛盾与冲突,需要通过折中来作出的合理的取舍,找到使双方均满意的点。折中策略:

是通过协调各个质量因素,实现整体质量的最优。

36软件折中的重要原则:

不能使某一方损失关键的职能,更不可以象“舍鱼而取熊掌”那样抛弃一方。用“优化——折中”的策略解决“鱼和熊掌不可兼得”的难题。

问题提出:假设鱼每千克10元,熊掌每千克一万元。有个人只有20元钱,非得要吃上一公斤美妙的“熊掌烧鱼”,怎么办?

解决方案:

用9元9角9分钱买999克鱼肉,用10元钱买1克熊掌肉,可做一道“熊掌戏鱼”菜。剩下的那一分钱还可建立奖励基金。例举你在学习和生活中使用折中思想的例子

37

软件工程的目标是提高软件的质量与生产率,降低软件开发和维护成本,最终实现软件的工业化生产。

质量是软件需求方最关心的问题,用户即使不图物美价廉,也要求个货真价实.

1.7软件工程的目标38本章小结

软件工程的概念软件工程三要素(方法、工具、过程)软件开发的基本策略软件工程的目标软件工程的思想是:

提高软件产品的质量,降低软件开发和维护的成本;

系统化的、规范化的进行软件开发和科学化的管理软件。在软件开发中遵循模型化、模块化、抽象的思维、复用的思想、优化—折中的思想。

39观念之一:实践者并不能依赖于书籍,这是因为:现实的工作中,由于条件千差万别,即使是相当成熟的软件工程规范,常常也无法套用。正确认识软件工程的观念软件技术日新月异,没有哪一种软件标准能长盛不衰。祖传秘方在某些领域很吃香,而在软件领域则意味着落后。观念之二:我们拥有最好的开发工具、最好的计算机,一定能做出优秀的软件。

客观情况:良好的开发环境只是产出成果的必要条件,而不是充分条件。如果拥有好环境的是一群庸人,难保他们不干出南辕北辙的事情。40观念之三:

如果我们落后于计划,可以增加更多的程序员来解决。观念之四:需求分析很困难,软件修改越早代价越少,修改越晚代价越大,就跟治病一样道理。客观情况:软件开发不同于传统的农业生产,人多不见得力量大。如果给落后于计划的项目增添新手,可能会更加延误项目。41

争议之一:如果软件运行较慢,是换一台更快的计算机,还是设计一种更快的算法?一些有争议的观念

如果开发软件的目的是为了学习或是研究,那么应该设计一种更快的算法。

如果该软件已经用于商业,则需谨慎考虑:若换一台更快的计算机能解决问题,则是最快的解决方案。42类似的争议还有:是买现成的程序,还是彻底自己开发?技术人员和商业人士常常会有不同的选择。

改进算法虽然可以从根本上提高软件的运行速度,但可能引入错误以及延误进程。技术狂毫无疑问会选后择者,因为他们觉得放弃任何可以优化的机会就等于犯罪。争议之二:

有最好的软件工程方法,最好的编程语言吗?观点:开发人员应该根据客观条件,选择自己熟悉的方法和语言,才能保证合格的质量与生产率。

程序设计是自由与快乐的事情,不要自寻烦恼。43

观点:就软件开发而言,技巧的优点在于能另辟蹊径地解决一问题,缺点是技巧并不为人熟知。若在程序中用太多的技巧,可能会留下隐患,别人也难以理解程序。鉴于一个局部的优点对整个系统而言是微不足道的,而一个错误则可能是致命的。编程时是否应该多使用技巧?争议之三:建议用自然的方式编程,少用技巧。

《狼三则》的故事告诉我们“失败的技

温馨提示

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

评论

0/150

提交评论