软件工程考试复习资料
- 格式:doc
- 大小:36.00 KB
- 文档页数:3
可编辑修改精选全文完整版一、单选题(共20题,40分)1、使用数据流图,并不断细化的需求获取方法是()。
(2.0)A、简易的应用规格说明B、面向数据流自顶向下逐步求精C、访谈D、快速原型法正确答案: B2、Z语言是以()为基础的形式化规格说明语言。
(2.0)A、微积分B、概率C、图形D、一阶谓词演算正确答案: D3、HIPO是指(2.0)A、层次输入处理输出图或表B、层次功能结构图C、功能结构图D、输入处理输出图或表正确答案: A4、高铁调用系统最适宜采用()方法。
(2.0)A、有穷状态机B、 Petri网C、 Z语言D、一阶线性时态逻辑正确答案: B5、假设学生年龄的成绩输入范围为18-25,则根据等价类划分技术,下列划分正确的是()。
(2.0)A、可划分为2个有效等价类,2个无效等价类B、可划分为1个有效等价类,2个无效等价类C、可划分为2个有效等价类,1个无效等价类D、可划分为1个有效等价类,1个无效等价类正确答案: B6、用于并发系统,解决定时问题的形式化方法是()。
(2.0)A、 VDMB、 Z语言C、 Petri网D、一阶线性时态逻辑正确答案: C7、软件生命周期中所花费费用最多的阶段是(2.0)A、需求分析B、软件总体设计C、软件维护D、软件实现正确答案: C8、软件质量保证措施SQA不包括:(2.0)A、复审或评审B、软件测试C、程序正确性证明D、软件代码编写正确答案: D9、希望确定软件实现的功能是否与需求规格说明书一致,需进行()。
(2.0)A、单元测试B、有效性测试C、确认测试D、集成测试正确答案: C10、总体设计不包括:(2.0)A、体系结构设计B、数据库设计C、模块内算法设计D、逻辑数据结构设计正确答案: C11、关于类和对象的说法,正确的是(2.0)A、一个类只能有一个角色B、类的命名必须用动词C、类的所有对象都具有相同的属性和操作D、类是对象的实例,对象是类的抽象正确答案: C12、数据字典的基本功能是(2.0)A、数据库设计B、数据通信C、数据定义D、数据维护正确答案: C13、软件需求规格说明的内容不应该包括(2.0)A、主要功能B、算法的描述C、用户界面及其运行环境D、软件性能正确答案: B14、增量模型在添加新的模块时,有一个要求是()(2.0)A、需要更多的测试B、有足够的开发人员C、软件体系结构开放D、各个模块都要进行评审正确答案: C15、在软件详细设计过程中不采用的工具是(2.0)A、判定表B、PDLC、程序流程图D、DFD正确答案: D16、软件测试方法中,黑盒测试方法和白盒测试方法是常用的方法,其中黑盒测试方法主要用于测试(2.0)A、结构合理性B、软件外部功能C、程序正确性D、程序内部逻辑正确答案: B17、耦合是模块之间的相对独立性的度量。
作业1:1. 软件是计算机系统中与硬件相互依存的另一部分,它是包括( A )、( B )及( C )的完整集合。
其中,( A )是按事先设计的功能和性能要求执行的指令序列。
( B )是使程序能够正确操纵信息的数据结构。
( C )是与程序开发、维护和使用有关的图文材料。
供选择的答案:A~C. ①软件②程序③代码④硬件⑤文档⑥外设⑦数据⑧图表2. 开发软件时对提高软件开发人员工作效率至关重要的是( A )。
软件工程中描述生存周期的瀑布模型一般包括计划、( B )、设计、编码、测试、维护等几个阶段,其中设计阶段在管理上又可以依次分成( C )和( D )两步。
供选择的答案:A.①程序开发环境②操作系统的资源管理功能③程序人员数量④计算机的并行处理能力B.①需求分析②需求调查③可行性分析④问题定义C、D.①方案设计②代码设计③概要设计④数据设计⑤运行设计⑥详细设计⑦故障处理设计⑧软件体系结构设计3. 从供选择的答案中选出适当字句填入下列关于软件发展过程的叙述中的( )内。
有人将软件的发展过程划分为4个阶段:第一阶段(1950~1950年代末)称为“程序设计的原始时期”,这时既没有( A ),也没有( B ),程序员只能用机器指令编写程序。
第二阶段(1950年代末~1960年代末)称为“基本软件期”。
出现了( A ),并逐渐普及。
随着( B )的发展,编译技术也有较大的发展。
第三阶段(1960年代末~1970年代中期)称为“程序设计方法时代”。
这一时期,与硬件费用下降相反,软件开发费急剧上升。
人们提出了( C )和( D )等程序设计方法,设法降低软件的开发费用。
第四阶段(1970年代中期~现在)称为“软件工程时期”。
软件开发技术不再仅仅是程序设计技术,而是包括了与软件开发的各个阶段,如( E )、( F )、编码、单元测试、综合测试、( G )及其整体有关的各种管理技术。
供选择的答案:A ~ D:①汇编语言②操作系统③虚拟存储器概念④高级语言⑤结构式程序设计⑥数据库概念⑦固件⑧模块化程序设计E ~ G:①使用和维护②兼容性的确认③完整性的确认④设计⑤需求定义⑥图象处理4. 软件工程过程有哪几个基本过程活动?试说明之。
软件工程考试题及答案一、单项选择题(每题2分,共20分)1. 软件工程的三要素不包括以下哪一项?A. 工具B. 方法C. 过程D. 环境答案:D2. 软件需求分析阶段的主要任务是确定软件的()。
A. 功能需求B. 性能需求C. 界面需求D. 所有选项答案:D3. 软件测试的目的是()。
A. 发现软件中的错误B. 证明软件是正确的C. 验证软件是否满足需求D. 所有选项答案:D4. 以下哪一项不是软件维护的类型?A. 纠错性维护B. 适应性维护C. 完善性维护D. 开发性维护答案:D5. 软件项目管理的主要目标是()。
A. 提高软件质量B. 控制成本C. 缩短开发周期D. 所有选项答案:D6. 瀑布模型的主要缺点是()。
A. 缺乏灵活性B. 难以适应需求变化C. 无法并行开发D. 所有选项答案:D7. 敏捷开发方法的核心理念是()。
A. 以文档为中心B. 以人为中心C. 以过程为中心D. 以工具为中心答案:B8. 软件配置管理的主要目的是()。
A. 确保软件的一致性B. 跟踪软件的变更C. 控制软件的版本D. 所有选项答案:D9. 以下哪一项不是软件工程的原则?A. 抽象B. 模块化C. 复用D. 随机性答案:D10. 软件工程的目标是()。
A. 开发高质量的软件B. 提高软件生产率C. 降低软件成本D. 所有选项答案:D二、多项选择题(每题3分,共15分)1. 软件需求分析阶段可能包括以下哪些活动?A. 需求收集B. 需求分析C. 需求规格说明D. 需求验证答案:ABCD2. 软件测试的类型包括以下哪些?A. 单元测试B. 集成测试C. 系统测试D. 验收测试答案:ABCD3. 软件维护的常见原因包括以下哪些?A. 适应环境变化B. 修正软件缺陷C. 提高软件性能D. 增加新功能答案:ABCD4. 软件项目管理的关键活动包括以下哪些?A. 项目规划B. 项目监控C. 项目沟通D. 风险管理答案:ABCD5. 软件工程中的常见开发模型包括以下哪些?A. 瀑布模型B. 螺旋模型C. 敏捷模型D. 增量模型答案:ABCD三、判断题(每题2分,共10分)1. 软件工程的目标是开发出零缺陷的软件。
第一章1、软件概念:由计算机程序,数据,软件文档组成软件的特点:无法直接观察它的物理形态,只能通过观察他的是实际运行情况来了解他的功能特性和质量等;人们在分析设计开发测试过程以及软件开发项目的管理过程中渗透了大量的人类的脑力劳动;不存在磨损和老化但存在缺陷维护和技术更新的问题;开发运行依赖一定的计算机系统环境;具有可复用性软件的分类:按功能分:系统支撑应用软件;按服务对象:通用定制软件;按规模:大中小型软件;按工作方式:实时分时交互式批处理2、软件危机:是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件的开发与维护过程中出现一系列严重问题的现象。
主要表现:●开发人员开发的软件产品不能完全满足用户的需求;●软件产品的质量难以得到保障;●开发周期开发经费和维护费用很难被准确估计从而给项目的管理带来很多麻烦;●随着技术的更新,用户的扩大,已有的软件产品不能灵活地适应环境的改变;●软件文档不完备并且存在文档内容与软件产品不符的情况。
原因:①软件开发是一项复杂的工程,需要用科学的工程化思想来组织和指导软件开发的各个阶段②没有完善的质量保证体系③软件文档的重要性没有得到软件开发人员和用户的足够重视④从事软件开发的专业人员对这个产业认识不够充分缺乏经验⑤软件独有的特点也给软件的开发和维护带来困难3、软件工程是指应用计算机科学与技术,数学和管理学的原理,运用工程学理论方法和技术,研究和指导软件开发和演化的一门交叉学科。
软件工程的目标:●使软件开发的成本控制在预计的合理范围内;●使软件产品的各项功能和性能能够满足用户需求;●提高软件产品的可靠性;●使生产出来的软件产品易于移植维护升级和使用;●使软件产品的开发周期能够控制在预计的合理时间范围内。
软件工程学科内容:●软件工程原理过程方法模型管理度量环境应用。
软件工程的基本原则:●将软件的生命周期划分为多个阶段,对各个阶段实施严格的项目管理;●坚持阶段评审制度已确保软件产品的质量;●实施严格的产品控制以适应软件规格的变更;●采用现代程序设计技术;开发出来的产品应该能够清楚地被审查;●合理地安排软件开发小组人员并且开发小组的人员要少而精;●不断改进软件工程的实践。
2024年软件工程开发等专业技能知识考试题库(附含答案)一、单选题1.数据流图是进行软件需求分析的常用图形工具,其基本图形符号是( )。
A.输入、输出、外部实体和加工B.变换、加工、数据流和存储C.加工、数据流、数据存储和外部实体D.变换、数据存储、加工和数据流参考答案:C2.集成测试的主要方法有两个,一个是()一个是()。
A.白盒测试方法、黑盒测试方法B.等价类划分方法、边缘值分析方法C.渐增式测试方法、非渐增式测试方法D.因果图方法、错误推测方法参考答案:C3.软件文档是软件工程实施的重要成分,它不仅是软件开发各阶段的重要依据,而且也影响软件的( )。
A.可用性B.可维护性C.可扩展性D.可移植性参考答案:B4.面向对象设计阶段的主要任务是系统设计和( )。
A.结构化设计B.数据设计C.面向对象程序设计D.对象设计参考答案:D5.包含风险分析的软件工程模型是( )。
A.喷泉模型B.瀑布模型C.增量模型D.螺旋模型参考答案:D6.Jackson方法根据()来导出程序结构。
A.数据流图B.数据间的控制结构C.数据结构D.IPO图参考答案:C7.需求工程的主要目的是( )。
A.系统开发的具体方案B.进一步确定用户的需求C.解决系统是“做什么的问题”D.解决系统是“如何做的问题”参考答案:C8.只有类的共有界面的成员才能成为使用类的操作,这是软件设计的( )原则。
A.过程抽象B.信息隐藏C.功能抽象D.共享性参考答案:B9.下列哪项不是风险管理的过程?( )。
A.风险规划B.风险识别C.风险评估D.风险收集参考答案:D10.在分层体系结构中,( )实现与实体对象相关的业务逻辑。
A.表示层B.持久层C.实体层D.控制层参考答案:D11.下列选项中不属于CI管道的是()。
A.构建B.模拟C.单元测试D.集成测试参考答案:B12.应该在( ),确定对象类中应有的服务。
A.建立对象模型之时B.建立动态模型和功能模型之后C.建立功能模型之后D.建立动态模型之后参考答案:B13.需求分析的主要方法有( )。
软件工程基础考试(答案见尾页)一、选择题1. 软件工程的基础是什么?A. 程序设计B. 数据结构C. 计算机科学D. 需求分析2. 软件开发过程中,需求分析和系统设计的关系是什么?A. 需求分析是系统设计的依据B. 需求分析和系统设计同时进行C. 需求分析在系统设计之后进行D. 需求分析和系统设计没有必然联系3. 软件工程的三个层次及其在软件开发过程中的作用是什么?A. 应用层、系统层、理论层B. 物理层、数据层、逻辑层C. 需求层、设计层、实施层D. 开发层、测试层、维护层4. 软件开发生命周期(SDLC)的概念是什么?它包括哪几个阶段?A. 软件开发生命周期是指软件的开发过程B. SDLC包括需求分析、设计、编码、测试和维护C. SDLC是一个线性的过程D. SDLC各阶段按顺序进行,不具备迭代性5. 什么是敏捷开发方法?它与其他开发方法的区别是什么?A. 敏捷开发是一种快速开发的软件开发方法B. 敏捷开发强调团队合作和客户参与C. 敏捷开发适合大规模软件项目D. 敏捷开发与其他开发方法的区别在于流程管理6. 什么是面向对象编程(OOP)?请列举OOP的三个基本特征。
A. 封装、继承、多态B. 封装、继承、抽象C. 封装、多态、接口D. 继承、多态、接口7. 数据库管理系统(DBMS)在软件开发中的作用是什么?A. 存储和管理数据B. 提供数据查询和修改功能C. 数据库管理员(DBA)负责DBMS的管理和维护D. 所有选项都正确8. 什么是版本控制?请简述版本控制的两种主要策略。
A. 版本控制是一种软件配置管理技术B. 版本控制可以跟踪软件项目的变更C. 版本控制的主要策略有Git和SVND. 版本控制确保软件代码的安全性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. ISO 9000B. CMMIC. PMBOKD.软件开发生命周期(SDLC)15. 在软件工程中,测试的目的是什么?A. 证明软件的正确性B. 找出软件中的错误C. 提高软件的质量D. 规范软件的开发过程16. 软件工程中的“软件生命周期”通常包括哪几个阶段?A. 开发B. 运行C. 维护17. 软件工程中,版本控制的主要作用是什么?A. 监控软件的修改历史B. 管理软件的版本C. 确保软件的一致性D. 保证软件的可靠性18. 软件工程中,敏捷开发方法是一种以人为核心、迭代、循序渐进的开发方法,它的核心价值包括:A. 个体和互动跨功能团队B. 可用的软件客户合作C. 响应变化随时间进化D. 面向结果19. 在软件工程中,UML(统一建模语言)是一种用于描述、构造和编写软件系统的图形化语言,它通常用于以下哪个阶段?A. 需求分析B. 设计C. 编码D. 测试20. 软件工程的定义是什么?A. 软件工程是一门研究用工程化方法构建和维护有效、实用和高质量的软件的学科。
《软件工程》试题参考答案(1)卷一、单向选择题(四选一、每小题3分,共18分)1、需求分析的任务不包括(B)。
A.问题分析B.系统设计C.需求描述D.需求评审。
2、当模块中包含复杂的条件组合,只有( A)能够清晰地表达出各种动作之间的对应关系。
0802A.判定表和判定树C.流程图3、以下不属于逻辑覆盖的是(D)。
1402A.语句覆盖C.条件覆盖B.盒图D 关系图B.判定覆盖D.基本路径4、为适应软件运行环境的变化而修改软件的活动称为( B)。
1501A.纠错性维护B.适应性维护C.改善性维护 D 预防性维护二、填空题(每空2分,共18分)1. 软件可靠性是指在给定的时间间隔内,程序成功运行的(概率)。
01012. 高级语言:独立于机器,面向过程或面向(对象)01013. 软件项目管理的范围主要集中于 3 个P 上,即:People 人员、Problem 问题和(过程)。
02014. 由于维护或在维护过程中其他一些不期望的行为引入的错误称为维护的(副作用)。
15045. 在公式V(G) = E – N + 2 中: E 为程序图G 中边的总数;N 为程序图中结点的总数。
V(G)又称为图 G 的环形(复杂度)0204。
6. 任何一个基于计算机系统都可以用输入-处理-输出(IPO)图来描述,它将该系统转换成一个信息变换模型。
03037. 为提高可交互性一般对所有可能造成损害的用户操作动作,应坚持要求用户(确认),例如,提问“你确实要删除…?”。
12048. 文档是一种数据媒体和其上所记录的(数据)。
0101三、判断题(每小题2分,共24分,错误打X、正确打√)1. 用户对软件需求的描述不准确,往往是产生软件危机的原因之一。
(√)01022. 一个好的开发人员应具备的素质和能力包括善于与周围人员团结协作,建立良好的人际关系,善于听取别人的意见。
(√)02063. 目前的绝大多数软件都不适合于快速原型技术。
软件工程复习大纲考试主要章节:第一章软件与软件工程第二章软件项目管理第三章计算机系统工程第3.2节第五章面向数据流的分析方法第八章软件设计基础第十四章软件测试其他:上课讲义题型一、选择题(单选或多选)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、需求分析的主要目的是(BC)。
A) 系统开发的具体方案B) 进一步确定用户的需求C) 解决系统是“做什么的问题”D) 解决系统是“如何做的问题”7、SA法的主要描述手段有(B)。
A) 系统流程图和模块图B) DFD图、数据词典、加工说明C) 软件结构图、加工说明D) 功能结构图、加工说明8、画分层DFD图的基本原则有(ACD)。
A) 数据守恒原则B) 分解的可靠性原则C) 子、父图平衡的原则D) 数据流封闭的原则9、在E-R模型中,包含以下基本成分(C)。
A) 数据、对象、实体B) 控制、联系、对象C) 实体、联系、属性D) 实体、属性、联系10、画DFD图的主要目的是(A D)。
A) 作为需求分析阶段用户与开发者之间交流信息的工具B) 对系统的数据结构进行描述C) 对目标系统的层次结构进行描述D) 作为分析和设计的工具11、数据字典是数据流图中所有元素的定义的集合,一般由以下四类条目组成(C)。
软件工程复习资料第一篇:软件工程复习资料软件工程复习资料一、熟悉和理解(一)软件工程概述1.螺旋模型是在瀑布模型和增量模型的基础上增加了风险分析活动,关键不足在于不能适应需求的动态变更。
2.软件不只是用程序设计语言(如PASCAL ,C,VISUAL BASIC 等)编写的程序,编写程序代码只是软件开发的一个部分。
3.快速原型模型可以有效地适应用户需求的动态变化。
4.生产高质量的软件产品是软件工程的首要目标。
5.软件开发人员对用户需求的理解有偏差,这将导致软件产品与用户的需求不一致,是产生软件危机的一个原因。
6.开发一个软件项目总存在某些不确定性,即存在风险.有些风险如果控制得不好,可能导致灾难性的后果。
7.缺乏处理大型软件项目的经验.是产生软件危机的一个原因。
8.瀑布模型本质上是一种线性顺序模型,增量模型本质上是一种快速原型模型。
9.可行性分析是在系统开发的早期所做的一项重要的论证工作,它是决定该系统是否开发的决策依据,因必须给出可行或不可行的回答。
10.软件生存周期模型包括瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型等。
11.软件是一种逻辑产品。
12.“软件危机”是指软件开发和维护中出现的一系列问题,成本高、生产率低、质量得不到保证、需求不能充分理解都是是软件危机的表现形式。
13.原型化方法是用户和设计者之间执行的一种交互过程,适用于需求不确定性高的系统。
14.软件工程中的各种方法是完成软件工程项目的技术手段,它们支持软件工程的各个阶段.15.研究开发所需要的成本和资源是属于可行性研究中的经济可行性研究的一方面。
16.快速原型模型的主要特点之一是及早提供工作软件。
17.软件工程由方法,工具和过程三部分组成,称软件工程的三要素.18.基于计算机系统的软件要素中的软部件由程序,数据和文档组成.19.瀑布模型是以文档为驱动、适合于软件需求明确的软件项目的模型。
20.螺旋模型是风险驱动的,而瀑布模型是文档驱动的。
《软件工程作业》考试复习题库(含答案)一、选择题1. 软件工程的三要素不包括以下哪项?A. 软件开发B. 软件维护C. 软件管理D. 软件设计答案:B2. 下列哪种编程范式主要用于软件工程中的面向对象编程?A. 命令式编程B. 函数式编程C. 面向对象编程D. 逻辑编程答案:C3. 在软件开发过程中,以下哪个阶段产生的文档最多?A. 需求分析B. 设计C. 编码D. 测试答案:A4. 以下哪个软件工程方法学强调在软件开发过程中使用迭代和增量开发?A. 敏捷开发B. 水晶方法C. 瀑布模型D. 敏捷开发与水晶方法的结合答案:A5. 以下哪个工具常用于软件需求分析阶段的模型建立?A. UML图B. 数据流程图C. 状态转换图D. 时序图答案:B二、填空题1. 软件工程的目的是提高软件的______、______和______。
答案:可用性、可靠性、可维护性2. 软件开发生命周期包括______、______、______、______和______。
答案:需求分析、设计、编码、测试、维护3. 在软件需求分析阶段,常用的方法有______、______和______。
答案:数据流程图、实体关系图、状态转换图4. 软件设计分为______设计和______设计。
答案:架构设计、详细设计5. 软件测试的目的不包括以下哪项______。
答案:找出软件的错误三、判断题1. 软件工程是计算机科学的一个分支。
()答案:正确2. 软件工程适用于所有类型的软件开发项目。
()答案:错误3. 敏捷开发方法适用于所有类型的软件开发项目。
()答案:错误4. 软件测试是软件开发过程中的最后一个阶段。
()答案:错误5. 软件维护是软件开发过程中的重要环节。
()答案:正确四、简答题1. 简述软件工程的定义及目标。
答案:软件工程是应用计算机科学、数学原理和方法来设计、开发、测试和维护软件的一门学科。
其目标包括提高软件的可用性、可靠性和可维护性,降低软件开发成本,提高软件开发效率。
软件,其特点:软件是一系列按照特定顺序组织的计算机数据和指令的集合。
简单的说软件是程序加文档的集合,程序设计的最终结果是软件。
软件危机的定义:软件危机是指在计算机软件开发和维护的过程中所遇到的一系列的严重问题。
软件危机的典型表现:(1)对软件开发的成本估计常常很不准确(2)对“已完成”的软件系统用户不满意的现象经常发生。
(3)软件产品的质量往往靠不住。
(4)软件常常是不可维护的。
(5)软件通常没有适当的文档资料。
(6)软件成本在计算机系统总成本中所占的比例逐年上升。
(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入趋势。
1、产生软件危机的原因?答:一方面:与软件本身的特点有关。
软件缺乏可见性,软件不同于一般程序,它的一个显著特点是规模庞大,而且程序复杂性将随着程序规模的增加而呈指数上升;另一方面:和软件开发与维护的方法不正确有关。
目前一些软件专业人员对软件开发和维护还有不少糊涂观念,或多或少采用错误的方法和技术,对用户要求没有准确认清也是主要原因之一。
软件工程的定义:软件工程是指导计算机软件开发和维护的一门工程学科。
采用工程的概念、原理、技术和方法,把经过时间证明了的正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济的开发出高质量的软件并有效地维护它,这就是软件工程。
软件工程的本质特性:1、软件工程关注于大型程序构造。
2、软件工程的中心课题是控制复杂性。
3、软件经常变化4、开发软件的效率非常重要5、和谐的合作是开发软件的关键6、软件必须有效地支持它的用户7、在软件工程领域中通常由具有一种文化背景的人替具有另一种文化背景的人创造产品软件工程的基本原理:1、用分阶段的生命周期计划严格管理2、坚持进行阶段评审3、实行严格的产品控制4、采用现代程序设计技术5、结果应能清楚地审查6、开发小组的成员应该少而精7、承认不断改进软件工程实践的必要性。
软件工程方法学3个要素:方法,工具,过程2、软件生命周期分为那几个阶段?答:1软件定义(问题定义、可行性研究、需求分析)2.软件开发(总体设计、详细设计、编码和单元测试、综合测试)3软件维护(使软件持久地满足用户的需求)软件定义的任务是:确定开发工程必须完成的总目标;确定工程的可行性;导出实现工程的策略及系统必须完成的功能;估计完成该项工程需要的资源和成本,并且制定工程进度表。
软件开发的时期的任务是:具体设计和实现前一个时期定义的软件。
通常由四阶段组成:总体设计,详细设计,编码和单元测试,综合测试。
维护时期的任务:使软件持久的满足用户的需要。
3、瀑布模型的特点及优缺点?答:特点:1、阶段间具有顺序性和依赖性2、推迟实现的观点3、质量保证的观点。
优点:可强迫开发人员采用规范的方法;严格的规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小组的仔细验证。
缺点:在可运行的软件产品交付给用户之前,用户只能通过文档来了解产品的情况。
增量模型的优点:能在较短的时间内向用户提交课完成部分工作的产品;逐步增加产品功能可以使用户有几较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击。
增量模型是分期分批的逐步向用户提交产品。
缺点:把每个新的增量构建集成到现有软件体系结构中时,必须不破坏已经开发出的产品。
风险大。
增量模型适用于工期紧人员少。
可行性研究的目的:不是研究怎样去解决问题,而是研究问题是否值得去解决。
用最小的代价在尽可能短的时间内确定问题是否能解决。
可行性研究的任务:对以后的行动方针提出建议。
实质上是要进行一次大大压缩简化了的系统分析和设计的过程,也就是在较高层次上以较抽象的方式进行的系统分析和设计的过程。
可性行研究的过程:1·复查系统规模和目标2·研究目前正在使用的系统3·导出新系统的高层逻辑模型4·进一步定义问题5·导出和评价供选择的解法6·推荐行动方针7·草拟开发计划8·书写文档提交审查系统流程图的基本思想:用图形符号以黑盒子形式描绘组成系统的各个部件(程序、文档、数据库、人工过程等)。
数据流图的基本思想:描绘信息流和数据从输入移动到输出所经受的变换。
数据流图的4种成分:源点或终点(正方形表示),变换数据的处理(圆角矩形或圆形表示)数据存储(开口矩形或两条平行线表示),数据流(箭头表示)。
数据字典:是关于数据的信息集合,也就是对数据流图中包含的所有元素的定义的集合。
主要内容是数据流、数据元素、数据存储、处理。
衡量一项工程开发价值的经济指标:投资回收期,纯收入需求分析的任务:1,确定对系统的综合要求2.分析系统的数据要求3.导出系统的逻辑模型4.修正系统开发计划确定对系统的综合要求的内容:1.功能需求2.性能需求3.可靠性和可用性需求4.出错处理需求5.接口需求6约束7.逆向需求8.将来可能提出的要求与用户沟通获取需求的方法:1.访谈(看情景分析)2.面向数据流自顶向下求精3.简易的应用规格说明技术(步骤)4.快速建立软件原型。
12.情景分析技术的用处?答:他能在某种程度上演示目标系统的行为,便于用户理解,进一步揭示出一些分析员目前还不知道的需求;保证用户在需求分析过程中始终扮演一个积极主动的角色。
13.数据对象:是对软件必须理解的复合信息的抽象。
简易的应用规格说明技术:是一种面向团队的需求收集法需求分析过程应该建立的3种模型:数据模型、功能模型和行为模型第一范式定义:每个属性值都必须是原子值,即仅仅是一个简单值不含内部结构。
第二范式:满足第一范式条件且每个关键字属性都由整个关键字决定。
第三范式:符合第二范式条件,每个非关键字属性都由关键字决定,一个非关键字属性值不依赖于另一个非关键字属性值。
从哪些方面验证需求的正确性:1.一致性2、完整性3、现实性4、有效性总体设计的任务:设计软件结构,确定系统中每个程序是由那些模块组成的以及模块间相互关系。
总体设计的两个阶段:系统设计阶段(确定系统的具体实现方案)结构设计阶段(确定软件结构)。
模块:模块是由边界元素限定的相邻程序元素(例如,数据说明,可执行的语句)的序列,而且有一个总体标识符代表它。
为什么进行模块化:采用模块化原理可以使软件结构清晰,不仅容易设计也容易阅读和理解。
模块的独立程度可以由两个定性标准度量,这两个标准分别成为内聚和耦合。
耦合是对一个软件结构内不同模块之间互联程度的度量。
耦合的类型:数据耦合,特征耦合,公共环境耦合,内容耦合内聚标志着一个模块内各个元素彼次结合的紧密程度,它是信息隐藏和局部化概念的自然扩展。
内聚分为低内聚(偶然内聚,逻辑内聚,时间内聚)和中内聚(过程内聚和通信内聚)启发规则:1.改进软件结构提高模块独立性2.模块规模应该适中3.深度、宽度、扇入和扇出都应适当 4.模块的作用域应该在控制域之内5.力争降低模块接口的复杂度6、设计单入口单出口的模块7、模块功能应该可以预测。
变换流定义:信息沿输入通道进入系统,,同时由外部形势变换成内部形势,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形势离开软件系统。
事物流:沿输入通道到达一个处理T,这个处理根据输入数据的类型在若干个动作序列中选出一个来执行。
设计优化过程:1·在不考虑时间因素的前提下开发并精简软件结构。
2·在详细设计阶段选出耗费时间的那些模块,仔细设计它们过程,来提高效率3·使用高级程序语言编程。
4·在软件中孤立那些大量占用处理机的模块5·必要时重新设计或用依赖于机器的语言写上述占用大量资源的模块代码,来提高效率。
结构程序设计的定义:尽可能少用GO TO 语句的程序设计方法,最好仅在检测出错误时使用,且总是使用前向GO TO 语句。
经典的结构程序设计:只允许使用顺序。
IF-THEN-ELSE型分支和DO-WILE型循环这三种基本控制结构。
扩展的结构程序设计:除三种基本控制结构外允许使用DO-CASE型多分支结构和DO-UNTIL型循环结够修正的结构程序设计:再允许使用LEAVE(或BREKA)结构。
设计人机界面的过程中遇到的问题:系统响应时间,用户帮助设施,出错信息处理和命令交互。
系统响应时间有两个重要属性,分别是长度和易变性。
软件测试的目标:1.测试是为了发现程序中的错误而执行程序的过程 2.好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案 3.成功的测试是发现了至今为止尚未发现的错误的测试软件测试准则:1.所有测试都应该能追溯到用户需求 2.应该远在测试开始之前就制定出测试计划3.把Pareto原理应用到软件测试中4.应该从“小规模”测试开始,并逐步进行“大规模”测试5.穷举测试是不可能的6.为了达到最佳的测试效果,应该有独立的第三方从事测试工作测试步骤:1.模块测试2.子系统测试3.系统测试4.验收测试5.平行运行测试重点:1·模块接口2·局部数据结构3·重要的执行通路4·出错处理通路·5边界条件审查小组的成员:1.组长,应该是一个很有能力的程序员,而且没有直接参与这项工程2.程序的设计者3.程序的编写者4.程序的测试者自顶向下的测试方法的主要优点是不需要测试驱动程序,能够在测试阶段的早期实现并雁阵系统的主要功能,而且能在早期发现上层模块的的接口错误。
自顶向下测试方法的主要缺点是需要存根程序,可能遇到与此相联系的测试困难,低层关键模块中的错误发现较晚,而且用这种方法在早期不能展开人力。
回归测试三类测试用例:1·检测软件功能的代表性测试用例2·专门针对可能受修改影响的软件功能的附加测试3··针对被修改的软件成分的测试。
A B测试的区别:A由用户在开发者的场所进行,并且在开发者对用户的指导下进行,在受控的环境下进行。
B由软件的最终用户在一个或过个客户场所进行,开发者不在现场。
调试途径:1.蛮干法2.回溯法3.原因排除法。
软件的可靠性:软件可靠性是程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。
软件可用性:软件可用性是程序在给定的时间点,按照规格说明书的规定成功运行的概率。
所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
结构化维护与非结构化的维护决定软件的可维护性的因素:1.可理解性2.可测试性3.可修改性4.可移植性5.可重用性软件系统的文档可以分为用户文档和系统文档。