您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程基础_第1章 软件工程概述
1软件工程基础主讲教师:刘伟松MP:18602466465QQ:5659104532课程简介先修课基础:C程序设计,数据结构,数据库,操作系统,离散数学,一门专业方向课(JAVA\Windows\Web),建议学习概率及数理统计、高等数学初步,管理学初步专业必修课(考试)总学时48理论授课40实验及讨论83课程目标-1掌握软件开发的基本流程、基本概念熟悉需求分析的方法,能够读懂用形式化的语言描述的需求说明书,如:流程图、IPO图、USE-CASE图、E-R图。熟悉概要设计的实施方法,了解面向对象方法的概要设计方法。熟悉详细设计的方法,能够对简单WEB系统或模块的形式化的分析设计。熟悉测试的基本步骤和方法4课程目标-2了解UML图示方法和常见的系统体系结构了解软件验证技术和软件质量体系了解软件项目计划方法了解软件工程标准化及文档写作了解并实践新技术学习的方法(PHP)5教学形式课堂教学小组项目案例协作训练新技术学习训练(PHPWEB开发)6考核方式基础知识测试70%小组案例及新技术学习训练30%7参考教材及资料《软件工程导论》陈明机械工业出版社《软件工程规范》WattsS.Humphrey著《小型团队软件开发》GaryPolice《极限编程——基础、案例与实施》StewartBarid著适合Java,.Net《敏捷软件开发》AlistairCockbum著8第1讲初涉软件工程内容提要:1、什么是软件工程?2、软件工程研究的对象及目标?3、软件工程能够做什么?不能做什么?4、学习软件工程能带来什么益处?5、学习软件工程需要哪些必备的基础?6、怎样学习软件工程?9回顾软件发展历史三个阶段第一阶段(1950-1960)1.软件“农耕时代”2.程序设计阶段,没有程序设计方法。3.主要编写科学计算程序10软件发展历史三个阶段第二阶段(1960-1970)1.软件“小作坊”,小组式的开发方法2.广泛出现了软件设计方法(结构化软件设计)。3.出现了“产品软件”4.维护困难,成本高,无法开发大规模的软件。11软件发展历史三个阶段第三阶段(1970-至今)1.软件工程时代“软件工业化”2.工程化的生产方式3.工具和方法跟不上软件规模的扩张,使问题积累导致软件危机。例:IBM公司1963-1966年360大型机操作系统项目4.1968年首次提出了软件工程121.什么是软件工程软件工程是指导软件开发和维护的工程类学科,它以计算机科学理论及其它相关的学科的理论为指导,采用工程化的概念、原理、技术和方法进行软件的开发和维护,把经过时间证明正确的管理措施和当前能够得到的最好的技术方法结合起来,以较少的代价获取高质量的软件。131.什么是软件工程建筑工程,电力工程,水利工程,电信工程机械工程,制造工程……“工”:工作“程”:程序、规程即:研究软件生命周期内开发工作规程,并使之紧密结合的学科142、软件工程研究的对象及目标?技术资金人员开发过程管理最小的投入最好的质量最高的产出15•软件工程的层次结构工具和环境方法和技术过程和模型标准和规范质量核心TQMTotalQualityManagement全面质量管理16TQM(全面质量管理)需求R设计D编码P测试T部署I维护STQM=Q(R)xQ(D)xQ(P)xQ(T)xQ(I)xQ(S)Q为质量函数,(0Q1)17•软件工程基本原理(Boehm)(1)用分阶段的生命周期计划严格管理(2)坚持进行阶段评审(3)实施严格的产品控制(4)采用现代程序设计技术(5)结果应能够清楚的审查(6)开发小组的成员应该少而精(7)承认不断改进软件工程实践的必要性183、软件工程能够做什么?不能做什么?软件工程可以提供规范的方法描述开发过程软件工程可以提供标准和规则指导开发过程软件工程能够发现程序的问题或尽量减少问题的产生,但是不能够解决问题。软件工程是指导开发过程,不能够代替人的思维过程。软件工程对开发个体降低了编码效率,对项目总体是提高效率,降低TOC(TotalOfCost)。19TOC(总体拥有成本)StartEndCtC(t)维护期开发期204、学习软件工程能带来什么益处?提高生产效率关键是提高沟通、协调和管理效率增加经验积累和可重用性通过软件工程的方法可以提高系统的清晰程度,利于模块的重复使用。强化团队合作通过标准化,客观上强化团队的合作。规模软件开发通过统筹管理和开发体系的管理,有利于完成大规模软件的开发。可接续开发能力由于文档的规范化,出现开发人员调整时,后续开发人员能够迅速接手开发工作。215、学习软件工程需要哪些必备的基础?高等数学及概率数理统计方面的知识。(方差、标准差、相关性、定积分、统计分布、线性回归)熟悉一门主流编程语言和WEB程序设计,最好是能够有10000行左右的编程经验(C/C++或JAVA)。较好的文字能力(语文素养)熟练使用Office办公软件,例如:Excel,Visio,PPT,Word有一定的外语基础。226、怎样学习软件工程?不断的编程,持续积累编程经验。降低编码错误率不断的做项目,积累项目设计经验。提高思维和设计能力不断的阅读,了解最新软件工程的动向。广度思维不断的沟通,学会协调联络。”三人行,必有我师“,学会探索需求23小结:软件工程的核心思想:最小的投入、最好的质量、最高的产出。软件工程是指导软件开发和维护的工程类学科,不能够代替人的思考。TQM,TOC的含义24第2讲软件生存周期及生存模型内容提要:1.软件生存期过程2.瀑布模型3.原型化模型4.渐增模型5.螺旋模型251.软件生存期过程问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试、运行与维护。软件企业可以根据实际情况选取相应的过程、活动和任务。262.1瀑布模型(WaterfallModel)计划需求分析设计编码测试运行维护废弃确认272.2瀑布模型——风险评估需求分析设计子系统设计代码及单元测试系统测试风险时间282.3瀑布模型分析线性的过程,错误、缺陷发现的滞后性。仅适合具有待解决问题的完整信息,并且在开发过程中不会变化的时候,该模型比较适用。当一个系统需要经历持续变化时,不能使用瀑布模型。早期风险不能够降低。293.1原型化模型RapidPrototypingModel快速原型原型是一个可以实际运行的模型,它在功能上可以看作是最终产品的一个子集(展示系统的关键功能)通常不会对合法性和性能进行关注。该模型的关键是快速地得到用户对系统的反馈。303.2原型化模型分析优点:能够开发出真正满足用户需要的软件缺点:“用户使用原型——修改原型”是一个反复循环的过程,有些改动是不现实的。原型作为最终产品不利于软件维护。314.1渐增模型(IncrementalModel)异步并行实施。每个过程相当于一个瀑布式模型,过程之间体现出了快速原型化模型的迭代思想。324.1渐增模型同原型法区别都具有迭代性原型法得到的是一个不完整的可运行的版本;渐增模型每个过程得到的是一个完整的高质量的产品334.2渐增模型的分析适合于开发人员比较不充裕的情况下使用。新产品开发中,用户可以先期获得部分可以使用的功能,不至于因为新产品没有出来使得整个软件延期。每一过程都可以得到一个高质量的可操作的产品。使用户逐步适应。要求两次过程之间应该能够无缝的集成,如果设计不当,会导致软件的结构变差。345.1螺旋模型(SpiralModel)1986至今的主流开发模型。(图1-5P12)使用原型降低风险因素是使用螺旋模型基本思想主要过程:(风险驱动型)风险分析-〉实施-〉确认每一个过程都是微小的瀑布式过程,多个过程是独立的,异步的。356.2螺旋模型优点可替换性和强约束性,支持软件复用,始终把软件质量看作一个目标。通过风险评估,进行适度的测试,降低开发成本。开发和维护统一过程,克服了一般软件开发只重视开发不重视维护的缺点。366.3螺旋模型的缺点适合内部使用,不适合公司之间使用。由于风险评估开销比较大,适合规模比较大的系统的开发。由于是风险驱动,除非开发人员都很善于指出所有可能的风险,并能够准确地进行风险分析,否则结果将是灾难性的。因此要求项目组要善于风险分析。37小结:熟悉主要开发模型的优点和缺点
本文标题:软件工程基础_第1章 软件工程概述
链接地址:https://www.777doc.com/doc-3374291 .html