软工第五版知识点总结
(完整版)《软件工程导论》第五版张海藩编著总结
总结重点:❖∙Unit1❖∙软件危机包含两方面的问题:一是如何开发软件,怎样满足人们对软件日益增长的需求?二是如何维护软件,使它们持久地满足人们的要求。
❖∙软件工程学定义:把软件当作一种工业产品,采用工程学的原理来管理和组织软件的开发和维护,称为软件工程。
❖∙软件是指程序、数据和文档三者共同构成的配置。
❖∙包含与数据处理系统操作有关的程序、规程、规则以及相关文档的智力创作称为软件。
文档是描述程序开发过程的,是智力创作的真实记录,是创作活动的历史档案和结晶。
❖∙软件的描述性定义:软件由计算机程序,数据结构和文档组成。
❖∙软件质量定义为“与软件产品满足规定的和隐含的需求能力有关的特征和特性的全体”具体来说: 1)软件产品中能满足给定需求的性质和特性的总体;2)软件具有所期望的各种属性的组合程度。
❖∙将软件质量属性划分为六个特性(功能性、可靠性、易用性、效率、维护性和可移植性),这六个属性是面向用户的观点——面向管理的观点,且是定性描述的。
❖∙软件质量度量体系:内部度量可用于开发阶段的非执行软件产品,外部度量只能在生存周期过程中的测试阶段和任何运行阶段使用。
❖∙软件工程项目的基本目标:(1)低成本;(2)满足功能要求;(3)高性能;(4)易移植;(5)易维护。
❖∙软件工程方法学就是要从技术和管理上提供如何去设计和维护软件。
❖∙软件开发方法:面向数据流(约旦)方法、面向数据结构方法、面向对象方法。
❖∙结构程序设计是进行以模块功能和处理过程设计为主的详细设计的基本原则。
它的主要观点是采用自顶向下、逐步求精的程序设计方法;使用三种基本控制结构构造程序,任何程序都可由顺序、选择、循环三种基本控制结构构造。
❖∙用来辅助软件开发、运行、维护、管理、支持等过程中活动的软件称为软件工具(CASE)。
❖∙软件生存周期定义:软件产品从形成概念开始,经过开发、使用和维护,直到最后不再使用的整个过程。
各阶段的任务彼此间尽可能的相对独立,同一阶段内各项任务的性质尽可能的相同。
软件工程导论第5章 总体的设计
⑵内聚:衡量一个模块内部各个元素彼此结合的紧密 程度。
5.2 续
耦合
软件结构中各个模块之间相互关联程度的度量。 常见的耦合: • ⑴非直接耦合 • ⑵数据耦合 • ⑶控制耦合 • ⑷特征耦合 • ⑸公共环境耦合 • ⑹内容耦合 设计原则:尽量使用数据耦合,少用控制耦合, 限制公共耦合的范围,避免使用内容耦合。
划分模块时尽量做到高内聚,低耦合,保持模块相对 独立性,并以此原则优化初始的软件结构。
⑴如果若干模块之间耦合强度过高,每个模块内功能 不复杂,可将它们合并,以减少信息的传递和公共区 的引用。
⑵若有多个相关模块,应对它们的功能进行分析,消 去重复功能。
设计准则
5.3 续
⑵模块规模应该适中
过大的模块往往是由于分解不充分。 过小的模块开销大于有效操作。
设计方法:定义一些不同的“映射”,把数据流 图变换成软件结构。
结构化设计方法——面向数据流的设计方法。
变换流
5.5 续
信息沿输入通路进入系统,同时由外部形式变换 成内部形式,进入系统的信息通过变换中心,经 加工处理以后再沿输出通路变换成外部形式离开 软件系统。当数据流图具有这些特征时,这种信 息流就叫作变换流。
B
C
D
(a) 基 本 形 式
(b) 顺 序
B
C
(c) 选 择
B
(d) 重 复
结构图
5.4 续
判定为真时调用A,为假时调用B
结构图
5.4 续
模块M循环调用模块A、B、C
概念
5.5 面向数据流的设计方法
定义:把信息流映射成软件结构,信息流的类型 决定了映射的方法。
目标:给出设计软件结构的一个系统化的途径。
软工第五版知识点总结
第一章:软件工程学概述1.1946年,世界上第一台电子计算机诞生,从宏观角度而言,计算机软件的发展主要经历了以下三个阶段:(1)第一阶段——程序设计阶段;(2)第二阶段——软件工程阶段;(3)第三阶段——软件过程阶段2 软件危机:2.1定义:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2.2主要是两个方面的问题:如何开发软件──怎样满足对软件日益增长的需求如何维护软件──数量不断膨胀的已有软件2.3主要表现:对软件开发成本和进度的估计常常很不准确。
用户对为他们开发的软件往往不满意。
软件产品的质量往往靠不住。
软件常常是不可维护的。
软件通常没有适当的文档资料。
软件成本在计算机系统总成本中所占的比例逐年上升。
软件开发生产率提高的速度太慢。
2.4产生软件危机的原因:1. 软件本身的特点不同于硬件: (1)软件是逻辑的,而不是物理的产品。
(2)软件是由开发或工程化而形成的,没有明显的制造过程。
(3)软件在运行和使用期间,不存在硬件那样的磨损和老化问题,但它存在退化问题,开发人员必须维护软件。
2. 软件人员的主观原因:开发与维护的方法不正确。
早期软件开发个体化。
至今,忽视软件需求分析的重要性,轻视维护;困境中的消极态度;2.5解决软件危机的途径:a正确认识软件,软件包括:程序是按事先设计的功能和性能要求编写的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文材料。
b推广使用在实践中总结出来的开发软件的成功技术和方法,研究、探索更好更有效的技术和方法c开发和使用更好的软件工具d有必要的组织管理措施3.软件工程;指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到得最好得技术方法结合起来.软件工程的根本在于提高软件的质量与生产率,最终实现软件的工业化生产。
4.软件工程方法学A:传统方法学:生命周期方法学或结构化范型采用结构化技术(结构化分析、设计和实现)把软件生命周期划分成若干阶段:每一阶段结束前都必须进行技术审查和管理复审,试图以每一阶段的正确性和完整性来保证最终产品的质量。
软件工程导论第五版复习重点(必考题)
最后部分为每年必考题)第一章1. .软件工程的定义:软件工程是应用计算机科学、数学及管理科学等原理开发软件的工程。
它借鉴传统工程的原则、方法,以提高质量,降低成本为目的.2. 软件危机的概念:软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重的问题。
3. 产生软件危机的原因:(1)开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2)软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3)尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
4. 面向对象方法学的四个要点:1.把对象作为融合了数据及在数据上的操作行为的统一的软件构件2.把所有对象都划分成类3.按照父类(或称为基类)与子类(或称为派生类)的关系,把若干个相关类组成一个层次结构的系统(也称为类等级)。
4.对象彼此间仅能通过发送消息互相联系。
5. 软件生命周期:软件定义(问题定义,可行性研究,需求分析)、软件开发(总体设计,详细设计,编码,单元测试,总体测试)、运行维护(持久地满足用户的需要)6. 瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型,概念.方法.优缺点.区别。
7. 微软过程把软件生命周期划分为成5 个阶段:规划阶段,设计阶段,开发阶段,稳定阶段,发布阶段。
第二章1. 可行性包括:技术可行性,经济可行性,操作可行性。
2. 系统流程图是概括地描绘物理系统的传统工具。
它的基本思想是用图形符号以黑盒子形势描绘组成系统的每个部件(程序,文档,数据库,人工过程等)。
系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是它却是物理数据流图而不是程序流程图。
软件工程导论第五版复习资料
软件工程导论第一章软件工程学概述1、软件完成特点功能的程序以及数据结构和文档2、软件的特点(1)软件开发更依赖于开发人员的业务素质、智力、人员的组织、合作和管理。
软件开发、设计几乎都是从头开始,成本和进度很难估计。
(2)软件存在潜伏错误,硬件错误一般能排除。
(3)软件开发成功后,只需对原版进行复制。
(4)软件在使用过程中维护复杂:1)纠错性维护—改正运行期间发现的潜伏错误;2)完善性维护—提高或完善软件的性能;3)适应性维护—修改软件,以适应软硬件环境的变化;4)预防性维护—改进软件未来的可维护性和可靠性。
(5)软件不会磨损和老化。
3、软件危机及软件危机的表现软件危机是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题和难题。
软件危机的表现1)对软件开发成本和进度的估计常常很不准确。
常常出现实际成本比估算成本高出一个数量级、实际进度比计划进度拖延几个月甚至几年的现象,从而降低了开发商的信誉,引起用户不满。
2)用户对已完成的软件不满意的现象时有发生。
3)软件产品的质量往往是靠不住的。
4)软件常常是不可维护的。
5)软件通常没有适当的文档资料。
文档资料不全或不合格,必将给软件开发和维护工作带来许多难以想象的困难和难以解决的问题。
6)软件成本在计算机系统总成本中所占比例逐年上升。
特别是软件维护成本迅速增加,已经占据软硬件总成本的40%~75%。
7)开发生产率提高的速度远跟不上软件需求。
4、软件工程及软件工程的特性软件工程是用工程、科学和数学的原则与方法开发、维护计算机软件的有关技术和管理方法。
软件工程的特性:1)软件工程关注于大型程序的构造2)软件工程的中心课题是控制复杂性3)软件经常变化4)开发软件的效率非常重要5)和谐地合作是开发软件的关键6)软件必须有效地支持它的用户7)在软件工程中是由具有一种文化背景的人替具有另一种文化背景的人创造产品5、软件工程的基本原理用分阶段的生存周期计划严格管理坚持进行阶段评审实行严格的产品控制采用现代程序设计技术结果应能清楚地审查开发小组的人员应少而精承认不断改进软件工程实践的必要性6、软件生存周期一个软件从得出开发要求开始直到该软件报废为止的时期。
软件工程导论第5版
1.1 软件危机
(2)应该推广使用在实践中总结出来的开发软件的成 功的技术和方法。研究探索更好更有效的技术和方法 ,尽快消除在计算机系统早期发展阶段形成的一些错 误概念和做法。 (3)应该开发和使用更好的软件工具。在适当的软 件工具辅助下,开发人员可以把这类工作做得既快又 好。如果把各个阶段使用的软件工具有机地集合成一 个整体,支持软件开发的全过程,则称为软件工程支 撑环境。
1.1 软件危机
一系列软件相关的问题在计算机系统的整个发展过程 中一直存在着,而且这些问题还会继续恶化: 硬件的发展超过软件,建造的软件难以发挥硬件的潜能; 现有软件与用户的要求矛盾; 软件失败导致“灾难性后果”; 需要高质量、高可靠性的软件; 设计的问题使得升级和维护十分困难;
1.1 软件危机
1.2 软件工程
2. 坚持进行阶段评审:错误有放大效应
当时已经认识到,软件的质量保证工作不能等 到编码阶段结束之后再进行。因为:第一,大部分错 误是在编码之前造成的,据统计,设计错误占软件错 误的63%,编码错误仅占37%;第二,错误发现与改正 得越晚,所需付出的代价也越高。因此,在每个阶段 都进行严格的评审,以便尽早发现在软件开发过程中 所犯的错误是一条必须遵循的重要原则。
1.2 软件工程
4. 采用现代程序设计技术
从提出软件工程的概念开始,人们一直把主要精力用于研究 各种新的程序设计技术,并进一步研究各种先进的软件开发与 维护技术。实践表明,采用先进的技术不仅可以提高软件开发 和维护的效率,而且可以提高软件产品的质量。
5. 结果可以清楚地审查
软件产品不同于一般的物理产品,它是看不见摸不着的逻 辑产品。软件开发人员(或开发小组)的工作进展情况可见性差 ,难以准确度量,从而使得软件产品的开发过程比一般产品的 开发过程更难于评价和管理。为了提高软件开发过程的可见性 ,应该根据软件开发项目的总目标及完成期限,规定开发组织 的责任和产品标准,从而使得所得到的结果能够清楚地审查。
软工复习要点
软工复习要点软件工程是现代计算机科学的重要分支,致力于开发高质量的软件系统。
在软件工程的学习过程中,掌握并熟悉相关的复习要点是非常重要的。
本文将总结软件工程的复习要点,帮助读者更好地准备考试,并取得好的成绩。
一、软件生命周期1. 需求分析阶段- 需求获取:通过面谈、问卷调查等方式获取用户需求。
- 需求分析:对收集到的需求进行分析、整理和规格说明。
- 需求验证:与用户确认需求是否准确并理解一致。
2. 设计阶段- 概要设计:定义系统的总体结构和模块划分,确定系统的主要功能。
- 详细设计:对每个模块进行详细设计,包括定义数据结构、算法等。
3. 编码阶段- 编写程序:将设计的模块转化为具体的编程代码。
- 单元测试:对每个模块进行测试,确保代码的正确性。
4. 测试阶段- 集成测试:将各个模块进行整合,进行系统级别的测试。
- 系统测试:对整个系统进行测试,检查系统是否满足预期功能和性能。
5. 运维阶段- 安装部署:将软件部署到实际应用环境中。
- 系统维护:对已部署的软件进行维护和更新。
二、软件开发过程模型1. 瀑布模型:按照线性顺序依次完成各阶段的开发流程。
2. 增量模型:将开发过程划分为多个增量,逐步迭代开发。
3. 原型模型:通过快速开发原型来验证需求和设计方案。
4. 敏捷模型:强调快速响应变化需求的开发方法。
三、软件需求工程1. 需求分类:功能需求和非功能需求的划分和描述。
2. 需求获取:通过场景分析、访谈、面谈等方式收集用户需求。
3. 需求分析:对需求进行整理、归类和建模,明确需求的范围和边界。
4. 需求规格说明:使用工具(如用例图、活动图)对需求进行形式化的描述和建模。
5. 需求验证:与用户进行需求确认和变更管理,保证需求的正确性和一致性。
四、软件设计1. 结构设计:确定软件的整体结构和模块之间的关系。
2. 数据设计:定义数据模型和数据库的结构。
3. 接口设计:定义模块间的接口,确保模块之间的良好交互。
软工重要知识点总结
软工重要知识点总结软件工程(Software Engineering)是一门研究如何应用科学和工程原则,以及管理方法,对软件的开发、运行和维护过程加以系统化的学科。
在软件工程领域,有一些重要的知识点需要掌握。
本文将对这些知识点进行总结。
1. 软件开发过程软件开发过程是指从需求分析到软件交付的整个过程。
常见的软件开发过程模型有瀑布模型、迭代模型和敏捷模型。
其中,瀑布模型适用于需求比较稳定的项目,迭代模型适用于需求变化较快的项目,而敏捷模型则更加注重快速交付和用户反馈。
2. 需求工程需求工程是软件工程的核心环节,它负责收集、分析、规范和管理用户需求。
需求工程师需要与用户充分沟通,确保准确理解用户需求,并将其转化为可执行的软件需求规格。
需求工程包括需求获取、需求分析、需求规格和需求验证等步骤。
3. 软件设计原则软件设计原则是指在软件设计阶段应该遵循的基本原则,以确保软件的可维护性、可扩展性和可重用性。
常见的软件设计原则包括单一责任原则、开闭原则、里氏替换原则、依赖倒置原则、接口隔离原则和迪米特法则等。
遵循这些原则可以提高软件系统的质量和可维护性。
4. 软件测试与调试软件测试是验证软件系统是否满足需求的过程。
常见的软件测试方法包括单元测试、集成测试、系统测试和验收测试等。
软件调试是解决软件中的错误(bug)的过程,常用的调试工具有断点调试和日志输出。
软件测试和调试是确保软件质量的重要手段。
5. 软件项目管理软件项目管理是指对软件开发项目进行组织、计划、协调和控制的过程。
项目管理包括项目计划、需求管理、进度管理、质量管理和风险管理等方面。
良好的软件项目管理可以提高项目成功的几率,降低风险。
6. 软件质量保证软件质量保证是指在软件开发过程中对软件质量进行监控和管理的活动。
常见的软件质量保证方法有代码评审、性能测试、安全测试和用户体验测试等。
软件质量保证旨在提高软件质量,确保软件系统的可靠性和稳定性。
7. 软件配置管理软件配置管理是对软件开发过程中的软件配置项进行管理和控制,以保证软件配置的正确性和一致性。
软工各章复习知识点
第4 章
1.学会使用有穷状态机描述一个系统。
2.应用形式化方法的准则。
第5 章
1.总体设计主要完成哪两项任务?每项任务主要 完成什么?
3.什么是软件生命周期?划分为哪些几个阶段?
解:(1)软件生命周期有软件定义、软件开发和运行维护三个时期组成,每个时期又进一步划分成若干个阶段。 (2)阶段:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、软件维护。 4.软件工程方法学的3个要素;目前使用最广泛的软件工程方法学是什么?有哪些特点? 解:(1)工具,方法和过程。(2)传统方法学和面向对象方法学(3)特点: 传统方法学也称为生命周期方法学或结构化范型。它采用结构化 技术(结构化分析、结构化设计、结构程序设计和结构化测试)来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支
3.单元测试的重点(5个方面)
4.什么是存根程序?什么是驱动程序?什么是回归 测试?什么是α测试?什么是β测试? 5.什么是白盒测试技术?在白盒法中典型的技术有 哪些?在实际中要会熟练应用。
6.什么是黑盒测试技术?在黑盒法中典型的技术有
哪些?在实际中要会熟练应用。
第8 章
1.什么是软件维护?它包括哪四项活动?
持结构化技术的运用。面向对象方法学: 当软件规模较大,或者对软件的需求是模糊的或随时间变化的时候,使用结构化范型开发软件往
往不成功;此外,使用传统方法学开发出的软件,维护起来通常都很困难。 5.典型的生命周期模型(或软件开发模型、过程模型)有哪些?说明其优缺点及适用范围。
软工知识点归纳总结
软工知识点归纳总结软件工程(Software Engineering),简称软工,是应用工程原理、方法和工具进行软件规模化开发和维护的学科。
软工的核心目标是提高软件质量、提高开发效率和降低开发成本。
本文将对软件工程的几个重要知识点进行归纳总结,包括软件开发过程、软件需求工程、软件设计与架构、软件测试与维护等。
一、软件开发过程软件开发过程是指按照一定规范和流程进行软件开发的过程。
常见的软件开发过程模型有瀑布模型、迭代模型、敏捷开发等。
瀑布模型是一个线性的开发过程,包括需求分析、系统设计、编码、测试和维护等阶段。
优点是结构清晰、过程可控,缺点是不利于需求变更。
迭代模型是将软件开发过程划分为若干个迭代阶段,每个阶段都包含需求分析、设计、编码、测试等活动。
优点是适应需求变化,缺点是开发周期相对较长。
敏捷开发是一种以人为核心、快速响应变化的开发方法。
采用迭代、增量的方式进行开发,注重团队协作和持续交付。
二、软件需求工程软件需求工程是指对软件需求进行识别、分析、规格化和验证的过程。
常用的需求工程方法有需求获取、需求分析、需求规格化和需求验证等。
需求获取是通过与用户交流、文档分析等方式获取软件需求信息。
需求分析是对获取的需求信息进行分析和整理,识别用户真正的需求。
需求规格化是将需求信息转化为形式化的形式,通常使用用例、需求规约等。
需求验证是通过评审、测试等手段验证需求的准确性和完整性。
三、软件设计与架构软件设计是指根据软件需求进行软件的整体设计和模块设计。
软件架构是指软件系统的基本结构、组成和关系。
常见的软件设计方法包括结构化设计、面向对象设计和敏捷设计等。
结构化设计是基于模块化和层次化的设计方法,将软件系统拆分为多个模块,并定义各个模块之间的接口和关系。
面向对象设计是基于对象和类的设计方法,强调封装、继承和多态性等概念。
敏捷设计是一种快速迭代、持续重构的设计方法,注重简单性、灵活性和可维护性。
四、软件测试与维护软件测试是指对软件系统进行验证和验证的过程,目的是发现和修复软件中的错误和缺陷。
软件工程导论第五版第十一章
第11章面向对象设计11.1面向对象设计的准则1. 模块化2. 抽象3. 信息隐藏4. 弱耦合5. 强内聚6. 可重用11.2启发规则1. 设计结果应该清晰易懂2. 一般\|特殊结构的深度应适当3. 设计简单的类4. 使用简单的协议5. 使用简单的服务6. 把设计变动减至最小图11.1理想的设计变动情况11.3软件重用11.3.1概述1. 重用2. 软件成分的重用级别3. 典型的可重用软件成分11.3.2类构件1.可重用软构件应具备的特点2. 类构件的重用方式11.3.3软件重用的效益1. 质量2. 生产率3. 成本11.4系统分解图11.2典型的面向对象设计模型1. 子系统之间的两种交互方式2. 组织系统的两种方案图11.3典型应用系统的组织结构3. 设计系统的拓扑结构11.5设计问题域子系统1. 调整需求2. 重用已有的类3. 把问题域类组合在一起4. 增添一般化类以建立协议图11.4窄菱形模式5. 调整继承层次图11.5阔菱形模式图11.6把多重继承简化为单一层次的单继承6. ATM系统实例图11.7ATM系统问题域子系统的结构11.6设计人机交互子系统1. 分类用户2. 描述用户3. 设计命令层次4. 设计人机交互类11.7设计任务管理子系统1. 分析并发性2. 设计任务管理子系统11.8设计数据管理子系统11.8.1选择数据存储管理模式1. 文件管理系统2. 关系数据库管理系统3. 面向对象数据库管理系统11.8.2设计数据管理子系统1. 设计数据格式2. 设计相应的服务11.8.3例子11.9设计类中的服务11.9.1确定类中应有的服务11.9.2设计实现服务的方法1. 设计实现服务的算法2. 选择数据结构3. 定义内部类和内部操作11.10设计关联1. 关联的遍历2. 实现单向关联图11.8用指针实现单向关联图11.9用指针实现双向关联3. 实现双向关联图11.10用对象实现关联4. 关联对象的实现11.11设计优化11.11.1确定优先级11.11.2提高效率的几项技术1. 增加冗余关联以提高访问效率图11.11公司、雇员及技能之间的关联链图11.12为雇员技能数据库建立索引2. 调整查询次序3. 保留派生属性11.11.3调整继承关系1. 抽象与具体2. 为提高继承程度而修改类定义图11.13设计类继承的例子3. 利用委托实现行为共享图11.14用表实现栈的两种方法11.12小结习题111. 面向对象设计应该遵循哪些准则?简述每条准则的内容,并说明遵循这条准则的必要性。
软件工程第五版课本重点及课后题
1.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
具有长期性和症状不明显特征。
2.软件危机表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
特点:长期性和症状不明显性。
3.为什么会产生软件危机?一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
4.什么是软件工程?软件工程是指导计算机软件软件开发和维护的一门工程学科,采用工程的概念,原理,技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效的维护它,这就是软件工程。
具体的定义:把系统的、规范的、可度量的途径应用于软件开发、运行和维护过程,也就是把工程应用于软件。
5.软件生命周期的8个阶段:(1)问题定义(确定问题);(2)可行性研究(可研报告);(3)需求分析(规格说明,逻辑模型);(4)总体设计(确定系统体系结构);(5)详细设计(数据结构);(6)编码和单元测试(程序清单,单元测试报告);(7)综合测试;(8)软件维护。
6.瀑布模型(文档驱动)特点:(1)阶段间具有顺序性和依赖性;(2)推迟实现的观点;(3)质量保证的观点。
3.快速原型模型(建立功能原件):快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。
1.可行性研究包括哪几方面的内容?(1)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;(2)经济可行性:经济效益是否超出开发成本;(3)操作可行性:系统操作在用户内部行得通吗。
2.可行性研究的过程:(1)复查系统的规模和目标;(2)研究目前正在使用的系统(经济角度、功能指标、环境约束)(3)导出新系统的高层逻辑模型(工具:数据流图、数据字典);(4)进一步定义问题(5)导出和评价供选择的解法(技术角度、操作可行性、经济可行性、实现进度表);(6) 推荐行动方针;(7)草拟开发计划(8)书写文档提交审查3.数据流图(DFD)是一种图形化技术,它描述信息流和数据从输入移动到输出的过程中所经受的变换。
软件工程导论第五版复习资料全
软件危机的表现
1)对软件开发成本和进度的估计常常很不准确。常常出现实际成本比估算成本高出一个
数量级、 实际进度比计划进度拖延几个月甚至几年的现象,
从而降低了开发商的信誉, 引起
用户不满。
2)用户对已完成的软件不满意的现象时有发生。
3)软件产品的质量往往是靠不住的。
4)软件常常是不可维护的。
5)软件通常没有适当的文档资料。文档资料不全或不合格,必将给软件开发和维护工作
读输入
计算最佳解
编辑结果
编辑输入
输出结果
解 格式化 的解
结果格式化
格式化 的解
显示结果
.专业 .整理 .
下载可编辑
M
M
A
B
A
B
C
a.选择调用
b.循环调用
7、面向数据流的设计方法 变换分析
变换分析是一系列设计步骤的总称, 确定的模式映射成软件结构。
经过这些步骤把具有变换流特点的数据流图按预先
1)重画数据流图;确定其具有变换流特征。
设: i 表示年利率,现在存入 P 元, n 年后的价值为 F 元,
则有:
F=P
(1 + i )n
如果 n 年后能收入 F 元,这些钱折算成现在的价值称为折现值,折现公式为:
P=F/
(1 + i )n
2)纯收入。 是指在整个生存周期系统的累计收入的折现值
PT 与总成本折现值 S T 之差,
以 T 表示,则有:
3)深度、宽度、扇出和扇入都应适当
4)模块的作用围应在控制围之
5)力争降低模块接口的复杂程度 6)设计单入口单出口的模块
7)模块功能应该可以预测
6、描绘软件结构的图形工具(层次图、 HIPO 图、结构图)
软件工程导论第五版复习重点(汇总)
第一章一、什么是软件?1.满足功能要求和性能的指令或计算机程序集合;2.处理信息的数据结构;3.描述程序功能以及程序如何操作和使用所要求的文档;二、软件的特点:1)软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。
2)软件是通过人们的智力活动,把知识与技术转换成信息的一种产品,是在研制、开发中被创造出来的3)在软件运行和使用的期间,没有硬件那样的机械磨损、老化问题4)软件的开发和运行经常受到计算机系统的限制,对计算机系统有着不同程度的依赖性5)软件的开发至今尚未完全摆脱手工的开发方式6)软件的开发费用越来越高,成本相当昂贵。
三、软件危机的概念:软件危机是指计算机软件的开发和维护过程中所遇到的一系列严重的问题。
这些问题表现在以下几个方面:(1)用户对开发出的软件很难满意。
(2)软件产品的质量往往靠不住。
(3)一般软件很难维护。
(4)软件生产效率很低。
(5)软件开发成本越来越大。
(6)软件成本与开发进度难以估计。
(7)软件技术的发展远远满足不了计算机应用的普及与深入的需要。
四、产生软件危机的原因:(1) 开发人员方面,对软件产品缺乏正确认识,没有真正理解软件产品是一个完整的配置组成。
造成开发中制定计划盲目、编程草率,不考虑维护工作的必要性。
(2) 软件本身方面,对于计算机系统来说,软件是逻辑部件,软件开发过程没有统一的、公认的方法论和规范指导,造成软件维护困难。
(3) 尤其是随着软件规模越来越大,复杂程度越来越高,原有软件开发方式效率不高、质量不能保证、成本过高、研制周期不易估计、维护困难等一系列问题更为突出,技术的发展已经远远不能适应社会需求。
五、软件危机的两个主要问题:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件。
六、软件产品的重用性差,同样的软件多次重复开发。
七、软件通常没有适当的文档资料。
八、软件危机的典型表现:(1) 对软件开发成本和进度的估计常常很不准确。
软件工程导论第五版复习重点
•5.2 设计原理
5.2.1 模块化
模块是程序对象有名字的集合。例如,过程、函数、子程 序、宏等,是构成软件系统结构的基本元素。
模块化就是将系统划分为若干个模块,每个模块完成一个 子功能。模块化的目的是将系统“分而治之”,模块化能够 降低问题的复杂性,使软件结构清晰,易阅读、易理解,易 于测试和调试,因而也有助于提高软件的可靠性。
•弱
•强
•语
•判
•条
•判 •定
•条 •件
•句
•定
•件
•条
•组
•覆
•覆
•覆
•件
•合
•盖
•盖
•盖
•覆 •盖
•覆 •盖
软件工程导论第五版复习重点
•白盒法常用的覆盖标准
•① 语句覆盖: 选择足够的测试用例,使得程序中每个语 句至少都能被执行一次。 •② 判定覆盖: 执行足够的测试用例,使得程序中每个判 定至少都获得一次“真”值和“假”值。 •③ 条件覆盖:执行足够的测试用例,使得判定中的每个 条件获得各种可能的结果。 •④ 判定/条件覆盖: 执行足够的测试用例,使得判定中 每个条件取到各种可能的值,并使每个判定取到各种可能 的结果。 •⑤ 条件组合覆盖: 执行足够的例子,使得每个判定中条 件的各种可能组合都至少出现一次。
软件工程导论第五版复习重点
第5章 总体设计
•1、在设计过程中,总体设计一般有哪两个主 要阶段组成?P81 •2、什么模块化?模块独立性包含哪些内容? 度量准则是什么?P85—P89 •3、启发规则有哪些?P90—P92 •4、描绘软件结构的图形工具P92-P94 •5、面向数据流的设计方法P95—P102
能。
•⑵逻辑 即描述模块内部怎么做。
软工划重点
简答题:
1.软件的定义及特征
2.软件工程的定义,其5种框架活动
3.软件过程流及其类型
4.软件过程,增量模型及其适用情景和特点; 原型模型及其适用情景和特点
5.统一过程模型
6.敏捷工程简单描述
7.需求模型建模,CRC的评审步骤
8.行为模型的建模步骤简述
9.从需求模型到设计模型的转化图
10.模块的功能独立及评估标准;重构时候的定义,检查要点
11 . 体系风格描述的4各要素及其分类
12.构件级设计的7个基本原则;内聚性及其级别;耦合性及其分为
13.界面设计黄金规则:控制权交给用户、减轻用户负担、保持界面一致性,简单描述
14.OO测试中集成测试的3种策略;压力测试及举例;
15.单元测试中桩模块、驱动模块作用
16.测试中症状与原因的关系
17.软件的基线
18.选择软件团队的7个因素;团队的组织泛型;如何避免团队毒性?
综合题目
1、用例图类图状态图、活动图、泳道图
2、白盒测试:给一段代码,计算换复杂度、独立路径是什么、从代码导出流图,从流图画出流程图
3、*黑盒测试:有效等价类和无效等价类(给出一段文字描述,用表列出),边界法,
4、项目度量:过程度量,项目度量、项目估算,注意公式E==xxxx,(代码行,功能点SP)填空小题来自ppt。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第一章:软件工程学概述1.1946年,世界上第一台电子计算机诞生,从宏观角度而言,计算机软件的发展主要经历了以下三个阶段:(1)第一阶段——程序设计阶段;(2)第二阶段——软件工程阶段;(3)第三阶段——软件过程阶段2 软件危机:2.1定义:是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
2.2主要是两个方面的问题:如何开发软件──怎样满足对软件日益增长的需求如何维护软件──数量不断膨胀的已有软件2.3主要表现:对软件开发成本和进度的估计常常很不准确。
用户对为他们开发的软件往往不满意。
软件产品的质量往往靠不住。
软件常常是不可维护的。
软件通常没有适当的文档资料。
软件成本在计算机系统总成本中所占的比例逐年上升。
软件开发生产率提高的速度太慢。
2.4产生软件危机的原因:1. 软件本身的特点不同于硬件: (1)软件是逻辑的,而不是物理的产品。
(2)软件是由开发或工程化而形成的,没有明显的制造过程。
(3)软件在运行和使用期间,不存在硬件那样的磨损和老化问题,但它存在退化问题,开发人员必须维护软件。
2. 软件人员的主观原因:开发与维护的方法不正确。
早期软件开发个体化。
至今,忽视软件需求分析的重要性,轻视维护;困境中的消极态度;2.5解决软件危机的途径:a正确认识软件,软件包括:程序是按事先设计的功能和性能要求编写的指令序列;数据是使程序能正常操纵信息的数据结构;文档是与程序开发、维护和使用有关的图文材料。
b推广使用在实践中总结出来的开发软件的成功技术和方法,研究、探索更好更有效的技术和方法c开发和使用更好的软件工具d有必要的组织管理措施3.软件工程;指导计算机软件开发和维护的工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到得最好得技术方法结合起来.软件工程的根本在于提高软件的质量与生产率,最终实现软件的工业化生产。
4.软件工程方法学A:传统方法学:生命周期方法学或结构化范型采用结构化技术(结构化分析、设计和实现)把软件生命周期划分成若干阶段:每一阶段结束前都必须进行技术审查和管理复审,试图以每一阶段的正确性和完整性来保证最终产品的质量。
面向行为或面向数据,把数据和操作人为分离,增加软件开发与维护的难度。
应用广泛B:面向对象方法学数据和数据的操作是被封闭在一个个称为“对象“的统一体中把所有对象都划分成类。
类是对具有相同数据和相同操作的一组相似对象的定义。
继承:下层派生类自动拥有上层基类中定义的数据和操作对象之间则是通过”消息”(message”)进行相互联系的,对象是数据处理的主体采用该方法可以大大提高软件的可重用性,降低软件的调试、维护难度,而且特别适合于需要多人合作的大型软件的开发。
C:二者的区别:(1)面向对象方法学比传统方法学更适合开发大型软件。
(2)传统方法学强调对系统需求认识的完整性,维护代价大。
面向对象是主动地多次反复迭代,不断深化的过程,继承性使得系统易于扩充,降低了维护的代价。
事实上,人类认识过程是一个渐进的过程。
5.软件生命周期:软件产品从形成概念开始,经过开发、使用和维护,直到最后退役的全过程。
根据软件状态、特征、开发活动的目的,可以分为不同阶段,各阶段划分尚未统一,但都包括:软件定义、软件开发、软件使用和维护三个时期。
各阶段的基本任务:一软件定义:(1)问题定义:要解决的问题是什么?(2)可行性研究:有可行的解决办法吗?(3)需求分析:为解决问题,目标系统必须做什么?(数据流图,数据字典,算法描述);二软件开发:(1)总体设计:概括地说,应如何解决该问题?(2)详细设计:应怎样具体实现这个系统?(3)编码和单元测试:编写代码,测试模块;(4)综合测试:通过各类型测试,使软件达到要求最基本的测试是集成测试和验收测试方法。
三软件维护:通过各种维护活动使系统持久地满足用户地需要四类维护:改正性维护:诊断和改正使用过程中发现的软件错误。
适应性维护:修改软件以适应环境变化。
完善性维护:根据用户要求,改进或扩充软件。
预防性维护:修改软件为将来的维护预先准备。
软件生存周期模型——瀑布模型:特点:上一阶段的变换结果是下一阶段的变换的输入,相邻两个阶段具有因果关系,紧密相联。
6.软件过程:为获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤.。
软件生命周期模型规定了把生命周期划分成哪些阶段及各个阶段的执行顺序,也称为过程模型。
7.五种模型:A;瀑布模型(线形模型):瀑布模型是将软件生存周期各活动规定为依线性顺序联接的若干阶段的模型。
特点:1段间具有顺序性和依赖性;2.推迟实现的观点3.质量保证的观点优点:文档驱动:强迫开发人员采用规范的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证.提供了软件开发的基本框架,有利于大型软件开发过程的人员的组织和管理有利于开发方法和工具的使用提高了软件的质量和效率缺点:初始阶段不可能指出全部需求(系统可能不满足客户的需求)几乎完全依赖于书面的规格说明,可能导致最终开发出的软件不能真正满足用户的需要.B快速原型模型:快速建立起来的可以在计算机上运行的程序,它所能完成的功能往往是最终产品能完成的功能的一个子集。
包括两大步骤:进行试验开发,得出产品“原型”;在原型基础上开发出较为满意的软件产品。
优点:不带反馈环,克服了瀑布模型的部分缺陷,减少了软件需求不明确给开发工作带来的风险。
(关注满足客户需求)缺点:可能导致系统设计差,效率低,难于维护。
C增量模型:增量模型也称为渐增模型,把软件产品作为一系列的增量构件来设计、编码、集成和测试。
构件:由多个相互作用的模块构成,并能够完成特定的功能优点:能在较短时间内向用户提交可完成部分工作的产品。
用户有较充裕的时间学习和适应新产品。
困难:集成新增量构件时必须不破坏已开发出的产品。
即要求软件具有开放的结构。
风险更大的增量模型:优点:不同构件可并行构建缺点:冒构件无法集成到一起的风险D:螺旋模型:在每一个阶段之前都增加了风险分析过程的快速原型模型。
(适用于内部开发的大规模软件项目。
要求开发人员具有风险分析和排除风险的经验及专门知识。
优点:(风险驱动)(1)对可选方案和约束条件的强调有利于已有软件的重用;(2)有助于把软件质量作为软件开发的一个重要目标;(3)减少了过多测试或测试不足所带来的风险;(4)在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。
缺点:风险分析人员需要有经验且经过充分训练。
E喷泉模型:相对螺旋模型,喷泉模型引入了“面向对象的分析设计方法”。
由于,整个过程看起来像喷泉从喷出到落下到再喷出的周而复始过程产生的光滑水柱,属自底向上的工作方式。
特点:件过程各阶段的无缝衔接性:各阶段均采用了“对象”这一统一范式具有螺旋模型的“迭代演化”特点对软件复用和软件生命周期内多项开发活动的并行与集成提供了支持。
第二章可行性研究目的:用最小的代价在尽可能短的时间内确定问题是否能够解决.任务:对以后的行动方针提出建议,制定工程实施计划。
实质是:在较高层次上以较抽象的方式进行系统分析和设计的过程首先需进一步分析和澄清问题定义导出系统的逻辑模型探索出若干种可供选择的主要解法(即系统实现方案)最后仔细研究每种解法的可行性。
(1)技术可行性使用现有的技术能实现这个系统吗?(2)经济可行性这个系统的经济效益能超过它的开发成本吗?(3)操作可行性系统的操作方式在这个用户组织内行得通吗?(4)社会可行性包括法律可行性和用户操作可行性。
法律可行性考虑要开发系统是否存在任何侵犯、妨碍和责任问题。
用户操作可行性考虑待开发软件的运行方式在用户组织内是否行得通,现有管理制度、人员素质、操作方式是否可行。
1)、复查系统规模和目标;(2)、研究目前正在使用的系统;(3)、导出新系统的高层逻辑模型(数据流图和数据字典);(4)、重新定义问题(前四个步骤实质构成一个循环,直到提出的逻辑模型完全符合系统目标。
)(5)、导出和评价供选择的解法;(6)、推荐行动方针;(7)草拟开发计划;(8)书写文档提交审查。
最后生成《可行性论证报告》a、系统概述(主要是对当前系统极其存在的问题的简单描述;对新系统的开发目的、目标、业务对象和范围;新系统和它各个子系统的功能与特性等。
)b、可行性分析(这是报告的主体。
包括新系统在经济上、技术上、运行上、法律上的可行性,以及对新系统的主客观条件的分析。
)c、拟订开发计划(包括工程进度,人员配备情况,资源配备情况,估计出每个阶段的成本、约束条件)d、结论意见(综合上述分析,说明新系统是否可行,结论可区分为三类:深刻立即进行推迟进行不能或不值得进行)、物理模型的一种传统工具。
基本思想是用图形符号以黑盒子的形式描绘系统里的每个部件(程序、文件、数据库、表格、人工过程等)。
逻辑模型。
没有任何具体的物理元素,描绘信息流和数据从输入移动到输出的过程所经受的变换,即在系统中流动和被处理的逻辑过程.特点:它是逻辑系统的图形表示,容易理解,是分析员和用户间极好的通信工具;设计数据流图只需考虑系统必须完成的基本逻辑功能,不需要考虑如何具体实现这些功能,是今后进行软件设计很好的出发点。
6、数据存储和数据流都是数据。
一是静止状态的数据二是处于运动中的数据。
7、分层DFD 图的优点:便于实现,便于使用,便于阅读。
8、数据字典DD:数据字典是关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
数据字典的任务是: 对于数据流图中出现的所有被命名的图形元素在字典中作为一个词条加以定义,使得每一个图形元素的名字都有一个确切的解释。
其内容有图形元素的名字、别名或编号、分类、描述、定义、位置等。
数据字典的内容(1)数据流(2)数据流分量(即数据元素)(3)数据存储(4)处理定义数据的方法由数据元素组成数据的方式有下述几种基本类型:(1)顺序:即以确定次序连接两个或多个分量。
(2)选择:即从两个或多个可能的元素中选取一个。
(3)重复:即把指定的分量重复零次或多次。
数据字典定义符号:第三章需求分析11)需求获取;(2)需求建模;(3)形成需求规格;4)需求验证;(5)需求管理2软件需求指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
(功能需求:基本需求,确定目标系统必须具备的所有功能性能需求: 指定系统必须满足的定时约束或容量约束。
如从终端输入数据到系统后多长时间内可有反映等。
可靠性和可用性需求:量化了用户可以使用系统的程度出错处理需求:对环境错误而非系统自身错误应如何响应接口需求:应用系统与它的环境通信的格式约束:在设计或实现应用系统时应遵守的限制条件逆向需求:能澄清真实需求且可消除可能发生的误解的将来可能提出的需求);分析系统的数据要求(建立数据模型);导出系统的逻辑模型(数据流图,实体联系图,状态转换图,数据字典);修正系统开发计划(成本,进度);{附加:开发原形系统;验证软件需求分析的正确性;编写软件需求规格说明书{3术(---信息系统领域使用的主流技术)[典型过程:1)初步访谈2)审查产品需求3)会议讨论4)分成小组为每张列表中项目制定小型规格说明5)每个与会者指定出产品的一整套确认标准,并提交会议讨论6)一名或多名与会者根据会议成果起草完整的软件需求规格说明书;];快速建立软件原型(最准确、最有效、最强大的需求分析技术。