收藏 分享(赏)

软件工程导论.ppt

上传人:Facebook 文档编号:3284796 上传时间:2018-10-10 格式:PPT 页数:31 大小:295KB
下载 相关 举报
软件工程导论.ppt_第1页
第1页 / 共31页
软件工程导论.ppt_第2页
第2页 / 共31页
软件工程导论.ppt_第3页
第3页 / 共31页
软件工程导论.ppt_第4页
第4页 / 共31页
软件工程导论.ppt_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、孙旭光 E-MAIL: QQ:1938495 MSN:sd_,软件工程导论,如何学习好课程,网络是知识的重要来源 清华、北大等名校的讲课视频 国家级、部级精品课程 卡内基梅隆、麻省理工、加州伯克利等世界顶级大学的开放课件和视频 面对面的交流,直截了当的交流思想、学习知识 学会如何提问 学习的是解决问题的方法 8个相同的球中有1个球质量偏轻,用天平称两次找出轻的球? 传统思维:三次,二叉树=两次,三叉树,参考书目,1、软件工程 张海藩 人民邮电出版社 2、敏捷开发方法原则、模式与实践 Robert C. Martin著 清华大学出版社 3、人月神话 弗雷德里克布鲁克斯著 清华大学出版社,本节课内

2、容,1、什么是软件 2、软件危机 3、软件开发中常见的某些观点辨析 4、如何消除软件危机 5、软件工程的定义 6、举例说明软件工程是技术和管理的结合 7、软件生命周期 8、软件工程的基本原理参考书: 软件工程1.1 、1.2.1、 2.1、1.2.2,什么是软件,这里讨论的软件是几十人、上百人、上千人合作完成的软件,如Windows操作系统。开发软件不等于编写程序 开发软件应该完成的工作远远多于编写程序应该完成的工作软件程序 数据 文档,什么是软件危机,软件危机的最突出的爆发: 60年代美国IBM公司开发IBM360机的操作系统,化了5000人年的工作量,完成时间一再推迟,结果却不理想。项目负

3、责人Brook后来对整个过程反思,总结经验和教训,写成了人月神话,被称为程序员的“圣经”。软件工程学由此开始研究。,软件危机的表现,对软件开发成本和进度的估计常常很不准确。 实际成本比估计成本高出几倍甚至十几倍,实际进度比预期进度拖延几个月甚至几年的现象并不罕见。 用户对“已完成的”软件系统不满意甚至拒绝接受的现象经常发生。 软件产品的质量往往靠不住。 软件常常是不可维护的。 很多程序中的错误都非常难以改正。,软件通常没有适当的文档资料。 缺乏必要的文档资料或者文档资料不合格,必然给软件开发和维护带来许多严重的困难和问题。 软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应

4、用迅速普及的趋势。,关于软件开发,常见的一些观点,我们看看是否正确: “有一个对目标的概括描述就足以着手编写程序了,许多细节可以在以后再补充。” “所谓软件开发就是编写程序并设法使它运行。” “用户对软件的要求不断变化,然而软件是柔软而灵活的,可以轻易地改动。” “软件投入生产性运行以后需要的维护工作并不多,而且维护是一种很容易做的简单工作。” 软件维护的费用占软件总费用的5570,不完善的系统定义往往是导致软件项目失败的主要原因。 只有质量差的软件产品才需要维护。 在软件开发的过程中,若能推迟暴露其中的错误,则为修复和改正错误所花费的代价就会降低。 只要我们写出了程序并使其正常运行,我们的工

5、作就结束了。 我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题。 在项目计划发生延迟的情况下,增加更多的程序员一定会加快进度。,文档是软件产品的一部分,没有文档的软件就不称其为软件。 一个成功的项目唯一提交的就是运行程序。,如何消除软件危机,充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合共同完成的工程项目。充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,特别要吸取几十年来人类从事计算机软硬件研究和开发的经验教训。,推广使用在实践中总结出来的开发软件的成功的技术和

6、方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早期发展阶段形成的一些错误概念和做法。开发和使用更好的软件工具。总之,为了消除软件危机,既要有技术措施(方法和工具),又要有必要的组织管理措施。软件工程正是从管理和技术两方面研究如何更好地开发和维护计算机软件的一门新兴学科。,软件工程的定义,概括地说,软件工程是指导计算机软件开发与维护的工程学科。它采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明是正确的管理技术和目前能够得到的最有效的技术与方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。,举例:晨后综合症的解决,“晨后综合症”: 工作了

7、一整天,终于完成了某项工作后回家,不料第二天早晨一来却发现那项功能不再工作了。原因是什么呢?因为有人比你走的更晚,并且更改了你所依赖的某些东西!,解决第一步(技术):设计出良好的结构,解决第二步(管理):阶段评审和基线配置管理,每开发完一个或几个模块后,公司中的QA对其进行技术复审(复审软件的设计是否符合要求)和软件测试(选用合适的数据,检查预期结果和实际结果是否相符)。 通过后,将软件配置(软件、文档、数据)进行管理。,基线:已经通过了正式复审的中间产品,它可以作为进一步开发的基础,并且只有通过正式的变化控制过程才能改变它。在软件配置项变成基线前,可以迅速而非正式的修改它。一旦建立了基线后,

8、虽然也可以实现变化,但是必须应用特定的正式的过程来评估、实现和验证每个变化。,“晨后综合症”的解决中,第一步是采用的技术手段,第二步是采用管理的手段。,软件生命周期,概括地说,软件生命周期由软件定义、软件开发和运行维护三个时期组成,每个时期又可进一步划分成若干个阶段。,软件生命周期的各个阶段,1、问题定义 解决“问题是什么?” 通过调研,提出关于问题性质、工程目标和工程规模的书面报告,用户对这份报告确认 公司中对应的岗位:售前、市场部 2、可行性研究 问题是否有行的通的解决办法? 从技术、经济、社会因素(如法律)等方面分析可行性 专家、系统分析师、经验丰富的程序员,3、需求分析 对目标系统提出

9、完整、准确、清晰、具体的要求 具备用户的专业知识和较好的软件开发能力 系统分析师 4、概要设计 解决“怎样实现目标系统?” 实现一个目标系统,通常有几种方案,比较每种方案的优缺点,确定一种。 一个程序由若干个规模适中的模块按合理的层次结构组织成,所以要确定程序的体系结构,有哪些模块组成及模块间的关系。 系统设计师,高级程序员,5、详细设计 详细设计每个模块,确定实现模块功能所需要的算法和数据结构。 高级程序员,经验丰富的程序员6、编码和单元测试 写出正确的容易理解、容易维护的程序模块。 程序员,软件工人7、综合测试 包括集成测试和验收测试 公司对应的岗位:软件测试人员、质量保证(QA)人员,8

10、、软件维护 通常有四类维护活动:改正性维护,也就是诊断和改正在使用过程中发现的软件错误;适应性维护,即修改软件以适应环境的变化。完善性维护,即根据用户的要求改进或扩充软件使它更完善;预防性维护,即修改软件为将来的维护活动预先做准备。 每一项维护活动都应该经过提出(维护)要求,分析要求,提出方案,审批方案,确定计划,修改软件设计,修改程序,测试程序,复查验收等一系列步骤,实质上是经历了一次压缩和简化了的软件定义和开发的全过程。 修改多个bugs后,推出下一个版本(升级版、补丁包)国家标准计算机软件开发规程也把软件生命周期分成8个阶段。略有差异P15,软件测试开始的时间,例子1:网站开发已经结束,

11、测试人员提出意见:该网站服务对象不明确,无法吸引用户,战略上有失误。可行性分析、需求分析 例子2:网站开发已经结束,测试人员提出意见:某地方设计不好,应像*网站那样。设计 例子3:网站开发已经结束,测试人员提出意见:某功能无法使用。编码,软件工程的基本原理,1.用分阶段的生命周期计划严格管理把软件生命周期划分成若干个阶段,并相应地制定出切实可行的计划,然后严格地按照计划对软件的开发与维护工作进行管理 2. 坚持进行阶段评审软件的质量保证工作不能等到编码阶段结束之后再进行。原因: 第一,大部分错误是在编码之前造成的,例如,根据Boehm等人的统计,设计错误占软件错误的63%,而编码错误仅占37%

12、; 第二,错误发现与改正得越晚,改正错误所需付出的代价也越高,3. 实行严格的产品控制基线配置管理 4. 采用现代程序设计技术结构化分析(SA)技术、结构化设计(SD)技术、结构化程序设计(SP)技术,面向对象分析和设计技术。实践表明,采用先进的技术不仅可以提高软件开发和维护的效率,而且可以提高软件产品的质量。 5. 结果应该能够清楚地审查依据开发项目的总目标和完成期限,规定开发小组的责任、产品标准及完成日期,使结果能够清楚地审查,6. 开发小组的人员应该少而精素质高的人员的开发效率比素质低的人员的开发效率可能高几倍至几十倍,而且素质高的人员所开发的软件中的错误明显少于素质低的人员所开发的软件

13、中的错误。随着开发小组人员数目的增加,为了交流信息、讨论问题而造成的通信开销也急剧增加。当开发小组人数为N时,可能的通信路径有N(N1)/2条。7. 承认不断改进软件工程实践的必要性软件工程随着技术的进步而不断的发展,一、下列有关软件开发的某些观点,判断是否正确,并解析说明原因: “有一个对目标的概括描述就足以着手编写程序了,许多细节可以在以后再补充。” “用户对软件的要求不断变化,然而软件是柔软而灵活的,可以轻易地改动。” “软件投入生产性运行以后需要的维护工作并不多,而且维护是一种很容易做的简单工作。” 不完善的系统定义往往是导致软件项目失败的主要原因。 只有质量差的软件产品才需要维护。,作业,在软件开发的过程中,若能推迟暴露其中的错误,则为修复和改正错误所花费的代价就会降低。 只要我们写出了程序并使其正常运行,我们的工作就结束了。 我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题。 在项目计划发生延迟的情况下,增加更多的程序员一定会加快进度。,作业,二、软件生命周期可分为哪几个阶段?请详述各个阶段应完成的基本任务以及该任务应由公司中的什么岗位的人来完成。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 中等教育 > 小学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报