您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 软件工程基础指导(一)
软件工程基础指导(一)软件工程——课程要求课程目的掌握软件工程的基本原理、先进的软件开发方法和成熟的过程管理经验。培养知识的综合运用能力和问题的协同解决能力。建议教学用书SoftwareEngineering:Apractitioner’sApproach(FifthEdition)RogerS.Pressman,2001,清华大学出版社软件工程:实践者的研究方法(第5版)机械工业出版社2002年9月梅宏等译软件工程——理论与实践(第二版原文影印)高等教育出版社2001年8月ShariLawrencePfleeger著软件工程——课程部分掌握软件工程的基础知识和理论,了解该学科的新技术和发展趋势;介绍软件开发生命周期中使用的技术方法,强调软件开发过程的方法研究;使学生学会运用传统或面向对象的软件工程方法进行软件需求分析、系统设计、实现和测试;分析大型软件开发过程中出现的问题;通过课程实践作业,实际运用软件工程的技术和方法,掌握软件项目管理和团队开发的工作方法。在课程评价中的比重:考试占50%软件工程——课程内容软件工程概述(3学时)软件项目管理(3学时)需求工程(6学时)软件设计(3学时)面向对象技术(3学时)软件测试、确认与验证(3学时)软件维护(3学时)软件质量与软件工程标准(3学时)工具与环境(3学时)在课程评价中的比重:作业占15%软件工程——实验部分培养学生实际完成软件项目的能力,使学生能够运用所学理论知识,承担部分或独立完成项目。通过规范化训练,使学生具备良好的软件开发素质和规范的文档编制能力;了解需求分析要点及实际软件工程的实施方式,学会领会并总结开发经验与教训,学生能够应付实际问题的挑战;通过团队开发,提高沟通及协同工作能力。在课程评价中的比重:项目作业占35%•软件、软件危机•软件工程解释•软件工程发展简史•软件工程原则•软件工程主要内容•软件过程第一讲软件工程概述1软件、软件危机软件的定义——程序、数据及其相关文档的完整集合。软件特征软件是一种逻辑实体,具有抽象性;软件的生产与硬件的制造不同;软件在运行使用过程中,不会磨损;软件的开发至今尚未完全摆脱手工艺的开发方式。软件应用领域系统软件——为其他程序提供系统服务实时软件——实时响应、控制外部环境商务软件——商业信息管理工程和科学计算软件——数值计算与分析嵌入式软件——嵌入并作用于智能产品智能软件——利用非数值算法解决复杂问题计算机软件发展的三个时期及其特点时间特点程序设计50—60年代程序系统60—70年代软件工程70年代以后软件所指程序程序及说明书程序、文档、数据主要程序设计语言汇编及机器语言高级语言软件语言软件工作范围程序编写包括设计和测试软件生存期需求者程序设计者本人少数用户市场用户开发软件的组织个人开发小组开发小组及大中型软件开发机构软件规模小型中小型大中小型决定质量的因素个人程序技术小组技术水平管理水平开发技术和手段子程序程序库结构化程序设计数据库、开发工具、开发环境、工程化开发方法、标准和规范、网络及分布式开发、面向对象技术维护责任者程序设计者开发小组专职维护者硬件特征价格高存储容量小工作可靠性差降价、速度、容量及工作可靠性有明显提高向超高速、大容量、微型化及网络化方向发展软件特征完全不受重视软件技术的发展不能满足需要,出现软件危机开发技术有进步,但未获突破性进展,价高,未完全摆脱软件危机70年代以后软件发展70—90年代:Internet初始阶段物理层+TCP/IP90—现在:Web阶段HTTP+Browser=呈现信息的窗口技术=〉文化Client—Server现在——未来十年:智能网络静态=〉动态,被动=〉主动,呈现=〉智能网络服务,.NETXML数据交换协议软件发展趋势平台网络化技术对象化系统构件化产品领域化开发过程化生产规模化竞争国际化-任何软件都是有体系结构的,体系结构决定了软件的整体性能;-任何软件生产都是有过程的,软件过程决定了软件的质量-任何软件都是处理信息的,数据-信息-知识-智慧软件代价高,而硬件越来越廉价;难于控制开发进度,开发速度赶不上市场变化;软件工作量估计困难,适应不了新领域的要求;质量低,且难以发挥硬件潜能;软件修改、维护困难,集成遗留系统更困难;随着信息技术的迅猛发展——软件问题过去乃至将来都可能会制约计算机应用软件危机硬件和软件所占费用的比例图01020304050607080901005560657075808290952000软件硬件软件代价高,而硬件越来越廉价;难于控制开发进度,开发速度赶不上市场变化;软件工作量估计困难,适应不了新领域的要求;质量低,且难以发挥硬件潜能;软件修改、维护困难,集成遗留系统更困难;随着信息技术的迅猛发展——软件问题过去乃至将来都可能会制约计算机应用软件危机2如何理解软件工程?“运用现代科学技术知识来设计并构造计算机程序设计及为开发,运行和维护这些程序所必须的相关文件资料”。——Boehm“将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护中”——IEEE[93]“软件工程学是为在成本限额以内按时完成开发和修改软件产品所需的系统生产和维护的技术和管理的学科”。——Fairely“建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法”。——FritzBauer软件工程是以借鉴传统工程的原则、方法,以提高质量,降低成本为目的指导计算机软件开发和维护的工程学科。软件工程包括三个要素——过程、方法和工具,三者共同以质量管理为基础。软件工程与软件过程软件工程是由有创造力、有知识的人在定义好的、成熟的软件过程中进行的。公共过程框架框架活动任务交付项SQA点质量保证任务集不成熟的软件机构特征软件过程一般在项目进行中由参与开发的人员确定;软件机构是反应型的;项目的进度和经费预算由于估计得不切实际,所以常常突破;产品质量难以预测;成熟的软件机构特征建立了机构级的软件开发和维护过程;软件过程在经过论证与分析后可做改进;软件产品的好坏由质量保证小组监控;根据以往经验确定项目进度和预算;软件过程与成熟度模型过程成熟度模型优化级创新管理已定义级技能管理可重复级人员管理初始级无序管理管理级能力管理可重复的实践以技能为基础的实践可度量和可授权的实践持续改进的实践付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发工作,及时交付使用;软件工程项目的基本目标软件工程目标之间的相互关系图低开发成本易于维护按时交付高可靠性高性能互斥关系互补关系3软件工程发展简史20世纪60年代开发方法——“功能性程序设计”理论成就——1968年10月北大西洋公约组织(NATO)的科学委员会提出了软件危机问题,从而提出“软件工程”问题;技术目标——如何扩大程序系统的规模,以适应更复杂的应用。发展简史(续)20世纪70年代开发技术:结构化分析及结构化设计方法理论成就:1)数据结构,算法理论2)形式方法,程序证明3)瀑布模型及相应技术方法技术目标:要解决软件危机发展简史(续)20世纪80年代:开发方法:1)转向构造系统的方法2)软件体系结构3)复杂的文档管理理论成就:1)关系数据库的关系理论2)COCOMO模型,CMM模型技术目标:1)大幅度提高个人的生产率2)软件复用,面向对象技术发展简史(续)20世纪90年代:开发方法:基于Internet/web技术的软件开发——研究焦点是软件体系结构、软件设计模式、标准化、协议、集成等问题理论成就:以研究封闭的系统转向一个开放的不断进化的系统。技术目标:JUSTINTIMEINFORMATION4软件工程原则选取适宜的开发模型;采用合适的设计方法;提供高质量的工程支撑;重视软件工程的管理。5软件工程的主要内容软件开发模型软件开发方法软件过程软件工具及开发环境软件工程标准文档软件工程标准国际标准国家标准行业标准企业(机构)标准项目(课题)标准5软件工程的主要内容软件开发模型软件开发方法软件过程软件工具及开发环境软件工程标准文档软件过程是指软件产品或软件系统从产生、投入使用到被淘汰的全过程。需求:包括问题分析和需求分析;设计:包括概要设计和详细设计;实现:把设计结果转换为可执行的程序代码;测试:包括单元测试、集成测试和确认测试;维护:是对投入运行的软件进行修改,使软件系统能适应外界环境变化、实现功能扩充和质量改善。6软件过程SolutionintegrationTechnicalDevelopmentProblemdefinitionStatusquo软件过程模型:框架StatusquoTechnicaldevelopmentProblemdefinitionSolutionintegrationStatusquoTechnicaldevelopmentProblemdefinitionSolutionintegrationStatusquoTechnicaldevelopmentProblemdefinitionSolutionintegrationStatusquo软件过程模型:嵌套表示软件过程模型:分类线性顺序模型原型模型RAD模型演化软件过程模型基于构件的开发形式化开发模型第四代技术TestCodeDesignSystem/informationengineeringAnalysis线性顺序模型或传统生存期或瀑布模型线性顺序模型或传统生存期或瀑布模型RequirementsAnalysisSystemdesignUnit&IntegrationTestingSystemTestingOperation&MaintenanceProgramdesignCodingAcceptanceTesting线性顺序模型或传统生存期或瀑布模型RequirementsAnalysisSystemdesignUnit&IntegrationTestingSystemTestingOperation&MaintenanceProgramdesignCodingAcceptanceTestingRequirementsDesignImplementation线性顺序模型特点严格活动序列;严格阶段成果评审;不允许需求的不确定性;不显式支持活动迭代;要求用户极大的耐心;开发过程“阻塞”;软件过程模型:分类线性顺序模型原型实现模型RAD模型演化软件过程模型基于构件的开发形式化开发模型第四代技术原型实现模型Customertestdrivesmock-upListentocustomerBuild/revisemock-up原型实现模型特点支持问题从抽象到具体的逐步演化过程软件的“临时版本”,未考虑性能需求技术方案未必最优会导致开发过程的不可收敛性多作为沟通用户和开发者的桥梁,而后抛弃软件过程模型:分类线性顺序模型原型模型RAD(RapidApplicationDevelopment)模型演化软件过程模型基于构件的开发形式化开发模型第四代技术RAD模型ProcessmodelingTesting&turnoverDatamodelingBusinessmodelingApplicationgeneration60—90daysTeam#1BusinessmodelingDatamodelingProcessmodelingApplicationgenerationTesting&turnoverTeam#2BusinessmodelingDatamodelingProcessmodelingApplicationgenerationTesting&turnoverTeam#3RAD模型特点基于
本文标题:软件工程基础指导(一)
链接地址:https://www.777doc.com/doc-6983826 .html