软件项目工程导论期末复习资料大纲.doc
软件工程导论期末复习大纲第一章 软件工程概述(软件=程序+数据+文档)1.软件危机:定义:计算机软件的开发和维护过程中所遇到的一系列严重问题。表现:软件开发的成本和进度估计常常不准确;用户对“已完成的”软件系统不满意的现象经常发生;软件产品的质量往往靠不住;软件常常是不可维护的;软件通常没有适当的文档资料;软件产品供不应求,跟不上计算机普及速度。产生原因:与软件本身的特点;与关软件开发与维护的方法不正确有关。解决办法:消除各自为阵的理念;使用在实践中总结出来的成功的经验,探索更有效地技术和方法;开发和使用更好的软件工具。2.软件工程:定义:指导计算机软件开发和维护的一门工程学科。七条基本原理:用分阶段的生命周期计划严格管理;坚持进行阶段评审;实行严格的产品控制;采用现代程序设计技术;结果应能清楚地审查;开发小组的人员应该少而精;承认不断改进软件工程实践的必要性。3.软件工程方法学:定义:通常把在软件生命周期全过程中使用的一整套技术方法的集合。两种方法学:传统方法学、面向对象方法学。 优点 传统方法学:把软件生命周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,降低了整个软件开发过程的困难程度;在每个阶段都采用科学的管理技术和良好的技术方法,每个阶段都从技术和管理两个方面进行严格审查,保证软件的质量;提高了软件的可维护性,提高开发成功率。 面向对象方法学:符合人们通常的思维方式,提高了软件的可理解性;对象是相对独立的实体,重用性好;可维护性好。三种要素:方法、工具、过程。4.软件生命周期:软件定义(系统分析):问题定义、可行性研究、需求分析;软件开发:总体设计+详细设计(系统设计)、编码和单元测试、+测试(系统实现);运行维护:软件维护。5.软件过程:生命周期模型:瀑布模型 快速原型模型 增量模型 螺旋模型 喷泉模型 RUP模型 优点 瀑布模型:可强迫开发人员采用规范的方法,严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证;它基本上是一种文档驱动的模型。 快速原型模型:减少了软件需求不明确给开发工作带来的风险。 增量模型:很有用;减少由于软件需求不明确而给开发工作带来的风险;缩短产品提交时间(快)。 螺旋模型:对可选方案和约束条件的强调有利于已有软件的重用和把软件质量看作软件开发的一个重要目标;开发者和客户都可以更好地理解和应对风险。 缺点 瀑布模型:不适应需求经常发生变更的环境;每一步的工作都必须以前一阶段的输出为输入(顺序性),可能导致“阻塞”;可能最终开发出的软件产品不能真正满足用户的需要(R:几乎完全依赖于书面的规格说明);用户只能通过文档来了解产品是什么样的。 增量模型:软件体系结构必须是开放的;本身是自相矛盾的;具有无法集成的风险。 螺旋模型:开发人员需要相当丰富的风险评估经验和专门知识。 适合场所 瀑布模型:用户需求明确、完整、无重大变化的软件项目开发。 快速原型模型:需求不完整的软件开发项目。 增量模型:适用可多批看到和开发时间快的软件产品开发项目。 螺旋模型:高风险的大型软件。 喷泉模型和RUP模型:需求不稳定、不全面的软件项目开发。 特点: 瀑布模型:具有顺序性。 快速原型模型:线性顺序进行。 增量模型:分批地逐步向用户提交产品,减少全新软件给客户带来的冲击。 喷泉模型:迭代、无缝对接 RUP模型:迭代、渐增第二章、可行性研究分析方面:技术可行性、经济可行性、操作可行性数据流图(DFD)第三章、需求分析8个需求:获取需求的方法(综合使用):访谈、面向数据流自顶向下求精、简易的应用规格说明技术、快速建立软件模型。3.6.状态转换图(会画)第五章、总体设计5.2.设计原理:模块化(为什么模块化)、耦合、内聚、层次图(一般为三层):第六章、详细设计6.1.结构程序设计(顺序、选择、循环、单入单出)6.3.过程实际的工具(描述与算法之间的转换)6.5.程序复杂程度的定量度量(计算程序复杂程度)第九章、面向对象方法学引论三种模型:对象模型、动态模型、功能模型第十章、面向对象分析8分大题目。问题:1、什么是软件工程、软件过程?软件过程与软件工程方法学有何关系?答: 软件工程是指导计算机软件开发和维护的一门工程学科。 软件过程是为获得高质量软件所需完成的一系列任务的框架,规定了完成各项任务的工作步骤。 关系:软件过程是软件工程方法学的三个重要组成部分之一。2、什么是软件生命周期模型?有哪些主要模型?各种模型的适用范围及特点?传统方法学和面向对象方法学分别采用哪些模型?答:软件生命周期模型是描述软件过程的模型。 3、简要介绍软件生命周期每个阶段的基本任务。答:问题定义:明确要解决的问题是什么。 可行性研究:明确对所确定的问题是否有行得通的解决办法。 需求分析:确定目标系统所必须具备的功能。 总体设计:设计几种方案来实现目标系统。 详细设计:设计出程序的详细规格说明来说明怎样实现系统。 编码:写程序模块。 单元测试:对每个模块进行测试。 综合测试:通过各种类型的测试使软件达到预定的要求。4、简要介绍软件工程的7条基本原理。答:5、需求分析的基本任务是什么?通常对软件系统有哪些需求?答:需求分析的基本任务是确定对系统的综合要求;分析系统的数据要求;导出系统的逻辑模型;修正系统开发计划;撰写需求规格说明书。 需求:功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求。6、模块化有什么好处?答:模块化的好处:开发成本降低、结构清晰、便于共享。7、定性衡量模块独立性的两个标准是什么?它们表示什么含义?答:标准:耦合、内聚。 耦合:对一个软件结构内不同模块之间互联程序的度量。 内聚:模块内各个元素彼此结合的紧密程度。8.传统的方法学是如何降低软件危机的?答:传统方法学在软件生命周期的每个阶段都采用科学的管理技术合肥那个发,且在每个阶段结束前都从技术和管理两个角度进行严格的审查,合格之后才开始下一阶段的工作,这样保证了软件的质量,提高了软件的可维护性,降低了软件危机。 数据流图(DFD)步骤:1.画子系统的输入输出 把整个系统视为一个大的加工,然后根据数据系统从哪些外部实体接收数据流,以及系统发送数据流到哪些外部实体,可画出输入输出图。顶层图2.画子系统内部 把顶层图的加工分解成若干加工,并用数据流将这些加工连接起来,使得顶层图的输入数据经过若干加工处理后,变成顶层图的输出数据流。 0层图从一个加工画出一张数据流图的过程就是对加工的分解。确定加工:在数据流的组成或值发生变化的地方应该画出一个加工,这个加工的功能就是实现这一变化,也可以根据系统的功能决定加工。确定数据流:用户把若干数据当作一个单位来处理(这些数据一起到达,一起处理)时,可以把这些数据看成一个数据流。数据存储:对于一些以后某个时间要使用的数据,可以组织成为一个数据存储来表示。3、画加工的内部 把每个加工看作一个小系统,把加工的输入输出数据流看成小系统的输入输出流。于是可以像画0层图一样画出每个小系统的加工DFD图。4、画子加工的分解图 对第三步分解出来的DFD图中的每个加工,重复第三步的分解过程,直到图中尚未分解的加工都是足够简单的。分层数据流图5、对数据流图和加工编号 对于一个软件系统,其数据流图可能有许多层,每层又有许多张图。为了区分不同的加工和不同的DFD子图,应对每张图进行编号,以便管理。顶层图只有一张,图中的加工也只有一个,故不必为其编号。0层图只有一张,图中的加工号分别是0.1、0.2、,或1、2。子图就是父图中被分解的加工号。子图的加工号是由图号、圆点和序号组成。*应适当的为数据流、加工、数据存储以及外部实体命名(名字反映的是该成分的实际含义)。*画数据流图,不是画控制流。*一个加工的输出数据流,不应与输入数据流同名,即使他们的组成完全相同。*允许一个加工有多条数据流流向另一个加工,也允许一个加工有两条相同的输出数据流流向不同的加工。*保持父图和子图的平衡。(父图中某加工的输入输出流必须与它的子图的输入输出流在数量上和名字上相同)(若父图中的一个输入/输出数据流对应于子图中的几个输入/输出数据流且子图中组成这些数据流的数据项的全体正好是父图中的这一数据流,那么它们仍然平衡)*在自顶向下的分解过程中,若一个数据存储首次出现时,只与一个加工有关系,那么这个数据存储应作为这个加工的内部文件而不必画出。*数据守恒。*在整套数据流图中,每个数据存储必须既有读的数据流,又有写的数据流。但在某张子图中,可能只有读没有写,或者只有写没有读。一、软件软件概念:计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整结合。(Software=Program+Data+Document)软件的特征:非常复杂(逻辑复杂度高),成本高,风险大(如何降低?),维护困难(改正性维护:修改故障;完善性维护:增加功能;适应性维护:移植)二、软件危机概念:计算机软件的开发和维护过程中所遇到的一系列严重问题。表现:1.成本2.进度3.质量4.用户对“已完成的”软件系统不满意的现象经常发生5.维护6.文档7.需求产生的原因:软件本身的特点+软件开发与维护的方法不正确消除软件危机的方法:要有技术措施(传统方法学+OO方法学);要有必要的组织管理措施三、软件工程概念:指导计算机软件开发和维护的一门工程学科本质特性P6(7条):软件工程关注于大型程序的构造;软件工程的中心课题是控制复杂性(问题分解功能分解、对象);软件经常变化;开发软件的效率非常重要;和谐的合作是开发软件的关键运用相关的标准和规程;软件必须有效地支持它的用户;在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。软件工程的基本原理(7条)确保软件产品的质量和开发效率的原理的最小集合1.用分阶段的生命周期计划严格管理(“分阶段”的目的:减少项目延期;质量评审)2.坚持进行阶段评审 (R:大部分错误是在编码之前造成的;错误发现与改正得越晚,所需付出的代价也越高)3.实行严格的产品控制4.采用现代程序设计技术5.结果应能清楚地审查:应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准(在于:规范+文档清楚的记录、责任)6.开发小组的人员应该少而精:提高软件开发质量和降低通信开销7.承认不断改进软件工程实践的必要性:积极主动地采纳新的软件技术、不断总结经验来评价新的软件技术的效果。软件工程方法学(范型):在软件生命周期全过程中使用的一整套技术方法的集合。软件工程方法学的要素:1.方法(完成软件开发的各项任务的技术方法);2.工具(为运用方法而提供的自动的或半自动的软件工程支撑环境) ;3.过程(为了获得高质量的软件所需要完成的一系列任务的框架,规定完成了各项任务的工作步骤)工具-方法-过程-质量关注点(支持软件工程的根基就在于对质量的关注)传统方法学/生命周期方法学/结构化范型:采用结构化技术来完成软件开发的各项任务并使用适当的软件工具或软件工程环境来支持结构化技术的运用。具体操作:把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务线性。阶段审查:从技术和管理两个方面对这个阶段的开发成果进行检查,通过之后这个阶段才算结束;若没通过检查,也必须进行必要的返工,而且返工后还要再经过审查。(审查的主要标准:每个阶段都应该交出和所开发的软件完全一致的高质量的文档资料,从而保证在软件开发工程结束时有一个验证准确的软件配置交付使用。)优点:每个阶段的任务相对独立且较简单,降低了整个软件开发工程的困难程度;科学的管理技术、良好的技术方法和严格的审查保证了软件的质量,提高了软件的可维护性。面像对象方法学(OO方法学):是一个主动地多次反复迭代的演化过程,而其在概念和表示方法上的一致性,保证了在各项开发活动之间的平滑(无缝)过渡。(无缝对象一直存在且不变)出发点和基本原则:尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界、解决问题的方法与过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。优点:降低了软件产品的复杂性,提高了软件的可理解性;简化了软件的开发和维护工作;易在以后的软件产品中重复使用(促进了软件重用)。四、软件生命周期组成:软件定义降低成本,提高软件质量的关键(123)、软件开发(4567)、运行维护(8)软件生命周期每个阶段的基本任务:1.问题定义要解决的问题是什么2.可行性研究对于上一个阶段所确定的问题有行得通的解决办法么3.需求分析确定目标系统为解决这个问题必须具备的功能(用正式文档准确地记录对目标系统的需求,这份文档一般称为规格说明书)4.总体设计概括地说,应该怎么实现目标系统(设计出实现目标的几种可能的方案;确定程序由哪些模块组成以及模块间的关系)5.详细设计/模块设计应该怎样具体地实现这个系统(设计出程序的详细规格说明包含所需的算法和数据结构)6.编码和单元测试7.综合测试通过各种类型的测试及相应的调试使软件达到预定的要求8.软件维护五、软件过程概念:为了获得高质量软件所需要完成的一系列任务的框架,规定了完成各项任务的工作步骤。基本活动:软件规格说明、软件开发、软件确认、软件演进1、瀑布模型规定了各项软件工程的活动(次序固定)特点:阶段间具有顺序性和依赖性;推迟实现清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现;质量保证文档、文档评审缺点:适合的是用户需求明确、完整、无重大变化的软件项目开发;会导致工作中发生“阻塞”状态;几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要;软件产品交付给用户之前,用户仅能通过文档来了解产品是什么样的。优点:可强迫开发人员采用规范的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。成功点:很大程度上是由于它基本上是一种文档驱动的模型。2、快速原型模型解决瀑布模型问题3、4第一步:快速建立一个能反应用户主要需求的原型系统,让用户在计算机上适用它,通过实践来了解目标系统的概貌;第二步:用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用一旦用户认为这个原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档。主要优点:软件产品的开发基本上是线性顺序进行的。3、增量模型(渐增模型)解决瀑布模型问题2操作:把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。(先基本功能,后附加功能)分解时必须遵守的约束条件:当把新构件集成到现有软件中时,所形成的产品必须是可测试的。优点:可分批地逐步向用户提交产品;能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。困难:把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品;软件体系结构必须是开放的(必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便);增量模型本身是自相矛盾的;会有构件无法集成饭一起的风险注:必须在开始实现各个构件之前就全部完成需求分析、规格说明和概要设计的工作。4、螺旋模型降低风险任务:确定该阶段的目标,选择方案,设定约束条件;评估方案,识别并排除风险;利华下一阶段(相当于纯粹的瀑布模型);开发、验证下一级产品。优点:有利于已有软件的重用;有助于把软件质量作为软件开发的一个重要目标;减少了过多测试和测试不足所带来的风险。适用:内部开发的大规模软件项目。5、喷泉模型:迭代+无缝连接6、RUP模型:迭代+渐增第二章、可行性研究可行性研究的目的:用最小的代价在尽可能短的时间内确定问题能否解决。从以下方面做可行性分析:技术可行性;经济可行性;操作可行性;法律;社会效益等。可行性研究过程:复查系统规模和目标;研究目前正在使用的系统;导出新系统的高层逻辑模型(非实现模型,包括DFD、DD);进一步定义问题;导出和评价供选择的解法;推荐行动方针;草拟开发计划;书写文档提交审查。系统流程图:概括地描绘物理系统的传统工具。数据流图(DFD):一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换(在数据流图中没有任何具体的物理部件,仅是描绘数据在软件中流动被处理的逻辑过程)是系统逻辑功能的图形表示。画数据流图的基本目的:利用它作为交流信息的工具;作为分析和设计的工具。
收藏
编号:2558351
类型:共享资源
大小:28.25KB
格式:DOC
上传时间:2020-04-20
8
金币
- 关 键 词:
-
软件
项目
工程
导论
期末
复习资料
大纲
- 资源描述:
-
^`
软件工程导论期末复习大纲
第一章 软件工程概述(软件=程序+数据+文档)
1.软件危机:
定义:计算机软件的开发和维护过程中所遇到的一系列严重问题。
表现:软件开发的成本和进度估计常常不准确;用户对“已完成的”软件系统不满意的现象经常发生;软件产品的质量往往靠不住;软件常常是不可维护的;软件通常没有适当的文档资料;软件产品供不应求,跟不上计算机普及速度。
产生原因:与软件本身的特点;与关软件开发与维护的方法不正确有关。
解决办法:消除各自为阵的理念;使用在实践中总结出来的成功的经验,探索更有效地技术和方法;开发和使用更好的软件工具。
2.软件工程:
定义:指导计算机软件开发和维护的一门工程学科。
七条基本原理:用分阶段的生命周期计划严格管理;坚持进行阶段评审;实行严格的产品控制;采用现代程序设计技术;结果应能清楚地审查;开发小组的人员应该少而精;承认不断改进软件工程实践的必要性。
3.软件工程方法学:
定义:通常把在软件生命周期全过程中使用的一整套技术方法的集合。
两种方法学:传统方法学、面向对象方法学。
优点
传统方法学:把软件生命周期划分成若干个阶段,每个阶段的任务相对独立,而且比较简单,便于不同人员分工协作,降低了整个软件开发过程的困难程度;在每个阶段都采用科学的管理技术和良好的技术方法,每个阶段都从技术和管理两个方面进行严格审查,保证软件的质量;提高了软件的可维护性,提高开发成功率。
面向对象方法学:符合人们通常的思维方式,提高了软件的可理解性;对象是相对独立的实体,重用性好;可维护性好。
三种要素:方法、工具、过程。
4.软件生命周期:
软件定义(系统分析):问题定义、可行性研究、需求分析;
软件开发:总体设计+详细设计(——系统设计)、编码和单元测试、+测试(——系统实现);
运行维护:软件维护。
5.软件过程:
生命周期模型:瀑布模型 快速原型模型 增量模型 螺旋模型 喷泉模型 RUP模型
优点
瀑布模型:可强迫开发人员采用规范的方法,严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证;它基本上是一种文档驱动的模型。
快速原型模型:减少了软件需求不明确给开发工作带来的风险。
增量模型:很有用;减少由于软件需求不明确而给开发工作带来的风险;缩短产品提交时间(快)。
螺旋模型:对可选方案和约束条件的强调有利于已有软件的重用和把软件质量看作软件开发的一个重要目标;开发者和客户都可以更好地理解和应对风险。
缺点
瀑布模型:不适应需求经常发生变更的环境;每一步的工作都必须以前一阶段的输出为输入(顺序性),可能导致“阻塞”;可能最终开发出的软件产品不能真正满足用户的需要(R:几乎完全依赖于书面的规格说明);用户只能通过文档来了解产品是什么样的。
增量模型:软件体系结构必须是开放的;本身是自相矛盾的;具有无法集成的风险。
螺旋模型:开发人员需要相当丰富的风险评估经验和专门知识。
适合场所
瀑布模型:用户需求明确、完整、无重大变化的软件项目开发。
快速原型模型:需求不完整的软件开发项目。
增量模型:适用可多批看到和开发时间快的软件产品开发项目。
螺旋模型:高风险的大型软件。
喷泉模型和RUP模型:需求不稳定、不全面的软件项目开发。
特点:
瀑布模型:具有顺序性。
快速原型模型:线性顺序进行。
增量模型:分批地逐步向用户提交产品,减少全新软件给客户带来的冲击。
喷泉模型:迭代、无缝对接
RUP模型:迭代、渐增
第二章、可行性研究
分析方面:技术可行性、经济可行性、操作可行性
数据流图(DFD)
第三章、需求分析
8个需求:……
获取需求的方法(综合使用):访谈、面向数据流自顶向下求精、简易的应用规格说明技术、快速建立软件模型。
3.6.状态转换图(会画)
第五章、总体设计
5.2.设计原理:模块化(为什么模块化……)、耦合、内聚、……
层次图(一般为三层):……
第六章、详细设计
6.1.结构程序设计(顺序、选择、循环、单入单出……)
6.3.过程实际的工具(描述与算法之间的转换)
6.5.程序复杂程度的定量度量(计算程序复杂程度)
第九章、面向对象方法学引论
三种模型:对象模型、动态模型、功能模型
第十章、面向对象分析
8分大题目。。。
问题:
1、什么是软件工程、软件过程?软件过程与软件工程方法学有何关系?
答: 软件工程是指导计算机软件开发和维护的一门工程学科。
软件过程是为获得高质量软件所需完成的一系列任务的框架,规定了完成各项任务的工作步骤。
关系:软件过程是软件工程方法学的三个重要组成部分之一。
2、什么是软件生命周期模型?有哪些主要模型?各种模型的适用范围及特点?传统方法学和面向对象方法学分别采用哪些模型?
答:软件生命周期模型是描述软件过程的模型。
……
3、简要介绍软件生命周期每个阶段的基本任务。
答:问题定义:明确要解决的问题是什么。
可行性研究:明确对所确定的问题是否有行得通的解决办法。
需求分析:确定目标系统所必须具备的功能。
总体设计:设计几种方案来实现目标系统。
详细设计:设计出程序的详细规格说明来说明怎样实现系统。
编码:写程序模块。
单元测试:对每个模块进行测试。
综合测试:通过各种类型的测试使软件达到预定的要求。
4、简要介绍软件工程的7条基本原理。
答:……
5、需求分析的基本任务是什么?通常对软件系统有哪些需求?
答:需求分析的基本任务是确定对系统的综合要求;分析系统的数据要求;导出系统的逻辑模型;修正系统开发计划;撰写需求规格说明书。
需求:功能需求、性能需求、可靠性和可用性需求、出错处理需求、接口需求、约束、逆向需求、将来可能提出的要求。
6、模块化有什么好处?
答:模块化的好处:开发成本降低、结构清晰、便于共享。
7、定性衡量模块独立性的两个标准是什么?它们表示什么含义?
答:标准:耦合、内聚。
耦合:对一个软件结构内不同模块之间互联程序的度量。
内聚:模块内各个元素彼此结合的紧密程度。
8.传统的方法学是如何降低软件危机的?
答:传统方法学在软件生命周期的每个阶段都采用科学的管理技术合肥那个发,且在每个阶段结束前都从技术和管理两个角度进行严格的审查,合格之后才开始下一阶段的工作,这样保证了软件的质量,提高了软件的可维护性,降低了软件危机。
数据流图(DFD)
步骤:
1.画子系统的输入输出
把整个系统视为一个大的加工,然后根据数据系统从哪些外部实体接收数据流,以及系统发送数据流到哪些外部实体,可画出输入输出图。——顶层图
2.画子系统内部
把顶层图的加工分解成若干加工,并用数据流将这些加工连接起来,使得顶层图的输入数据经过若干加工处理后,变成顶层图的输出数据流。 —— 0层图
从一个加工画出一张数据流图的过程就是对加工的分解。
确定加工:在数据流的组成或值发生变化的地方应该画出一个加工,这个加工的功能就是实现这一变化,也可以根据系统的功能决定加工。
确定数据流:用户把若干数据当作一个单位来处理(这些数据一起到达,一起处理)时,可以把这些数据看成一个数据流。
数据存储:对于一些以后某个时间要使用的数据,可以组织成为一个数据存储来表示。
3、画加工的内部
把每个加工看作一个小系统,把加工的输入输出数据流看成小系统的输入输出流。于是可以像画0层图一样画出每个小系统的加工DFD图。
4、画子加工的分解图
对第三步分解出来的DFD图中的每个加工,重复第三步的分解过程,直到图中尚未分解的加工都是足够简单的。——分层数据流图
5、对数据流图和加工编号
对于一个软件系统,其数据流图可能有许多层,每层又有许多张图。为了区分不同的加工和不同的DFD子图,应对每张图进行编号,以便管理。
顶层图只有一张,图中的加工也只有一个,故不必为其编号。
0层图只有一张,图中的加工号分别是0.1、0.2、……,或1、2。
子图就是父图中被分解的加工号。
子图的加工号是由图号、圆点和序号组成。
*应适当的为数据流、加工、数据存储以及外部实体命名(名字反映的是该成分的实际含义)。
*画数据流图,不是画控制流。
*一个加工的输出数据流,不应与输入数据流同名,即使他们的组成完全相同。
*允许一个加工有多条数据流流向另一个加工,也允许一个加工有两条相同的输出数据流流向不同的加工。
*保持父图和子图的平衡。(父图中某加工的输入输出流必须与它的子图的输入输出流在数量上和名字上相同)(若父图中的一个输入/输出数据流对应于子图中的几个输入/输出数据流且子图中组成这些数据流的数据项的全体正好是父图中的这一数据流,那么它们仍然平衡)
*在自顶向下的分解过程中,若一个数据存储首次出现时,只与一个加工有关系,那么这个数据存储应作为这个加工的内部文件而不必画出。
*数据守恒。
*在整套数据流图中,每个数据存储必须既有读的数据流,又有写的数据流。但在某张子图中,可能只有读没有写,或者只有写没有读。
一、软件
软件概念:计算机系统中与硬件相互依存的另一部分,它是包括程序、数据及其相关文档的完整结合。(Software=Program+Data+Document)
软件的特征:非常复杂(逻辑复杂度高),成本高,风险大(如何降低?),维护困难(改正性维护:修改故障;完善性维护:增加功能;适应性维护:移植)
二、软件危机
概念:计算机软件的开发和维护过程中所遇到的一系列严重问题。
表现:
1.成本
2.进度
3.质量
4.用户对“已完成的”软件系统不满意的现象经常发生
5.维护
6.文档
7.需求
产生的原因:软件本身的特点+软件开发与维护的方法不正确
消除软件危机的方法:要有技术措施(传统方法学+OO方法学);要有必要的组织管理措施
三、软件工程
概念:指导计算机软件开发和维护的一门工程学科
本质特性P6(7条):
软件工程关注于大型程序的构造;
软件工程的中心课题是控制复杂性(问题分解——功能分解、对象);
软件经常变化;
开发软件的效率非常重要;
和谐的合作是开发软件的关键——运用相关的标准和规程;
软件必须有效地支持它的用户;
在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品。
软件工程的基本原理(7条)——确保软件产品的质量和开发效率的原理的最小集合
1.用分阶段的生命周期计划严格管理(“分阶段”的目的:减少项目延期;质量评审)
2.坚持进行阶段评审 (R:大部分错误是在编码之前造成的;错误发现与改正得越晚,所需付出的代价也越高)
3.实行严格的产品控制
4.采用现代程序设计技术
5.结果应能清楚地审查:应该根据软件开发项目的总目标及完成期限,规定开发组织的责任和产品标准(在于:规范+文档清楚的记录、责任)
6.开发小组的人员应该少而精:提高软件开发质量和降低通信开销
7.承认不断改进软件工程实践的必要性:积极主动地采纳新的软件技术、不断总结经验来评价新的软件技术的效果。
软件工程方法学(范型):在软件生命周期全过程中使用的一整套技术方法的集合。
软件工程方法学的要素:
1.方法(完成软件开发的各项任务的技术方法);
2.工具(为运用方法而提供的自动的或半自动的软件工程支撑环境) ;
3.过程(为了获得高质量的软件所需要完成的一系列任务的框架,规定完成了各项任务的工作步骤)
工具->方法->过程->质量关注点(支持软件工程的根基就在于对质量的关注)
传统方法学/生命周期方法学/结构化范型:采用结构化技术来完成软件开发的各项任务并使用适当的软件工具或软件工程环境来支持结构化技术的运用。
具体操作:把软件生命周期的全过程依次划分为若干个阶段,然后顺序地完成每个阶段的任务——线性。
阶段审查:从技术和管理两个方面对这个阶段的开发成果进行检查,通过之后这个阶段才算结束;若没通过检查,也必须进行必要的返工,而且返工后还要再经过审查。
(审查的主要标准:每个阶段都应该交出和所开发的软件完全一致的高质量的文档资料,从而保证在软件开发工程结束时有一个验证准确的软件配置交付使用。)
优点:每个阶段的任务相对独立且较简单,降低了整个软件开发工程的困难程度;科学的管理技术、良好的技术方法和严格的审查保证了软件的质量,提高了软件的可维护性。
面像对象方法学(OO方法学):是一个主动地多次反复迭代的演化过程,而其在概念和表示方法上的一致性,保证了在各项开发活动之间的平滑(无缝)过渡。(无缝——对象一直存在且不变)
出发点和基本原则:尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世界、解决问题的方法与过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。
优点:降低了软件产品的复杂性,提高了软件的可理解性;简化了软件的开发和维护工作;易在以后的软件产品中重复使用(促进了软件重用)。
四、软件生命周期
组成:软件定义——降低成本,提高软件质量的关键(123)、软件开发(4567)、运行维护(8)
软件生命周期每个阶段的基本任务:
1.问题定义——要解决的问题是什么
2.可行性研究——对于上一个阶段所确定的问题有行得通的解决办法么
3.需求分析——确定目标系统为解决这个问题必须具备的功能(用正式文档准确地记录对目标系统的需求,这份文档一般称为规格说明书)
4.总体设计——概括地说,应该怎么实现目标系统(设计出实现目标的几种可能的方案;确定程序由哪些模块组成以及模块间的关系)
5.详细设计/模块设计——应该怎样具体地实现这个系统(设计出程序的详细规格说明——包含所需的算法和数据结构)
6.编码和单元测试
7.综合测试——通过各种类型的测试及相应的调试使软件达到预定的要求
8.软件维护
五、软件过程
概念:为了获得高质量软件所需要完成的一系列任务的框架,规定了完成各项任务的工作步骤。
基本活动:软件规格说明、软件开发、软件确认、软件演进
1、瀑布模型——规定了各项软件工程的活动(次序固定)
特点:阶段间具有顺序性和依赖性;推迟实现——清楚地区分逻辑设计与物理设计,尽可能推迟程序的物理实现;质量保证——文档、文档评审
缺点:适合的是用户需求明确、完整、无重大变化的软件项目开发;会导致工作中发生“阻塞”状态;几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要;软件产品交付给用户之前,用户仅能通过文档来了解产品是什么样的。
优点:可强迫开发人员采用规范的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
成功点:很大程度上是由于它基本上是一种文档驱动的模型。
2、快速原型模型——解决瀑布模型问题3、4
第一步:快速建立一个能反应用户主要需求的原型系统,让用户在计算机上适用它,通过实践来了解目标系统的概貌;第二步:用户试用原型系统之后会提出许多修改意见,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用……一旦用户认为这个原型系统确实能做他们所需要的工作,开发人员便可据此书写规格说明文档。
主要优点:软件产品的开发基本上是线性顺序进行的。
3、增量模型(渐增模型)——解决瀑布模型问题2
操作:把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能。(先基本功能,后附加功能)
分解时必须遵守的约束条件:当把新构件集成到现有软件中时,所形成的产品必须是可测试的。
优点:可分批地逐步向用户提交产品;能在较短时间内向用户提交可完成部分工作的产品;逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
困难:把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品;软件体系结构必须是开放的(必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便);增量模型本身是自相矛盾的;会有构件无法集成饭一起的风险
注:必须在开始实现各个构件之前就全部完成需求分析、规格说明和概要设计的工作。
4、螺旋模型——降低风险
任务:确定该阶段的目标,选择方案,设定约束条件;评估方案,识别并排除风险;利华下一阶段(相当于纯粹的瀑布模型);开发、验证下一级产品。
优点:有利于已有软件的重用;有助于把软件质量作为软件开发的一个重要目标;减少了过多测试和测试不足所带来的风险。
适用:内部开发的大规模软件项目。
5、喷泉模型:迭代+无缝连接
6、RUP模型:迭代+渐增
第二章、可行性研究
可行性研究的目的:用最小的代价在尽可能短的时间内确定问题能否解决。
从以下方面做可行性分析:技术可行性;经济可行性;操作可行性;法律;社会效益等。
可行性研究过程:复查系统规模和目标;研究目前正在使用的系统;导出新系统的高层逻辑模型(非实现模型,包括DFD、DD);进一步定义问题;导出和评价供选择的解法;推荐行动方针;草拟开发计划;书写文档提交审查。
系统流程图:概括地描绘物理系统的传统工具。
数据流图(DFD):一种图形化技术,它描绘信息流和数据从输入移动到输出的过程中所经受的变换(在数据流图中没有任何具体的物理部件,仅是描绘数据在软件中流动被处理的逻辑过程)是系统逻辑功能的图形表示。
画数据流图的基本目的:利用它作为交流信息的工具;作为分析和设计的工具。
展开阅读全文
淘文阁 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。