《软件工程》SoftwareEngineering葛文庚15938089663geng429@126.com信息工程学院黄淮学院信息工程学院引言Microsoft的比尔盖茨在一次展览会的演讲中谈到:假如GM(美国通用汽车公司,别克、雪佛兰、凯迪拉克)的技术能像计算机技术那样发展,我们现在应该能用25美元买到一辆1加仑汽油跑1000英里的汽车。---《扬子晚报》黄淮学院信息工程学院针对比尔盖茨的讲话,GM反唇相讥:如果GM发展的技术像Microsoft的软件那样,我们现在开的汽车会有以下特点:1.你的汽车可能毫无道理的每天抛锚两次2.每次公路上重新画线时,你都得买辆新车3.有时候你的车在高速公路上莫名其妙的熄火,你必须accept,然后restart4.有时候你的车在左拐弯时突然shutdown了,无法restart,你必须重新安装(reinstall)发动机5.当你买了“轿车95”或“轿车NT”后,每次车上只能坐一个人,你要给其他的人再买椅子6.Macintosh牌汽车更可靠、更便宜、更快、也更容易开,但是只能在5%的道路上行驶7.油量、水温和其它警告灯将由一个“GENERALCARFAILURE”的警告灯所代替8.新座椅要求大家屁股的尺寸相同9.气囊系统弹出前询问“Areyousure?”,要求你加以确认10.有时候你的汽车会锁死车门使你无法进入汽车,你得不停的提门把手、拿钥匙捅、晃天线,直到打开车门黄淮学院信息工程学院我们且不考虑GM的言辞是否过于偏激,但Microsoft公司作为全球最大的计算机软件生产商,拥有一大批优秀的项目经理、软件工程师、程序员,具有丰富的软件开发和项目管理经验,开发出来的软件仍然不能很好的保证质量,这是不争的事实。我们几乎每个人在使用Windows操作系统时,都碰到过死机现象这是为什么呢?黄淮学院信息工程学院与硬件相比,软件的本质特征是什么?为什么硬件的可靠性可以达到很高的程度,而软件却不能做到bug-free?什么样的软件可以称作是一个好软件,或者说好软件具有什么样的特点?目前存在哪些方法和技术能够有效地提高软件的质量,做出好软件?黄淮学院信息工程学院软件工程简介软件工程是计算机专业的一门重要的专业基础课,它对于培养学生的软件素质,提高学生的软件开发能力与软件项目管理能力具有重要的意义。1995年,StandishGroup针对系统开发成功的研究表明,所有的开发项目中有32%的项目在它们结束之前被中止。此外多于一半的软件项目花费的成本相当于原来预算的2倍。黄淮学院信息工程学院软件工程是软件工程专业的一门核心课程。通过本课程的学习,使学生掌握系统的软件开发理论、技术和方法,使用正确的工程方法开发出成本低、可靠性好并在机器上能高效运行的软件,为今后从事软件开发和维护打下坚实的基础。课程的性质、目的黄淮学院信息工程学院学生任务4通过本课程的学习,使学生能真正了解软件开发的整个过程。学生要结合实际软件项目,从问题定义开始,经过可行性研究、需求分析、概要设计、详细设计、编码直到最后要对自己开发的软件进行测试,经历一个软件开发的全过程,掌握软件开发的基本技能和方法。黄淮学院信息工程学院主要内容软件工程的基本概念软件开发过程、活动、方法学软件开发各阶段的任务、技术、方法软件开发的两种方法:传统与面向对象方法软件的测试与维护软件开发的项目管理软件质量保证黄淮学院信息工程学院教材本书全面系统地讲述了软件工程的概念、原理和典型的方法学,并通过分析一个实际案例“开放实验室管理系统”,帮助理解软件需求分析与建模以及设计与实现的方法和过程,特别适合用做应用型人才培养的教材。网络资源:黄淮学院信息工程学院参考书SoftwareEngineering,IanSommerville,PearsonEducationAsia《软件工程基础与实用教材》沈文轩等《软件工程导论》张海藩,清华大学出版社《软件工程—原理、方法与应用》史济民,高等教育出版社《软件工程技术概论》朱三元,科学出版社《实用软件工程》郑人杰,清华出版社《现代软件工程》(上中册)周之英,科学出版社《软件工程理论与实践》译文,高教出版社《现代软件工程》陈松桥,北方交大出版社黄淮学院信息工程学院章节安排章次各章标题名称讲授学时第一章软件工程学概述3第二章可行性研究1第三章需求分析4第四章面向对象分析6第五章总体设计4第六章详细设计4第七章面向对象设计4第八章实现4第九章维护2第十章软件项目管理2黄淮学院信息工程学院学习要求1.要求学生有刻苦学习,持之以恒的精神。本课程的性质与其说是一门技术性很强的课程,不如说更像一门管理学科的课程,很多规定都是国内外大师的经验总结,不能误认为无用或现在用不上而放弃学习。2.要求学生能够学以致用,善于将理论与实际结合,才能巩固课内学到的知识,并能融会贯通。黄淮学院信息工程学院学习建议在正文中介绍了不少软件工程的基本原则和基本方法,在学习时,可以根据你的实践,认真思考一下为什么。不但知其然,而且知其所以然,这样会记得牢一些,不会看过就忘。黄淮学院信息工程学院考核考试课程总成绩=平时成绩(10%)+实验成绩(30%)+考试成绩(60%)黄淮学院信息工程学院第一讲软件工程学概述本章学习目标1.了解软件的概念2.了解软件开发的发展历程3.掌握软件工程的概念、原理和基本内容4.掌握软件生命周期5.理解软件过程模型黄淮学院信息工程学院1软件软件由计算机程序、数据及文档组成。程序是能够完成预定功能和性能的一组计算机指令数据是程序在执行过程需要输入、处理和输出的内容和结构文档是描述程序的设计和使用的部分黄淮学院信息工程学院软件的特点–抽象性–软件生产无明显制造过程–无磨损性–对计算机硬件依赖性–软件的手工开发方式–软件本身复杂性–软件的高成本(德国的一款专业设计3D的软件:3DMAX(正版)官方售价:2000000元RMB)黄淮学院信息工程学院软件的分类软件与硬件、数据库、人、过程等共同构成计算机系统。软件种类可以从功能、规模、工作方式、服务对象、实验频度、失效影响六个方面进行划分:–按功能分类•应用软件:管理软件、实时软件、科学计算、数据处理、嵌入式软件等•系统软件:操作系统、网络系统、编译器、工具软件等黄淮学院信息工程学院中国的软件产业主权大国必须建立基于自主技术的、完整的软件产业体系。软件本国提供率:中国1/3左右,美国97%。中国盗版软件比例大软件人才结构不合理,缺乏中高级软件人才,软件人员缺乏软件工程化的概念。黄淮学院信息工程学院软件发展阶段时间软件20世纪60年代中期前软件=程序60年代中期至70年代中期前软件=程序+使用说明出现软件危机70年代中期后软件=程序+数据+文档软件工程时代黄淮学院信息工程学院2软件危机软件危机指的是在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机的主要特征软件价格在整个项目投入中的比例不断升高;软件开发成本严重超标;软件开发周期大大超过规定日期;软件质量难于保证;软件修改、维护困难;失败的根本原因在于:开发人员写出的东西达不到用户要求(人的问题、技术问题)黄淮学院信息工程学院产生软件危机的原因计算机应用发展软件数量多规模大,功能复杂个体化软件开发方法无开发过程指导无开发过程管理软件成本高、质量低、维护困难软件危机客观因素主观因素主客观不相适应黄淮学院信息工程学院软件工程改正一个问题需付出的代价需求分析结构设计详细设计编码集成测试系统测试现场改正一个问题的估计费用改正一个问题估计的工作量20200200010005.02.50.050.5(美元)(人天)黄淮学院信息工程学院解决办法管理措施项目管理配置管理过程管理质量控制技术措施开发过程开发技术与方法开发工具软件工程学(软件产品开发工程)用工程化的理论、方法和技术来管理软件开发过程,从管理和技术两方面措施对软件开发进行规范化和理论研究即产生了软件工程学科黄淮学院信息工程学院3软件工程1968年德国人Bauer在北大西洋公约组织会议上的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。1983年IEEE的软件工程定义:软件工程是开发,运行,维护和修复软件的系统方法。1993年IEEE的一个更加综合的定义:将系统化的,规范的,可度量的方法应用于软件的开发,运行和维护的过程,即将工程化应用于软件中。黄淮学院信息工程学院软件工程的基本原理1983年,著名软件工程专家B.W.Boehm提出了七条获得公认的软件工程的基本原理:(1)分阶段的生命周期计划严格管理性。(2)坚持进行阶段评审。(3)实行严格的产品控制。(4)采用现代程序设计技术。(5)结果应能清楚地审查。(6)开发小组的人员应少而精。(7)承认不断改进软件工程实践的必要性。黄淮学院信息工程学院软件工程框架给出了软件工程三个主要方面。软件工程目标—包括可用性、正确性和合算性,规定了软件工程实践的结果(即软件)应具有的基本性质;软件工程过程—包含的基本活动有需求、分析与设计、实现、确认与测试、维护与支持;软件工程的四条原则--采用适宜的开发模型,使用恰当的开发方法,提供高质量的工程支持,实施有效的工程管理,从四个方面指导每一项工程的活动,以实现软件工程目标。软件工程框架黄淮学院信息工程学院软件工程的目标:追求高质量高效率实现目标的过程:完成产品加工的过程。进行过程应遵守的原则:行进中的轨道约束。可用性性性确正合算选取适宜的开发模型采用合适的设计方法提供高质量的工程支持重视软件工程的管理基本过程支持过程组织过程目标过程原则黄淮学院信息工程学院软件工程的三要素R.Pressman在他的《软件工程》教程中指出:软件工程的三个要素是方法、工具、过程。–方法是完成软件开发的各项任务的技术方法,回答“如何做”的问题;–工具是为方法的运用提供自动的或半自动的软件支撑环境;–过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。黄淮学院信息工程学院软件工程的目标与原则软件工程的主要目标:提高软件的质量和软件生产率。软件工程需要达到的基本目标:–付出较低的开发成本–达到要求的软件功能–取得较好的软件性能–开发的软件易于移植–需要较低的维护费用–能按时完成开发,及时交付使用黄淮学院信息工程学院在软件开发过程中必须遵循的软件工程原则:1)抽象与自顶向下、逐层细化采用分层抽象的方法,有效控制软件开发的复杂性。2)模块化把问题分解为若干较小的较易解决的模块,有助于信息隐蔽和抽象。3)信息隐蔽和数据封装将模块中的软件设计决策封装在模块内部,使得模块实现与使用分离,有助于控制修改局部化。黄淮学院信息工程学院4)局部化在一个物理模块内集中逻辑上相互关联的计算机资源,促使聚合具有特定目的的事物。5)一致性整个软件系统的模块使用一致的设计策略、编程风格,保持程序内部接口的一致性、软件与硬件接口的一致性、系统规格说明与系统行为的一致性。6)完备性软件系统中不丢失任何成分。7)可验证性系统分解应当遵循易检查、易测试和易评审的原则,以便保证系统的正确性。黄淮学院信息工程学院软件工程学“软件工程学”是一门交叉学科涉及计算机科学、管理科学、工程学和数学。软件工程则是培养软件工程师。软件工程学软件开发技术软件开发方法学软件工具软件工程环境软件工程管理软件管理学软件经济学黄淮学院信息工程学院71.3软件工程方法学软件工程方法学是软件开发的系统化方法,是一套完整的软件开发技术,包括原则、方法、过程和工具,是每一阶段活动、产品、验收的步骤和完成准则。软件工程方法学应用最广泛的是结构化方法和面向对象方法。黄淮学院信息工程学院7结构化方法(SM,StructuredMethod)是传统的软件开发方法,基本思想是:用系统工程的思想和工程化的方法,按照用户至上的原则,结构化、模块化、自顶向下地对系统进行分析和设计,把一个复杂问题的求