第一章 概论
1.软件的特点:(1)软件是一种逻辑实体,而不是有形的系统元件,其开发成本和进度难以准确地估算。(2)软件是被开发的或被设计的,没有明显的制造过程,一旦开发成功,只需复制即可,但其维护的工作量大。(3)软件的使用没有硬件那样的机械磨损和老化问题。
2.软件的分类:系统软件,居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用;支撑软件,支撑软件的开发和维护;应用软件,特定应用领域的专用软件。
3.软件工程定义:(1)将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;(2)在(1)中所述方法的研究。
4.软件工程框架:目标、过程和原则。目标指生产具有正确性、可用性和开销合宜的产品;过程指生产一个最终满足需求且达到工程目标的软件产品所需要的步骤;原则为选择适宜的开发模型、采用合适的设计方法、提供高质量的工程支撑、重视软件工程的管理。
5.软件生存周期:软件产品或软件系统从产生、投入使用到被淘汰的全过程。大致分为六阶段:计算机系统工程、需求分析、设计、编码、测试、运行和维护。
6.能力成熟度模型CMM五个等级:初始级、可重复级、已定义级、已管理级、优化级。
7.常见模型优缺点:螺旋模型:螺旋模型是将瀑布模型与原型模型结合起来,加入风险分析环节,是一种风险驱动模型。包括4个工作步骤:1)需求定义、2)风险分析、3)工程实现、4)评审。瀑布模型:瀑布模型是将软件生存周期各活动规定为以线性顺序连接的若干阶段的模型;强调阶段的严格顺序和每一阶段的严格性。前一阶段的输出是后一阶段的输入;每阶段要进行文档的复审与确认。增量模型:融合了瀑布模型的基本成分(重复地应用)和演化模型的迭代特征,强调每一个增量都发布一个可运行的产品,能有计划地管理技术风险;喷泉模型:一种支持面向对象开发的模型,体现迭代和无间隙特征;基于构件的开发模型:支持复用;形式化方法模型:建立在严格数学基础上;
8.Agile方法的价值观:个人和交互高于过程和工具;可运行软件高于详尽的文档;与客户协作高于合同(契约)谈判;对变更及时做出反应高于遵循计划。
9.XP方法的4个价值观:交流、简单、反馈、勇气。
10.XP方法的12个核心实践:完整的团队、计划对策、系统比喻、小发布、测试、简单设计、结对编程、设计改进、持续集成、代码全体共有、编码标准、可持续步调。
第二章 系统工程
1.组成基于计算机系统的元素主要有:软件、硬件、人员、数据库、文档和规程。
2.系统工程的任务:识别用户的要求,系统建模和模拟,成本估算及进度安排,可行性分析,生成系统规格说明。
3.可行性分析:经济可行性(成本,效益,货币的时间价值,投资回收期,纯收入);技术可行性(风险分析,资源分析,技术分析);法律可行性;方案的选择和折中。
第三章 需求工程
1.六阶段:需求获取,需求分析与协商,系统建模,需求规约,需求验证,需求管理。
第四章 设计工程
1.结构化程序设计:如果一个程序的代码块仅仅通过顺序、选择和循环这三种基本控制结构进行连结,并且每个代码块只有一个入口和一个出口,则称这个程序是结构化的。
2.耦合:模块之间的相对独立性(互相连接的紧密程度)的度量
3.内聚:一个模块内部各个元素彼此结合的紧密程度的度量
第五章 结构化分析与设计
1.结构化分析步骤:(1)理解当前的现实环境,获得当前系统的具体模型(物理模型)(2)从当前系统的具体模型抽象出当前系统的逻辑模型(3)分析目标系统与当前系统逻辑上的差别,建立目标系统的逻辑模型(4)为目标系统的逻辑模型作补充。
2.数据字典:模型的核心,它包含了软件使用和产生所有数据的描述。
3.数据流图(DFD)基本元素:数据流、加工、文件、源或宿。
4.数据字典字典条目种类:数据流、文件、数据项、加工、源或宿。
5.结构化设计步骤:建立初始结构图、对结构图进行改进、书写设计文档、设计评审。
第六章 面向对象的分析与设计
1.分析(OOA)步骤:(1)获取客户对系统的需求(2)用基本的呃需求为指南来选择类和对象(3)定义类的结构和层次(4)建造对象关系模型(5)建造对象行为模型(6)利用用况/场景来复审分析模型。
2.设计(OOD)步骤:系统设计,对象设计,消息设计,复审。
第七章 人机界面设计
1.界面风格:第一代,命令和询问方式的界面;第二代,简单的菜单式界面;第三代,窗口、图标、菜单、指示器四位一体的界面;第四代,第三代界面与超文本、多任务概念相结合的界面,用户可同时执行多个任务。
2.人机界面分类:语言界面,图形用户界面,直接操纵用户界面,多媒体用户界面,多通道用户界面。
3.人机界面设计过程:用户、任务和环境分析及建模;界面设计;界面构造;界面确认。
4.黄金原则:让用户拥有控制权,减少用户记忆负担,保持界面一致。
第八章 软件测试
1.白盒测试:(又称结构测试)对软件的过程性细节做仔细的检查;把测试对象看做一个打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
2.白盒测试包括:(1)程序模块中的所有独立路径至少执行一次(2)对所有逻辑判定的取值(“真”与“假”)都至少测试一次(3)在上下边界及可操作范围内运行所有循环(4)测试内部数据结构的有效性等。
3.黑盒测试:(又称行为测试)把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能需求。
4.黑盒测试试图发现以下类型的错误:不正确或遗漏的功能;接口错误,如输入/输出参数的个数、类型等;数据结构错误或外部信息(如外部数据库)访问错误;性能错误;初始化和终止错误。
5.常用白盒测试方法:逻辑覆盖测试、基本路经测试、数据流测试和循环测试。
6.V模型:描述软件开发各阶段与测试策略之间的对应关系
7.α测试:由一个用户在开发者的场所进行的,软件在开发者对用户的“指导下”进行测试。经α测试后的软件称为β版软件.
8.β测试:由软件的最终用户在一个或多个用户场所进行的,与α测试不同,开发者通常不在测试现场,因此,β测试是软件在一个开发者不能控制的环境中的“活的”应用,用户记录所有在β测试中遇到的(真正的或想象的)问题,并定期把这些问题报告给开发者,在接到β测试的问题报告后,开发者对软件进行最后的修改,然后着手准备向所有的用户发布最终的软件产品。
9.主要调试方法:蛮力法、回溯法、原因排除法。
10.蛮力法:一种最省脑筋但又最低效的方法。它通过在程序中设置断点,输出寄存器、存储器的内容,打印有关变量的值等手段,获取大量现场信息,从中找出错误的原因。
11.回溯法:从错误的征兆出发,人工沿着控制流程往回跟踪,直至发现错误的根源。这种方法适用于小型程序,对大型程序,由于回溯的路径太多,难以彻底回溯。
12.原因排除法:又可分为归纳法和演绎法。(1)归纳法是一种从特殊推断一般的系统化思考方法。其基本思想是:从一些线索(错误征兆)着手,通过分析它们之间的关系来找出错误的原因。(2)演绎法从一般原理或前提出发,假设所有可能出错的原因,排除不可能正确的假设,最后推导出结论。
第九章 软件维护与再工程
1.软件维护:指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程 。
2.软件维护分类:纠错性维护、适应性维护、改善性维护和预防性维护。
3.逆向工程:指在软件生存周期中,将软件的某种形式描述转换成更抽象形式的活动。
4.重构:在同一抽象级别上转换系统的描述形式。如把C++ 程序转换成Java程序。
5.设计恢复:指借助工具从已有程序中抽象出有关数据结构设计、总体结构设计和过程设计的信息。
6.再工程:在逆向工程所获信息的基础上修改或重构已有的系统,产生系统的一个新版本 。
7.再工程的主要目的:为遗留系统转化为可演化系统提供一条现实可行的途径。
第十章 软件项目管理
1.软件项目管理:指软件生存周期中软件管理者所进行的一系列活动。
2.项目管理目的:在一定的时间和预设范围内,有效地利用人力、资源、技术和工具,使软件系统或软件产品按原定计划和质量要求如期完成 。
3.项目管理的关注点:4P:人员、产品、过程、项目。
4.项目管理中五类人员:项目管理人员、高级管理人员、开发人员、客户、最终用户。
5.软件度量分类:第一种分类:面向规模的度量、面向功能的度量、面向人的度量。第二种分类:软件生产率度量、软件质量度量、技术度量。
6.计算功能点FP:FP=CT*(0.65+0.01*F)
7.软件质量要素:正确性、可靠性、效率、完整性、可用性、可维护性、灵活性、可测试性、可移植性、可复用性、可互操作性。
8.程序复杂性度量原则:(1)程序理解的难度(2)纠错、维护程序的难度(3)向他人解释程序的难度(4)按指定方法修改程序的难度(5)根据设计文件编写程序的工作量(6)执行程序时需要资源的程度。
9.McCabe环形复杂度度量V(G)=e-n+p(e弧数n结点数p强连通分量个数)V(G)=e-n+2。
10.基本CoCoMo模型:E=aLb D=cEd
E表示工作量,单位是人月;D表示开发时间,单位是月;L是项目的源代码行估计值,单位是千行代码;a、b、c、d是常数。
11.Putnam模型:L=CK(E1/3)(td4/3)。
L表示源程序代码行数(LOC)
td表示开发持续时间(年)
E是包括软件开发和维护在整个生存期所花费的工作量(人年)
CK表示技术状态常数,其值依赖于开发环境:2000,8000,11000
12.软件项目管理过程示例:
名词解释:
1.SOA模式
面向服务的体系结构(SOA)是一种用于构建分布式系统的方法,其中服务指是一种封装成实现某种软件功能的可重用构件,其通常表现为一组方法的集合(2分)。采用 SOA 这种方法构建的分布式应用程序可以将功能作为服务交付给终端用户,也可以构建其他的服务(1分)。
2. 工厂模式
定义一个用于创建对象的接口,让子类决定实例化哪一个类(2分)。Factory Method 使一个类的实例化延迟到其子类(1分)。
3.软件危机:六十年代以来,随着计算机应用需求的驱动,系统软件和应用软件有很大的发展,由于软件生产的复杂性和高成本,使大型软件的生产出现了很大的困难,即出现软件危机。软件工程正是为克服软件危机而提出的一种概念,并在实践中不断地探索其原理、技术和方法。
简答题部分
1 软件设计的基本原理有哪些?
抽象与逐步求精,模块化,信息隐藏,模块独立。
2 快速原型法有什么优缺点?主要用于什么场合?
原型是预期系统的一个可执行版本,它反映了系统性质(如功能、计算结果等)的一个选定的子集。一个原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。可用于探索和实验,使用后可丢弃,然后根据探索或实验的结果用良好的结构和设计思想重新设计目标系统;用于演化,最终得到目标系统。
5 调试的目的是什么?调试有哪些基本的方法?
目的:确定错误的原因和准确位置,并加以纠正。
主要调试方法:蛮力法、回溯法、原因排除法。
6 CASE工具在软件工程中有什么作用?分类列举常用的CASE工具。
用来辅助计算机软件的开发、运行、维护、管理、支持过程中的活动或任务
开发过程:需求分析工具,设计工具,编码工具,测试工具
维护过程:版本控制工具,文档分析工具,逆向工程工具,再工程工具
管理过程:项目管理工具,配置管理工具,软件评价工具
应用类工具
1 软件工程包括哪三要素?简要说明它们之间的关系。
方法、工具和过程 。
16. 可行性研究包括哪几方面的内容?
答:可行性研究内容包括:
(1)技术可行性:现有技术能否实现本系统,现有技术人员能否胜任,开发系统的资源能否满足;通常包括:开发的风险、资源的有效性、技术
(2)经济可行性:经济效益是否超出开发成本;
(3)操作可行性:系统操作在用户内部行得通吗?
(4)法律可行性:新系统开发是否会侵犯他人、集体或国家利益,是否违反国家法律。
17. 什么是面向对象方法学?面向对象方法的要点和主要优点。
答:面向对象方法学是让软件开发者自己定义或选取解空间对象,然后把软件系统作为一系列离散的解空间对象的集合,应该使解空间对象与问题空间对象尽可能一致。面向对象方法不是把程序看作是工作在数据上的一系列过程或函数的集合,而是把程序看作是相互协作而又彼此独立的对象的集合。(2分)
面向对象方法的要点与主要优点是:(1)以数据为中心:围绕数据协调处理,不设置与数据无关的操作;(2)对象是生动的:进行处理的主体;(3)实现了数据封装:将数据封装在盒子中,对外是隐藏的、不可见的;(4)本质上具有并行性;(5)模块独立性好。(3分)
18. UML软件分析方法的特点及主要建模视图。
答:统一建模语言UML是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。U M L标准并没有定义一种标准的开发过程,但它适用于迭代式的开发过程。它是为支持大部分现存的面向对象开发过程而设计的。(2分)
UML建模视图被划分成三个视图域:结构分类、动态行为和模型管理。
(1) 结构分类描述了系统中的结构成员及其相互关系。类元包括类、用例、构件和节点。类元为研究系统动态行为奠定了基础。类元视图包括静态视图、用例视图和实现视图。
(2) 动态行为描述了系统随时间变化的行为。行为用从静态视图中抽取的瞬间值的变化来描述。动态行为视图包括状态机视图、活动视图和交互视图。
(3) 模型管理说明了模型的分层组织结构。包是模型的基本组织单元。特殊的包还包括模型和子系统。模型管理视图跨越了其他视图并根据系统开发和配置组织这些视图。 (3分)
19. 请简述CMM分为哪几个等级?其中已管理级(Managed)具有哪些特征?
答:CMM(Capability Maturity Model For Software 软件生产能力成熟度模型,以下简称“CMM”),是1987年由美国卡内基梅隆大学软件工程研究所研究出的一种用于评价软件承包商能力并帮助改善软件质量的方法。(1分)
CMM标准共分五级。其中,五级为最高级,即优化级;四级称为已管理级;三级为已定义级,即过程实现标准化;二级为可重复级;一级为初始级。(2分)
已管理级(Managed)具有如下特征:产品和过程已建立了定量的质量目标;过程中活动的生产率和质量是可度量的;已建立过程数据库;已实现项目产品和过程的控制;可预测过程和产品质量趋势,如预测偏差,实现及时纠正。(2分)
已定义级(Defined)具有如下特征:开发过程实现标准化、文档化;建立了完善的培训制度和专家评审制度;全部技术活动和管理活动稳定实施;项目的质量、进度和费用均可控制;对项目进行中的过程、岗位和职责均有共同的理解。
20. 请简述设计模式(Design Pattern)的提出背景,可以分为哪三类?并列举创建模式(Creational Patterns)包括哪些类型?结构模式(Structural Patterns)包括哪些类型?
答:设计模式(Design Pattern)用于对已有模式的整理、分类;通过整理一套描述模式的词汇,可用于交流和文档化,为软件设计总结了宝贵的经验,这些设计经验可以被重用,但不是简单的代码重用。(1分)
可以分为:Creational Patterns(创建模式)、Structural Patterns(结构模式)、Behavioral Patterns(行为模式)。(2分)
创建模式包括:Factory Method(工厂模式)、Abstract Factory (抽象工厂模式)、Builder(生成器模式)、Prototype(原型模式)、Singleton(单件模式)、Finder(发现模式)。(2分)
结构模式(Structural Patterns)包括:Adapte模式r、Bridge模式、Composite模式、Decorator模式、Facade模式、Flyweight模式、Proxy模式。
第二篇:软件工程导论复习知识点
喜欢摇滚乐
1.软件危机
软件开发和维护过程中所遇到的一系列严重问题。
2.软件工程
是指研究软件生产的一门学科,也就是将完善的工程原理应用于经济地生产既可靠又能在实际机器上有效运行的软件。
附:软件工程方法学包括3个要素:方法、工具、过程。
3.软件生命周期
由软件定义、软件开发和软件维护三个时期组成。
1.软件定义时期
①问题定义 ②可行性研究
2.软件开发时期
①需求分析 ②总体设计 ③详细设计 ④编码 ⑤测试
3. 软件运行时期
维护
附:软件孕育、诞生、成长、成熟、衰亡的生存过程,一般称之为计算机软件的生存期。
4.瀑布模型
将软件生存周期的各项活动规定为依照固定顺序连接的若干阶段工作,形如瀑布流水,最终得到软件产品。
附:不适合需求模糊的系统
5.数据字典
关于数据的信息的集合,也就是对数据流图中包含的所有元素的定义的集合。
附:内容:①数据流 ②数据流分量 ③数据存储 ④处理
6.模块化
解决一个复杂问题时自顶向下逐层把软件系统划分成若干模块的过程
7.逐步求精
为了能集中精力解决主要问题而尽量推迟对问题细节的考虑。
8.信息隐蔽
在设计和确定模块时,使得一个模块内包含的信息,对于不需要这些信息的模块来说,是不能访问的。
9.黑盒测试
把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
10.白盒测试
1
喜欢摇滚乐
把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构 及有关信息,(设计或选择测试用例,)对程序所有逻辑路径进行测试。(通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。)
11. Beta测试
软件的多个用户在实际使用环境下进行的测试,是在开发者无法控制的环境下进行的软件现场应用。
12.软件维护
在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
13.投资回收期
使累计的经济效益等于最初投资所需要的时间。
14.软件危机的原因及表现
答:原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
表现:一方面软件十分复杂,价格昂贵,供需差日益增大,另一方面软件开发时又常常受挫,质量差,(指定的进度表和完成日期很少能按时实现,研制过程很难管理,即)软件的研制往往失去控制。
15.可行性研究的任务
从技术可行性、经济可行性、操作可行性、社会可行性等方面研究问题的可行性。
16.从哪些方面验证软件需求的正确性
①一致性 ②完整性 ③现实性 ④有效性
17.总体设计的过程
?
?
?
?
?
?
?
?
? 设想供选择的方案 选取合理的方案 推荐最佳方案 功能分解 设计软件结构 设计数据库 制定测试计划 书写文档 审查和复审
18.软件测试步骤
1、模块测试 2、子系统测试 3、系统测试
4、验收测试 5、平行测试
2
喜欢摇滚乐
19.总体设计书写文档
系统说明、用户手册、测试计划、详细的实现计划、数据库设计结果
20.信息流2种类型:变换流、事务流
21.软件系统的文档分为:用户文档、系统文档
文档作用:是影响软件可维护性的决定因素.
22.其他知识点
瀑布模型
阶段的顺序性和依赖性、质量保证
快速原型模型
快速开发工具、 循环、 低成本
增量模型
迭代的思路
螺旋模型
风险分析迭代过程
喷泉模型
以用户需求为动力、适合面向对象的开发方法、开发过程具有迭代性 数据流图基本符号有4种:
成本估计技术
1、代码行技术 2、任务分解技术 3、自动估计成本技术
软件开发过程是一个自顶向下,逐步细化的过程
测试过程是依相反顺序安排的自底向上,逐步集成的过程。
软件是计算机系统中与硬件相互依存的另一部分,它包括程序,数据及其相关文档的完整集合.
需求分析阶段的文档
? 软件需求说明书
? 数据要求说明书
? 初步的用户手册
? 修改、完善与确定软件开发实施计划
白盒测试技术:
逻辑覆盖:1.语句覆盖(最弱的,每个可执行语句至少执行一次)
2.判定覆盖.(包含语句覆盖)
3.条件覆盖.(和判定覆盖没有包含关系)
4.判定/条件覆盖 5.条件组合覆盖.(最强)
6.点覆盖. 7.边覆盖. 8.路径覆盖.
控制结构测试:1.基本路径测试(每个循环语句至多执行一次
)
3
喜欢摇滚乐
2.条件测试.
3.循环测试.
应用:局部数据结构,独立路径,出错处理,单元测试(白盒测试为主,黑盒测试为辅) 黑盒测试技术:
方法:1.等价划分
等价类:在该子集中,各个输入数据对于揭露程序中的错误都是等效的. 原则:尽可能多的覆盖有效等价类,尽可能少的覆盖无效等价类.
2.边界值分析
3.错误推测(经验)
应用:边界条件,模块接口,集成测试
4