CH1-软件工程学概述_第1页
CH1-软件工程学概述_第2页
CH1-软件工程学概述_第3页
CH1-软件工程学概述_第4页
CH1-软件工程学概述_第5页
已阅读5页,还剩56页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

<Pages:58>软件工程

SoftwareEngineering2026/11/2

张永新山东师范大学数学科学学院 waterzyx@163.com近20年软件与硬件的发展谁更快一些?硬件什么是软件及软件开发?软件≠程序软件开发是个过程软件开发过程中最大的困难是什么?并不是程序编写中的技术问题软件开发是个吃青春饭的行业?软件工作者的职业生涯引子:从几个问题开始2026/11/22/58程序员"出身”编程这活究竟该干多久?程序员是吃"青春饭”的:合适的年龄20~30岁20岁,大学,水平差,进步快25岁,技能和效率达到最高,水平停滞不前30岁,编程效率下降,已经不是编程主力程序员应从事更有价值的工作30岁的程序员还有没有前途?软件工作者的职业生涯2026/11/23/58程序员的收入和在企业的地位收入中等偏下面临年轻程序员的压力程序员的编程水平使用一种语言,2年可成为"专家”技能和经验到达一定水平,很难再有提高年长程序员的出路软件工程项目管理2026/11/24/58软件开发人员的职业发展之路第一阶段:职业程序员第二阶段:成为项目经理或技术负责人第三阶段:成为机构管理人员软件开发中的角色程序员软件测试人员系统分析师架构设计师界面设计师数据库设计师项目经理2026/11/25/58项目经理的职业发展之路(1)2026/11/26/58项目团队成员项目经理助理项目经理高级项目经理PMO成员职能部门经理项目管理经理管理高层职业经理人项目经理的职业发展之路(2)2026/11/27/58项目团队成员项目经理助理项目经理高级项目经理PMO成员项目经理导师PMO专员项目管理专家项目管理顾问教学目标熟练掌握软件与软件工程的基本概念和基本知识熟练掌握生存周期与软件开发模式掌握结构化程序设计的编程思想掌握面向对象分析、设计方法掌握有关软件的测试与维护,项目计划与项目管理方法

能用软件工程的方法参与软件项目的分析、设计、实现和维护教学方式理论讲述(核心)实践案例(段子)期末考试教学目标及方式2026/11/28/58CH1软件工程学概述(2周)CH2可行性研究(1周)CH3需求分析(1周)CH4形式化说明技术(自学内容)CH5总体设计(1周)CH6详细设计(1周)CH7实现(2周)CH8维护(1周)2026/11/29/58总目录–教学计划CH9面向对象方法学引论(2周)CH10面向对象分析(2周)CH11面向对象设计(2周)CH12面向对象实现(自学内容)CH13软件项目管理(2周)2026/11/210/58总目录–cont.张海藩,《软件工程》、《软件工程导论》教材与参考书2026/11/211/58赵池龙、杨林,《实用软件工程》2026/11/212/58课件及资料共享:163邮箱网盘相应文件夹中maths_sdnu@163.com/sdnu_maths教学资源2026/11/213/581.0引子:什么是软件1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程2026/11/214/58CH1软件工程学概述1.0引子:什么是软件1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程2026/11/215/58软件包括在运行中能提供所希望的功能和性能的指令集(即程序)使程序能够正确运行的数据结构描述程序研制过程和方法使用的文档软件的概念2026/11/216/58程序软件可执行部分不可执行部分文档1文档2文档3基于软件功能的划分系统软件支撑软件应用软件基于软件服务对象的范围定制软件(项目)产品软件(产品)软件的划分2026/11/217/581.0引子:什么是软件1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程2026/11/218/58阶段1:程序设计阶段时间:1950S初期至1960S中期特点:个体化的软件环境;除了程序清单,没有任何资料阶段2:程序系统阶段时间:1960S中期至1970S末期特点:"软件工坊”阶段3:软件工程阶段时间:始于1970S中期特点:引入工程方法和管理技术阶段4软件发展阶段2026/11/219/58软件危机含义软件的开发和维护过程所遇到的一系列问题如何开发软件,以满足日益增长的需求如何维护数量不断膨胀的已有软件软件危机表现对软件开发成本和进度的估计常常很不准确用户对"已完成的”软件系统不满意的现象经常发生软件产品质量往往靠不住软件常常是不可维护的软件通常没有适当的文档资料软件成本在计算机系统总成本中所占比例逐年上升软件开发生产率提高的速度跟不上需求软件危机及其表现2026/11/220/58与软件本身的特点有关逻辑部件,可见性差客观上软件维护比较困难规模庞大,复杂性高需要人员协作和科学管理与软件开发与维护的方法不正确有关错误的观念、方法和技术(由一体化开发而来的)软件的生命周期:定义、开发、使用、维护、废弃编码只是软件开发中的一部分(10%~20%)不同阶段的修改代价不同忽视软件需求分析的重要性,过早地开始编码工作越早开始写程序,完成时间往往越长轻视软件维护的重要性维护费用占软件总投资的55%~70%产生软件危机的原因2026/11/221/58对软件有一个正确的认识软件=程序+方法+规则+数据+文档(IEEE’83)软件开发应该组织良好、管理严密、协调配合并非个体劳动的神秘技巧推广使用成功的技术和方法开发和使用更好的软件工具软件工程:管理+技术消除软件危机的途径2026/11/222/581.0引子:什么是软件1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程2026/11/223/58软件危机分析根源解决途径软件工程产生:1968,NATO计算机科学会议软件工程的含义软件工程是指导计算机软件开发和维护的一门工程学科。采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它。

软件工程的产生2026/11/224/58软件工程关注大型程序的构造小型程序与大型程序软件工程的中心课题是控制复杂性软件交付后仍需经常修改开发软件的效率非常重要和谐地合作是软件开发成功的关键软件必须有效地支持它的用户产品、用户手册、培训资料不同文化背景的人创造产品软件工程的本质特征2026/11/225/58软件工程专家B.W.Boehm提出软件工程的七条基本原理1.用分阶段的生命周期计划严格管理2.坚持进行阶段评审大部分错误是在编码之前造成的3.实行严格的产品控制配置管理4.采用现代程序设计技术5.结果应能清楚的审查提高"可见性”;量化标准6.开发小组的人员应少而精7.承认不断改进软件工程实践的必要性软件工程的基本原理2026/11/226/58方法学(methodology)指在软件生命周期全过程中使用的一整套技术的集合,也称为范型(paradigm)三要素:方法、工具和过程方法:完成软件开发的各项任务的技术方法("如何做”)工具:为方法的运用提供自动的或半自动的软件支撑环境过程:为了获得高质量的软件所需要完成的一系列任务的框架目前使用得最广泛的软件工程方法学传统方法学面向对象方法学软件工程方法学2026/11/227/58特点:生命周期方法或结构化范型将软件过程依次分成若干阶段按顺序开展每个阶段的任务每个阶段进行严格的技术审查和管理复审提交"最新的”文档优点:阶段划分、降低难度严格审查、保证质量、提高可维护性缺点:当软件规模庞大,或者对软件的需求是模糊的或会随时间而变化的时候原因:把数据和操作人为地分离成了两个独立的部分传统方法学2026/11/228/58特点:模拟人类认识和解决问题的方法和过程主导反复迭代的演化过程把数据和行为封装在一起4个要点:对象(Object):数据+数据上的操作行为类(Class):具有相同属性和操作的所有对象类的层次结构对象彼此间仅能通过发送消息互相联系优点:降低了软件产品的复杂性提高了软件的可理解性简化了软件的开发和维护工作促进了软件重用面向对象方法学2026/11/229/581.0引子:什么是软件1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程2026/11/230/58软件生命周期2026/11/231/58软件定义软件开发运行维护{需求分析可行性研究问题定义{总体设计详细设计综合测试编码和单元测试}系统设计}系统实现{改正性维护完善性维护预防性维护适应性维护生命周期模型(过程模型)2026/11/232/58可行性研究需求分析概要设计详细设计实现集成测试确认测试使用与维护废弃软件定义软件开发软件使用与维护1.问题定义:"要解决的问题是什么”2.可行性研究"上一个阶段所确定的问题是否有行得通的解决办法”3.需求分析"目标系统必须做什么”用正式文档准确地记录对目标系统的需求(规格说明specification)4.概要设计"大致将如何实现目标系统”设计程序的体系结构,即确定程序的模块组成以及模块关系2026/11/233/585.详细设计"应该怎样具体地实现这个系统”详细规格说明6.编码和单元测试写出正确的容易理解、容易维护的程序模块程序员自测试及交叉单元测试7.综合测试通过各种类型的测试(及相应的调试)使软件达到预定的要求集成测试:装配各模块验收测试:按照规格说明书,用户验收8.软件维护通过各种必要的维护活动使系统持久地满足用户的需要改正性维护、适应性维护、完善性维护、预防性维护2026/11/234/581.0引子:什么是软件1.1软件危机1.2软件工程1.3软件生命周期1.4软件过程2026/11/235/58软件过程是为获得高质量软件所需完成的一系列任务的框架,它规定了完成各项任务的工作步骤3W1H:Who、When、What、How过程定义了运用方法的顺序、应交付的文档、所需采取的管理措施,以及标示阶段任务的里程碑通常使用生命周期模型简洁地描述软件过程2026/11/236/58软件过程简介:在20世纪58年代之前,瀑布模型一直是唯一被广泛采用的生命周期模型现在仍是应用最广泛的过程模型特点:阶段间具有顺序性和依赖性必须前一工作做完才能进行后一工作前一阶段的输出为后一阶段的输入推迟实现的观点清楚区分逻辑设计与物理设计质量保证的观点合格文档的完成时阶段结束的标志每个阶段结束前都要评审所完成的文档2026/11/237/58瀑布模型实际的瀑布模型传统的瀑布模型是理想化的实际的瀑布模型是带"反馈环”的2026/11/238/58优点:强迫开发人员采用规范的方法严格规定了每个阶段必须提交的文档要求每个阶段交出的所有产品都必须经过仔细的质量保证验证总结:瀑布模型的成功在很大程度上是由于它基本上是一种文档驱动的模型缺点:由文档驱动,缺乏灵活性仅通过静态的规格说明很难全面正确地认识动态的软件产品要求用户不经过实践就提出完整准确的需求是不切实际的总结:由于瀑布模型完全依赖于书面的规格说明,很可能导致最终开发出的软件不能真正满足用户的需要。

2026/11/239/58瀑布模型的优缺点简介:快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集2026/11/240/58快速原型模型2026/11/241/58特点:快速原型的本质是"快速”采用软件重用技术在算法的时空开销上也可以让步原型应充分展示软件的可见部分优点:有助于获取用户需求尽早发现软件中的错误支持需求的动态变化缺点:不能支持风险分析适用于需求动态变化,事先难以确定系统增量模型亦称渐增模型把产品作为一系列的增量构件来设计、编码、集成和测试每个构件由多个相互作用的模块构成,并且能够完成特定的功能第一个增量构件往往实现软件的基本需求,提供最核心的功能2026/11/242/58增量模型优点:能在较短的时间内向用户提交可完成部分功能的产品逐步增加产品功能可以使用户有较充裕的时间学习和适应困难:在把每个新的增量构件集成到现有的软件体系结构中时,必须不破坏原来已经开发的产品软件体系结构必须是开放的从长远观点看,很有意义本身具有矛盾性一方面要求开发人员把软件看作一个整体另一方面要求开发人员把软件看作构件序列,构件间彼此独立2026/11/243/58风险更大的增量模型并行地构造部件2026/11/244/58螺旋模型2026/11/245/58简介:螺旋模型是瀑布模型、原型模型的有机结合,同时增加了风险分析简化的螺旋模型(右图)2026/11/246/58螺旋模型沿着螺线旋转,在四个象限上分别表达四个方面的活动,即:制定计划-确定软件目标,选定实施方案,弄清项目开发的限制风险分析-分析所选方案,考虑如何识别和消除风险实施工程-实施软件开发客户评估-评价开发工作,提出修正建议,并计划下一个阶段的任务优点:有助于获取用户需求,加强对需求的理解尽早发现软件中的错误支持需求的动态变化支持风险分析,可降低或者消除软件开发风险缺点:过多的迭代次数会增加开发成本,延迟提交时间只适合大型软件项目的开发,否则,每个阶段的风险分析将占用很大一部分资源,增加成本对开发人员的风险分析能力是极大的考验适用于:需求动态变化,事先难以确定并且开发风险较大的系统2026/11/247/58简介迭代是软件开发过程中普遍存在内在属性喷泉模型体现了面向对象软件开发过程的迭代和无缝的特性喷泉模型2026/11/248/58简介RationalUnifiedProcess,RUPRational公司推出的一种完整的软件过程总结多年商业化验证的6条有效的开发经验,被称为"最佳实践”迭代开发(可运行版本)管理需求(用例)使用基于构件的体系结构可视化建模(UML)验证软件质量(内建的质量评估过程)控制软件变更Rational统一过程2026/11/249/58RUP软件开发生命周期二维生命周期模型横轴:核心工作流纵轴:时间核心工作流业务建模、需求、分析和设计、实现、测试、部署支持工作流配置和变更管理、项目管理、环境2026/11/250/58RUP工作阶段把软件生命周期划分成4个阶段初始阶段精华阶段构建阶段移交阶段RUP迭代式开发迭代和渐增式开发2026/11/251/58敏捷过程AgileProcess,AP4条价值声明(2001.2):个体和交互胜过过程和工具可以工作的软件胜过详尽的文档与客户协作胜过

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论