软件工程复习资料
软件工程复习资料精选全文完整版
可编辑修改精选全文完整版一、单选题(共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.过程式编程范型2.面向对象编程范型3.基于构件技术的编程范型软件工程的发展时期:(1)传统软件工程或者经典软件工程:开发过程:结构化分析一>结构化设计一>面向过程的编码一>软件测试(2)面向对象软件工程开发过程:OO分析与对象抽取一》对象详细设计一》面向对象编码与测试(3)基于构件的软件工程:以软件复用为目标、领域工程为基础,其开发过程一般包括包括以下阶段:领域分析和测试计划定制一一》领域设计一一》建立可复用构件库一一》按“构件集成模型,,查找与集成构件第二章生存周期什么是软件生存周期?计划阶段:需求分析,软件分析开发阶段:软件设计,编码(测试)软件测试维护阶段:运行维护模型特点和使用场合可行性研究1.经济可行性2.技术可行性3.运行可行性4.法律可行性第三章结构化分析与设计结构化程序设计的特点以及论述(1)整个程序的模块化(2)每个模块只有一个入口和出口(3)每个模块都应能单独执行,且无死循环(4)采用自顶向下,逐步细化的方法SA结构化分析设计(结构化)从内容分:1.系统结构设计2.接口设计3.数据设计4.过程设计按照步骤分:1.概要设计2.详细设计第四章OO与面向对象+UML OO的特征1.抽象2.封装3.继承4.多态为什么用面向对象1.符合人类习惯的思维方式2.提高软件系统的可复用性3.提高软件系统的可扩展性4.提高软件系统的可维护性UML相关知识静态图1.用例图:描述系统功能2.类图:描述系统的静态结构3.对象图:描述系统在某个时期的静态结构4.构件图:描述实现系统的元素的组织5.部署图:描述系统环境元素的配置动态图1.状态图:描述系统元素的状态条件和相应2.时序图:按照时间顺序描述系统元素间的交互3.协作图:按照连接关系描述系统元素间的交互4.活动图:描述系统元素的活动流程第五章需求建模需求分析的步骤1.需求获取2.需求建模3.需求描述4.需求验证面向对象需求建模1.画用例图2.写用例规约3.描述补充规约4.编写术语表第六章需求分析面向对象的需求分析1.边界类:边界类提供了对参与者或外部系统交互协议的接口。
软件工程复习资料
软件工程1、软件的概念:软件是计算机系统中与硬件相依存的另一部分,包括程序、数据、以及相关的文档。
2、软件的组成:程序、数据、文档。
3、软件危机:指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
4、软件危机消除的办法:P51、必须充分吸取和借鉴人类长期以来从事各种工程项目所积累的行之有效的原理、概念、技术和方法,特别要吸取几十年来人类从事计算机硬件研究和开发的经验教训。
2、应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法,尽快消除在计算机系统早起发展阶段形成的一些错误概念和做法3、应该开发和使用更好的软件工具。
总之,解决软件危机,既要有技术措施,又要有必要的组织管理措施。
5、软件工程的含义:采用工程的概念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
6、软件生命周期的过程以及任务。
(1)问题定义(2)可行性研究(3)需求分析(4)总体设计(5)详细设计(6)编码和单元测试(7)综合测试(8)软件维护****************************以上为第一章******************第二章●数据流图有四种成分:源点或终点,处理,数据存储,数据流●画DFD(数据流图)的指导原则:1.符号要使用标准符号2.恰当的命名3.流入流出的数据流的条数一致4.名字要保值一致(平衡)5.遵守加工编号规则6.处理必须既有输入流又有输出流(注意:源点和终点可以相同也可以不同)●数据字典的作用:数据字典(DD)的作用也正是在软件分析和设计过程中给人提供关于数据的描述信息。
●数据字典的内容:(1)、数据流(2)、数据流分量即数据元素(3)、数据存储(4)、处理*********************** *******以上为第二章************************************第三章●实体-联系图(ER)图的概念:ER图中包含了实体、联系和属性3中基本成分,通常用矩形框代表实体,用连接先关实体的菱形框表示关系,用椭圆形或圆角矩形表示实体(或关系)的属性,并用直线吧实体(或关系)与其属性连接起来。
软件工程复习资料
软件⼯程复习资料软件⼯程第⼀章⼀、什么是软件?软件(Software)是计算机系统中与硬件相互依存的另⼀部分,它是包括程序(Program),数据(Data)及其相关⽂档(Document)的完整集合。
程序是按事先设计的功能和性能要求执⾏的指令序列数据是使程序能正常操纵信息的数据结构⽂档是与程序开发,维护和使⽤有关的图⽂材料⼆、软件危机原因:与软件本⾝的特点有关(难于维护, 逻辑复杂)与软件开发与维护的⽅法不正确有关:软件≠程序急于求成=拔苗助长各⾃为阵⽆⽅法/学现象:1.成本⾼2.计算机软件和硬件费⽤⽐3.软件质量得不到保证4.由于软件质量问题导致失败的软件项⽬⾮常多5.进度难以控制6.维护⾮常困难办法:软件⼯程(学)三、软件⼯程软件⼯程是应⽤计算机科学、数学及管理科学等原理开发软件的⼯程。
它借鉴传统⼯程的原则、⽅法,以提⾼质量,降低成本为⽬的。
开发、运⾏和维护软件的系统⽅法四、软件⼯程三要素软件⼯程⽅法学包含3个要素:⽅法、⼯具和过程。
五、软件⽣命周期六、软件过程模型瀑布模型瀑布模型适合于⽤户需求明确、完整、⽆重⼤变化的软件项⽬开发。
瀑布模型的成功在很⼤程度上是由于它基本上是⼀种⽂档驱动的模型。
“瀑布模型是由⽂档驱动的”这个事实也是它的⼀个主要缺点。
在项⽬开始的时候,⽤户常常难以清楚地给出所有需求;⽤户与开发⼈员对需求理解存在差异。
实际的项⽬很少按照顺序模型进⾏。
⽤户必须有耐⼼,等到系统开发完成。
缺乏灵活性:因为瀑布模型确定了需求分析的绝对重要性,但是在实践中要想获得完善的需求说明是⾮常困难的,导致“阻塞状态”。
反馈信息慢,开发周期长。
虽然存在不少缺陷,瀑布模型经常被嘲笑为“旧式的”,但是在需求被很好地理解的情况下,仍然是⼀种合理的⽅法。
快速原型模型增量模型增量模型是迭代和演进的过程。
增量模型把软件产品分解成⼀系列的增量构件,在增量开发迭代中逐步加⼊。
每个构件由多个相互作⽤的模块构成,并且能够完成特定的功能。
软件工程复习资料(DYH)
软件工程复习资料一、选择题3.以文档作为驱动,适合于软件需求很明确的软件项目的生存周期模型是()。
A喷泉模型 B 增量模型C瀑布模型D螺旋模型7.( )阶段是为每个模块完成的功能进行具体的描述,要把功能描述转变为精确的、结构化的过程描述。
A概要设计 B 详细设计 C 编码 D 测试14.软件特性中,软件产品交付使用后,在实现改正潜伏的错误、改进性能、适应环境变化等方面工作的难易程度称为()。
A可理解性 B 可维护性C可适应性 D 可重用性29.软件项目管理必须()介入。
A)从项目的开头B)在可行性研究之后C)在需求分析之后D)在编码之后30.下列选项中,属于成本管理的主要任务的是()。
A)人员的分工B)估算软件项目的成本C)对控制软件质量要素D)对软件阶段产品进行评审40.基于代码行的面向规模的度量方法适合于()。
A)过程式程序设计语言和事前度量B)第四代语言和事前度量C)第四代语言和事后度量D)过程式程序设计语言和事后度量51.在软件质量要素的评价准则中,在各种异常情况下软件能继续提供操作的能力指的是()。
A)容错性B)检测性C)安全性D)可操作性49.在软件质量要素的评价准则中,程序易于理解的程度指的是()。
A)简单性B)准确性C)简明性D)执行效率61.需求分析最终结果是产生()A.项目开发计划B.可行性分析报告C.需求规格说明书D.设计说明书62.需求分析中,开发人员要从用户那里解决的最重要的问题是()A.让软件做什么B.要给软件提供哪些信息C.要求软件工作效率怎样D.让软件具有何种结构63.DFD中的每个加工至少有()A.一个输入流或一个输出流B.一个输入流和一个输出流C.一个输入流D.一个输出流64.数据字典总,一般不出现的条目是()A数据流 B 数据存储C.加工D.源点与终点65.分层数据流图是一种比较严格又易于理解的描述方式,它的顶层图描述了系统的()A.细节B.输入与输出C.软件的作用D.绘制的时间66.需求规格说明书的内容不应包括对()的描述。
软件工程复习资料
A、语句覆盖:选择测试用例使程序中每条语句至少被执行一次 B、判定覆盖:选择测试用例使程序中每个判定至少都获得一次“真”值和一次“假”值 C、条件覆盖:选择测试用例使每个条件都满足 D、条件组合覆盖:将所有的判定条件都组合起来执行 答案: A B
9. 以下()不属于结构化流程图
A、运行程序并分析运行结果 B、桌前检查与代码会审 C、数据流分析图 D、调用图
答案: B C D
15. 下面()属于可复用的软件级别。
A、代码的复用 B、设计结果的复用 C、分析结果的复用 D、测试信息的复用
答案: A B C D
16. 黑盒测试着重测试软件功能,下列测试法中属于黑盒测试技术的有()。
3. 面向对象方法学的出发点和基本原则是什么?
答案: 面向对象方法学的出发点和基本原则是尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识世 界解决问题的方法与过程,也就是使描述问题的问题空间(也称为问题域)与实现解法的解空间(也称为求解域)在结构上尽可能一 致。
3. 软件原型
答案: 软件原型是在软件系统开发过程中,可快速建立的,旨在演示目标系统主要功能的可运行的程序。
4. 继承
答案: 广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。在面向对象的软件技术中,继承是子类自动 地共享基类中定义的数据和方法的机制。
5. 有穷状态机
答案: 在软件工程领域,有穷状态机可以准确地描述一个系统,它是表达规格说明的一种形式化说明方法。一个有穷状态机包含5 个部分:状态集、输入集、由当前状态和当前输入确定下一个状态的转换函数、初始态和终态集。
A、等价划分法 B、平行运行法 C、边界值分析法 D、错误推测法
软件工程复习资料
一、单选题1. 为了提高测试的效率,应该( D )A、随机地选取测试数据B、取一切可能的输入数据作为测试数据C、在完成编码后制定软件的测试计划D、选择发现错误可能性大的数据作为测试数据2. 与设计测试数据无关的文档是( D ) A、需求说明书B、设计说明书C、源程序D、项目开发设计3. 结构设计是一种应用最广泛的系统设计方法,是以( B )为基础、自顶向下、逐步求精和模块化的过程A、数据流B、数据流图C、数据库D、数据结构4. 概要设计的结果是提供一份( A ) A、模块说明书B、框图C、程序D、数据结构5. 需求分析是由分析员经了解用户的要求,认真细致地调研、分析,最终应建立目标系统的逻辑模型并写出( B )A、模块说明书B、软件规格说明书C、项目开发计划D、合同文档6. 注释是提高程序可读性的有效手段,好的程序注释占到程序总量的( D )A、1/6 B、1/5 C、1/4 D、1/37. PAD(Problem Analysis Diagram)图是一种( B )工具。
A、系统描述B、详细设计C、测试D、编程辅助8. 排错一般是在测试发现错误后进行,其中找到错误位置占排错总工作量的( A )。
A、95%B、5%C、50%D、20%9.分层数据流图是一种比较严格又易于理解的描述方式,它的顶层描绘了系统的( A ) 。
A、总貌B、细节C、抽象D、软件的作者10. 分析员是( B )。
A、用户中系统的直接使用者B、用户和软件人员的中间人C、软件的编程人员D、用户和软件人员的领导11.在软件开发中,有利于发挥集体智慧的一种做法是( A )。
A、设计评审B、模块化C、主程序员制D、进度控制12.在开发软件时,( A )可用来提高程序员的工作效率。
A、程序开发环境B、操作系统的作业管理功能C、编译程序的优化功能D、并行运算的大型计算机二、多选题1. 数据流图的3种成分为①、②和③,②是数据流中①的变换,③用来存储信息,④对①、②、③进行详细说明,用⑤对③进行详细描述。
软件工程复习资料
软件工程复习题一、选择题,请从四个可选项中选择正确答案。
1、下面哪个选项不是软件工程研究的内容()。
A. 生产无故障的软件B. 精通一门编程语言C. 生产满足用户需求的软件D.生产及时交付的软件2、软件工程的出现是由于 ( )A.软件危机B.计算机硬件技术的发展C.软件社会化的需要 D。
计算机软件技术的发展3、软件工程的研究内容具有层次化结构,最底层是质量保证层,中间层是( ),最上层是工具层.A.过程层B.方法层 C。
过程层和方法层 D。
系统层4、美国著名软件工程专家B.W。
Boehm于1983年提出了软件工程的()条基本原理. A。
7 B。
5 C.3 D.125、结构化分析方法(SA 法)使用的主要描述工具有()。
A.数据库B.模块结构图 C。
PAD 图 D.分层的DFD 图6、源程序的效率与( )阶段确定的算法的效率直接有关。
A.概要设计B。
总体设计 C. 单元设计 D. 详细设计7、可行性研究的主要任务是()。
A.确定系统做什么B. 确定性能C.确定功能D. 进行一次简要的需求分析8、内容耦合是模块间最紧密的耦合,()是模块间最松散的耦合。
A.数据耦合 B.非直接耦合 C.控制耦合 D.外部耦合9、面向对象是“先"确定()“后”()。
A。
属性/方法 B.数据结构/方法 C。
动作的主体/执行动作 D.动作10、UML是一种()语言。
A。
高级编程 B。
可视化建模 C.分析方法 D.过程11、软件工程强调将()的方法应用于软件的开发和维护过程之中。
A。
规范化 B。
系统化 C.可度量 D。
以上全部12、软件开发活动的顺序应该是( ).A。
问题定义、可行性研究、需求分析、设计、编码和测试。
B.问题定义、设计、可行性研究、编码和测试。
C.需求分析、设计、编码和测试。
D。
需求分析、编码和测试、试运行。
13、假定银行的存款年利率是2%,请问现在存5000元,两年后价值应为()元。
A.5202B.4500C.5100D.471214、系统物理模型用()表示.A.系统流程图 B。
国家开放大学《软件工程》复习资料
《软件工程》复习资料一、选择题1.软件工程的研究内容具有层次化结构,最底层是质量保证层,中问层是(C),最主.层是工具层。
A过程层 B.方法层C.过程层和方法层 D.系统层2.可行性研究的四大要素是(D)。
A.经济、技术、法律和社会环境B.经济、技术、开发组织能力和领导者水平巳经济、技术、计算机硬件环境和网络带宽D.经济、技术、软件开发工具和人员的稳定性3.针对需求不确定的软件开发,比较好的模型是(A)。
A.快速原型化模型B.瀑布模型c.软件成熟度模型。
.系统化模型4.下面的哪个选项不是软件工程的宗旨?(D)A.开发满足用户需求的软件B.研究算法C.及时交付软件D.生产无故障软件5.瀑布模型的主要特点是(A)。
A.将开发过程严格地划分为一系列有序活动B.将开发过程分解为阶段c.提供了有效的管理模式D.缺乏灵活性6.软件结构图中没有(D)元素。
A.模块B.调用参数C.返回结果D.判断7.结构化设计方法划分模块的原则是(C)A.模块扇出小于5B.模块扇人小于5c.低搞合,高内聚 D.模块深度小于78.配置视图体现了系统的实现环境,反映系统的(B)。
A.逻辑架构B.物理架构C组成结构 D.体系结构9.角色可以有四种类型:系统的使用者,硬件设备,外部系统和(D)。
A.数据库B.接口C.对象D.时间10.功能模型用于表达系统的需求,为软件的进一步分析和设计打下基础。
在面向对象方法中,由(C)实现。
A.场景描述B.活动图和1场景描述C.用例图和场景描述D.交互图和场景描述11.在分析模型内表示协调,}I顶序、事务处理以及控制其他对象的类是(A)。
A.控制类B.组件类C.主函数D.事务类12.而信息隐藏的核心内容是(C)。
A.人把数据都放在公共的区域B.数据不能被其他模块访问C.一个模块的内部信息不允许其他模块直接访问D.把信息加密,只能让有密钥的模块访问13.面向过程的方法最关心的是过程,而过程实施的对象是作为过程(A)传递的。
02333自考 软件工程复习资料
一,第一章1.软件工程→1968年的NATO会议上提出解决“软件危机”2.倡导工程原理,原则,方法进行软件开发,以期解决“软危”3.软件工程:用计算机科学理论和技术和工程管理原则方法,按预算,进度满足用户要求的软件产品工程。
4.软工两时间:1. 60-80年代,系统规模,复杂性,关键领域应用,提出了waterfall, C, Pascal, Ada; Jackson方法,结构化方法。
2. 80年代后大量软件的实践,过程支持,软件生产技术,复用技术,生产管理。
《软件和存周期过程》,C++, Eiffel, Smalltalk5.软件=程序+文档,是逻辑实体,“无形”6.程序=处理对象+处理规则7.文档=理解程序所需的阐述性资料8.软件开发的本质:不同抽象层术语+处理逻辑之间的“映射”9.建模的方法:结构化方法,面向对象方法,诸多面向数据结构方法10.模型:待建系统的任意抽象,包括基本能力,特性,或其他方面;抽象上对物理系统的描述,系统边界,关系的主义描述。
11.软件系统模型:1,概念模型(用户)2,软件模型(开发者)a)需求→概念模型b)设计→软件模型c)实现→软件模型d)部署→软件模型12.软件开发有技术和管理上的问题二,第二章1.正确定义问题,是解决问题的基础2.需求是“要予构造”的陈述,描述了软件“能力”“性能参数”“其他性质”3.需求的性质:a)必要b)无歧义c)可测/测量d)可跟踪4.验证需求是不是歧义→需求复审5.需求分类:功能/非功能(性能,外部接口,设计约束,质量属性),6.需求发现:自悟,交谈,观察,小组会,提炼a)自悟要求高,要有想象力/需求不正确b)交谈依赖“正确提问”“揭示本意”/不能认识到合理需求→复审c)观察要有洞察力/客户抵触,客户认为熟悉了业务d)小组会人力资源,良好的需求发现能力,达成共识/客观条件限制,互相矛盾的需求e)提炼要有想像力和需求标识力熟悉技术和法规/无法验证需求是否正确7.需求规约是陈述的正式文档,表达概念模型a)重要性和稳定性程度b)可修改c)完整d)一致8. 需求规约表达:非形式化(规模小,不复杂,小型软件),半形式和形式化(主要为了验证程序正确)9. 需求规约作用:a) 技术合同,产品功能和环境体现b) 管理控制点c) 正式,受控的起点d) 初始测试计划,用户系统操作描述10. 需求规约不是一个设计文档,用于设计的文档,也不是进度和规划文档三,第三章1.软件需求中三挑战:1. 问题空间理解2. 人与人之间通信3. 需求的变化性2.20世纪70年代提出结构化方法3.基本术语1. 数据流程2. 加工3. 数据存储4. 数据源和数据潭4.数据流图DFD P375.按功能分解的设计思想:自顶向下,逐步求精6.数据字典:[=]定义为;[|]或者;[+]顺序;[{}]重复;[m.n]子界7.数据结构3种条目:数据流条目;数据存储条目;数据项条目8.结构化语言是形式化语言和自然语言之间的语言9.判定表;判定树P4311. 图元数7正负212. 15%的错误源自错误的需求13. 总体设计:模块和模块调用14. 总体设计:模块结构图/层次图/HIPO 图P4515. “高内聚,低耦合”16.数据流图分为:变换型和事务型17.模块化,软件分为简单的高内聚低耦合的模块(两部分:接口和模块体)18.耦合:依赖程度的度量。
软件工程复习资料
1.什么是软件工程?他的基本原理是什么?1)软件工程是指导计算机软件开发和维护的工程学科。
采用工程的槪念、原理、技术和方法来开发与维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,经济地开发出高质量的软件并有效地维护它。
2)用分阶段的生命周期汁划严格管理、坚持进行阶段评审、实行严格的产品控制、采用现代程序设讣技术、结果应能淸楚的审査、开发小组的人员应该少而精、承认不断改进软件工程实践的必要性。
2.是什么导致了软件工程?主要是软件危机的出现导致了软件工程3.通常我们所见的软件工程模型有哪些?瀑布模型、快速原型模型、增量模型(渐增模型)、螺旋模型、喷泉模型。
21.软件危机的现象:1)经费超出预算,项目一再拖延。
02 )不重视需求,开发的软件不能满足用户的要求,项目成功率低。
3)没有规范的软件工程方法,软件可维护性差,软件质量差,可靠性差。
3圄)开发工具落后,手工方式,开发效率低。
2 2 .软件工程的三要素1)"过程”是软件产品加工所经历的一系列有组织的活动,保证能够合理、高质疑开发出软件。
2)"方法”为软件开发提供"如何做”的技术。
它涵盖了项目计划、需求分析、系统程序()实现、测试与维护灯一系列活动的做法。
3) "工具"可为过程和方法提供自动的或半自动的支持。
这些工具既包括软件,也包括硬件,软件工具包括编程、建模、管理等开发工具。
通过网络环境把这些软件工具集成起来搭建一个能够支持团队开发的平台,称为汁算机辅助软件工程,即CASE。
C ASE集成了软件、硬件和()存放开发过程信息的软件工程数据库,形成了一个软件工程环境。
23.简述软件工程的目标,过程和原则佢)目标、过程和原则是一切工程的三维框架,,这里是以工程的观点来看待软件开发。
软件工程的目标:降低成本,及时交付髙质量的软件产品。
m实现目标的过程即完成产品加工的过程:包括:基本过程、支持过程和组织过程进行过程应遵守的原则:原则就是过程中的轨道约朿,包括:选取适宜的开发范型、适合的设计方法、提供高质量的工程支持、重视开发过程的管理。
软件工程复习资料-完整版
一、选择题:1、用例图中,用来表示用例的符号为( B ) 。
2、协作图中包含的元素包括(A ) 。
A. 对象 B. 链 C. 激活 D. 消息3、在类图中,哪种关系表达整体与部分的关系( D ) 。
A .泛化 B. 实现 C. 依赖 D. 聚合4、下列各种图形符号中,用来表示组成关系的符号为 (B )。
A. B. C. D.5 、(A )工具在软件的详细设计中不能使用。
A . DFD B. N-S 图 C. 流程图 D. PDL6 、 “软件危机”是指 (C )。
A. 计算机病毒的出现B. 利用计算机进行经济犯罪活动C. 软件开发和维护中出现的一系列问题D. 人们过分迷恋计算机系统7 、 快速原型是利用原型辅助软件开发的一种新思想,它是在研究 (A )的方法和技术中产生 的。
A. 需求阶段B. 设计阶段C. 测试阶段D. 软件开发的各个阶段8、从严格意义上讲,下列 4 个选项中属于顺序图的元素是(ABCD ) 。
A.对象B. 参与者C. 消息D. 激活9、下列 UML 图形中, (ABCD )属于 UML 的动态视图。
A. 协作图B. 状态图C. 活动图D. 顺序图10、数据字典是软件需求分析阶段的最重要的工具之一,其最基本的功能是( D ) 。
A. 数据库设计B. 数据通信C. 数据关系描述D. 数据定义11、详细设计与概要设计衔接的图形工具是 (D )。
A. DFD 图B. 程序图C. PAD 图D. SC 图12 、UML 中,大多数建模者把节点分为(AC )A . 设备 B. 构件 C. 处理器 D. 显示器13 、(C)是一种特殊形式的状态机,用于对计算流程和工作流程建模。
A .时间图 B. 流程图 C. 活动图 D. 状态图14 、(A )描述从状态到状态的控制流程,常用来对系统的动态特征进行建模。
A. 状态图B. 序列图C. 协作图D. 活动图15、下列特点属于描述用例的特点的是( D ) 。
软件工程复习资料
1、下列哪一模型是软件的基础模型快速原型 C.增量模型 D.螺旋模型2、划分软件生存周期的阶段时所应遵循的基本原则是各阶段的任务在时间上连续C.各阶段的任务尽可能相关性D.各阶段的任务在时间上相对独立3、下列哪个办法不属于解决软件危机的途径之一A.采用软件工程的解决途径B.研制新一代智能计算机C.采用面向对象的软件设计方法4、下列哪个不属于软件工程的内涵之一开发既可靠又能有效运行的软件C.应用完善的科学与工程原理D.经济地开发软件5.造成大型软件开发困难的根本原因在于A.开发人员缺乏足够的开发经验B.项目开发进度不合理对软件开发的资金投入不足6.软件会逐渐退化而不会磨损,其原因在于A.软件备件很难订购C.软件错误在经常使用之后会逐渐增加D.软件通常暴露在恶劣的环境下7.下面说法正确的是B.由于软件是产品,因此可以应用其他工程制品所用的技术进行生产C.一般来说,软件只有在其行为与开发者的目标一致的情况下才能成功D.购买大多数计算机系统所需的硬件比软件更昂贵8.Ariane 5 火箭发射失败的事例告诉我们A. ( 2 )软件后备系统可以通过复制生成B. ( 3 )软件重用必须重新进行系统论证和系统测试D. ( 1 )系统环境的变化可能影响软件采集数据的精度、范围和对系统的控制9.软件危机的主要原因是B.软件工具落后。
C.软件生产能力不足。
D.对软件的认识不够。
10.下面的描述正确的是B.软件质量是由产品的功能、性能、易用性等外在特性决定的。
C.运行正确的软件就是高质量的软件。
D.软件产品质量越高越好,最理想的情况是达到“零缺陷”。
11、可行性研究主要包括哪几项?B.技术可行性、经济可行性和道德可行性C.技术可行性、法律可行性和操作可行性D.技术可行性、操作可行性和法律可行性12、成本/效益分析的目的是帮助 ( )正确地作出是否投资于这项开发工程的决定。
A.系统分析员项目经理 D.软件开发人员13、在进行成本/效益分析的时候,需要考虑( )14、数据流图和数据字典共同定义了新系统的逻辑模型。
软件工程复习资料
软件⼯程复习资料《软件⼯程》复习资料1.解释什么是软件⼯程?运⽤⼯程学的原理和⽅法来组织和管理软件的⽣产和管理,以保证软件产品开发、运⾏和维护的⾼质量和⾼⽣产率。
2.什么是软件危机?软件危机是指在计算机软件的开发和维护过程中所遇到的⼀系列严重的问题。
它包含两个⽅⾯的问题:如何开发软件,以满⾜对软件⽇益增长的需求,如何维护数量不断膨胀的已有软件。
3.简述软件与硬件的区别。
硬件是计算机系统中的物理部件,⽽软件则是计算机系统中的逻辑部件。
4.简述软件⼯程专家B.W.Boehm提出的软件⼯程七条原理。
七条基本原理:(1)⽤分阶段的⽣命周期计划严格管理;(2)坚持进⾏阶段评审;(3)实⾏严格的产品控制;(4)采⽤现代程序设计技术;(5)结果应能清楚地审查;(6)开发⼩组的⼈员应该少⽽精;(7)承认不断改进软件⼯程实践的必要性。
5.软件⼯程的三个要素的是什么?⽅法、⼯具和过程(其中⽅法是完成软件开发的各项任务的技术⽅法,回答“怎样做”的问题;⼯具是为运⽤⽅法⽽提供的⾃动或半⾃动的软件⼯程⽀撑环境;过程是为了获得⾼质量的软件所需要完成的⼀系列任务的框架,它规定了完成各项任务的⼯作步骤。
)6.⼀个软件的⽣命周期分为哪⼏个阶段?软件定义,软件开发和运⾏维护7.什么是软件过程?主要有那些过程模型?1)、软件过程是为了获得⾼质量软件所需要完成的⼀些列任务的框架,它规定了完成各项任务的⼯作步骤。
2)、主要有:瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型。
8.简述瀑布模型的特点。
1)、阶段间具有顺序性和依赖性,2)、推迟实现的观点,3)、保证质量的观点9.简述原型法的基本思想。
所谓快速原型是快速建⽴起来的可以在计算机上运⾏的程序,它能够完成的功能往往是最终产品能完成的功能的⼀个⼦集。
10.Rational统计过程的“最佳实践”指的是什么?迭代式开发、管理需求、使⽤基本构件的体系结构、可视化建模、验证软件质量、控制软件变更。
软件工程复习资料(整理)
什么是软件?什么叫软件工程?它的目标是什么?软件:程序与文档。
定义一:应用于计算机软件的定义,开发和维护的一整套方法、工具、文档、实践标准和工序。
定义二:在软件设计、实现、检查、运行、维护各个过程中适用的立足于科学基础上的实用方法。
软件工程目标:用较少的投资获得高质量的软件。
什么是软件危机?主要表现?软件危机:在计算机软件的开发和维护过程中,所遇到的一系列严重问题,这一系列问题使软件产生了危机。
表现在:⑴对软件开发成本和进度的估计常常很不准确。
⑵用户易对“已完成的”软件系统产生不满。
⑶软件质量不可靠。
⑷软件常常是不可维护的。
⑸软件通常没有适当的文档资料。
⑹软件成本越来越高。
⑺软件开发生产率提高速度慢,跟不上发展。
可行性研究的目的是什么?用最小的代价在尽可能短的时间内确定问题是否能够解决。
若值得解,则推荐一个较好的方案,并制定一个初步的计划;若无可行解,则建议停止开发工程(以免浪费时间、人力、和金钱)数据流图的基本要点是什么?描绘“做什么”,而不考虑“怎样做”。
软件生成期分几个阶段?几阶段的主要工作是?生命周期各阶段的基本任务:1、问题定义:要解决的问题是什么?2、可行性研究:问题是否有行得通的解决办法?3、需求分析:确定目标系统必须具备哪些功能。
4、总体设计:应如何解决这个问题。
5、详细设计:如何具体实现这个系统?6、编码和单元测试:写出正确的、容易理解的、容易维护的程序模块,并测试编写出的每一个模块。
7、综合测试:通过各种类型的测试使软件达到预定的要求。
8、软件维护:通过各种必要的维护活动使系统持久地满足用户的需要。
何为功能模块?设计模块?功能模块:在分析阶段由系统分析员对该系统应完成的功能进行规定的模块。
设计模块:在后面设计阶段对如何实现这些功能进行描述的模块。
HIPO PSL PAD SADT 中文意思SADT:结构分析设计方法。
PSL:问题说明。
PSA:问题说明分析器。
HIPO:H图加IPO,即层次图加输入/处理/输出图。
软件工程师复习资料推荐
软件工程师复习资料推荐在成为一名合格的软件工程师的道路上,学习和复习是非常重要的环节。
而选用适合的复习资料,可以帮助我们更加高效地掌握知识点,提升自己的技能。
本文将推荐一些优质的复习资料,供软件工程师们参考。
一、编程语言学习资料1.《Java核心技术》:由SUN公司的两位工程师编写,系统全面地介绍了Java语言的基础知识和进阶技巧,是Java程序员的必备参考书。
2.《Python编程:从入门到实践》:一本适合初学者的Python编程入门书籍,通过实际案例的演示和习题的训练,帮助读者快速入门Python编程。
3.《C++ Primer》:这是一本C++领域的经典教材,可以帮助读者全面掌握C++语言的基本概念和高级特性。
二、系统设计和架构学习资料1.《大型网站技术架构》:由阿里巴巴集团首席架构师李智慧所著,内容详尽介绍了大型网站的设计原理和重要技术,对于理解和掌握系统设计和架构非常有帮助。
2.《设计模式:可复用面向对象软件的基础》:这本书介绍了23种常用的设计模式,对于应用程序的设计和可维护性有着重要的指导作用。
三、数据库学习资料1.《SQL必知必会》:适合初学者的SQL学习资料,通过简单明了的语言和大量实例,帮助读者快速掌握SQL的基本知识和操作技巧。
2.《MongoDB权威指南》:对于学习和使用MongoDB的人来说,这本书是一本非常有价值的参考书,它详细介绍了MongoDB的各种特性和使用方法。
四、软件开发工具学习资料1.《Git权威指南》:介绍了Git版本控制工具的基本概念和使用方法,对于团队协作开发和代码管理非常有帮助。
2.《Maven实战》:Maven是Java项目构建和管理的重要工具,这本书详细介绍了Maven的使用和配置,对于软件工程师来说是一本不可或缺的参考资料。
以上是我为软件工程师们推荐的一些复习资料,希望能够对大家的学习有所帮助。
当然,选择适合自己的学习资料也需要根据自身的实际情况和学习需求来确定。
软件工程复习资料
一.概述1.什么是软件?什么是软件工程?--软件是计算机系统中与硬件相互依存的另一部分,它是包括程序,数据及其相关文档的完整集合。
软件具有不可见性,是抽象的、形式化和逻辑化的。
--软件会逐渐退化而不会磨损的原因是不断地变更使组件接口之间引起错误。
--软件工程要素:过程、方法、工具。
--软件工程的基本目标是开发高质量的软件。
2.现代软件工程师关注的问题开发过程中遇到的各种困扰。
3.软件生存周期模型--软件生存期由软件定义、软件开发和运行维护3个时期组成,每个时期又可划分若干阶段,即可行性研究、需求分析、概要设计、详细设计、编码、测试、使用与维护。
--软件生存周期模型包括瀑布模型、原型模型、增量模型、螺旋模型。
4.软件开发的各种模型(瀑布、快速原型等)的特点--瀑布模型:1)阶段间具有顺序性和依赖性。
2)推迟实现的观点。
3)质量保证的观点。
瀑布模型适用于需求被清晰定义的情况。
--快速原型模型:适用于客户需求难以清楚定义的情况。
--增量模型:适用于一种需要快速构造可运行程序的方法。
--螺旋模型:螺旋模型是瀑布模型、原型模型的有机结合,同时增加了风险分析。
螺旋模型只适合于大规模的软件项目。
--喷泉模型:喷泉模型是典型的面向对象生命周期模型。
二.需求分析1.需求分析的目的--需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。
需求分析是软件工程中的一个关键过程。
--需求分析中开发人员从用户那里了解软件做什么。
--可行性研究要进行一次“简化的、压缩的”需求分析。
2.主要任务--获取并理解用户的需求是软件工程师所面对的最困难的任务之一--发现和分析问题,并分析问题的原因/结果关系;与用户进行各种方式的交流,并使用调查研究方法收集信息;按照三个成分观察问题的不同侧面,即数据、过程、接口;将获取的需求文档化,形式有用例、决策表、需求表等。
3.功能性需求和非功能性需求--功能性需求:系统需要提供的服务或功能:如图书检索;系统对特定输入的处理方式:如对非法输入的提示;系统在特定环境下的行为:如长时间无操作时的屏保。
软件工程复习资料
第一章概论1.软件工程的主要内容:为了有限的资金、资源和时间条件下开发满足客户要求的高质量软件,就需要研究与软件开发和管理相关的模型、方法、技术、过程、工具和环境等。
2.计算机软件:指的是计算机系统中的程序及其文档,3.程序:指的是计算任务的处理对象和处理规则的描述.4.计算任务:任何以计算机为处理工具的任务都是计算任务。
5.处理对象:是数据(如数字、文字、图形、图像、声音等,它们只是表示,而无含义)或信息(数据及相关的含义)。
6.处理规则:一般指处理的动作和步骤.7.文档:是为了便于了解程序所需的阐述性资料.8.软件工程:是应用计算机科学,数学及管理科学等原理,开发软件的工程。
软件工程借鉴传统工程的原则、方法、以提高质量、降低成本为目的。
其中,计算机科学、数学用于构造模型与算法,工程科学用于制定规范、设计范型、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。
9.杨芙清院士指出软件工程的框架可概括为:目标、过程和原则。
10.软件工程目标:只生产具有正确性、可用性和开销合宜的产品。
正确性:指软件产品达到预期功能的程度。
可用性:只软件基本结构、实现及文档为用户可用的程度。
开销合宜:只软件开发,运行的整个开销满足用户要求的程度。
11.软件工程原则包括围绕工程设计、工程支持和工程管理所提出的4条基本原则:(1)选取适宜的开发模型(2)采用合适的设计方法(3)提供高质量的工程支撑(4)重视软件工程的管理。
12.软件的生存周期:软件孕育、诞生、成长、衰亡的生存过程。
软件生存周期是指软件产品或软件系统从产生、投入使用到被淘汰的全过程。
软件生存周期大致可以分为6个阶段:计算机系统工程、需求分析、设计、编码、测试、运行和维护。
13.软件过程:是生产一个最终满足需求且达到工程目标的软件产品所需的步骤。
过程是活动的集合,活动是任务的集合。
14.软件过程有3层含义:(1)、个体含义:指软件产品或系统存在生存周期中的某一类活动的集合,如软件开发过程、软件管理过程等。
自考_软件工程复习资料
第一章1软件生产率、软件质和量远远满足不了社会发展的需求,成为社会、经济发展的制约因素,人们通常把这一现象称为软件危机2软件工程定义:软件工程是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度实现满足用户要求的软件产品工程,或以此为研究对象的学科3软件开发的本质概括为:不同抽象层术语之间的“映射”,以及不同抽象层处理逻辑之间的“映射" 两大类技术:过程方向、过程途径. 基本途径:系统建模4所谓模型,是待建系统的任意抽象,其中包括所有的基本能力、特性或其他一些方面,而没有任何冗余的细节。
进一步说,模型是在特定意图下所确定的角度和抽象层次上对物理系统的描述,通常包含对该系统边界的描述、对系统内各模型元素以及它们之间关系的语义描述5系统模型分为软件模型、概念模型软件模型分为设计模型、部署模型、实现模型第二章软件需求与软件需求规约6一个需求是有关一个“要与构造"的陈述,描述了待开发产品、系统功能上的能力、性能或者其他性质7需求性质:必要的、无歧义的、可测的、可跟踪的、可测量的8需求分类:功能需求、非功能需求(性能、外部接口、设计约束、质量属性需求)9功能需求规约了系统或系统构建必须执行的功能功能需求是整个需求的主体10接口需求分为:用户接口、硬件接口、软件接口、通信接口、内存约束、运行、地点需求11质量属性:可靠性存活性可维护性用户友好性12需求发现技术:自悟交谈观察小组会提炼13需求规约定义,是一个软件项/产品/系统所有需求陈述的正式文档,它表达了一个软件产品/系统概念模型性质:重要性和稳定性程度可修改的完整的一致的14需求规约的作用:需求规约是软件开发组和用户之间一份事实上的技术合同书,是产品功能及其环境的体现对于项目的其余大多数工作,需求规约是一个管理控制点对于产品/系统的设计,需求规约是一个正式的、受控的起始点需求规约是创建产品验收测试计划和用户指南的基础,是基于需求规约一般还会产生另外两个文档(初始测试计划和用户系统操作描述)第三章结构化方法15需求工作挑战: 问题空间理解人与人之间的通信需求的变化性16好的需求技术具备特征:提供方便的通信机制鼓励需求分析人员使用问题空间的术语思考问题,编写文档提供定义系统边界的方法提供支持抽象的基本机制为需求分析人员提供多重可供选择的方案提供天特定的技术化、适应需求变化17结构化方法:结构化分析方法结构化设计方案机构化程序设计方法18数据流加工数据存储数据源和数据潭19需求分析的首要任务是建立系统功能模型工具:数据流图DFD图是一种描述数据变化的图形工具20建模过程:建立系统环境图,确定系统语境自顶向下逐步求精,建立系统层次数据流图定义数据字典描述加工(结构化自然语言判定表判定树)21需求阶段的主要任务是完整地定义问题,确定系统的功能和能力22需求验证验证需求规格说明书的每一单一需求是否满足5个性质(必要性无歧义性可测性可跟踪型可测量性),需求沿着我难过规格说明属否满足4个性质(重要性和稳定性程度可修改型完整性一致性)23结构化设计的主要任务是在需求分析的基础上,定义满足需求所需要的结构,即针对给定的问题,给出该问题的软件解决方案,确定“怎么做"的问题24结构化设计分为总体设计(目标,建立系统的模块结构)和详细设计25模块指软件中具有特定标识的独立成分模块调用指模块之间的一种使用关系26总体设计阶段的基本任务是把系统的功能需求分配到一个特定的软件体系结构中工具(Yourdon模块结构图层次图HIPO图)步骤:将系统的DFD图转化为初始的模块结构图,再基于高内聚低耦合的原则,通过模块化,将初始的模块结构图转化为最终的、可供详细设计使用的模块结构图MSD27模块化模块是执行一个特殊任务的一个过程以及相关的数据结构。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
软件概念:与计算机系统操作有关的程序、数据以及相关文档的完整集合 软件特点:逻辑实体、智力产品,制造即拷贝2无磨损和老化,不遵循“浴盆曲线”,但存在退化问题3尚未摆脱手工方式,软件移植的需要,复杂(问题复杂性/ 程序结构复杂性),软件开发的性质如成本、进度、质量等难以估计控制,维护困难,可复用性软件分类:按功能:系统软件/支撑软件/应用软件2按工作方式:实时处理/分时/交互/批处理3按服务对象:项目 / 产品(定制 / 通用)4按失效影响:关键/ 非关键5规模:微型、小型、中型、大型、甚大型、极大型软件危机的表现:软件开发成本和进度失控,维护代价高2用户不满意3软件质量不可靠4软件不可维护 5无文档资料6 计算机系统中软件成本比重加大7软件开发生产率提高不能满足要求软件危机的原因软件的规模和复杂性2人类智力的局限性3协同工作的困难性4缺乏方法学和工具5用户描述不精确、二义、遗漏,双方理解有偏差缓解软件危机的途径组织管理、协同配合的工程2软件工程的理论模型、技术方法3软件工具软件工程的三要素1过程:管理部分2方法:技术手段3工具:自动或半自动地支持软件的开发和管理三要素的关系:相互关联与支持软件生命周期:可行性研究-需求分析-概要设计-详细设计-实现-集成测试-确认测试-使用与维护-退役软件开发和测试活动之间的关系软件开发和软件测试都是软件生命周期中的重要组成部分,软件测试是保证软件开发产物质量的重要手段。
测试是贯穿于整个开发流程了,而不是在编码完成才开始。
瀑布模型是将软件生存周期的各项活动规定为按固定顺序而连接的若干阶段工作,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。
最终得到软件产品优点是使用时间最长、应用面比较广泛的开发模型2是其他一些开发模型的基础3当前一阶段完成后,只需要去关注后续阶段缺点不能适应用户需求的变化2到最后阶段才能得到可运行的软件版本适用场合:对于规模较小,软件需求较为稳定的项目,采用模型能够显著提高软件开发的质量和效率演化模型(原型模型)演化模型是一种全局的软件(或产品) 生存周期模型。
属于迭代开发方法。
该模型可以表示为:第一次迭代(需求->设计->实现->测试->集成)->反馈->第二次迭代(需求->设计->实现->测试->集成)->反馈->……优点:1支持需求的动态变化2有助于获取用户需求,便于用户对需求的理解3尽早发现软件中的错误缺点1需要为系统的每个新版本交付文档,不划算2新需求的不断增加,使系统结构退化,变更成本上升3不支持风险分析螺旋模型1将瀑布模型与原型模型进行有机结合2增加风险分析步骤优点1支持需求的动态变化2有助于获取用户需求,便于用户对需求的理解3尽早发现软件中的错误4支持风险分析,可降低或者尽早消除软件开发风险5适合于需求动态变化、开发风险较大的系统缺点建设周期长适用场合在需求不明确的情况下,适合用螺旋模型进行开发,便于风险控制和需求变更。
特别适合于大型复杂的系统喷泉模型:软件复用与生命周期中多项开发活动集成,主要支持面向对象的开发方法优点1软件系统可维护性较好2各阶段相互重叠,表明了面向对象开发方法各阶段间的交叉和无缝过渡3整个模型是一个迭代的过程,包括一个阶段内部的迭代和跨阶段的迭代4模型具有增量开发特性,即能做到“分析一点、设计一点、实现一点,测试一点”,使相关功能随之加入到演化的系统中5模型由对象驱动,对象是各阶段活动的主体,也是项目管理的基本内容6该模型很自然地支持软部件的重用缺点由于喷泉模型在各个开发阶段是重叠的,因此在开发过程中需要大量的开发人员,因此不利于项目的管理。
此外这种模型要求严格管理文档,使得审核的难度加大,尤其是面对可能随时加入各种信息、需求与资料的情况。
OO 为什么好oo 解决问题的思路是从现实世界中的客观对象入手,运用人类的自然思维方式来构造软件系统,而传统的结构化方法从功能入手和信息工程化方法从信息入手。
在面向对象方法中,把一切都看成是对象。
OO 方法用类和对象作为系统的基本构成单位。
对象对应问题域中的事物,其属性与操作刻画了事物的静态特征和动态特征,它们之间的继承关系、聚合关系、消息和关联如实地表达了问题域中事物之间实际存在的各种关系面向对象方法的特点(1)从现实世界中客观存在的事物出发来建立软件系统,强调直接以问题域中的事物为中心来思考问题、认识问题,把它们抽象地表示为系统中的对象,作为系统的基本构成单位。
这可以使系统直接映射问题域,保持问题域中事物及其相互关系的本来面貌(对象) (2)用对象的属性表示事物的状态特征;用对象的操作表示事物的动态特征(属性与操作)(3)对象的属性与操作结合为一体,成为一个独立的、不可分的实体,对外屏蔽其内部细节(封装)(4)对事物进行分类。
把具有相同属性和相同操作的对象归为一类,类是这些对象的抽象描述,每个对象是它的类的一个实例(分类)(5)复杂的对象可以用简单的对象作为其构成部分(聚集:一个(较复杂的)对象由其他若干(较简单的)对象作为其构成部分,称较复杂的对象为聚集,称较简单的对象为成分,称这种关系为聚集)(6)通过在不同程度上运用抽象的原则,可以得到较一般的类和较特殊的类。
特殊类继承一般类的属性与操作,从而简化系统的构造过程及其文档,有利于复用(继承:特殊类拥有其一般类的全部属性与操作,称作特殊类对一般类的继承)(7) 类具有封闭性,把内部的属性和服务隐藏起来,只有公共的服务对外是可见的(类的封闭性)(8) 对象之间通过消息进行通讯,以实现对象之间的动态联系(消息)(9) 通过关联表达类之间的静态关系(关联)自顶向下,逐步求精:从顶层开始逐层向下分解,直至系统的所有模块都小到易于掌握为止抽象从事物中舍弃个别的非本质的特征,而抽取共同的、本质特征的做法叫抽象。
过程抽象:将完成一个特定功能的动作序列抽象为一个函数名和参数表(模块)例: 比较字符串: int Compare (CString, CString)。
数据抽象:将诸多数据对象的定义(描述)抽象为一个数据类型名,以后可通过该数据类型名来定义多个具有相同性质的数据对象例:Eg: 1, 2, 3,—>Integer ;软件工程书;人工智能书—>书类封装把对象的属性和操作结合成一个独立的系统单位,并尽可能隐蔽对象的内部细节。
只是向外部提供接口,降低了对象间的耦合度使对象能够集中完整地描述并对应一个具体事物。
意义:体现了独立性,使对象外部不能随意存取对象的内部数据,使其所含的信息对那些不需要这些信息的模块不可访问。
对象的内部的修改对外部的影响很小,减少了修改引起的“波动效应”。
公开静态的、不变的操作,而把动态的、易变的信息隐藏起来。
模块化将一个软件划分为一组具有相对独立功能的部件,每个部件称为一个模块;当把所有的模块组装在一起时,便可获得满足用户需求的软件系统。
为什么要进行模块化:模块化体现了“分而治之”的问题分析和解决方法。
模块化的目的①进行功能分解,把复杂的大的功能划分成简单的小的子功能,尽量降低每个模块的成本。
②尽量使每个模块间的接口不能太多,太多会使接口成本增加。
兼顾二者可取得最佳的划分状态,确保软件总成本最低模块设计原则1信息隐藏2高内聚度(强)3低耦合度(松)什么是信息隐藏(1)模块应该设计得使其所含的信息(过程和数据)对那些不需要这些信息的模块不可访问(2)模块之间仅仅交换那些为完成系统功能所必须交换的信息信息隐藏的优点(1)支持模块的并行开发(设计和编码)(2)模块的独立性更好(3)便于系统功能的扩充(4)便于测试和维护,减少修改影响向外传播的范围模块化、信息隐藏,局部化是什么关系局部化与信息隐藏是一对密切相关的概念。
局部化就是指将一些使用上密切相关的元素尽可能放在一起。
对一个模块来说,局部化是期望模块所使用的数据尽可能是在模块内部定义的。
因此,局部化意味着减少模块之间的联系,有助于实现模块之间的信息隐藏。
在软件测试和维护期间经常需要修改一些模块的内容。
信息隐藏和局部化降低了模块之间的联系,使得在修改一个模块时对其他模块的影响降到最低。
“隐藏”的意思是,有效的模块化通过定义一组相互独立的模块来实现,这些独立的模块彼此之间仅仅交换那些为了完成系统功能所必需的信息,而将那些自身的实现细节与数据“隐藏”起来。
模块化独立性两个衡量标准:1(低)耦合:模块间的关联紧密程度2(高)内聚:模块内各成分间彼此结合的紧密程度如何降低模块间的耦合度:1传送信息的数量:参数的个数,最好1个(通常2-4个)2耦合方式:call 方式vs “直接引用”(在参数类型上,尽量少用指针、过程等类型的参数)3传送信息的结构:尽量用数据型、少用控制型软件设计原则:提高模块独立性:(消除重复功能,改善软件结构:①完全相似:在结构上完全相似,可能只是在数据类型上不一致。
此时可以采取完全合并的方法。
②局部相似:找出其相同部分,分离出去,重新定义成一个独立的下一层模块。
还可以与它的上级模块合并)2调整模块的大小3适当的模块深度、宽度、扇出和扇入4模块的作用范围应在控制范围之内5简化模块的接口的复杂程度界面(HCI )特征1可使用性:使用简单;用户界面术语的标准化,一致化;用户Help 帮助功能;能快速的系统响应;有容错能力2灵活性:算法的可隐可现性,能满足不同层次用户;按照用户需要,提供不同详细程度的响应信息;用户可以根据需要定制、修改菜单的方式3可靠性:在完成预定功能的前提下,尽可能简单,但不是安排成线性序列;用户界面的可靠性是指无故障使用的间隔时间;用户界面应能保证用户正确的、可靠的使用系统,保证有关程序和数据的安全性软件测试原则1尽早地、不断地进行软件测试2程序员应避免检查自己的程序3在设计测试用例时应包括合理的输入条件和不合理的输入条件4充分注意测试中的群集现象(发现错误越多,说明残存错误越多)5严格执行测试计划,注意排除测试中的随意性6应当对测试结果做全面检查7妥善保管测试计划、测试用例、出错统计、和最终分析报告,为维护提供方便软件测试和开发的关系测试:单元测试,集成测试,确认测试->开发:详细设计,概要设计,需求分析逻辑覆盖准则强弱语句覆盖<判定覆盖(通常<)条件覆盖<=条件/判定覆盖<条件组合覆盖反例条件覆盖通常比判定覆盖强,反例:I. A =2,B =0,X =l ;Ⅱ.A =1,B = 1,X =2 (满足条件覆盖,不满足判定覆盖)维护活动的流程图什么是软件的可维护性目前广泛使用的是用如的七个特性来衡量程序的可维护性可理解性、可使用性、可测试性、可移植性、可修改性、效率、可靠性影响软件可维护性的因素1软件和文档的可理解性2文档是否齐全3软件开发方法学----结构化、OO4软件的结构是否合理(结构的可扩展性)5开发人员素质6是否使用标准的OS ,程序设计语言,文档结构……什么是软件维护的副作用,有哪几个方面什么是:由于维护或者在维护过程中其他一些不恰当的行为而引入新的错误1修改代码的副作用;在修改源代码时,都可能引入错误。