软件工程复习笔记.doc
《软件工程复习笔记.doc》由会员分享,可在线阅读,更多相关《软件工程复习笔记.doc(44页珍藏版)》请在咨信网上搜索。
1、CH0 概论本章重点:v 软件工程的定义v 什么是软件退化v 软件与程序的区别v 软件工程的组成v 客户和用户的定义v 常见的软件神话,他们错在何处?v 软件工程的目标有哪些?v 软件工程的目标中最重要的是哪个?v 软件过程是一种层次化的技术,其层次结构是什么样的?v 软件是想改就能改的吗?v 软件开发时是不是越早开始写代码越好1.为什么需要软件工程:个人、企业和政府在日常活动、管理和战略战术决策时越来越依赖于软件,因此必须确保软件的质量;鉴于软件开发成本巨大,因此必须确保开发出来的软件能够满足目标用户的真实要求;随着软件越来越复杂,其开发和实际也越来越复杂,必须确保开发活动的有序、有效;随着
2、软件用户数量和寿命的增加,对其适应性、可扩展性的要求也在增加。必须确保软件具备良好的可维护性。2.软件工程定义最经典的定义:软件工程是对合理工程原则的建立和使用,其目的是为了经济地获得可靠的、可以在实际机器上高效运行的软件。IEEE给出的定义:将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护。即将工程化方法应用于软件。课程给出的定义:软件工程是为了经济的开发出高质量的软件,并有效的维护它,将工程、管理手段与技术手段相结合应用于软件的方法的集合目的:经济的开发出高质量的软件,并有效的维护它方法:将工程、管理手段与技术手段相结合3.软件工程要实现多个目标,这些目标之间的重要性不一样价值
3、观问题软件工程的目标如下:又好又快 保证软件质量 提升开发效率、降低开发成本 提高维护效率、降低维护成本4.软件的定义:计算机系统中与硬件相互依存的另一部分,是程序、数据及其相关文档的完整集合。软件是逻辑的而非物理的系统元素。5.软件的特点: 没有物理实体 设计开发成本高昂,生产复制则几乎是零成本的 软件不会磨损、老化,但是也会退化软件退化:随着软件的维护升级,软件结构逐渐偏离原有设计并导致了软件质量的下降,称为软件退化。 软件发展的速度落后于硬件和实际需求 软件占计算机系统成本的比重越来越大 软件开发尚未真正实现标准化6.软件与程序的区别:软件不仅仅只是计算机程序7.软件工程组成:软件工程是
4、一种层次化的技术 质量优先是整个软件工程的核心价值观(以质量为中心) (软件)过程:由为建造、维护高质量软件所需要完成的一系列相互关联的活动组成的框架,即形成软件产品的一系列步骤。过程是软件工程管理和实施的基础。 方法:软件开发和维护过程中一些具体问题的最佳解决手段。方法是软件工程的核心手段 工具:为实现软件工程中各种过程和方法的自动化和半自动化而开发的程序系统。工具是软件工程的效率倍增器。8.软件工程必须重视人员的培训。9.软件工程中的相关人员: 用户User:软件使用者。目的是使用软件解决问题或提高工作效率。 客户Customer:为软件付钱的人。他们的目标是增加利润,或只是使业务运作更为
5、有效。 软件开发人员Developer:开发并维护软件的人。 开发管理人员Manager:管理软件开发过程的人员。其目标是花最少的钱满足客户要求10.软件神话:关于软件及其开发过程的一些错误说法。 神话一:因为软件是由弹性的,因此可以很容易的适应需求变化。(修改软件要付出成本) 神话二:如果我们无法按时完成计划,可以通过增加电脑和程序员人数赶上速度。 神话三:软件过程就是严格按照完成的软件开发标准和规程来开发软件。(错在把手段当成了目的,应该根据项目实际需要,灵活安排实际的软件过程活动) 神话四:当程序编写完成并交付给客户后,任务就完成了,因此应该尽快开始编写代码。 神话五:软件工程会导致我们
6、产生大量无用的文档,因此降低了效率。(创建文档的目的是保证开发软件的质量)文档最重要的作用是(1)促使开发者认真思考和(2)促进交流。CH1 软件过程与方法本章重点:v 过程管理的任务v 过程的定义v 五个核心软件活动v 几种软件过程模型,其活动间的顺序关系是怎样的(顺序、迭代、演化还是并行?)v 原型及其作用v 敏捷开发的价值观v 敏捷开发的基本推动力1.过程管理:辨识出一连串的商业活动,并针对这些活动的作业流程进行管理。2.过程管理的目标: 确保企业中各种商业活动的执行成果能具有一定的水平和精确度。 确保能持续改善活动的进行方式,串连活动的作业流程 让企业能保持市场上的竞争力3.过程管理的
7、任务: 寻找、发现企业中有价值的业务过程(过程识别) 发现、去除非增值活动,简化过程;通过合理安排活动顺序提高过程效率(过程梳理和优化) 对过程各个活动进行规范,形成标准(过程固化) 对过程执行情况加以监控(过程监控) 寻找过程中的错误、薄弱、低效环节并加予以纠正(过程改进)4.过程:也称业务过程,指为客户创造价值的一系列相互关联、有组织的活动或任务的集合。v 管理学意义上的过程是有明确目的性的:为客户(或企业)创造价值5.(业务)过程的特点: 可确定性:有明确的输入、输出和边界; 顺序:构成过程的活动,必须在时间和空间里具有确定的顺序; 客户:过程的结果必须有接收者客户。 增值:在过程中发生
8、的转换必须为接收者增加价值,无论接收者是在过程的上游还是下游。6.软件过程:构建、维护软件产品时所执行的一系列步骤(活动、动作和任务)的集合。v 活动:组成软件过程的最主要的宏观步骤。 例如:需求分析、设计、编码、发布等。v 动作:对活动进一步细分的得到的步骤。 例如设计活动,可以细分分为总体设计、模块设计等多个动作。v 任务:具体的工作步骤7.核心软件活动:所有合理的软件过程都包含一些共同的必要的活动(步骤),这些活动我们称为核心软件活动。8.软件过程通常包括下列五个核心软件活动: 需求分析:通过与客户的沟通协作,了解客户的真实需要,决定软件特性和功能,制定项目目标。 建模(设计):通过构造
9、软件模型(通常是图形形式的模型)的方法来研究、理解具体问题,(向客户和其他开发人员)展现具体解决方案。 编码与测试:实际编写代码、验证代码的正确性 运行与部署:将软件交付用户使用。通常用户会对软件进行一段时间的试用,并给出反馈意见 维护:修复用户使用过程中发现的软件缺陷,或者根据用户使用意见对软件进行改进9.在实际软件过程中往往还存在一些贯穿整个过程的普适性活动,以帮助软件团队管理和控制项目进度、质量、变化和风险。项目管理的角度说,这些“普适性活动”实质上是项目管理活动。常见普适性活动包括: 策划:创建软件项目的“地图”,以指导团队的项目旅程。通常包括:需要执行的具体任务、每个任务需要的资源分
10、配,每个任务的具体产品,以及工作计划等 项目跟踪和控制:定期评估项目进度情况,采取必要措施确保项目按期完成 风险管理:对可能影响项目进度和产品质量的风险进行评估,并采取必要措施来降低风险 测量:定义和采集关于过程、项目和产品的度量数据,以帮助管理和改进其他活动。例如:开发人员的生产率等 软件质量保证:确保软件质量的措施和活动 软件配置管理:管理软件(代码、配置信息及其文档)的版本变化历史 可复用管理:建立产品(代码等)复用的机制和标准(如公用函数库等) 人员培训:对相关人员进行必要的培训,使其具备必要的知识和技能,掌握相关工具的使用方法10. 软件过程模型是从一特定角度提出的软件过程的简化描述
11、。过程流(模型)是最主要的一类软件过程模型。过程流描述了如何在执行顺序和执行时间这一层面上,组织软件过程中(除维护之外的)的活动。11.几种主要的过程流及典型过程模型: 线性过程流:瀑布模型 迭代过程流:原型开发模型 演化过程流:螺旋模型 并行过程流 混合过程流:增量模型12.瀑布模型:又称软件生存周期模型,瀑布模型严格按照软件生存周期各个阶段来进行开发,上一阶段的输出即是下一阶段的输入,并强调每一阶段的严格性。每一阶段的任务完成后,都必须对其阶段性产品(主要是文档)进行评审,通过后才能开始下一阶段的工作。是一种以文档作为驱动的模型v 软件生存周期:软件从定义开始,经过开发、使用和维护,直到最
12、终退役的全过程称为软件生存周期。瀑布模型将软件生命周期分成软件定义、软件开发、运行、维护及退役五个时期组成。v 优点:可强迫开发人员采用的规范方法;严格规定了每一阶段必须提交的文档;要求每一阶段交付之产品都必须经过质量保证小组的仔细审查;清晰区分了逻辑设计与物理设计,尽可能推迟程序的物理实现;提供了软件开发的基本框架,有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究与使用,因此,在软件工程中占有重要的地位。 v 缺点:要求在项目开始的需求分析阶段就能够完整的得到客户的所有需求,现实中很难实现 客户要到项目接近尾声的验收阶段才能够看到实际的程序执行效果。如果这时才发现程序
13、和客户实际要求有重大偏差,就可能会造成重大的损失13.原型开发模型:原型,就是软件的一个模拟的可执行界面。用户可在原型上进行操作,直观的感受软件的执行效果。原型开发就是软件开发人员根据用户提出的软件基本需求快速开发一个原型,向用户展示软件界面和功能。在征求用户对原型的评价意见后,进一步改进、完善原型,如此迭代,直到软件开发人员和用户都确认软件系统的需求并达成一致的理解为止。优点: 原型的开发和评审时系统分析员和用户/客户共同参与的迭代过程,有利于双方充分理解和沟通。 比瀑布模型更符合人们认识事物的过程和规律,项目成员能够更清晰的理解用户实际需求。 如果原型的开发语言和实际软件相同,那么它的若干
14、高质量的程序片段和开发工具也可被用于工作程序的开发。快速原型的开发途径:原型仅仅是需求分析的一部分,因此必须尽可能快速的开发原型。建造原型应尽量采用相应的软件工具和环境,并尽量采用软件重用技术,在运行效率方面可做出让步,以便尽快提供。同时,原型应充分展示软件系统的可见部分,如人机界面、数据的输入方式和输出格式等。缺点:v 原型开发模型要求开发者和用户在一段时间内紧密配合、共同参与完成原型系统的开发,特别是需要用户的及时反馈。如果用户对此不够重视,那么原型开发的意义也就大打折扣了。v 原型的快速构造容易让用户误以为实际软件的开发也是可以很容易、很快就完成的,或者要求开发者直接将原型稍加修改使之成
15、为实际运行的产品。v 而实际上,为了快速开发原型,开发者往往会牺牲软件质量和可维护性而采取了最快速的开发手段,因此实际的高质量软件产品需要抛弃原型从头开发。v 如果不能够充分的向客户解释这一点的话,就容易导致软件开发人员和用户之间产生矛盾。v 原型开发模型最大的缺点在于,它仍然没有解决需求变化的问题。14.螺旋模型:一种演化式的软件过程模型。结合了原型开发模型的迭代性和瀑布模型的系统性和可控性特点。螺旋模型的每一个迭代周期都包括计划(需求定义)、风险分析、工程实现和评审4个阶段。螺旋模型是一个风险驱动的模型,每个迭代周期都不应该太长(一般是2-8周左右)螺旋模型优点: 支持用户需求的动态变化
16、原型可看作形式的可执行的需求规格说明,易于为双方共同理解;开发者和用户共同参与软件开发,可尽早发现软件中的错误。 螺旋模型特别强调原型的可扩充性和可修改性。既保持瀑布模型的系统性、阶段性,又可利用原型评估降低开发风险。 螺旋模型为项目管理人员及时调整管理决策提供了方便,进而可降低开发风险 螺旋模型缺点: 如果每次迭代的效率不高,致使迭代次数过多,将会增加成本并推迟提交时间 使用该模型需要有相当丰富的风险评估经验和专门知识,要求开发队伍水平较高适用场合:支持需求不明确、特别是大型软件系统的开发,并支持面向规格说明、面向过程、面向对象等多种软件开发方法15.增量过程模型:螺旋模型基础上的改进。采用
17、并行方式 解决阻塞带来的浪费问题16.敏捷开发提出的背景:传统过程开发模型都是从管理者的角度来看待软件开发,存在重大缺陷:忽视变化的存在;忽视了软件开发是一个智力密集型的工作;忽视了人与人之间的直接交流;过分注重过程。17.敏捷开发宣言:敏捷开发的价值观 个人与交流 胜于 开发过程和工具 可运行的软件 胜于 面面俱到的文档 客户协作 胜于 合同谈判 响应变化 胜于 按部就班遵循计划18.敏捷的基本推动力:普遍存在的变化19.敏捷鼓励: 使沟通更便利的团队结构和协作态度 快速交付可运行产品而非中间文档 客户以开发团队中的一员的身份参与项目 根据实际情况灵活调整项目计划20.敏捷开发非常强调人的因
18、素在软件项目开发中的重要性敏捷开发强调团队及其成员应该具备下列要素:基本能力、共同目标、精诚合作、决策能力、相互尊重和信任、不断学习、自我组织。21.敏捷过程模型: 极限编程(eXtreme Programming,XP) Scrum 特征驱动开发(FDD) 精益软件开发(LSD) 统一过程(AUP)22.极限编程:XP定义了五个有重要意义的要素: 沟通:强调口头的、面对面的交流 简明:为了简化设计,只对当前的需要做设计。当设计需要改进时,使用重构来实现。 反馈:通过测试、增量交付和持续集成等手段,快速获得反馈 鼓励:鼓励符合极限精神的实践。例如,尽可能减少过度设计。 尊重:敏捷团队应在内部成
19、员之间,以及内部成员与其他利益相关者之间,灌输相互尊重的思想。减少推诿和扯皮,增加协作。23. Scrum是一种迭代式增量软件开发过程冲刺:一个15-30天周期在冲刺的过程中,没有人能够变更冲刺订单24.软件过程领域最新的流行趋势是DevOps,强调开发和运营的密切协作,运营部门在软件的产品设计、开发和测试过程中都要深度介入。DevOps也强调最新工具,如持续集成等自动化工具的使用,以提高工作效率并实现快速反应。25.小结:v 需要将软件开发划分为一系列规范化的步骤,使之便于实施和管理。v 软件开发需要客户的深入参与和合作v 软件开发的主体是人,必须重视人的需求和交流沟通v 软件开发过程必须具
20、备高度的灵活性,以适应变化。v 总之,软件开发过程在不断引入新的技术和工具的同时,对管理者也提出了越来越高的要求CH2 需求分析概述本章重点:v 软件需求的概念v 需求分析的目标v 功能需求与非功能需求v 企业管理各个层级对信息系统的需求主要是什么?企业管理信息系统可分为哪两大模块,各自对应哪个管理层级的需求v 需求分析的五个阶段(都做什么);v 需求跟踪与需求状态跟踪各自都做什么?1.导致项目不能按计划完成的最重要的三个原因是: 缺少用户反馈(12.8%) 需求不完整(12.3%) 需求变化(11.8%)软件需求是决定软件开发成败的关键因素2.(软件)需求(Requirement):为了解决
21、客户的特定问题,软件所必须提供的能力和必须遵从的约束条件。3.需求分析:项目人员确定用户需求所需要做的工作需求分析的目标: 弄清楚客户/用户究竟想用软件来干什么。 弄清楚用户究竟想怎么用。 让客户明确他最终能得到什么样的产品需求分析的成果:软件需求说明书4.需求通常分为功能需求和非功能需求两大类功能需求:描述系统应该提供的功能或服务,通常涉及用户或外部系统与该系统之间的交互。即软件必须提供的能力。 业务需求、用户需求、功能需求、系统需求非功能需求:从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求,例如响应时间、数据精度、可靠性、开发过程的标准等。即软件的约束。非功能需求难
22、以被测试和雁阵;容易被忽视。业务规则、质量属性、外部接口、约束条件5.除非必要,否则需求中不应该包含技术细节6.软件需求的固有困难: 用户不一定清楚的知道他到底想要什么; 软件开发人员不了解项目的业务背景知识; 日常交流所用的语言文字本身具有很大的模糊性; 用户企业不同部门之间需求彼此矛盾; 用户的需求经常会发生变化7.需求工程就是:形式化、工程化的需求分析8.软件需求工程的五个阶段 需求获取:软件开发人员通过与用户之间的有效沟通,了解用户对软件真实需要的过程。本质:开发人员与用户间的沟通目的:了解用户对软件的真实需要需求获取的内容:v 客户的战略v 相关的业务过程v 相关规章制度、业务规则等
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 复习 笔记
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。