现代软件工程(复习1)
软工复习题--答案(论述题有答案版)(1)
4 学生住宿服务系统帮助学生在就学的城市内找以所需的住房,系统对出租的房屋信息、房 主信息、需要租房的学生信息以及学生和房主的会面住处进行管理和维护。
房主信息包括姓名、地址、电话号码以及系统分配的唯一身份标识(ID)和密码;房屋信息 包括房屋地址、类型(单间/套间)、适合住宿的人数、房租、房主的 ID 以及现在是否可以 出租(例如由于装修原因,需等到装修后才可出租或者房屋已被租出)。每当房房屋信息发 生变化时,房主须通知系统,系统将更新房到文件以便学生能够获得准确的可租用房屋信息, 房主向系统中加入可租用的房屋信息时,需交纳一定的费用,由系统自动给出费用信息。房 主可随时更新房屋的各种属性。
}
画出该程序段的控制流图(3 分);说明该程序有几条独立路径(3 分);并设计测试数据, 实现对此程序的分支覆盖(6 分)。
V(G) = 11 - 9 + 2 =4 类似第三题那样设计
2 阅读以下 C 语言代码,并回答相关问题
void DoWork(int x,int y,int z)
{
int k=0,j=0;
变换模型是基于形式化规格说明语言及程序变换的软件开发模型 。其软件过程是需求定 义、形式化规格说明、软件原型、原型评审、程序变换,其中前四个是一个反复的迭代过 程。目前形式化开发方法在理论、实践和人员培训方面距工程应用尚有一段距离。
10 请解释你理解的面向对象方法的主要特征,这些特征在构建软件时如何体现的?
8 请解释项目计划的 5W2H 原则。
Why 为什么;what 要做什么;when 什么时候做;who 由谁负责;where 机构组织位于何 处;how 如何完成技术和管理工作;how much 投入多少资源。
9 解释你熟悉的几种软件开发过程模型,并论述其优缺点?
《现代软件工程》作业.
《现代软件工程》作业作业一:(一)名词解释1.软件危机2.数据流图3.数据字典4.变换流5.事务流6.耦合性7.内聚性8.程序设计语言(PDL)(二)填空题1. 在信息处理和计算机领域内,一般认为软件是_____、_____ 和_____ 。
2. 数据流图的基本组成部分有_____、_____、_____、_____。
3. 数据流图和数据字典共同构成了系统的_____模型,是需求规格说明书的主要组成部分。
4. 数据流图一般可分为_____和_____两类。
5. 结构化设计方法中,要把数据流图转换成软件结构,若某个加工将它的输入流分离成许多发散的数据流,形成许多加工路径,并根据输入的值选择其中一个路径来执行,这种特征的DFD称为_____数据流图。
6. PDL是描述处理过程“_____ ”的细节,结构化语言是描述加工“_____ ”的。
(三)选择题1. 软件工程的概念是哪年提出的( )。
A. 1988B. 1968C. 1948D. 19282. 影响输入输出风格的因素不包括( )。
A. 数据状态B. 通信环境C. 用户经验D. 输入/输出设备3. 符合数据说明顺序规范的是( )。
A. 全程量说明、局部量说明、类型说明、常量说明B. 全程量说明、局部量说明、常量说明、类型说明C. 类型说明、常量说明、全程量说明、局部量说明D. 常量说明、类型说明、全程量说明、局部量说明4. 瀑布模型的关键不足在于( )。
A. 过于简单B. 各个阶段需要进行评审C. 过于灵活D. 不能适应需求的动态变更5. 以下哪一项不是软件危机的表现形式( )。
A. 开发的软件不满足用户需要B. 开发的软件可维护性差C. 开发的软件价格便宜D. 开发的软件可靠性差6. 软件可行性研究实质上是要进行一次( )需求分析、设计过程。
A. 简化、压缩的B. 详细的C. 彻底的D. 深入的7. 结构化设计是一种面向( )的设计方法。
A. 数据流B. 模块C. 数据结构D. 程序8. 与确认测试阶段有关的文档是( )。
软件工程导论复习重点总结很全第六版
第1章软件工程学概述1.1 软件危机1.1.1 软件危机旳简介软件危机(软件萧条、软件困扰): 是指在计算机软件旳开发和维护过程中所碰到旳一系列严重问题。
软件危机包括下述两方面旳问题:怎样开发软件, 满足对软件日益增长旳需求;怎样维护数量不停膨胀旳已经有软件。
软件危机旳经典体现:(1)对软件开发成本和进度旳估计常常很不精确;(2)顾客对“已完毕旳”软件系统不满意旳现象常常发生;(3)软件产品旳质量往往靠不住;(4)软件常常是不可维护旳;(5)软件一般没有合适旳文档资料;(6)软件成本在计算机系统总成本中所占旳比例逐年上升;(7)软件开发生产率提高旳速度, 远远跟不上计算机应用迅速普及深入旳趋势。
1.1.2 产生软件危机旳原因(1)与软件自身旳特点有关(2)与软件开发与维护旳措施不对旳有关1.1.3 消除软件危机旳途径对计算机软件有对旳旳认识。
认识到软件开发是一种组织良好、管理严密、各类人员协同配合、共同完毕旳工程项目。
应当推广使用在实践中总结出来旳开发软件旳成功技术和措施, 并继续研究探索。
应当开发和使用更好旳软件工具。
总之, 为了处理软件危机, 既要有技术措施(措施和工具), 又要有必要旳组织管理措施。
1.21.2.1 软件工程旳简介软件工程: 是指导计算机软件开发和维护旳一门工程学科。
采用工程旳概念、原理、技术和措施来开发与维护软件, 把通过时间考验而证明对旳旳管理技术和目前可以得到旳最佳旳技术措施结合起来, 以经济地开发出高质量旳软件并有效地维护它, 这就是软件工程。
(期中考)软件工程旳本质特性:软件工程关注于大型程序旳构造软件工程旳中心课题是控制复杂性软件常常变化开发软件旳效率非常重要友好地合作是开发软件旳关键软件必须有效地支持它旳顾客在软件工程领域中是由具有一种文化背景旳人替具有另一种文化背景旳人发明产品1.2.2 软件工程旳基本原理用分阶段旳生命周期计划严格管理坚持进行阶段评审实行严格旳产品控制采用现代程序设计技术成果应能清晰地审查开发小组旳人员应当少而精承认不停改善软件工程实践旳必要性1.2.3 软件工程措施学软件工程包括技术和管理两方面旳内容。
研究生-现代软件工程复习资料
1.什么叫软件,特点是什么?软件就是指令集合+数据结构+文档软件特点:1)软件是设计开发的,不是传统意义上的制造。
2)不会“磨损”。
3)多数软件是定制的。
4)无形的。
软件工程包括:过程、方法、工具。
2.软件领域三大挑战是什么?异构性:开发平台、开发语言,系统,异构系统之间如何集成的问题。
交付:软件开发周期都比较短,所有软件企业必须具备快速响应和适应需求变更的能力。
可信度:软件运行逻辑是否正确,数据结果是否正确等。
3.软件工程过程(案例分析)1、瀑布模型(Waterfall Model)瀑布模型将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
在瀑布模型中,软件开发的各项活动严格按照线性方式进行,当前活动接受上一项活动的工作结果,实施完成所需的工作内容。
当前活动的工作结果需要进行验证,如果验证通过,则该结果作为下一项活动的输入,继续进行下一项活动,否则返回修改。
瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。
优点:1)为项目提供了按阶段划分的检查点。
2)当前一阶段完成后,您只需要去关注后续阶段。
3)可在迭代模型中应用瀑布模型。
缺点:(1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;(2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发的风险;(3)早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。
适用:在开发时间内需求没有或很少变化;分析设计人员应对应用领域很熟悉;低风险项目;用户使用环境很稳定;用户除提出需求以外,很少参与开发工作。
2、演化(迭代)模型(原型+螺旋)根据用户的基本需求,通过快速分析构造出该软件的一个初始可运行版本,这个初始的软件通常称之为原型,然后根据用户在使用原型的过程中提出的意见和建议对原型进行改进,获得原型的新版本。
[理学]软件工程复习资料1
一、单选题1.可行性分析研究的目的是()A.争取项目B.项目值得开发否C.开发项目D.规划项目2.具有风险分析的软件生存周期模型是()A.瀑布模型B.喷泉模型C.螺旋模型D.增量模型3.需求分析阶段的任务是确定()A.软件开发方法 B.软件开发工具 C.软件开发D.软件系统的功能4.数据字典是用来定义()中的各个成份的具体含义的。
A.流程图 B.功能结构图 C.系统结构图D.数据流图5.程序的三种基本控制结构的共同特点是()A.只能用来描述简单程序 B.不能嵌套使用C.单入口,单出口 D.仅用于自动控制系统6.软件设计的方法有多种,()方法不属于面向数据流的设计方法。
A.基于Jackson图的设计 B.基于IDEF0图的设计-结构化方法-数据流C.交换分析设计 D.事务分析设计7.为高质量地开发软件项目,在软件结构设计时,必须遵循()原则。
A.信息隐蔽 B.质量控制 C.程序优化 D.数据共享8.软件复杂性主要体现在()A.数据的复杂性B.程序的复杂性C.控制的复杂性D.问题的复杂性9.为了提高软件的可维护性,在编码阶段应注意()A.保存测试用例和数据B.提高模块的独立性C.文档的副作用D.养成好的程序设计风格10.面向对象的特征之一是()A.对象的唯一性B.抽象C.封装性D.共享性11.当一个模块直接使用另一个模块的内部数据,这种模块之间的耦合为()A.数据耦合 B.公共耦合 C.标记耦合D.内容耦合12.需求规格说明书的作用不包括()A.软件验收的依据 B.用户与开发人员对软件要做什么的共同理解C.软件可行性研究的依据 D.软件设计的依据13.为使得开发人员对软件产品的各个阶段工作都进行周密的思考,从而减少返工,所以()的编制是很重要的。
A、需求说明 B概要说明C软件文档D测试计划14.软件部件的内部实现与外部可访问性的分离,是指软件的()。
A、继承性B、共享性C、封装性D、抽象性15.单元测试是发现编码错误,集成测试是发现模块的接口错误,确认测试是为了发现功能错误,那么系统测试是为了发现()的错误。
软件工程复习资料-完整版
软件工程复习资料-完整版一、概述软件工程是一门关于开发、维护和管理软件的综合学科。
它涵盖了软件开发的各个阶段,包括需求分析、设计、编码、测试和维护。
软件工程的目标是提供高质量的软件,满足用户的需求,同时将开发过程控制在预定的时间和预算范围内。
二、软件生命周期1. 需求分析阶段在需求分析阶段,开发团队与用户沟通,了解用户的需求和期望。
通过需求分析,确定软件的功能和性能要求,制定详细的需求规格说明。
2. 设计阶段在设计阶段,团队根据需求规格说明,设计软件的整体架构和模块。
设计阶段包括概要设计和详细设计,概要设计主要确定软件的整体结构,详细设计则更加具体,包括模块的功能和接口设计。
3. 编码阶段在编码阶段,根据详细设计,实现软件的各个模块。
编码时应遵循编程规范,确保代码的可读性和可维护性。
同时,要进行单元测试,确保每个模块的功能正确。
4. 测试阶段在测试阶段,对软件进行不同层次的测试,包括单元测试、集成测试和系统测试。
单元测试测试各个模块的功能,集成测试测试模块之间的接口,系统测试测试整个系统的功能和性能。
5. 部署和维护阶段在软件开发完成后,需要将软件部署到目标环境中,并进行用户培训。
同时,还需要对软件进行维护和升级,以解决出现的问题和满足用户的需求变化。
三、软件工程的原则1. 模块化将软件划分为多个模块,每个模块负责特定的功能。
模块化能够提高软件的可维护性和复用性,同时有利于团队的协作开发。
2. 可伸缩性软件应该具备可伸缩性,能够满足不同规模和需求的用户。
在设计和实现软件时,需要考虑未来的扩展和升级,保证软件的灵活性。
3. 可测试性软件应该具备可测试性,方便进行各个阶段的测试。
在设计和编码时,需要考虑如何进行自动化测试,提高测试的效率和覆盖率。
4. 可维护性软件应该具备可维护性,方便对软件进行改进、修复和升级。
在设计和编码时,需要遵循良好的编程规范,提高代码的可读性和可维护性。
5. 文档化软件开发过程需要进行详细的文档记录,包括需求文档、设计文档、测试文档等。
软件工程题库1
软件工程单元一(概述)一单项选择1.软件是一种逻辑产品,它的开发主要是()。
A研制 B拷贝 C再生产 D复制2.软件生命周期一般包括:软件开发期和软件运行期,下述()不是软件开发期所应包含的内容。
A需求分析 B 结构设计 C程序编制 D软件维护3.以文档作为驱动,适合于软件需求很明确的软件项目的生存周期模型是()。
A喷泉模型 B 增量模型 C瀑布模型 D螺旋模型4.在软件生存周期中,()阶段必须要回答的问题是“要解决的问题是做什么?”。
A详细设计 B 可行性分析和项目开发计划 C概要设计 D软件测试5.软件产品与物质产品有很大区别,软件产品是一种()产品A有形 B 消耗 C逻辑 D文档6.()把瀑布模型和专家系统结合在一起,在开发的各个阶段上都利用相应的专家系统来帮助软件人员完成开发工作。
A 原型模型B 螺旋模型C 基于知识的智能模型D 喷泉模型7. ( )阶段是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。
A概要设计 B 详细设计 C 编码 D 测试8.下列软件开发模型中,适合于那些不能预先确切定义需求的软件系统的开发的模型是()。
A 原型模型B 瀑布模型C 基于知识的智能模型D 变换模型9.下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是()。
A 原型模型B 瀑布模型C 喷泉模型D 螺旋模型10.下列软件开发模型中,支持需求不明确,特别是大型软件系统的开发,并支持多种软件开发方法的模型是()。
A 原型模型B 瀑布模型C 喷泉模型D 螺旋模型11.软件特性中,使软件在不同的系统约束条件下,使用户需求得到满足的难易程度称为()。
A可修改性 B可靠性 C可适应性 D 可重用性12.软件特性中,一个软件能再次用于其他相关应用的程度称为()。
A可移植性 B可重用性 C 容错性 D 可适应性13.软件特性中,()是指系统具有清晰的结构,能直接反映问题的需求的程度。
软件工程复习题[1]
软件工程复习题一、单选题1、软件开发的结构化设计(SD)方法,全面指导模块划分的最重要原则应该是(C )A模块高内聚B模块低耦合C模块独立性D程序模块化2、软件工程方法的提出起源于软件危机,而其目的应该是最终解决软件的什么问题?(D )A产生危机B质量保证C开发效率D生产工程化3、软件工程开发的可行性研究是决定软件项目是否继续开发的关键,而可行性研究的结论主要相关于( A )A软件系统目标B软件的性能C软件的功能D软件的质量4、软件需求分析一般应确定的是用户对软件的( D )A。
功能需求B。
非功能需求 C.性能需求 D.功能需求和非功能需求5、软件测试是满足软件的功能和性能要求,保证软件正确性的措施,一般软件测试计划的制订应始于软件开发的哪个阶段? ( D)A。
需求分析 B.软件设计C。
程序编码 D.软件计划6、软件工程方法是在实践中不断发展的方法,而早期的软件工程方法主要是指( B )A。
原型化方法B。
结构化方法 C.面向对象方法. D.功能分解法7、数据流图描述数据在软件中流动和被处理变换的过程,它是以图示的方法来表示,即.(A )A。
软件模型 B.软件功能 C.软件结构 D.软件加工8、软件工程学涉及到软件开发技术和工程管理两方面的内容,下述内容中哪一个不属于开发技术的范畴?(D)A。
软件开发方法 B.软件开发工具 C.软件工程环境D。
软件工程经济9、软件文档是软件工程实施中的重要成份,它不仅是软件开发的各阶段的重要依据,而且也影响软件的( B )A。
可理解性 B.可维护性C。
可扩展性 D.可靠性10、从( C)语言开始,软件摆脱了对硬件的依赖。
A。
第一代B。
第二代C。
第三代D。
第四代11、在下面列出的基本成分中,哪个不是实体关系图的基本成分?(B )A。
实体 B.数据存储C。
关系D属性12、在下面的概念模式中,哪种描述的不是动态数据结构或属性?( C )A。
框图 B.结构图C。
实体关系图D。
软件工程习题与答案(第1次)
软件工程学习资料(1)一、填空1、软件工程学的内容可包括理论、结构、方法、工具、环境、管理、规范等。
2、N-S图中的顺序结构:在PAD图中表示为:PAD图设置五种基本控制结构,并允许递归使用。
3、模块的独立程度可以由两个定性标准度量,这两个标准分别称为内聚和耦合。
耦合衡量不同模块彼此之间相互依赖的紧密程度。
内聚衡量一个模块内部各个元素彼此结合的紧密程度。
4、软件测试方法按测试过程是否在实际应用环境中分为静态分析和动态测试。
二、单项选择题1、模块在同一段时间内完成各种初始化工作,这属于。
A.偶然内聚B.逻辑内聚C.时间内聚D.过程内聚2、在编程安全方法方面,一般来说无法做到。
A. 避开错误B.完美无缺,绝无错误C. 冗余D.设计防错程序3、在衡量软件质量时,最重要的标准是。
A. 成本低B. 可维护性好C. 符合要求D. 界面友好4、下列工具中,不属于详细设计工具的是。
A. 测试工具B. 图形工具C. 表格工具D. 语言工具5、下列哪个做法会导致不利的语句结构A.避免使用ELSE GOTO结构B.对递归定义的数据结构尽量不再使用递归过程C.模块功能尽可能单一化,模块间的耦合能够清晰可见D.利用信息隐蔽,确保每一个模块的独立性三、判断题1、Jackson系统开发方法是一种典型的面向对象的分析设计方法。
(×)2、HIPO图是由一组IPO图加一张HC图组成,是美国IBM公司在软件设计中使用的主要表达工具。
(√)3、在软件开发中采用原型系统策略的主要困难是成本问题。
(√)4、软件开发所需的资源可以画成一个金字塔,塔的高层最基本的资源是人。
(√)5、下图表示的是WHILE 型循环。
(×6的顺序,而数据流图只反映数据的流向,不反映处理逻辑的先后。
(√)四、问答题1、什么是软件答:软件是一种产品,包含下面三方面的含义。
(1)在运行中能提供所希望的功能和性能的指令集(即程序);(2)使程序能够正确运行的数据结构;(3)描述程序研制过程、方法所用的文档。
软工复习要点
软工复习要点软件工程是现代计算机科学的重要分支,致力于开发高质量的软件系统。
在软件工程的学习过程中,掌握并熟悉相关的复习要点是非常重要的。
本文将总结软件工程的复习要点,帮助读者更好地准备考试,并取得好的成绩。
一、软件生命周期1. 需求分析阶段- 需求获取:通过面谈、问卷调查等方式获取用户需求。
- 需求分析:对收集到的需求进行分析、整理和规格说明。
- 需求验证:与用户确认需求是否准确并理解一致。
2. 设计阶段- 概要设计:定义系统的总体结构和模块划分,确定系统的主要功能。
- 详细设计:对每个模块进行详细设计,包括定义数据结构、算法等。
3. 编码阶段- 编写程序:将设计的模块转化为具体的编程代码。
- 单元测试:对每个模块进行测试,确保代码的正确性。
4. 测试阶段- 集成测试:将各个模块进行整合,进行系统级别的测试。
- 系统测试:对整个系统进行测试,检查系统是否满足预期功能和性能。
5. 运维阶段- 安装部署:将软件部署到实际应用环境中。
- 系统维护:对已部署的软件进行维护和更新。
二、软件开发过程模型1. 瀑布模型:按照线性顺序依次完成各阶段的开发流程。
2. 增量模型:将开发过程划分为多个增量,逐步迭代开发。
3. 原型模型:通过快速开发原型来验证需求和设计方案。
4. 敏捷模型:强调快速响应变化需求的开发方法。
三、软件需求工程1. 需求分类:功能需求和非功能需求的划分和描述。
2. 需求获取:通过场景分析、访谈、面谈等方式收集用户需求。
3. 需求分析:对需求进行整理、归类和建模,明确需求的范围和边界。
4. 需求规格说明:使用工具(如用例图、活动图)对需求进行形式化的描述和建模。
5. 需求验证:与用户进行需求确认和变更管理,保证需求的正确性和一致性。
四、软件设计1. 结构设计:确定软件的整体结构和模块之间的关系。
2. 数据设计:定义数据模型和数据库的结构。
3. 接口设计:定义模块间的接口,确保模块之间的良好交互。
软件工程复习大纲
考试题型名词解释、填空、简答题、应用题(分析、设计、测试等)重点内容第1章软件与软件工程的概念1.了解与软件相关的基本概念,包括软件、程序、数据、文档。
2. 了解软件危机的表现及发生的原因。
3. 掌握软件工程的概念。
4.软件生命周期由哪三个时期组成,每个时期又可划分为哪些阶段?每个阶段的主要任务是什么?5.掌握软件工程方法学的三个基本要素及其作用。
6.了解传统方法及面向对象方法各自的特点。
第2章软件生存期模型1.典型的生存期模型(即软件过程模型)有哪几种,每种模型有哪些优缺点。
第3章结构化分析与设计方法1. 掌握结构化分析模型的结构,主要由哪些模型组成?2. 掌握数据流图、分层数据流图的画法。
3. 掌握数据字典的定义方法。
4. 掌握使用判定表和判定树描述加工规格说明。
第4章结构化设计方法1. 了解结构化设计的概念、原则、任务。
2. 掌握结构化设计的图形工具。
3.掌握面向数据流的设计方法和设计过程,能够区分两种典型的数据流,并掌握相应的变换分析方法及事务分析方法。
4. 软件模块结构的改进(启发式规则)。
提高模块独立性、深度和宽度、扇出和扇入应适当、作用范围和控制范围原则等。
5.人机交互设计的准则。
6. 掌握常用的详细设计(过程设计)的描述工具。
第5章面向对象方法与UML1. 了解UML中的事物及其分类。
2. 了解UML中的关系,包括依赖关系、关联关系、泛化关系和实现关系等。
3. 掌握UML中5种类型的图,包括用例图、类图、顺序图、状态图、活动图。
第6章面向对象分析1.了解面向对象分析中的三个模型和五个层次。
2.掌握有关用例模型、对象模型和动态模型的基本概念。
3.能够针对具体应用,建立用例模型、对象模型和动态模型(状态图和顺序图)的过程。
第7章软件体系结构与设计模式1.了解客户机/服务器体系结构,B/S结构、C/S结构2.掌握面向对象设计原则:单一职责原则、里氏代换原则、依赖倒转原则、合成复用原则。
现代软件工程复习要点
第一章软件是什么?1、软件是指在执行时提供所需的功能和性能的指令(计算机程序)instructions。
2、软件是使程序能够充分处理信息的数据结构data structures。
3、软件是描述程序操作和使用的描述性信息descriptive imformation。
为什么说软件是双重角色dual roles?1、软件是一种产品。
能提供计算潜在的生产、管理、获取、修改、显示或传递信息。
2、软件是交付产品的工具。
能够实现计算机的控制(如操作系统)、信息的传播(如网络软件)和其他程序的创建和控制(如软件工具和环境)。
软件的失败曲线软件不会损坏,所谓的软件“坏了”指1、出现了Bug。
2、软件的环境变了。
3、软件不能满足新的需求了。
软件和硬件的区别:1、软件是设计开发的,不是传统意义上的生产制造的。
2、软件不会“磨损”3、虽然整个工业向着基于构件模式发展,然而大多数软件仍是根据顾客需求定制的。
为什么软件必须改变(上图的change)1、软件必须适应新的计算机环境或者技术的需要。
2、必须增强软件来实现新的业务需求。
3、软件必须扩展,来实现与其他更现代的系统或数据库的互操作。
4、软件必须重新架构,使其在网络环境中可运行。
软件的种类:系统软件,应用软件,工程/科学软件,嵌入式软件,产品线软件,网络/手机应用程序),人工智能软件(机器人、神经网络、游戏)。
云计算为网络计算设备提供分布式数据存储和处理资源。
计算资源驻留在云之外,并且可以访问云中的各种资源。
产品线软件是一组软件密集型系统,具有共同的特点,满足特定市场的需求。
软件产品线共享一组资产,包括需求、体系结构、设计模式、可重用组件、测试用例和其他工作产品。
Webapp的特点1、网络密集性。
大量用户可以一次访问webapp2、不可预测的负载。
网络应用的用户数量可能会因每天的数量级而变化。
3、性能。
用户等待时间太长,可能会取消访问。
4、可用性。
5、数据驱动的。
6、内容敏感。
软件工程复习
软件工程复习一、引言软件工程是一门涵盖软件开发全过程的学科,它研究如何通过系统化的方法去开发、维护和管理软件。
在软件工程的学习和实践中,掌握相关知识和技能是必不可少的。
本文将系统回顾软件工程的重要知识点,以帮助读者全面复习和巩固相关内容。
二、软件开发生命周期1. 需求分析阶段在软件开发过程中,需求分析阶段是至关重要的。
它主要包括对用户需求进行调研、需求澄清和需求规格说明书编写等工作。
需求分析的准确性和完整性直接影响后续开发工作的顺利进行。
2. 系统设计阶段系统设计是指根据需求分析结果,制定软件的整体架构和模块设计。
在设计阶段,需考虑软件的可扩展性、可维护性和可重用性等因素,以确保软件的高质量和可靠性。
3. 编码与单元测试阶段在编码阶段,开发人员需要根据系统设计的要求,使用特定的编程语言来实现软件功能。
为了保证代码的质量,单元测试是必不可少的环节,它用于测试各个模块的功能是否正常,以及处理异常情况的正确性。
4. 集成与测试阶段在集成和测试阶段,开发人员需要将各个模块进行整合,并对整个系统进行全面的测试。
测试的目的是发现和解决潜在的缺陷和问题,以确保整个系统的稳定性和可靠性。
5. 部署与维护阶段当软件开发完成后,需要将其部署到目标环境中,并进行后续的维护工作。
维护阶段包括对软件功能的修复、更新和性能的优化等,以适应用户需求的变化。
三、软件工程方法与模型1. 瀑布模型瀑布模型是软件工程中最经典的开发模型之一,它以阶段性的方式进行软件开发,每个阶段的输出作为下一个阶段的输入。
瀑布模型适用于需求稳定和开发周期长的项目。
2. 敏捷开发敏捷开发是一种迭代增量的开发方法,强调与客户的密切合作和快速响应变化。
敏捷开发适用于需求不确定和开发周期短的项目。
3. 原型模型原型模型是一种通过迅速构建原型来收集用户反馈和需求的方法。
它适用于需求不明确或需求难以获取的项目。
4. V模型V模型是一种与瀑布模型相对应的测试和验证模型,它强调开发和测试的同步进行。
软件工程复习
软件工程复习软件工程是计算机科学中重要的一个分支,它涉及软件系统开发、维护和管理等方面。
作为软件工程的学习者,我们需要对软件开发的各个环节以及相关的理论知识进行复习,以提高我们的专业水平和技能。
本文将从需求分析、设计、编码、测试和维护等方面,进行软件工程的复习。
一、需求分析需求分析是软件开发的第一步,它是确定软件系统实际需求的过程。
在需求分析阶段,我们需要与客户交流,明确软件系统的功能、性能和各项需求。
同时,我们需要进行需求建模,使用面向对象分析的方法,将需求转化为可用的模型。
需求分析的一种常用方法是使用用例图和用例规约来描述系统的功能需求。
用例图可以通过图形化的方式展示系统的各个功能模块以及它们之间的关系,而用例规约则详细地描述了每个功能模块的具体行为和操作。
二、设计设计是软件开发的核心环节,它包括系统设计和详细设计两个方面。
系统设计是指对整个软件系统进行高层次的结构设计,确定系统的总体架构和模块划分。
详细设计则是在系统设计的基础上,进一步进行每个模块的详细设计,确定模块的接口和数据结构。
在设计阶段,我们需要使用UML(统一建模语言)来进行建模。
类图和时序图是常用的设计图形,类图用于表示系统中的类和类之间的关系,时序图用于展示系统中各个类之间的时序关系。
三、编码编码是将设计的结果转化为计算机可执行的代码的过程。
在编码阶段,我们要根据设计文档,按照编程规范进行编码,编写高效、可靠、易于维护的代码。
编码过程中,我们需要选择合适的编程语言和开发环境。
根据项目的需求和个人偏好,可以选择Java、C++、Python等不同的编程语言,使用Eclipse、Visual Studio等开发环境进行编码。
四、测试测试是保证软件质量的重要环节。
在测试阶段,我们需要对软件系统进行功能测试、性能测试、压力测试等多种测试。
在进行测试时,我们需要编写测试用例,根据需求和功能特点,设计并执行各个测试用例。
同时,我们还需要学习使用不同的测试工具,如Junit、Selenium等,来辅助进行自动化测试。
软件工程复习
软件工程复习软件工程是计算机科学的一个分支,旨在开发和维护高质量的软件系统。
在软件工程的学习过程中,我们需要掌握各种概念、原理和方法,以便能够设计、开发和管理软件项目。
本文将对软件工程的基本概念和重要内容进行复习总结。
一、概述软件工程是一门涉及软件开发生命周期的学科,它涵盖了需求分析、设计、编码、测试、维护等步骤。
其目标是通过系统化的过程和方法来提高软件开发的效率和质量。
二、软件开发生命周期1. 需求分析:确定软件系统的功能需求和性能需求,为后续开发提供基础。
2. 设计:根据需求分析的结果,进行系统架构设计和模块设计,确定软件的整体结构和各个模块的功能。
3. 编码:根据设计文档进行具体编码工作,实现软件功能。
4. 测试:对编码完成的软件进行功能测试、性能测试和安全性测试,确保软件的质量。
5. 维护:在软件发布后,对其进行修复漏洞、改进功能等维护工作,使软件能够持续发挥价值。
三、软件需求工程1. 需求获取:通过与用户和相关利益相关者的沟通,收集软件系统的需求信息。
2. 需求分析与规格说明:对需求进行分析,明确需求的优先级和约束条件,撰写需求规格说明文档。
3. 需求验证:通过需求验证技术和方法,确认需求规格说明文档的正确性和完整性。
四、软件设计原则与模式1. 单一职责原则(SRP):一个类或模块应该有且只有一个责任。
2. 开放封闭原则(OCP):一个软件实体应该对扩展是开放的,对修改是封闭的。
3. 里氏替换原则(LSP):所有使用基类对象的地方,都可以用其子类对象来替换。
4. 依赖倒置原则(DIP):高层模块不应该依赖底层模块,二者都应该依赖其抽象。
5. 接口隔离原则(ISP):使用多个专门的接口,而不使用单一的总接口,客户端不应该依赖它不需要的接口。
6. 迪米特法则(LoD):一个对象应该对其他对象保持最少的了解。
五、软件质量与测试1. 功能测试:验证软件是否满足用户需求。
2. 性能测试:验证软件在预期负载下的性能表现。
软件工程导论复习重点一
1.软件是程序、数据及相关文档的完整集合。
2.软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
3.软件危机包含两方面问题:如何开发软件,以满足对软件日益增长的需求。
如何维护数量不断膨胀的已有软件。
4.软件危机的典型表现:对软件开发成本和进度的估计常常很不准确;用户对“已完成的”软件系统不满意的现象经常发生;软件产品的质量往往靠不住;软件常常是不可维护的;软件通常没有适当的文档资料;软件成本在计算机系统总成本中所占的比例逐年上升;软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
5.产生软件件危机的原因:一方面与软件本身的特点有关,另一方面和软件开发与维护的方法不正确有关。
6.消除软件危机的途径:首先应该对计算机软件有一个正确的认识。
其次必须充分吸取和借鉴人类从事计算机硬件研究和开发的经验教训。
还要在适当的软件工具辅助下,开发人员可以把这类工作做得既快又好。
软件工程正是从管理和技术两方面研究如何更好的开发和维护计算机软件的一门新兴学科。
7.软件工程师指导计算机软件开发和维护的一门工程学科。
8.把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。
9.软件工程方法学包含3个要素:方法、工具和过程。
方法是完成软件开发的各项任务的技术方法,回答“怎么做”的问题。
工具是为运用方法而提供的自动的伙伴自动的软件工程支撑环境。
过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
10.目前使用最广泛的软件工程方法学是传统方法学和面向对象方法学。
传统方法学(也称生命周期方法学额或结构化范型)。
前一阶段任务的完成是开始进行后一阶段工作的前提和基础,而后一阶段任务的完成通常是使前一阶段提出的揭发更进一步具体化,加进了更多的实现细节。
审查的主要标准就是每个阶段都应该提交“最新式的”高质量的文档资料,从而保证在软件开发工程结束时有一个完整准确的软件配置交付使用。
软件工程总复习
软件工程总复习软件工程是一门研究如何用系统化、规范化、可度量的方法来开发、运行和维护软件的学科。
它涵盖了从软件需求分析、设计、编码、测试到维护的整个软件生命周期。
对于学习软件工程的同学来说,进行总复习是巩固知识、提升能力的重要环节。
首先,让我们来回顾一下软件需求分析。
这是软件开发的第一步,也是至关重要的一步。
需求分析的目的是清晰地理解用户对软件的期望和要求,确定软件需要实现的功能和性能。
在这个阶段,我们需要与用户进行充分的沟通,收集他们的需求,并通过各种方法,如面谈、问卷调查、原型设计等,将这些需求转化为详细的规格说明。
如果需求分析做得不好,就可能导致后续的开发工作出现偏差,甚至开发出不符合用户需求的软件。
接下来是软件设计。
设计阶段要根据需求规格说明,确定软件的体系结构、模块划分、数据结构和算法等。
良好的软件设计应该具有高内聚、低耦合的特点,能够提高软件的可维护性和可扩展性。
设计方法有很多种,比如结构化设计、面向对象设计等。
在设计过程中,要充分考虑软件的性能、安全性、可靠性等方面的要求。
编码是将设计转化为可执行代码的过程。
选择合适的编程语言和开发工具非常重要。
同时,要遵循良好的编程规范,保证代码的可读性、可维护性和可测试性。
在编码过程中,还要注意代码的优化,提高软件的运行效率。
软件测试是保证软件质量的关键环节。
测试包括单元测试、集成测试、系统测试和验收测试等。
单元测试是对软件中的最小单元——模块进行测试,确保每个模块的功能正确。
集成测试是将各个模块组合在一起进行测试,检查模块之间的接口是否正确。
系统测试是在整个系统的层面上进行测试,验证软件是否满足系统的需求。
验收测试则是由用户来进行,确认软件是否符合他们的期望。
软件维护是软件生命周期中持续时间最长的阶段。
在软件交付使用后,可能会出现各种问题,需要对软件进行修改、完善和优化。
维护工作包括纠错性维护、适应性维护、完善性维护和预防性维护。
做好软件维护工作,需要建立有效的维护管理机制,记录软件的变更历史,以便于跟踪和管理。
软件工程复习的几个知识点和例题(1)
1.软件危机的概念,内容,原因及消除的途径;概念:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
内容:○1.对软件开发成本和进度的估计常常很不准确。
○2.用户对“已完成”软件系统不满意的现象经常发生。
○3.软件产品的质量往往靠不住。
○4.软件常常是不可维护的。
○5.软件通常没有适当的文档资料。
○6.软件成本在计算机系统总成本中所占的比例逐年上升。
○7.软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。
原因:一方面与软件本身的特点有关,另一方面也和软件开发与维护的方法不正确有关。
消除的途径:要缓解软件危机,既要有先进的技术和方法,又需要高水平的组织管理措施。
而软件工程正是综合了管理和技术两方面,研究如何更好地开发软件的一门新兴学科。
所以,就目前而言,软件工程是缓解软件危机的最好途径。
2.软件工程的定义,基本原理;定义:软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
基本原理:○1.用分段的生命周期计划严格管理。
○2.坚持进行阶段评审。
○3.实行严格的产品控制。
○4.采用现代程序设计技术。
○5.结果能清楚地审查。
○6.开发小组的人员应尽量少而精。
○7.承认不断改进软件工程实践的必要性。
3.软件工程方法学的基本概念、内容;基本概念:软件工程方法学就是指在软件生命周期全过程中使用的一整套管理和开发技术方法的集合。
○1○2内容:.传统方法学(也称为生命周期方法学或结构化范型).面向对象方法学。
4.软件生命周期的具体内容,每一个阶段的任务是什么?结合具体的工程例子来理解做软件项目主要分那几个阶段。
软件生命周期由定义、软件开发和运行维护3个时期组成,每个时期又进一步划分成若干个阶段。
软件生命周期每个阶段的基本任务:○1.问题定义:问题定义阶段必须回答的关键问题是:“要解决的问题是什么”○2.可行性研究:这个阶段的任务不是具体解决问题,而是研究问题的范围,探索这个问题是否值得去解,是否有可行的解决办法。
软件工程导论复习1
软件工程导论复习1引言软件工程是关于构建和维护大规模软件系统的一门工程学科。
软件工程的目标是通过应用系统性的、可量化的方法来开发和维护软件,以解决软件开发过程中的困难和挑战。
本文档将回顾软件工程导论中的内容,包括软件开发生命周期、需求工程、软件项目管理等方面的知识。
软件开发生命周期软件开发生命周期是指软件开发从规划到交付的整个过程。
常见的软件开发生命周期模型有瀑布模型、迭代模型和敏捷模型等。
1.瀑布模型:瀑布模型是最经典的软件开发生命周期模型。
它将软件开发划分为需求分析、系统设计、编码、测试和维护等阶段,每个阶段都有明确的输入和输出,并按顺序依次进行。
这种模型适用于需求稳定的项目。
2.迭代模型:迭代模型是通过多次迭代的方式进行软件开发。
每次迭代都包括需求分析、系统设计、编码、测试和维护等阶段,但每次迭代的规模相对较小。
迭代模型适用于需求变化频繁的项目。
3.敏捷模型:敏捷模型强调交互和快速响应需求变化。
它通过迭代和增量的方式进行软件开发,注重团队协作和客户参与。
敏捷模型适用于需要快速交付可用软件的项目。
需求工程需求工程是软件工程中的关键过程,它旨在确保软件系统满足用户需求。
需求工程包括需求获取、需求分析、需求规格和需求验证等阶段。
1.需求获取:需求获取是明确用户需求的过程。
它可以通过各种技术和工具来获取用户的需求,如面谈、问卷调查、原型设计等。
2.需求分析:需求分析是对获取的需求进行分析和整理的过程。
它旨在明确用户需求的核心问题,识别需求的优先级和约束条件。
3.需求规格:需求规格是将分析得到的需求转化为形式化的文档,以便于软件开发人员理解和实现。
需求规格通常包括功能需求、非功能需求和约束条件等。
4.需求验证:需求验证是确认需求规格是否满足用户需求的过程。
它可以通过各种验证方法来检查需求规格的正确性和完整性,如模拟和原型测试等。
软件项目管理软件项目管理是指对软件开发项目进行规划、组织、指导和控制,以确保项目按时完成、符合预算和质量要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件的定义:(1)指令的集合,通过执行这些指令可以满足预期的特征、功能和性能需求;(2)数据结构,它使得程序可以充分利用信息;(3)描述程序操作和使用的文档遗留软件的定义:年代久远的过时的软件。
软件如其他工程原则制造的制品的区别:软件传递了我们这个时代最重要的产品——信息。
软件特征和硬件特征的区别:(1)软件是设计开发的,而不是传统意义上生产制造的。
(2)软件不会“磨损”。
(3)虽然整个工业向着基于构件的构造模式发展,然而大多数软件仍是根据实际的顾客需求定制的。
为什么说软件不会随着时间而演化的说法是错误的:不管其应用领域、软件规模或者复杂性如何不同,计算机软件都将随着时间的推移不断演化。
软件维护推动了软件演化,它通常是由以下情况引发的:程序纠错,调整软件以适应新的环境,满足用户新特性和功能的需求,以及对软件实施再工程以便在现代应用中发挥作用。
软件生命周期:软件的产生知道报废的生命周期,包括问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级和废弃。
软件工程的四个层次及之间的关系:工具、方法、过程和质量关注点。
软件工程的根基在于质量关注点;软件工程的基础是过程层;软件工程方法为构造软件提供技术上的解决方法;软件工程工具为过程和方法提供自动或半自动化的支持。
软件工程的主要目标是什么?基本目标是什么?软件工程的目标:从管理和技术两个方面开发和维护计算机软件,用低成本,开发出达标、高性能、易于移植、可靠性高的软件。
软件工程的基本目标是:优质、高产。
软件构建与软件部署的区别:软件构建是程序员对软件进行编码和测试,是基于程序员的;软件部署是用户对软件成品的使用和反馈,是基于客户的。
软件过程的定义:(1)将系统化的、规范的、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。
(2)在(1)所述方法的研究。
软件开发的原型模型的各个阶段:沟通、快速策划、建模快速设计、构建原型和部署交付品及反馈;循环执行以上步骤。
随着时间的推移,为什么软件需要不断演化?(1)环境运行环境的变化(2)用户需求的变化(3)用户业务需求的变化软件工程中基于构件的软件过程模型的主要优势:基于构件开发模型能够使软件复用,软件复用为软件工程师带来极大收益。
在目前环境下,为什么说增量过程模型被认为是最佳的软件开发方法:早期的增量可以有少量的人员实现;增量可以规避技术风险。
------------------------------------------------------------------------------------------------------------------------------------------------------------软件工程的通用框架以及框架活动:沟通、策划、建模、构建和部署;其中建模包括创建模型和设计,构建包括编码和测试。
惯例模型:规定了一套过程元素(框架活动、软件工程动作、任务、工作产品、质量保证以及每个项目的变更控制机制)①瀑布模型定义:传统软件工程方法学的软件过程,基本上可以用瀑布模型来描述。
瀑布模型的特点:1.阶段间具有顺序性和依赖性;2.推迟实现的观点;3.质量保证的观点。
瀑布模型的成功在很大程序上是由于它基本上是一种文档驱动的模型。
瀑布模型的主要优点:a.可强迫开发人员采用规范的技术方法;b.严格地规定了每个阶段必须提交的文档;c.每个阶段结束前必须正式进行严格的技术审查和管理复审。
瀑布模型的主要缺点:在可运行的软件产品交付给用户之前,用户只能通过文档来了解未来的产品是什么样的。
开发人员和用户之间缺乏有效的沟通,很可能导致最终开发出的软件产品不能真正满足用户的需求。
②快速原型模型定义:所谓“快速原型”,是快速建立起来的、可在计算机上运行的程序,它所能完成的功能往往是最终的软件产品所能完成的功能的子集。
原型是软件开发人员与用户沟通的强有力工具,因此有助于所开发出的软件产品满足用户的真实需求。
快速原型模型的主要优点是:A.使用这种软件过程开发出的软件产品通常能满足用户的真实需求;B. 软件产品的开发过程基本上是线性顺序过程。
③增量模型定义:增量模型也称为渐增模型增量模型的主要优点:A.能在较短时间内向用户提交可完成部分工作的产品;B.逐步增加产品功能,从而使用户有较充裕的时间学习和适应新产品,减少一个全新的软件给客户组织带来的冲击。
④螺旋模型定义:螺旋模型的基本思想是,使用原型及其他方法尽量降低风险。
理解这种模型的一个简便方法,是把它看作在每个阶段之前都增加了风险分析过程的快速原型模型。
螺旋模型所描述的软件过程主要适用于内部开发的大型软件项目。
使用螺旋模型开发软件,要求软件开发人员具有丰富的风险评估知识和经验。
螺旋模型主要有下述优点:A.有利于已有软件的重用;B.有助于把软件质量作为软件开发的一个重要目标;C.减少了过多测试或测试不足所带来的风险;D.软件维护与软件开发没有本质区别。
⑤喷泉模型定义:迭代是软件开发过程中普遍存在的一种内在属性。
在面向对象范型中,软件开发过程各阶段之间的迭代或同一阶段内各个工作步骤之间的迭代,比在结构化范型中更常见。
喷泉模型,是典型的面向对象生命周期模型,它充分体现了面向对象软件开发过程迭代和平滑过渡的特性。
叙述UP的5个阶段:起始:包括客户沟通和策划活动;细化:包括用户沟通和通用过程模型的建模活动;构建:包括编码和测试;转换:包括通用构建活动的后期阶段以及第一部分通用部署活动;生产:与通用过程的部署活动一致。
------------------------------------------------------------------------------------------------------------------------------------------------------------ 敏捷宣言:(1)个体和交互胜过过程和工具(2)可工作软件胜过宽泛的文档(3)客户合作胜过合同谈判(4)响应变化胜过遵循计划敏捷过程的三个假设(及敏捷过程):提前预测哪些需求是稳定的,哪些需求容易变更是很困难的,同样预测项目经行中客户的优先级的变更也是困难的2)对很多软件来说,设计和构建是交错进行的3)从制定计划的角度看,分析,设计,构建和测试并不向我们设想中那样容易预测敏捷原则(12项)敏捷团队的特点(成员及团队特点)XP 五要素掌握XP的阶段:使用面向对象方法作为推荐的开发范型。
包括策划、设计、编码和测试敏捷的实用技术,如重构、结对、敏捷建模等重构的定义:在编码完成之后改进代码设计。
IXP的6个实践主要的敏捷模型:XP,ASD,DSDM,SCRUM,Crystal,FDD,LSD敏捷建模的特点敏捷统一过程(AUP):建模,实现,测试,部署,配置管理及项目管理,环境管理------------------------------------------------------------------------------------------------------------------------------------------------------------ 需求工程的7个活动:起始,导出,精化,协商,规格说明,确认,需求管理需求工程的目的和任务:理解客户需求,分析要求,评估可行性,协商合理的方案,无歧义地详细说明方案,确认规格说明,管理需求以至将这些需求转化为可运行系统。
需求模型的元素:基于场景的元素,基于类的元素,行为元素,面向数据流的元素需求模型的3个主要目标:UML活动图,ERD(ER图,实体关系图),CRC模型,DFD图分析建模的元素有那些?基于场景的元素(用例文本、用例图(UML)、活动图(UML));面向数据流的元素(数据流图(DFD)、控制流图、处理描述);基于类的元素(类图(UML),分析包、CRC模型、协作图(UML));行为元素((UML)状态图、(UML)顺序图)给出一个完整的软件设计包括的4个设计模型并描述每个设计模型的作用数据设计(描述用户的观点的高层模型);体系结构设计(表示系统成分的关系和协作);接口设计(刻画一组用于描述一个类外部可见行为的操作);构件级设计(构件内部详细描述)如何评价设计:(1)设计必须实现所有包含在分析模型中的明确需求,而且必须满足客户期望的所有隐含需求。
(2)对于那些生成代码的人和那些进行测试以及随后维护软件的人而言,设计必须是可读的、可理解的指南。
(3)设计必须提供软件的全貌,从实现的角度说明数据域、功能域和行为域。
软件质量属性:FURPS组织良好的设计类的特征:完整性与充分性,原始性,高内聚性,低耦合性内聚性,耦合性。
完整的设计规约应该包含哪四个设计模型:(1)体系结构元素(2)接口元素(3)构件级元素(4)部署级元素软件体系结构:软件体系结构的作用:(1)对设计在满足既定需求方面的有效性进行分析(2)在设计变更相对容易的阶段,考虑体系结构可能的选择方案(3)降低与软件构造相关的风险软件体系结构的重要性:体系机构的风格:(1)以数据为中心的体系结构(2)数据流体系结构(3)调用和返回体系结构(4)面向对象体系结构(5)层次体系结构数据流映射(变换映射):UI黄金原则:(1)置用户与控制之下。
(2)减少用户的记忆负担。
(3)保持界面一致用户界面分析和设计过程:四个框架活动(1)界面分析及建模(2)界面设计(3)界面构造(4)界面确认框架活动迭代进行,类似螺旋模型。
软件质量保证的要素:标准,评审和审核,错误/缺陷的收集分析,变更管理,教育,供应商管理,安全管理,安全,风险管理软件质量保证任务:编制项目质量保证计划;参与项目的软件过程描述的编写;评审软件工程活动,以验证是否符合规定的软件过程;评审制定的软件工作产品以验证是否遵循作为软件过程一部分的那些规定;确保根据文档化的规程记录和处理软件工作和工作产品中的偏差;记录各种不符合项并报告给高层管理人员。
驱动程序只是一个“主程序”,它接受测试用例数据,将这些数据传递给构件并打印相关结果。
桩程序的作用是替换那些从属于被测构件的模块或被其调用的模块。
简述软件测试策略的螺旋模型:单元测试、集成测试、确认测试、系统测试单元测试:侧重于软件设计的最小单元的验证工作。
集成测试:是构造软件体系结构的系统化技术,同时也是进行一些旨在发现与接口相关的错误的测试。
(1)自顶向下集成1.主控模块用做测试驱动模块,用直接从属于主控模块的所有模块代替桩模块2.依靠所选择的集成方法(深度优先或者广度优先),每次用实际模块替换一个从属桩模块3.集成每个模块后都进行测试4.在完成每个测试集之后,用实际模块替换另一个桩模块5.可以执行回归测试以确保没有引入新的错误(2)自顶向上集成测试1.连接底层构件以后成完成特定功能的簇2.编写驱动模块(测试的控制程序)以协调测试用例的输入和输出3.测试簇4.去掉测试簇,沿着程序结构向上逐步连接簇(3)回归测试(4)冒烟测试确认测试:始于集成测试的结束,那时已测试完单个构件,软件已组装成完整的软件包,且接口错误已被发现和改正。