《软件工程华东理工大学计算机科学与工程系》由会员分享,可在线阅读,更多相关《软件工程华东理工大学计算机科学与工程系(55页珍藏版)》请在金锄头文库上搜索。
1、,2018年8月29日,第8章 软件工程,李开复给学生的信,【1】从诚信谈起:http:/ 【2】从优秀到卓越:http:/ 【3】成功、自信、快乐:http:/ 【4】大学四年应该这么度过:http:/ 【5】你有选择的权利:http:/ 【6】选择的智慧:http:/ 【7】21世纪最需要的7种人才:http:/ 【8】给未来的你:http:/ 、演讲能力? 看报、看杂志、看小说、看网站 听广播、看电视、看电影 写总结、写日记、参加演讲比赛,思考,浙江工商局长郑宇民斗智央视主持人董倩,在大学给自己制定一个 个人使用表,送给学生的话,1.天天锻炼身体,不要说:“我没有时间。” 2.多看一些好
2、书,不要说:“我很忙。” 3.培养自己多方面兴趣,不要说:“我不懂,我不喜欢。” 4.生于忧患,死于安乐。 5.要自信,不要说:“我不行。”应说:“让我试试。” 6.要有实干精神(勤奋)。,我大学的个人使用表,7.珍惜生命的分分秒秒,想到:“我能再活一天,我将要。” 8.要勇敢承认自己的错误(或不足), 不要说:“那是因为。”不要为自己寻找理由,一切无借口。应坦诚承认别人行。 9.建立终身学习目标,一切以学习为主。从一切人那儿学习,哪怕他是自己的敌人。从一切方面(特别是实践)学习。 10.不要轻易许下诺言,要尽最大努力遵守诺言。 11.要多与人真诚合作,想到:个人难挑千担柴。无性情中人,最好别
3、干。 12.不要在意闲言碎语,坚信:走自己的路,让别人说去吧!,13.不要成为金钱、名利、权力的奴隶,也不要成为任何人(哪怕自己最爱的人)的奴隶。应勇敢地作自己的主,活出自己的风格,想到:我永远是我! 14.要谦虚。 15.珍惜友情,但不刻意去追求。 16.当天的事当天干。 17.一切应从有益自己成功为出发点,但得顾及别人和社会利益。 18.应迎难而上,奋力拼搏,做到问心无愧,但要考虑“煞车原理”。,19.多赞美,少批评。 20.为人处事,要对得住自己良心。 21.微笑面对任何人;礼貌对待任何人,哪怕他是个乞丐;尊重为自己服务的人;爱一切人,哪怕他是自己的敌人(当然是他好的一面),也应仇恨一切
4、丑恶现象和坏人。 22.应加强道德纪律观念。 23.注意修养和综合素质的提高。 24.睡前反省今日所作所为及明天的大致安排。,25.千万不要为了别人而毁灭自己(当然献爱心除外),不要为了报复而毁了自己,最好不要报复。 26.坦然对待一切,不幸应看到希望,成功应看到困难。微笑面对人生,也就是乐观地对待人生。 27.每日深思:我拿什么资本到社会上去竞争,怎样才能把自己培养成高素质的可塑性人才?,回锅肉制作方法,1.需求分析:口味、主料、辅料 2.制作步骤:买菜、煮肉、切菜、切肉、炒肉 3.制作方法:肉煮几成熟、什么时候放蒜苗 4.品位佳肴:盐、麻、辣、油 5.剩菜处理:保菜、热菜,做软件就像做菜一
5、样,是一门技术,更是一门艺术,系统实现,系统分析,系统设计,系统测试,系统维护,通过五个实例详细 讲解软件开发的 五个过程,网上商城管理系统设计与实现,基于Web的在线系统,主要功能是为会员用户提供商品的浏览和购买功能,主要涉及: 会员信息的管理:会员注册,信息修改、删除和检索等 商品信息的管理:商品录入,信息修改、删除和检索等 订单信息的管理:对会员及其所购买的商品的管理(确认订单、查看订单、修改订单和完成订单),8.1 软件工程的形成与发展 8.2 什么是软件工程 8.3 系统分析 8.4 系统设计 8.5 系统实现 8.6 软件测试 8.7 软件维护 8.8 软件文档,软件工程,8.1
6、软件工程的形成与发展,1963年,美国用于控制火星探测器的计算机软件中的一个“,”号被误写为“。”,而致使飞往火星的探测器发生爆炸,造成高达数亿美元的损失 1968年,北大西洋公约组织的计算机科学家们在联邦德国召开的国际会议上讨论了软件危机问题,同时也是在这个会议上提出了“软件工程”这个名词,导致了一门新的工程学科的正式诞生 软件危机:软件开发和维护过程中遇到的一系列严重问题,软件危机表现形式: 用户很不满意:界面风格不统一、操作不方便 质量很不可靠:没有人测试,代码管理,团队沟通 软件不可维护:每年维护成本20% 对软件开发成本和进度的估算不准确:公司损失 没有适当的文档:代码是给人看的,不
7、是给机器;和客户沟通,还要客户签字;要做什么写下来 软件成本比重上升:人力资本上升 软件供不应求:保证软件质量,产生的原因: 软件是逻辑的系统部件不是物理的系统部件,以程序和文档形式存在 软件规模越来越大,功能越来越强,软件结构非常复杂 结论:软件危机产生的根本原因与软件产品的特征和软件产品开发与维护的方法不正确有关 解决软件危机的根本出路: 认识问题的原因所在,汲取前人的经验 要有相应的理论、技术、工具,8.2 什么是软件工程,1.定义 是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科 它涉及到程序设计语言、数据库、软件开发工具,系统平台、标准、设计模式等方面,2.软件生存
8、周期 软件生存周期一般划分为: 计划(定义)时期:问题定义和可行性研究两个阶段 开发时期:需求分析、系统设计、编码和测试四个阶段 运行时期:主要是系统维护阶段,问题定义,可行性研究,需求分析,软件设计,编码,测试,维护,(软件系统目标与范围说明书),(可行性论证报告),(需求说明书),(设计说明书),(程序),(测试报告),(软件维护报告),典型的软件生存周期:,3.开发模型 (1)瀑布模型(waterfall model) 瀑布模型由W.Royce于1970年首先提出 根据软件工程生存周期各个阶段的任务,瀑布模型从可行性研究开始,逐步进行阶段性变换,直至通过确认测试并得到用户确认的软件产品为
9、止 瀑布模型上一阶段的变换结果是下一阶段变换的输入,相邻两个阶段具有因果关系,紧密联系 一个阶段的失误将蔓延到以后的各个阶段 为了保障软件开发的正确性,每一阶段任务完成后,都必须对它的阶段性产品进行评审,确认之后再转入下一阶段的工作,评审过程发现错误和疏漏后,应该及时反馈到前面的有关阶段修正错误或弥补疏漏,然后再重复前面的工作,直至某一阶段通过评审后再进入下一阶段 瀑布模型如图所示:,瀑布模型的优点: 可强迫开发人员采用规范的方法 严格规定了每个阶段必须提交的文档 要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证 瀑布模型的缺点: 在软件开发的初始阶段指明软件系统的全部需求是困难的,
10、有时甚至是不现实的 确定需求后,用户和软件项目负责人要等相当长的时间才能得到一份软件的最初版本。如果用户提出比较大的修改意见,那么整个软件项目将会蒙受巨大的人力、财力和时间方面的损失,(2)原型模型(演化模型) 主要是针对事先不能完整定义需求的软件项目开发而言的 许多软件开发项目由于人们对软件需求的认识模糊,很难一次开发成功,返工再开发难以避免 因此,人们对需开发的软件给出基本需求,作第一次试验开发,其目标仅在于探索可行性和弄清需求,取得有效的反馈信息,以支持软件的最终设计和实现 通常我们把第一次实验性开发出的软件称为原型 这种开发模型可以减少由于需求不明给开发工作带来的风险,有较好的效果,相
11、对瀑布模型来说,原型模型更符合人类认识真理的过程和思维,是目前较流行的一种实用的软件开发方法 原型模型如图所示:,原型化模型有: 丢弃型:原型开发后,已获得了更为清晰的需求反馈信息,原型无需保留而丢弃,开发的原型仅以演示为目的,这往往用在软件的用户界面的开发上 样品型:原型规模与最终产品相似,只是原型仅供研究用 渐增式演化型:原型作为最终产品的一部分,它可以满足用户的部分需求,经用户试用后提出精华系统、增强系统能力的需求,开发人员根据反馈信息,实施开发的迭代过程。如果在一次迭代过程中,有些需求还不能满足用户的需求,可以在下一迭代过程中予以修正,整个实现后软件才可最终交付使用,(3)螺旋模型 是
12、瀑布模型与原型模型相结合,并增加两者所忽略的风险分析而产生的一种模型 该模型通常用来指导大型软件项目的开发,它将开发划分为制定计划、风险计划、实施开发和客户评估四类活动 沿着螺旋线每转一圈,表示开发出一个更完善的新的软件版本 如果开发风险过大,开发机构和客户无法接受,项目有可能就此中止;多数情况下,会沿着螺旋线继续下去,自内向外逐步延伸,最终得到满意的软件产品,该模型是由TRW公司的B.Boehm于1988年提出的 下图显示了螺旋模型的原理,沿着螺旋线旋转,在笛卡儿坐标的四个像限上分别表达了四类活动,制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件 风险分析:分析所选方案,考虑如何
13、识别和消除风险 实施开发:实施软件开发 客户评估:评价软件功能和性能,提出修正建议,螺旋模型的优点: 对可选方案和约束的强调有利于已有软件的重用 有助于把软件质量作为软件开发的一个重要目标,减少了过多测试或测试不足所带来的风险 但是要求许多客户接受和相信并不容易,使用该模型需要具有相当丰富的风险评估经验和专门知识,如果项目风险较大,又未必能及时发现,势必造成重点损失 目前国内许多软件公司还未能及时掌握和运用这种模型,有待进一步积累经验,(4)喷泉模型 对软件复用和生存周期中多项开发活动的集成提供了支持,以面向对象的软件开发方法为基础,它适合面向对象的开发方法 它克服了瀑布模型不支持软件重用和多
14、项开发活动集成的局限性 喷泉模型使开发过程具有迭代性和无间隙性 系统某个部分常常重复工作多次,相关功能在每次迭代中随之加入演化的系统 无间隙是指在分析、设计和实现等开发活动之间不存在明显的边界,喷泉模型参见下图:,8.3 系统分析,1.需求分析 调查用户需求(添加、删除、修改、查询、打印) 分析新系统的主要目标,分析开发该系统的可行性(技术、经济、人力、物力、环境、政策、道德等) 计划时期还应制定出人力、资源及进度计划,2.面向过程分析 数据流图:从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,实体关系图:简记E-R图是指以实体、关系、属性三个基本
15、概念概括数据的基本结构,从而描述静态数据结构的概念模式,状态图:描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的时间做出反应的,反应,3.面向对象分析 用例图:被称为参与者的外部用户所能观察到的系统功能的模型图,呈现了一些参与者和一些用例,以及它们之间的关系,主要用于对系统、子系统或类的功能行为进行建模,类图:显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等,状态图:描述一个实体基于事件反应的动态行为,显示了该实体如何根据当前所处的状态对不同的时间做出反应的,反应,1.功能需求: 会员信息管理:密码安全性、忘记密码怎么办 商品信息管理:每页显示多少商品、商品查询 订单信息的管理:完成订单可以两个小时修改 用户登录:管理员和会员同一个登录页面?,网上商城管理系统系统分析,