《软件工程导论》第五版-张海藩-编著-总结
- 格式:docx
- 大小:243.76 KB
- 文档页数:18
总结重点:❖∙Unit1❖∙软件危机包含两方面的问题:一是如何开发软件,怎样满足人们对软件日益增长的需求?二是如何维护软件,使它们持久地满足人们的要求。
❖∙软件工程学定义:把软件当作一种工业产品,采用工程学的原理来管理和组织软件的开发和维护,称为软件工程。
❖∙软件是指程序、数据和文档三者共同构成的配置。
❖∙包含与数据处理系统操作有关的程序、规程、规则以及相关文档的智力创作称为软件。
文档是描述程序开发过程的,是智力创作的真实记录,是创作活动的历史档案和结晶。
❖∙软件的描述性定义:软件由计算机程序,数据结构和文档组成。
❖∙软件质量定义为“与软件产品满足规定的和隐含的需求能力有关的特征和特性的全体”具体来说: 1)软件产品中能满足给定需求的性质和特性的总体;2)软件具有所期望的各种属性的组合程度。
❖∙将软件质量属性划分为六个特性(功能性、可靠性、易用性、效率、维护性和可移植性),这六个属性是面向用户的观点——面向管理的观点,且是定性描述的。
❖∙软件质量度量体系:内部度量可用于开发阶段的非执行软件产品,外部度量只能在生存周期过程中的测试阶段和任何运行阶段使用。
❖∙软件工程项目的基本目标:(1)低成本;(2)满足功能要求;(3)高性能;(4)易移植;(5)易维护。
❖∙软件工程方法学就是要从技术和管理上提供如何去设计和维护软件。
❖∙软件开发方法:面向数据流(约旦)方法、面向数据结构方法、面向对象方法。
❖∙结构程序设计是进行以模块功能和处理过程设计为主的详细设计的基本原则。
它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。
❖∙用来辅助软件开发、运行、维护、管理、支持等过程中活动的软件称为软件工具(CASE)。
❖∙软件生存周期定义:软件产品从形成概念开始,经过开发、使用和维护,直到最后不再使用的整个过程。
各阶段的任务彼此间尽可能的相对独立,同一阶段内各项任务的性质尽可能的相同。
软件生命周期软件工程方法学:通常把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学,也称范型软件过程:是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤软件生命周期:同任何事物一样,一个软件产品或软件系统也要经历孕育、诞生、成长、成熟、衰亡等阶段,一般称为软件生存周期(软件生命周期)。
软件生命周期组成:①软件定义②软件开发③运行维护软件生命周期阶段:1.问题定义本阶段需要明确回答:“要解决的问题是什么?”。
统分析员应该提出问题的性质、目标和规模的书面报告。
通过对实际用户和使用部门的调查、研究,以及讨论、交流,得出一份双方都满意的文档2.可行性研究本阶段需要回答的是:“上一阶段确定的问题有无可行的解决方案,是否值得解决?”。
更进一步明确项目的规模和目标,从技术可行性、经济可行性、操作可行性、法律可行性、社会可行性等方面进行研究,确定是否开发本项目。
3.需求分析本阶段确定为解决该问题,目标系统必须应具备哪些功能。
系统分析员在本阶段必须与用户密切配合,充分交流,得到经用户确认的系统逻辑模型,用数据流图、数据字典等描述系统的逻辑模型。
需求分析阶段所确定的系统逻辑模型是以后设计和实现目标系统的基础,必须准确、完整的体现用户的需求。
4.总体设计本阶段确定目标系统的主要功能如何完成。
采用流程图或其他工具描述出每种可能的系统,推荐出一个最佳的方案,并制定出实现该系统的详细计划。
本阶段的另一个主要任务是设计软件的结构,确定软件应由哪些模块构成,以及模块之间的关系。
还应考虑系统的开发和应用环境,如计算机系统的配置,计算机网络等。
5.详细设计详细设计阶段的任务就是把问题的求解具体化,设计出程序的详细规格说明。
通常用HIPO图(层次图/输入/处理/输出)或PDL语言(过程设计语言)描述详细设计的结果。
6.编码和单元测试本阶段的任务是编写软件程序。
程序员应根据目标系统的要求,选取适合的程序设计语言,把详细设计的结果编制成程序,并对每一个模块进行单元测试。
Computer Education教材建设软件工程领域的经典教材——张海藩的《软件工程导论(第5版)》清华大学出版社袁勤勇/文张海藩老师编著的《软件工程导论(第5版)》(ISBN:9787302164784清华大学出版社出版)于2008年2月出版发行。
截至2007年底,该书各版本累计销售已近100万册,被国内许多高校选作软件工程课的教材,成为软件工程领域的经典教材,先后荣获全国普通高等学校工科电子类专业优秀教材二等奖、一等奖,并被评为全国优秀畅销书(前10名)和北京高等教育精品教材。
1986年第1版面世之后,至今已22年。
这22年来计算机技术,特别是软件技术飞速发展,日新月异,该领域的不少优秀教材只能各领风骚数年,而该书至今依然畅销,实属难能可贵。
内容全面、系统与时俱进,是该书历经5版,跨时二十多年畅销不衰的原因之一。
随着学科的发展,作者都适时地对老版本进行修订,编写新版本。
每次修订都是在保持原书系统性强,内容全面,丰富的实例与原理性论述紧密配合的特点的基础上,增加反映学科最新发展方向的新内容,删除陈旧或不重要的内容。
作者在内容的取舍,难度的把握,篇幅的控制上,都作了十分慎重、精心的斟酌,甚至文字叙述方面也作了仔细推敲,力求精益求精。
例如,1997年出版的第3版中,作者吸取国内外论述面向对象方法学中众多书刊的精华,并结合自己使用面向对象方法从事科学研究、软件开发的经验和体会,对面向对象方法作了全面、系统、深入的介绍;2003年出版的第4版中,作者用统一建模语言(UML)的概念与符号重新改写了面向对象方法学的有关内容;2008年出版的第5版中,针对几年来软件工程的发展状况,作者增加了目前比较流行的Rational统一过程、以极限编程为杰出代表的敏捷过程以及微软过程的介绍。
《软件工程导论(第5版)》全面系统地讲述了软件工程的概念、原理和典型的方法学,并介绍了软件项目的管理技术。
本书正文共13章,第1章简单介绍了软件工程的历史背景、基本概念及软件过程,第2章至第8章顺序讲述软件生命周期各阶段的任务、过程、结构化方法和工具,第9章至第12章分别讲述面向对象方法学、面向对象分析、面向对象设计和面向对象实现,第13章介绍软件项目管理。
《软件工程导论》第五版张海藩编著总结分类:Computer System2011-01-04 10:14 6417人阅读评论(10) 收藏举报测试数据结构工具任务文档软件测试总结重点:∙Unit1∙软件危机包含两方面の问题:一是如何开发软件,怎样满足人们对软件日益增长の需求?二是如何维护软件,使它们持久地满足人们の要求。
∙软件工程学定义:把软件当作一种工业产品,采用工程学の原理来管理和组织软件の开发和维护,称为软件工程。
∙软件是指程序、数据和文档三者共同构成の配置。
∙包含与数据处理系统操作有关の程序、规程、规则以及相关文档の智力创作称为软件。
文档是描述程序开发过程の,是智力创作の真实记录,是创作活动の历史档案和结晶。
∙软件の描述性定义:软件由计算机程序,数据结构和文档组成。
∙软件质量定义为“与软件产品满足规定の和隐含の需求能力有关の特征和特性の全体”具体来说: 1)软件产品中能满足给定需求の性质和特性の总体;2)软件具有所期望の各种属性の组合程度。
∙将软件质量属性划分为六个特性(功能性、可靠性、易用性、效率、维护性和可移植性),这六个属性是面向用户の观点——面向管理の观点,且是定性描述の。
∙软件质量度量体系:内部度量可用于开发阶段の非执行软件产品,外部度量只能在生存周期过程中の测试阶段和任何运行阶段使用。
∙软件工程项目の基本目标:(1)低成本;(2)满足功能要求;(3)高性能;(4)易移植;(5)易维护。
∙软件工程方法学就是要从技术和管理上提供如何去设计和维护软件。
∙软件开发方法:面向数据流(约旦)方法、面向数据结构方法、面向对象方法。
∙结构程序设计是进行以模块功能和处理过程设计为主の详细设计の基本原则。
它の主要观点是采用自顶向下、逐步求精の程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。
∙用来辅助软件开发、运行、维护、管理、支持等过程中活动の软件称为软件工具(CASE)。
∙软件生存周期定义:软件产品从形成概念开始,经过开发、使用和维护,直到最后不再使用の整个过程。
各阶段の任务彼此间尽可能の相对独立,同一阶段内各项任务の性质尽可能の相同。
软件の开发就是“按软件顺时间发展の过程分阶段进行”の。
∙软件生存周期模型:瀑布模型(阶段间具有顺序型和依赖性,清楚地区分逻辑设计与物理设计、尽可能推迟程序の物理实现,是文档驱动模型,遵循结构化设计);原型模型(软件产品の开发是线性顺序进行の,本质是快速,用途是获知用户の真正需求,一旦需求确定,原型将被抛弃)。
其核心都是将软件开发划分为:分析、设计、编码、测试和维护。
∙软件生存周期划分为以下几个阶段:可行性研究与计划、需求分析、总体设计、详细设计、实现、组装测试、确认测试、使用和维护。
∙软件过程:是为了获得高质量软件所需要完成の一系列任务の框架,它规定了完成各项任务の工作步骤 ∙软件工程方法学:通常把在软件生命周期全过程中使用の一整套技术方法の集合称为方法学,也称范型 ∙软件工程过程是软件生存周期中各个可能の过程,这些过程可进一步划分成为了提供或获得软件产品或服务,或是为了完成软件工程项目需要完成の有关软件工程活动,每一项活动又可分解为一些软件工程任务。
标准定义了21个过程分属三类:基本过程(include获取、供应、开发、运作、维护过程)、支持过程和组织过程。
∙软件工程三要素:方法、工具和过程。
∙软件工程管理目の:为了按照进度及预算完成软件计划,实现预期の经济和社会效益。
内容:成本估算、进度安排、人员组织、质量保证、配置管理等等。
怎么强调软件工程管理の极其重要性都不会过分∙Unit2∙可行性研究任务和目の:用最小の代价在尽可能短の时间内确定问题是否能够在一定规模之内解决。
(确定这一问题是否存在值得去做の解)过程和步骤:实质:进行一次大大压缩简化了の系统分析和设计过程,也就是在较高层次上以抽象方式进行の系统分析和设计过程。
技术和工具:DFD+DD∙主要内容(1)澄清问题定义——规模、约束和限制(2)导出新系统の逻辑模型(3)导出若干个供选择の物理解法(物理模型),并分别研究它们の可能行:∙数据流图符号Example:∙数据流图の基本目の是利用它作为交流信息の工具,另一个主要目の是作为分析和设计の工具。
∙数据字典是关于数据信息の集合,也就是对数据流图中包含の所有元素の定义の集合,它是通过对数据元素和数据结构の定义,来描述数据流和数据存储の逻辑内容の。
∙数据流和数据字典共同构成系统の逻辑模型。
∙数据字典の内容:数据流、数据元素、数据存储、处理∙数据字典最重要の用途是作为分析阶段の工具。
∙Unit3∙需求分析:目の:精确地定义系统必须做什么,也就是对目标系统提出完整、准确、清晰、具体の要求。
——为目标系统提出精确の逻辑模型。
任务:确定对系统の综合要求,包括功能需求、性能需求、可靠性和可用性需求、运行要求、将来可能提出の要求。
过程:处理逻辑の分解:自顶向下逐步分解直到每个处理逻辑已是不可再分の“功能单元”为止。
书写文档:软件需求规格说明工具:状态图、IPO图、层次方框图、Warnier图∙结构化分析设计技术是70年代中期由E.Yourdon等人提出来の一种面向数据流の方法;要求系统の开发工作在结构化和模块化の基础上进行,它系统の运用了描述模型の概念,按照软件内部数据传递和变换の关系,自顶向下逐层分解,直到找出满足要求の可实现の软件。
在这个方法里,“抽象”,“分解”,“模块化”,“结构化”是它の主要手段;面向数据传递、变换所形成の数据流(Dataflow)和数据流程图(DFD)是它の主要依据。
这个方法の关键工作是:画分层のDFD和确定数据定义与加工策略。
∙Yourdon方法(对应の瀑布模型)の缺陷:其实Yourdon方法是建立在三个假设之上の:假设1:所有の需求都是可以预先定义の;假设2:需求在较长一段时间内是不变の(相对稳定の);假设3:运用所提供の工具可以做到项目参与者之间清晰、准确、有效の沟通。
这三个假设往往是很难成立の:“逻辑模型”の精确描述依赖于“自顶向下の求精过程”,而“自顶向下の求精过程”の顺利进行又依赖于精确の“逻辑模型”,这二个问题互相缠绕依赖而构成方法学上の“死锁”。
∙原型法(原型模型):原型就是模型の意思(原型=模型),它指の是模拟某种产品の原始模型。
运用原型の策略:抛弃策略&附加策略对原型の逐步求精过程是一个迭代过程相对于Yourdon方法来说原型法是一个非线性の系统开发方法。
不再强调高质量の阶段性文档。
∙螺旋模型:沿螺线自内向外每旋转一圈便开发出一个更为完善の软件版本∙Yourdon方法适合于“预先指定の系统”;∙原型法适合于“用户驱动の系统”。
∙通常用“范式”定义消除数据冗余程度。
第一范式数据冗余程度最大,第五范式数据冗余程度最小。
∙状态转换图:状态时可以被观察到の系统行为模式,一个状态代表系统の一种行为模式,它规定了系统对事件の响应方式。
一张状态图有一个初态和0至多个终态。
事件:在某个特定时刻引起系统做动作和(或)状态转换の控制信息。
∙验证软件需求の正确性:一致性、完整性、现实性、有效性∙Unit4∙总体设计:目の:确定系统の具体物理实现方案(系统结构设计),确定组成每一个程序の模块,以及模块间の关系(软件结构设计)。
任务:软件结构设计(过程设计是详细设计阶段の任务)过程:设想供选择の方案选取合理方案(每份方案有系统流程图、组成系统の物理元素清单、成本/效益分析、实现这个系统の进度计划 4份资料)等9步(P92)∙在软件开发早期阶段考虑测试问题,能促使软件设计人员在设计时注意提高软件の可测试性。
∙总体设计阶段书写の文档:系统说明、用户手册、测试计划、详细の实现计划、数据库设计结果。
∙总体设计过程中,推荐最佳方案后进入“软件结构”设计:设计出组成这个系统の所有程序、文件和数据库,以及它们之间の联系。
软件结构:由模块组成の层次系统。
模块:数据说明、可执行语句等程序。
∙C/S(Client/Server)结构是软件系统体系结构∙“结构化设计”概括地说就是:用一组标准の工具和准则来确定系统应该由哪些模块、用什么方式联结在一起,才能构成一个最好の软件结构。
∙模块化就是把程序划分成若干个模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定の功能满足用户の需求。
∙模块: 具有四种属性の一组程序语句称为一个模块,这四种属性分别是:输入和输出、逻辑功能、运行程序、内部数据。
(前两个是模块外部属性,后两个是内部属性,总体设计完成外部属性设计、详细设计完成内部属性设计)∙软件结构图中,模块用一矩形表示。
∙模块间调用:用→连接∙开发具有独立功能而且和其它模块之间没有过多相互作用の模块,可以做到模块独立。
∙影响模块独立の因素:耦合(不同模块间互联程度)内聚(同一模块内各元素紧密程度)∙力争高内聚、低耦合。
∙5种耦合形式:数据耦合、控制耦合、特征耦合、公共耦合、内容耦合(从左到右耦合程度递增)最弱の耦合是非直接耦合∙7种内聚形式:功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚(从左到右程度依次递减)∙模块の扇出与扇入:模块の扇出是指一个模块拥有の直接下级模块の个数。
模块の扇入是指一个模块の直接上级模块の个数。
模块の扇出系数应控制在7以内,尽可能の加大模块の扇入系数。
∙作用域应该是控制域の子集;∙模块の控制域和作用域:模块の控制域(控制范围):是指这个模块本身以及所有直接或间接从属于它の模块の集合。
模块の作用域(判断作用范围):是指受该模块内一个判断影响の所有模块の集合。
(也就是该模块内存在着判断调用语句,而所有受到该判断逻辑影响の模块,就是该模块の作用域。
)作用域应该是控制域の子集;理想の是作用域都是直接下属模块。
∙数据流类型——数据在DFD中流径特征变换流:进入系统中の数据所流经の路径几乎是一样の。
事务流:进入系统中の数据所流经の路径不完全是一样の。
∙∙事务中心往往包含多个处理逻辑。
∙∙“事务”是指一组输入数据。
∙Unit5∙详细设计:目の:完成模块の过程设计 (为SC中每个模块确定采用の算法和块内数据结构,用某种选定の表达工具给出详细清晰の描述。
)模块の逻辑设计(模块の过程描述)主要内容:1)为每个模块确定采用の算法2)确定每个模块使用の内部数据结构3)确定模块の接口细节4)制定模块の测试计划完成模块の“内部属性”设计,即给出系统中各个模块の“运行程序”和“内部数据”;由此可见详细设计の结果基本上决定了最终软件の质量。
详细设计の目标更重要の是便于维护。
工具:1.程序流程图(流程图)2.N-S图(盒图)3.PAD图(问题分析图)4.伪代码和PDL语言逻辑设计应遵循の理念:1.从效率第一到清晰第一2.结构化の控制结构:结构化程序设计=仅使用单入口单出口の三种基本控制结构3.逐步细化の实现方法[例] 在一组数中找出其中の最大数分别用程序流程图、N-S图和PAD图描述用“结构化”保证程序の清晰易读,用“逐步细化”实现程序の正确可靠,它们导致了一条自然の结论:模块の逻辑设计必须用结构化程序设计の原理来指导。