现代软件工程课程概述

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

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

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

资源描述

现代软件工程课程概述主讲:肖丁dxiao@bupt.edu.cn;北京邮电大学通信软件工程中心年1月19日2课程概述导引关于课程,首先需要澄清的问题为什么要学习这门课程?传统软件工程还有哪些内容需要研究?现代软件工程与传统的区别本科教学与研究生教学的区别软件的过程与软件质量的重要性其次,课程的教学及考核形式考勤10%+平时作业20%+期末考试70%2020年1月19日3提纲一、软件工程的知识体系二、教学侧重点三、软件工程管理的重要性四、软件工程技术的发展五、教学内容组织六、教学方法七、参考资料2020年1月19日4一、软件工程的知识体系提问:软件工程师应具备的知识结构?软件工程知识体系指南(SWEBOK)目的与目标:为学科范围提供一致的确认;澄清与其它学科(计算机科学、项目管理等)的关系;地位反映学科内容的特征;知识构成域-10个专题域。2020年1月19日5一、软件工程的知识体系软件工程:以工程化的原理、原则和方法进行软件开发,以期解决当时出现的“软件危机”。包含一系列过程、方法、技术和工具的框架。Codingprogrammingsoftwareengineering软件规模不断扩大软件复杂程度增加软件危机:大型软件开发成本高;开发过程不易控制;软件开发工作量估计困难;软件质量低;软件项目失败率高,错误率高;无法判断大型系统能否正常工作;软件维护任务重等。软件危机仍然存在!2020年1月19日6一、软件工程的知识体系软件工程技术:软件开发模型:软件开发全过程中系统的开发、运行和维护所实施的全部过程、活动、任务的结构框架。(What)软件开发方法:采用类似于工程的原理和原则进行软件开发。(How)软件开发工具:实现方法的自动或半自动的软件支撑环境。(CASE)2020年1月19日7一、软件工程的知识体系2020年1月19日8一、软件工程的知识体系软件过程管理软件产品和过程的质量度量项目计划与管理(包括风险管理)软件过程改进与能力测定(SPICE:SoftwareProcessImprovementandCapabilitydEtermination)工程技术主要解决开发效率问题;而过程管理则主要解决开发质量问题。2020年1月19日9一、软件工程的知识体系2020年1月19日10一、软件工程的知识体系为什么需要软件工程?遇到一个新领域的问题而不知道该如何下手时;一般的方法、过去的经验模式…在解决复杂问题的过程中感觉到杂乱无章、力不从心时;抽象、隔离、Teamwork…面对一个充满个性的开发团队而不知如何协调时;项目管理、过程管理…感觉到开发效率低下、质量始终是你的心头之患时…...质量管理、技术管理、过程管理…软件工程与计算机科学的差异软件工程计算机科学目标在时间、资源、人员这3个主要限制条件下构建满足用户需求的软件系统探索正确的计算和建模方法,从而改进计算方法本身产品软件(如办公套件和编译器)算法(比如希尔排序法)和抽象的问题(比如哲学家进餐问题)进度和时间表软件项目都有特定的进度和时间表研究项目一般不具有设定的进度和时间表关注点软件工程关注如何为用户实现价值软件理论关注的是软件本身运行的原理,比如时间复杂度,空间复杂度,和算法的正确性。变化程度随着技术和用户需求的不断变化,软件开发人员必须时刻调整自己的开发以适应当前的需求。同时软件工程本身也处于不断的发展中。对于某一种特定问题的正确解决方法将永远不会改变2020年1月19日112020年1月19日12提纲一、软件工程的知识体系二、教学侧重点三、软件工程管理的重要性四、软件工程技术的发展五、教学内容组织六、教学方法七、参考资料2020年1月19日13二、教学侧重点本科生教学侧重点:(培养软件开发人员)软件工程的概念软件生命周期软件开发模型软件开发方法软件开发工具基本的项目管理知识2020年1月19日14二、教学侧重点研究生教学侧重点:(培养软件项目管理人员)软件项目管理软件过程及CMM/CMMI软件质量与软件度量新型软件工程技术(新型软件开发过程模型、基于软件体系结构的开发方法、构件技术、软件复用之模式和框架技术等)2020年1月19日15提纲一、软件工程的知识体系二、教学侧重点三、软件工程管理的重要性四、软件工程技术的发展五、教学内容组织六、教学方法七、参考资料2020年1月19日16三、软件工程管理的重要性3.1软件企业的特殊性3.2我国软件企业的现状3.3印度软件企业的现状3.4我国与印度软件企业的差距分析3.5提高我国软件企业的管理水平2020年1月19日173.1软件企业的特殊性软件的复杂性和各模块间的相互依赖性是其他的产品所无法比拟的。所有的模块以及模块间的连接环节必须是100%的正确,不能像硬件那样允许出现一定范围的偏差。想象一下:如果没有好的管理,软件开发的组织架构会显得混乱,软件的开发过程会是杂乱无章的。规范化、标准化产业化工业化过程管理、质量管理2020年1月19日183.1软件企业的特殊性软件作为产品,是人用大脑生产出来的,不是机器制造出来的,因而,软件过程对人的依赖性极大。除去采用好的方法和工具等技术外,软件的质量极大地依赖于人。(人的创造性极具个性化)工程制造业影响质量的5要素:人、机器、原料、方法、环境。人占20%。软件工程管理就是要为人提供好的方法和工具以减轻人的压力,提高效率;通过过程管理技术尽量减少人的低级错误,减少过程对于人的依赖程度。2020年1月19日193.2我国软件企业的现状产业政策:信息化带动工业化,工业化促进信息化,信息化是我国加快实现工业化和现代化的必然选择。产业规模不断壮大:1992年我国软件产业总额仅43亿元;2000年593亿元;2001年796亿元,到2002年软件产业总额达到1100亿元,2004年达到2300亿。2020年1月19日203.2我国软件企业的现状软件出口额攀升,但相对比例较小。2004年达到28亿美元2020年1月19日213.2我国软件企业的现状产业结构不良:IT软件服务在IT整体市场中的比重不超过20%(信息化发达国家为40%);软件公司很多,但是大规模的软件公司却很少。硬件+网络vs软件+服务我国:6:4软件发达国家:3:7截至目前为止,我国通过CMM2级以上评估的软件企业已超过100家,其中,通过CMM3级以上评估的已超过45家,通过CMM4,CMM5级评估的有9家。CMM3是软件企业迈向国际化的门槛。2020年1月19日223.2我国软件企业的现状Why?规模化和系统化不够。规模化:软件企业无法形成规模,大多数企业都是从小型软件开发干起来的,当软件企业达到一定规模时,管理工作跟不上,无法形成规模效应。进而无法吸引国际顶尖软件客户。系统化:软件是一种商品,只有系统地控制产品的质量、开发时间、开发成本才能使商品走入市场、走向国际。许多软件企业在技术开发的工程化、规范化方面程度低,软件产品质量和标准化程度不高,普遍缺乏先进的软件生产技术、经营管理模式和严格的质量监控措施。2020年1月19日233.3印度软件企业的现状2001年印度软件销售总额102.3亿美元,软件企业约6000家,从业人员40万。2001年我国软件销售总额96.3亿美元,软件企业约5000家,从业人员29万。1990年印度软件出口只有5000万美元,1999年就达到了39亿美元,2000年达到了62亿美元,已经占到了印度全部出口总额的10.5%。2001年印度软件出口额为77.8亿美元,同比增长25%。估计到2008年,印度软件业产值将达到850亿美元,其中出口500亿美元。据SEI统计,有大约300家印度软件公司通过了CMM认证,其中通过最高质量等级CMM5的有50余家,占全球的60%以上。2020年1月19日243.3印度软件企业的现状国内从业人员到印度的感受:流程重于项目QC独立于研发部门,专门检查研发部门的开发流程是不是按照流程走,如果QC觉得流程不对,会报告上层人员,项目可能会因此而停止。所谓的项目经理一般是从编码人员升上来的,并不是不懂技术,一般至少有4年的工作经验。2020年1月19日253.3印度软件企业的现状项目经理就是制定开发计划,负责协调,填写各种表格。所有的东西(包括草稿)都有文档。详细设计文档要求达到有这个文档就可以编码的程度,一般写文档的时间为60%,编码时间极少。有各种详细的review,组内的、组间的、客户的等。计划很详细,的确能达到小时级别,但是实际情况还是误差比较大,所以也有加班。2020年1月19日263.4我国与印度软件企业的差距分析Example:软件中需要一个列表(list),用来表示处理的事务(transaction)。该列表在业务繁忙的时候将变得很大。我国从业人员:用双向链表(先编码后分析)。印度从业人员:开一个大的数组,不用链表。(先分析后编码)Why?小型机的512MB内存足够,数组访问方便、效率高。2020年1月19日273.4我国与印度软件企业的差距分析软件教育水平比较:印度软件人员面对同样的问题有惊人相似的解决方法和程序结构。我国软件人员更重视的是解决问题的个人技巧,重视创造性地发挥(每个人都觉得别人做的软件不好,自己需要延续别人的工作时总是将别人贬损一通,然后重新开发,殊不知:程序员只要具备拧好螺丝钉的能力就可以了。)2020年1月19日283.4我国与印度软件企业的差距分析许多公司的项目经理不需要懂技术,有些甚至就是MBA或者是领域专家,而不是编码专家,却能够领导一大群素质良好的程序员把工作做好,没有内部不团结的情况。国内的项目经理如果不懂技术则后果是可想而知的(内部不团结,技术人员与管理人员作对项目经理必须在技术上能够压服下属)。2020年1月19日293.4我国与印度软件企业的差距分析印度的编程人员的流动率高达30%!可以想见他们的文档工作做得多么地好,他们的产品不依赖于任何一个人,谁都可以立即辞职,产品的开发还是会正常进行。国内:老板害怕总工,技术骨干拥兵自重,抗拒管理。任何制定好的计划都有可能被技术人员推翻或者跟你消极怠工。2020年1月19日303.4我国与印度软件企业的差距分析印度的开发计划能够做到小时级别。如果项目经理没有上班,手下的员工可能不知道干什么。一般的计划都定到天。(来自于良好的度量)国内能够将计划定到月就不错了,而且给出的月度计划要么不可能实现,要么就可能被取消,开发人员一般会出现前松后紧的局面。2020年1月19日313.4我国与印度软件企业的差距分析印度软件公司十分重视软件开发过程的管理及与其相关理论与标准的发展。认为编码是十分简单的工作,高中生就可以完成。软件蓝领国内软件公司更重视个人技能的发挥,忽视了过程的管理。国内的个人创造性应该在有限的范围内得到发挥。在满足国内软件市场需求的同时,拓展国际软件市场,增加软件出口量。2020年1月19日323.5提高我国软件企业的管理水平质量管理过程质量管理产品质量管理项目管理项目规划度量进度安排和跟踪风险管理配置管理变更管理版本管理发布管理其他管理活动2020年1月19日333.5提高我国软件企业的管理水平在发展具有自主知识产权的民族软件产品的同时,通过大力发展软件外包(ITO/BPO)来提升国内软件企业的管理水平,逐步扩大软件企业规模。2020年1月19日34提纲一、软件工程的知识体系二、教学侧重点三、软件工程管理的重要性四、软件工程技术的发展五、教学内容组织六、教学方法七、参考资料2020年1月19日35四、软件工程技术的发展新型软件开发过程模型,如:RUP(RationalUnifiedProcess)、XP(eXtremProgrammi

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

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

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

×
保存成功