资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,HeBei Normal University of Science & Technology,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,Company Logo,*,单击此处编辑母版标题样式,chapter_0,1,长江大学计算机科学学院,余华云,软件工程,教材和参考书,教材:,Roger S Pressman,著。软件工程:实践者的研究方法。第,7,版。梅宏译。北京:机械工业出版社,,2011,主要参考书:,Software Engineering(Eighth edition),作者,Sommerville,软件工程案例教程 韩万江 机械工业出版社,,2010,年,7,月,Stephen R.Schach,著,面向对象与传统软件工程:统,一过程的理论与实践(原书第,6,版),机械工业出版社,,2006,年第,1,版,卡耐基,-,梅隆大学软件工程研究所编著。能力成熟度模型(,CMM,):软件过程改进指南。刘孟仁等译。北京:电子工业出版社,,2001,Ivar Jacobson, Grady Booch, James Rumbaugh,著。统一开发软件工程。周伯生,冯学民,樊东平译。北京:机械工业出版社,,2002,Scott W Ambler,著。敏捷建模:极限编程和统一过程的有效实现。张嘉路等译。北京:机械工业出版社,,2003,IBM,大学站点, 软件过程,第一章 软件工程概述(,2,学时),第二章 软件过程(,6,学时),第二部分 建模,第三章 需求建模与分析(,6,学时),第四章,系统设计(,4,学时),第五章 用户界面设计,第六章 详细设计(,4,学时),第三部分 质量管理,第七章 项目编码(,2,学时),第八章 项目测试(,6,学时),第九章 软件项目管理与质量保障(,4,学时),chapter_0,5,考核方式,期末成绩(,5,0,),平时(,5,0,),课堂讨论、发言(,1,5,分),课后阅读材料、查阅情况(奖励,5-10,分),项目完成质量(文档程序,按时程度)(,15,分),小组长适当加分(管理质量),课堂作业与考勤(,10,分),chapter_0,6,关于本课程,项目选择,1,电脑公司在线购物系统,2,音像商店租售系统,3,学生信息管理系统,4,资料室图书管理系统,5,航空机票预订系统,6,教材购销系统,7,企业人事信息管理系统,8,高校工资管理系统,9,小型旅行社业务管理系统,10,零售药店管理系统,11,小型超市管理系统,chapter_0,7,关于本课程,说明与要求,项目规模:小型,每组,5,8,人,,1,个小组长,一个题目最多,2,个组,不得抄袭,分阶段进行验收,超时没有成绩,教学方法,讲解,自习、阅读,讨论,chapter_0,8,第一章软件工程概述,HeBei Normal University of Science & Technology,软件工程概述,软件的概念、特性和分类,软件危机与软件工程,系统工程的目标,软件工程三要素,软件工程知识体系及知识域,HeBei Normal University of Science & Technology,1.1,软件概述,软件的概述及特点,软件的分类,典型,helloworld,程序,太简单,!,不要设计,#include,int main() printf(“helloworld!”); /,输出,helloworld,!,return 0; ,图书馆图书信息管理软件,复杂,!,需要设计,图书馆信息管理系统,-,需求分析,图书馆信息管理系统,-,功能设计,图书馆信息管理系统,-,物理模型设计,图书馆信息管理系统,部分逻辑模型设计,图书馆信息管理系统,-,数据设计,-,过程设计,图书馆信息管理系统,-,界面设计,软件的概述及特点,计算机软件,与计算机系统操作有关的程序、规程、,规则及任何与之有关的文档和数据。,软件 程序及有关数据,机器可执行;,文档(与软件开发、运行、维护、使用、,培训有关),不可执行。,程序(,program,),用程序设计语言描述的,适合,于计算机处理的语句序列。,软件的概述及特点,软件是逻辑产品,硬件是物理产品。特点:,(,1,)软件开发更依赖于开发人员的业务素质、智力、,人员的组织、合作和管理。软件开发、设计几,乎都是从头开始,成本和进度很难估计。,(,2,)软件存在潜伏错误,硬件错误一般能排除。,(,3,)软件开发成功后,只需对原版进行复制。,(,4,)软件在使用过程中维护复杂。,(,5,)软件不会磨损和老化。,软件的概述及特点,文档(,document,),一种数据媒体和其上所记录的数据。,文档记录软件开发活动和阶段成果,具有永久性,可供,人或机器阅读。,文档可用于 专业人员和用户之间的通信和交流;,软件开发过程的管理;,运行阶段的维护。,软件的概述及特点,图,11,硬件失效曲线图,软件的概述及特点,图,12,软件失效曲线图,软件的分类,图,13,软件的分类,1.2,软件危机,软件危机的表现与原因,软件危机的启示,HeBei Normal University of Science & Technology,软件危机的表现与原因,软件危机暴发于上个世纪六十年代末。,主要表现为:软件的发展速度远远滞后于硬件的发展速度,不能满足社会日益增长的软件需求。软件开发周期长、成本高、质量差、维护困难。,软件危机,软件危机的表现与原因,具体来说,软件危机主要有以下一些典型表现,:,对软件开发成本和进度的估计常常很不准确。,用户对,“,已完成的,”,软件系统不满意的现象经常发生。,软件产品的质量往往靠不住。,软件常常是不可维护的。,软件通常没有适当的文档资料。,软件成本在计算机系统总成本中所占的比例逐年上升。,软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。,除了软件本身的特点,软件危机发生的主要原因有:,缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作的计划很难制定。,软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误 。,软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。,随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及技术问题,更重要的是必须有科学严格的管理。,缺少有效的软件评测手段,提交用户的软件质量不能完全保证。,软件危机的表现与原因,软件危机的启示,彻底消除,“,软件就是程序,”,的错误观念。,充分认识到软件开发应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。,推广和使用在实践中总结出来的开发软件的成功技术、方法和工具。,按工程化的原则和方法组织软件开发工作。,如何摆脱软件危机,?,1.3,软件工程,软件工程概念,软件工程发展,软件工程目标和原则,软件工程知识体,软件工程概念,为了克服软件危机,,1968,年,10,月在北大西洋公约组织(,NATO,)召开的计算机科学会议上,,Fritz Bauer,首次提出“软件工程”的概念,试图将工程化方法应用于软件开发。,在,NATO,会议上,,Fritz Bauer,对软件工程的定义是:“软件工程就是为了经济地获得可靠的且能在实际机器上有效地运行的软件,而建立和使用完善的工程原理。”,软件工程概念,1993,年,IEEE,(,Institute of Electrical & Electronic Engineers,,电气与电子工程师协会)给出的定义:,“软件工程是: 把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件; 研究中提到的途径。”,软件工程概念,图,14,软件工程层次图,软件工程概念,软件工程,是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好技术结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。,软件工程目标和原则,软件工程要达到的基本目标包括:,达到要求的软件功能;,取得较好的软件性能;,开发出高质量的软件;,付出较低的开发成本;,需要较低的维护费用;,能按时完成开发工作,及时交付使用。,软件工程目标和原则,(1),按软件生存周期分阶段制订计划并认真实施 ,(2),坚持进行阶段评审,(3),坚持严格的产品控制,(4),使用现代软件开发技术,(5),明确责任,(6),用人少而精,(7),不断改进开发过程,软件工程目标和原则,为了达到上述目标,软件工程设计、工程支持以及工程管理在软件开发过程中必须遵循一些基本原则。著名软件工程专家,B.Boehm,综合有关专家和学者的意见并总结了多年来开发软件的经验,提出了软件工程的七条基本原则:,用分阶段的生存周期计划进行严格的管理,坚持进行阶段评审,实行严格的产品控制,采用现代程序设计技术,软件工程结果应能清楚地审查,开发小组的人员应该少而精,承认不断改进软件工程实践的必要性,B.Boehm,指出,遵循前六条基本原则,能够实现软件的工程化生产;按照第七条原则,不仅要积极主动地采纳新的软件技术,而且要注意不断总结经验。,一些不正确的观念,观点之一,我们拥有一套讲述如何开发软件的书籍,书中充满了标准与示例,可以帮助我们解决软件开发中遇到的任何问题。,观点之二,如果我们已经落后于计划,可以增加更多的程序员来赶上进度。,观点之三,有了对目标的一般描述就足以开始写程序了,我们以后可以再补充细节。,观点之四,一旦我们写出了程序并使其正常运行,我们的工作就结束了。人们有时认为,只有差的软件产品才需要维护。,1.4,软件工程的三个要素,Software engineering layers,软件工程三个要素:,方法、工具、过程,02 十月 2024,41,(,1,),软件工程方法,软件工程方法为软件开发提供了 “如何做” 的技术。包括:系统模型,标记法,规则,设计忠告和过程指南等。如,SADT,,,Jackson,,,UML,等。,常见的软件开发方法包括:,结构化方法,面向数据结构方法,面向对象方法,形式化方法,从工程方法看:是一种软件开发的,结构化方法,,其目的在于使高质量软件的生产性价比较高。,从产品生产组织(管理)方式看:包括对软件过程的,建议,、使用的,标记,法、进行,系统描述的规则,和,设计指南,。,方法的构成:系统的模型,+,规则,+,建议,+,过程指南,(2),软件工程工具,软件工程的工具对软件工程中的过程和方法提供自动的或半自动的支持。可以帮助软件开发人员方便、简捷、高效地进行软件的分析、设计、开发、测试、维护和管理等工作。有效地利用工具软件可以提高软件开发的质量,减少成本,缩短工期,方便软件项目的管理。,如各种支持软件开发的各种,CASE,(Computer-Aided Software Engineerring,)工具。,软件工程工具,软件工程工具通常有三种分类标准:,按照功能划分:,功能是对软件进行分类的最常用的标准,按照功能划分,软件工程工具可分为可视化建模工具、程序开发工具、自动化测试工具、文档编辑工具、配置管理工具、项目管理工具等。,按照支持的过程划分:,根据支持的过程,软件工程工具可分为设计工具、编程工具、维护工具等。,按照支持的范围划分:,根据支持的范围,软件工程工具可以分为窄支持、较宽支持和一般支持工具。窄支持工具支持软件工程过程中的特定任务,一般将其称之为工具;较宽支持支持特定的过程阶段,一般由多个工具集合而成,称之为工作台;一般支持支持覆盖软件过程的全部或大部分阶段,包含多个不同的工作台,称之为环境。,软件工程工具,具体的说,在实际软件工程项目执行过程中,经常会使用到的软件工程工具包括:,分析设计工具,程序开发工具,测试工具,配置管理工具,项目管理工具,02 十月 2024,信息工程学院软件工程教研室,45,CASE,工具举例,IBM Rational,公司产品(, Rational RequisitePro,可视化建模:,Rose,自动测试:,Robot, Test Realtime, TestManager, XDE Tester,项目管理:,ProjectConsole,配置管理:,ClearCase, ClearQuest,开源,CASE,工具(, Modeler:,UML,模型图形编辑工具,UML2EJB:,将,XML,表示的,UML,模型转换成,EJB,代码的转换器,分析设计工具,(,1,),Microsoft Visio,(,2,),Rational Rose,(,3,),Together,(,4,),PowerDesigner,(,5,),CASE Studio,程序开发工具,(,1,),Microsoft Visual Studio,(,2,),Eclipse,(,3,),NetBeans,(,4,),Delphi,(,5,),Dev C+,测试工具,(,1,),Load Runner,(,2,),Win Rnnner,(,3,),Segue,配置管理工具,(,1,),Microsoft Visual Sourcesafe,Microsoft Visual SourceSafe,是微软公司出品的版本控制系统,简称,VSS,。软件支持,Windows,系统所支持的所有文件格式,通常与微软公司的,Visual Studio,产品同时发布,并且高度集成。包括服务器和通过网络可以连接服务器的客户端。,VSS,提供了基本的认证安全和版本控制机制,提供历史版本对比,适合于个人程序开发的版本管理。,(,2,),ClearCase,ClearCase,是,Rational,公司开发的配置管理工具,可以与,Windows,资源管理器集成使用,并且还可以与很多开发工具集成在一起使用。,ClearCase,主要应用于复杂的产品发放、分布式团队合作、并行的开发和维护任务,包括支持当今流行软件开发环境,Client/Server,网络结构。它包含了一套完整的软件配置管理工具而且结构透明、界面可亲。,项目管理工具,(,1,),Microsoft Project,(,2,),CA-SuperProject,(,3,),Time Line,工具类型,举例,软件支持,规划工具,PERT,工具、估算工具、电子表格工具,Visio2007,,,excel2007,,,Project,,,Estimate,,,Exchange 2000,等。,编辑工具,文本编辑器,图表编辑器,字处理器,Word,,,smartdraw,,,visio,等。,变更管理工具,需求跟踪工具,变更控制系统,Rational ClearCASE,,,Rational ClearQuest,,,T,elelogi,c,DOORS,等。,配置管理工具,版本管理工具,系统建立工具,SVC,,,CVS,,,SVN,,,Merant PVCS,,,Dimensio,ns, SYNERGY/CM,。,原型建立工具,高端语言,用户界面生成器,layout controllist,等。,方法支持工具,设计编辑器,数据字典,代码生成器,Sybase PowerDesign,,,Rational Rose,等。,语言处理工具,编译器,解释器,Visual 2005, Eclipse JBbulid, J2EE,PowerBuilder 9.0,等。,数据库工具,ER,图生成,PB8.0,Ems,MySQL,managerV0.9.6.1,Erwin4.0 sp2 quickdesk2.2,develop2000,,,PowerDesign,,,Rational Rose,等。,程序分析工具,交叉索引生成器,静态分析器,动态生成器,PRE,f,ast,,,FxCop (Visual Studio 2005 Team System,中提供,),,,sourceNavigator,,,Analysistool,,各种程序分析器等。,测试工具,测试数据生成器,文件比较器,Mercury,公司的,LoadRunner,、,WinRunner,、,TestDirector,和,QuickTestPro,,,Rational,系列测试软件,、,CM Synergy,和,Telelogic Tau,等。,调试工具,交互式调试系统,集成于各类开发工具等。,编写文档工具,页面输出程序,图像编辑器,Word,,,excel,,,SmartDraw,,,PowerPoint,,,PDF,等。,再工程工具,交叉索引系统,程序重构系统,青鸟,JBPAS,,,FAMOOS,,,McCabe Reengineering,等。,02 十月 2024,信息工程学院软件工程教研室,51,(,3,) 软件过程,-,软件过程模型,软件过程模型是从一个特定的角度提出软件过程的简化描述。,(,1,)工作流,(,2,)数据流或活动,(,3,)角色,/,动作,(,4,)瀑布型开发方法,(,5,)进化型开发方法,(,6,)形式化转换,(,7,)基于可复用的组件的系统组合,1.5,软件工程知识体系及知识域,软件工程知识体,软件工程已从计算机科学与技术中脱离出来,逐渐形成了一门独立的学科。对其知识体系的研究从,20,世纪,90,年代初就开始了。,标志是美国,Embry-Riddle,航空大学计算与数学系,Thomas B.Hilburn,教授的,“,软件工程知识体系指南,”,(,Guide to Software Engineering Body of Knowledge,,,SWEBOK,)研究项目。,软件工程知识体系及知识域,软件工程知识体系指南的内容,SWEBOK,指南将软件工程知识体系划分为,10,个知识域(,knowledge areas,,,KA,),分为两类过程。,一类是,开发与维护过程,,包括软件需求、软件设计、软件构造、软件测试和软件维护;,另一类是,支持和组织过程,,包括软件配置管理、软件工程管理、软件工程过程、软件工程工具与方法和软件质量。每个知识域还可进一步分解为若干论题。,软件工程知识体系指南的内容,“,软件工程,”,课程,与其它软件专业课的区别,(1),立足于系统的整体。,(2),讲授系统分析、系统设计、,测试及维护的理论和方法。,(3),构筑一个软件系统,实践,软件开发全过程。,“,软件工程,”,课程教学与实践的目标,转变对软件开发的认识:,上升,程序 系统,转变思维定式:,上升,程序员 系统工程师,(,系统分析员,),工程化训练,“,一个好的工业,应有一套良好的标准来配套,”,软件的工业化生产过程应具备的特点:,明确的工作步骤,详细具体的规范化文档,明确的质量评价标准,软件产品的标准化,软件开发过程的标准化,软件工程过程的改进,软件工程技术的两个明显特点,强调规范化,强调文档化,【,第一章 软件工程概述,】,Thank You !,
展开阅读全文