软件工程 订阅
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,也提高了工作效率和生活效率 。 展开全文
软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。在现代社会中,软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,也提高了工作效率和生活效率 。
信息
外文名
Software Engineering
简    称
SE
类    别
学科
中文名
软件工程
相关专业
通信工程、计算机科学与技术
软件工程定义内涵
软件工程一直以来都缺乏一个统一的定义,很多学者、组织机构都 分别给出了自己认可的定义: [1]  BarryBoehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料。IEEE:在软件工程术语汇编中的定义:软件工程是:1.将系统化的、严格约束的、可量化的方法应用于软件的开发、运行和维护,即将工程化应用于软件;2.在1中所述方法的研究FritzBauer:在NATO会议上给出的定义:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法。《计算机科学技术百科全书》:软件工程是应用计算机科学、数学、逻辑学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本和改进算法。其中,计算机科学、数学用于构建模型与算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及确定权衡,管理科学用于计划、资源、质量、成本等管理。比较认可的一种定义认为:软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法去开发和维护软件,以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来。ISO 9000对软件工程过程的定义是:软件工程过程是输入转化为输出的一组彼此相关的资源和活动。 [2]  其它定义:1.运行时,能够提供所要求功能和性能的指令或计算机程序集合。2.程序能够满意地处理信息的数据结构。3.描述程序功能需求以及程序如何操作和使用所要求的文档。以开发语言作为描述语言,可以认为:软件=程序+数据+文档。 [2]  一、软件工程过程是指为获得软件产品,在软件工具的支持下由软件工程师完成的一系列软件工程活动,包括以下四个方面:1、P(Plan)——软件规格说明。规定软件的功能及其运行时的限制。2、D(DO)——软件开发。开发出满足规格说明的软件。3、C(Check)——软件确认。确认开发的软件能够满足用户的需求。4、A(Action)——软件演进。软件在运行过程中不断改进以满足客户新的需求。二、从软件开发的观点看,它就是使用适当的资源(包括人员,软硬件资源,时间等),为开发软件进行的一组开发活动,在活动结束时输入(即用户的需求)转化为输出(最终符合用户需求的软件产品)。三个阶段:定义阶段:可行性研究初步项目计划、需求分析;开发阶段:概要设计、详细设计、实现、测试;运行和维护阶段:运行、维护、废弃原则:1、抽象;2、信息隐蔽;3、模块化;4、局部化;5、确定性;6,一致性;7、完备性;8、可验证性
收起全文
精华内容
下载资源
问答
  • 软件工程

    千次阅读 热门讨论 2020-01-21 15:44:04
    一、软件工程发展历史: 1968年,前北大西洋公约组织的科技委员会召集了一批一流的程序员、计算机科学家以及工业界人士贡献对策,通过借鉴传统工业的成功作法,他们主张通过工程化的方法开发软件来解决软件危机,并...

    一、软件工程发展历史:

    1968年,前北大西洋公约组织的科技委员会召集了一批一流的程序员、计算机科学家以及工业界人士贡献对策,通过借鉴传统工业的成功作法,他们主张通过工程化的方法开发软件来解决软件危机,并冠以“软件工程”这一术语。

    二、软件工程包括两方面内容:

    1、软件开发技术包括软件开发方法学、软件工具和软件工程环境;2、软件项目管理包括软件度量、项目估算、进度控制、人员组织、配置管理和项目计划。

    三、软件工程的生命周期

    软件开发是一套关于软件开发各阶段的定义、任务和作用的,建立在理论上的一门工程学科。它对解决“软件危机”,指导人们利用科学和有效的方法来开发软件,提高及保证软件开发的效率和质量起到一定的作用。软件工程思想将软件开发分成以下5个阶段:

    1、需求捕获阶段:选择合适的项目,要考虑几个因素(经济因素:经济成本、受益等、技术因素:可行性、技术成本等、管理因素:人员管理、资金运作等)需求捕获是整个开发过程的基础,也直接影响着后面几个阶段的进展。需求捕获阶段地位不断的增加。

    2、系统分析与设计阶段:这两个阶段是相辅相成、不可分割的,这一阶段是在系统分析员的领导下完成的。系统分析员不仅要有深厚的计算机硬件与软件专业知识,还要对相关业务有一定的了解。系统分析通常是与需求捕获同时进行,而系统设计一般是在系统分析之后进行的。

    3、系统实现阶段:编码阶段所占的比重正在逐渐缩小

    4、测试阶段:使软件Bug降到最低。

    5、维护阶段:每年都有许多软件公司因为无法承担对其产品的高昂的维护成本而宣布破产。

    四、建模目的

    如何满足用户和项目的需要。

    五、建模重要性

    如果你像盖房子或者盖写字楼一样开发软件,问题就不仅仅是写代码,而是怎么样写正确的代码和怎么样少写代码。这就使的高质量的软件开发变成了一个结构、过程和工具相结合的问题。所以说没有对的结构、过程和工具加以考虑,所造成的失败是惨重的。软件组织获得成功的因素有很多,但是一个基本的因素就是对建模的使用。

    模型实质:模型是对现实的简化。模型提供系统的蓝图,包含细节设计,也包含对系统的总体设计,一个好的模型包括重要的因素,而忽略不相干的细节,模型可以从不同方面进行描述。

    建模的目标:1、便于开发人员展现系统2、允许开发人员指定系统的结构或行为。3、提供指导开发人员构造系统模板4、记录开发人员的决策。

    建模四原则:1、选择奖励什么样的模型对如何发现和解决问题具有重要的影响。2、每个模型可以有多种表达方式。3、最好的模型总是能够切合实际。4、孤立的模型是不完整的。

    展开全文
  • 软件工程经典教程之[1]软件工程概述PPT

    千次下载 热门讨论 2014-10-13 22:30:15
    1.0 计算机基础 1.1 软件的概念 1.2 软件危机 1.3 软件工程 1.4 软件生命周期 1.5 软件开发过程模型 1.6 软件开发方法简述
  • 软件工程师

    千次阅读 2014-09-10 10:14:05
    1、参与软件工程系统的设计、开发、测试等过程,解决工程中的关键问题和技术难题; 2、指导程序员的工作; 3、负责与项目经理共同进行客户调研、业务流程分析设计; 4、协助工程管理人保证项目的质量; 5、...

    岗位职责:

    1、参与软件工程系统的设计、开发、测试等过程,解决工程中的关键问题和技术难题;
    2、指导程序员的工作;
    3、负责与项目经理共同进行客户调研、业务流程分析设计;
    4、协助工程管理人保证项目的质量;
    5、协调各个程序员的工作,并能与其它软件工程师协作工作。
    6、编写各种各样的软件说明书,如:需求说明书,概要说明书等考试科目。


    职位要求:

    1、计算机相关专业大学专科以上学历,具有软件工程师职业资格证书;
    2、具有一定相关项目经验和较好的学习能力;
    3、熟练掌握专业技术如Unix/Linux平台技术、Java EE核心技术、Oracle企业级数据库技术、Web 2.0及Web3.0核心技术、SOA及及云计算技术等;
    4、有较强的软件开发功底,能按时并高效完成既定计划;
    5、具有良好的职业素质,忠诚可靠、诚信守法;
    6、具有良好的沟通能力,能友好的与他人团队合作共事;
    7、具有良好的攻关能力和创新能力,思维敏捷,精力充沛。


    发展方向:

    软件工程师就业方向很广,像软件设计人员、软件架构人员、软件工程管理人员和程序员等都是不错的选择!未来中国IT业对这一类人才的需求越来越突出,巨大的产业发展前景推动着IT企业极力关注软件测试人才的储备工作。
    另外,软件工程师资格证书是对从事软件职业的人员的一种职业能力认证,等级从低到高分为软件技术员、助理软件工程师、软件工程师和高级软件工程师,职称越高,薪资待遇越好!


    薪酬概况:



    说明:每个公司对同一个职位的要求都会因为公司的实际情况而有所不同,高校俱乐部中所有职位职责和职位要求,仅代表该职位的普遍情况,若有偏差,请直接回帖"纠错"提出您的意见,我们将采纳每一个合理意见,感谢您对高校俱乐部的关注和支持!

    展开全文
  • 软件工程北大慕课题

    万次阅读 多人点赞 2020-01-23 13:56:33
    第一周:软件工程概论 软件的定义及特点 1单选(2分)软件产品与物质产品有很大的区别,软件产品是一种(C)产品。 A.有形 B.消耗 C.逻辑 D.文档 2多选(2分)下列关于软件的说法正确的是(BCD) A.软件是通过定制进而...

    第一周:软件工程概论
    软件的定义及特点
    1单选(2分)软件产品与物质产品有很大的区别,软件产品是一种(C)产品。
    A.有形 B.消耗 C.逻辑 D.文档
    2多选(2分)下列关于软件的说法正确的是(BCD)
    A.软件是通过定制进而生产制造出来的 软件是设计开发的,而不是生产制造的
    B.软件没有磨损老化问题。
    C.软件开发的成本很高
    D.软件开发和运行必须依赖计算机环境
    3多选(2分)下列软件属于系统软件的是(AB)
    A.操作系统
    B.编译器
    C.中间件
    D.浏览器
    4多选(2分)下述软件属于支撑软件的是(CD)
    A.财务管理软件
    B.编译器
    C.中间件
    D.数据库
    5多选(2分)下述软件属于应用软件的是(AD)
    A.财务管理软件
    B.数据库
    C.编译器
    D.浏览器
    软件工程的起源和概念
    1填空(2分)软件工程概念的提出是为了解决(软件危机)。
    2单选(2分)在(B)年的NATO会议上,软件工程的术语被首次提出。
    A.1966
    B.1968
    C.1970
    D.1972
    3判断(2分)软件工程的目的是倡导以工程的原理、原则和方法进行软件开发。A
    A.对
    B.错
    4多选(2分)软件工程是一门交叉性学科,下列哪些学科是软件工程涉及的?ABCD
    A.数学
    B.计算机科学
    C.管理科学
    D.工程科学
    软件开发的本质和基本手段
    1单选(2分)软件开发中实现映射的基本手段是(D)
    A.抽象
    B.分层
    C.隔离
    D.建模
    2填空(2分)软件开发是实现(问题域)的概念和处理逻辑到(运行平台)的概念和处理逻辑的映射。(答案用空格隔开)
    3判断(2分)模型一定是在某种特定意图下、从某种特定的角度对物理环境的抽象。A
    A.对
    B.错
    4多选(2分)下列属于软件模型的是(BCD)
    A.概念模型
    B.设计模型
    C.实现模型
    D.部署模型
    5判断(2分)软件开发中分层的基本动机是控制开发的复杂性。A
    A.对
    B.错
    软件工程框架
    1单选(2分)下列哪项不属于软件工程框架的三元组。(B)
    A.目标
    B.范围
    C.原则
    D.活动
    2判断(2分)软件开发要从客户的需求出发,在满足用户要求的前提下,功能开发的越多越好。B
    A.对
    B.错
    3多选(2分)软件需求阶段所要完成的任务包括(ACD)
    A.需求获取
    B.需求完善
    C.需求定义
    D.需求规约
    4填空(2分)软件设计阶段包括(总体设计)和(详细设计)两个阶段。(答案用空格隔开)
    5判断(2分)为了保证开发进度,软件只需要在最终完成后再进行确认即可。B
    A.对
    B.错
    6单选(2分)下列哪个不是软件维护的类型。(D)
    A.完善性维护
    B.纠错性维护
    C.适应性维护
    D.更新性维护
    7单选(2分)只有高水平的(C),才能生产出高质量的软件产品。
    A.软件开发技术
    B.软件开发工具
    C.软件工程管理
    D.???
    软件生存周期过程的概念
    1单选(2分)获取正确软件的关键是(A)
    A.开发逻辑
    B.开发团队
    C.人员素质
    D.明确需求
    2判断(2分)软件生存周期的含义是表明软件的演化和发展具有周期性,每过一段时间就需要更新。B
    A.对
    B.错
    3判断(2分)当软件的一个版本被淘汰时,则该软件的生存周期就结束了。B
    A.对
    B.错
    4判断(2分)软件生存周期过程表示软件生存周期内的一个过程。B
    A.对
    B.错
    5填空(2分)为了表述软件开发需要做什么映射,引入了三个概念:(请按概念的范围由大到小填写,用空格分隔)过程 活动 任务
    软件生存周期过程的分类
    1单选(2分)按照(B),可以将软件生存周期过程分为基本过程、支持过程和组织过程。
    A.软件开发活动的层次关系
    B.软件开发工作的主体
    C.软件开发项目的结构
    D.软件开发任务的重要程度
    2多选(2分)下述过程属于基本过程的是(ABCD)
    A.获取过程
    B.开发过程
    C.运行过程
    D.供应过程
    3判断(2分)支持过程是指那些与软件生产组织有关的活动集。B
    //描述的是组织过程
    A.对
    B.错
    4多选(2分)下列关于软件开发过程说法正确的是(BC)
    A.软件生存周期过程就是软件开发过程
    B.软件开发过程是软件开发者所从事的一系列活动
    C.软件开发过程中还包括了系统需求分析、系统结构设计等系统层面的活动
    D.软件开发过程包含了软件升级和演化等活动
    软件生存周期模型的概念
    1判断(2分)软件生存周期模型是对软件生存周期中过程、活动和任务的组织。A
    A.对
    B.错
    2判断(2分)软件生存周期模型必须要将所有类型的过程、活动和任务考虑在内,形成满足每个软件项目需要的模型。B
    A.对
    B.错
    3判断(2分)软件开发模型是软件开发过程的活动和任务的结构框架。B
    //软件开发模型是软件过程、活动、任务的结构框架
    1
    A.对
    B.错
    常见的软件生存周期模型
    1多选(2分)下列关于瀑布模型的说法正确的是(BD)
    A.瀑布模型仅能依次经过需求、设计、编码、测试、集成和维护这一路径进行项目开发,不能从后一阶段返回到前面的阶段。 // 增加反馈环的瀑布模型可以回到上一个步骤
    B.瀑布模型在每一阶段都会生成相应的文档。
    C.瀑布模型只有在需求阶段和运行阶段才能有获取方和用户参与,其余阶段只能开发团队参加。
    D.瀑布模型要求需求在最初阶段就要完整和明确。
    2多选(2分)多选题:下列关于增量模型的说法正确的是(AD)
    A.增量模型要求需求在最初阶段就要完整和明确。
    B.相比于瀑布模型,采用增量模型开发的项目所需的成本和时间要少。
    C.采用增量模型时,每一增量必须按照既定顺序依次开发,不能更改。
    D.增量模型能够更早的向用户交付第一个版本的系统。
    3多选(2分)多选题:下列关于演化模型的说法正确的是(CD)
    A.演化模型要求需求在最初阶段就要完整和明确。
    B.演化模型可以弱化需求和设计文档的编写,以提高开发效率。
    C.演化模型在每一次迭代过程中可以采用瀑布模型。
    D.相比瀑布模型,演化模型需要获取方和用户更多的参与。
    4单选(2分)单选题:下列软件开发模型中,以面向对象的软件开发方法为基础,以用户的需求为动力,以对象来驱动的模型是(C)。
    A.演化模型
    B.瀑布模型
    C.喷泉模型
    D.增量模型
    第二周:软件需求
    需求的作用
    1、判断题:相比硬件而言,软件更容易被修改,而且更容易被正确地进行修改。×
    2、单选题:与软件工程不同,(A)是系统工程所追求的目标。
    A.最优化
    B.系统化
    C.一体化
    D.情境化
    3、判断题:任何软件开发过程必须从软件需求入手。√
    4、判断题:采用瀑布模型的开发过程是一种自顶向下的开发方法,而软件构件复用的开发过程是一种自底向上的开发方法。√
    需求的定义
    1、判断题:软件需求是待开发产品或系统的功能描述。×
    2、单选题:下面不属于需求的基本性质是(D)
    A.必要性
    B.无歧义性
    C.可测性
    D.可扩展性
    3、多选题:下列哪些陈述可以作为软件需求(BD)
    A.系统应支持大规模并发用户访问
    B.用户需凭用户名和密码登陆之后才可使用系统
    C.系统界面要美观大方
    D.当用户登录失败时,应弹窗提示失败原因
    需求的分类
    1、判断题:非功能需求必须依附于功能需求而存在。√
    2、单选题:下列需求属于性能需求的是(A)
    A.并发访问数
    B.网络协议
    C.异常响应
    D.用户友好
    3、单选题:下列需求属于外部接口需求的是(A)
    A.第三方插件
    B.安全隐私
    C.编程语言
    D.字体字号
    4、单选题:下列需求属于设计约束的是(B)
    A.响应时间
    B.运行平台
    C.错误处理
    D.可维护
    5、填空题:与其他类型的非功能需求不同,()是必须予以满足的,且对项目规划、所需的附加成本和工作产生直接影响。
    请输入答案:设计约束
    6、判断题:质量属性必须要给出量化的测量指标。√
    需求发现
    1、单选题:当无法与用户进行直接交流时,可采用(A)的需求发现方式。
    A.自悟
    B.提炼
    C.小组会
    D.思考
    2、多选题:下列哪些是观察这一需求发现的方法可能带来的问题。(BC)
    A.无法全面了解需求
    B.被客户抵触
    C.让客户误以为开发者已经熟悉了业务
    D.消耗过多的时间
    3、判断题:小组会和交流这两种需求发现方式的区别在于参加人员的多少。×
    4、判断题:需求发现常采用多种方式联合进行,但具体某一项需求常采用某一种具体的方式去捕获。×
    5、单选题:下述情况分别最适合采取哪种需求发现的方式(A)
    ① 为解决生活中遇到的麻烦事而开发的软件
    ② 有较多繁琐环节的社区医保系统的开发
    ③ 某小型团体组织开发其内部人员管理系统
    ④ 某大型连锁集团开发集团人员管理系统
    ⑤ 某专业化软件外包公司接手烂尾的软件开发项目 //烂尾项目已经有部分需求文档,适合用提炼
    A.①-自悟;②-观察;③-交流;④-小组会;⑤-提炼
    B.①-观察;②-自悟;③-小组会;④-交流;⑤-提炼
    C.①-自悟;②-交流;③-观察;④-提炼;⑤-小组会
    D.①-提炼;②-自悟;③-交流;④-观察;⑤-小组会
    需求规约的概念和格式
    1、单选题:需求规约是一个软件产品/系统的(C)
    A.开发模型
    B.框架模型
    C.概念模型
    D.功能模型
    2、判断题:需求规约是一个软件产品所有需求陈述的正式文档,它是不能被修改的。×
    3、多选题:下列哪些是需求规约的性质。(ABD)
    A.完整性
    B.一致性
    C.不可修改性
    D.稳定性
    需求规约的作用
    1、多选题:基于需求规约会产生下述哪两个文档。(AC)
    A.初始测试计划
    B.系统测试计划
    C.用户系统操作描述
    D.软件可行性分析报告
    2、单选题:在需求分析阶段会形成(C)的测试计划。
    A.单元测试
    B.集成测试
    C.确认测试
    D.系统测试
    3、判断题:需求规约是软件开发组织和用户之间的技术合同书,只有当需求规约完成后才能开始产品的设计。√
    4、判断题:需求规约对于项目的大多数工作是一个管理控制点,因此需求规约中要给出软件项目的进度和规划。×
    5、判断题:需求规约作为设计的一个正式的、受控的起始点,它事实上给出了一份初步的设计文档。×
    第三周:结构化分析方法1
    结构化分析方法的概念
    1单选(2分)关于软件开发方法,以下说法正确的是 D
    A.软件开发方法是指软件开发过程所遵循的办法和步骤
    B.软件开发活动的目的是有效地得到一个运行的系统及其支持文档,并且满足有关的质量要求
    C.软件开发方法学指的是规则、方法和工具的集成
    D.以上说法都正确
    2多选(2分)结构化方法包括了 ACD
    A.结构化分析方法
    B.结构化项目管理方法
    C.结构化设计方法
    D.结构化程序设计方法
    3单选(2分)需求分析的目标不包括 C
    A.解决需求陈述中的歧义、不一致的问题
    B.作为开发人员和客户间技术契约的基础
    C.给出解决问题的具体算法和数据结构
    D.给出问题的形式化或半形式化的描述
    结构化分析模型
    1单选(2分)结构化分析模型中,支持数据抽象的是哪些术语 A
    ①数据流 ②数据存储 ③数据源 ④数据潭 ⑤加工
    A.①②
    B.③④
    C.①②③④
    D.③④⑤
    2多选(2分)在结构化分析方法中,与数据流图配合使用的是 BD
    A.网络图
    B.数据字典
    C.程序流程图
    D.加工小说明
    3单选(2分)结构化分析方法使用DFD描述 A
    A.系统的功能
    B.系统的控制流程
    C.系统的数据结构
    D.系统的基本加工
    4单选(2分)结构化分析阶段,不适用于描述加工逻辑的工具是 D
    A.结构化语言
    B.判定表
    C.判定树
    D.流程图
    结构化分析过程
    1单选(2分)通过 B 可以完成数据流图的细化
    A.结构分解
    B.功能分解
    C.数据分解
    D.系统分解
    2多选(2分)下列关于数据流图的说法中,正确的是 CD
    A.在结构化分析中,采用自顶向下逐层分解的思想,从零层数据流图开始逐步精化
    B.可以根据加工的编号识别该加工位于哪一层数据流图
    C.加工必须有输入和输出
    D.数据存储在数据流图中的作用是在各加工之间建立合理的关系
    3单选(2分)数据字典一般不包括下列选项中的 C 条目
    A.数据流
    B.数据存储
    C.加工
    D.数据项
    4多选(2分)以下说法正确的是 ACD
    A.数据流图中的每个数据流和数据存储必须在数据字典中予以定义
    B.数据流图中的每个加工必须在加工小说明中予以定义 //叶加工(最底层)必须给出说明
    C.数据流图中的图元个数应当控制在7+2以内
    D.加工小说明中,必须指出该加工的输入数据流和输出数据流
    需求规格说明书
    1单选(2分)需求分析最终结果是产生 C
    A.项目开发说明书
    B.可行性分析报告
    C.需求规格说明书
    D.设计说明书
    2单选(2分)需求规格说明书中不应包括 B
    A.功能概述
    B.算法设计
    C.故障处理
    D.性能需求
    3单选(2分)需求规约是需求阶段非常重要的文档,它的作用不包括 D
    A.软件开发组织和用户之间达成的共识
    B.软件后续设计、编码、测试的基本依据
    C.软件验收的依据
    D.软件可行性分析的依据
    结构化设计概念
    1单选(2分)结构化设计的目标是 D
    A.建立系统软件模型
    B.建立软件体系结构和详细的处理算法
    C.产生设计规格说明书
    D.以上全部
    2填空(2分)结构化设计一般又可分为概要设计阶段和详细设计阶段。
    3单选(2分)总体设计不包括 D
    A.体系结构设计
    B.接口设计
    C.数据设计
    D.数据结构设计
    4单选(2分)模块结构图中,如果两个模块之间有直线连接,表示他们之间存在 A 关系
    A.调用
    B.组成
    C.连接
    D.顺序执行
    5单选(2分)关于总体设计阶段的任务,以下说法错误的是 C
    A.主要任务是将DFD转为MSD
    B.针对不同类型的DFD有不同的设计方法
    C.精化MSD不属于总体设计阶段的任务
    D.根据穿越系统边界的数据流确定系统与外界的接口
    初试模块结构图的设计
    1判断(2分)判断题:所有的数据流图都可以看作变换型数据流图。 √
    2单选(2分)对于变换设计的基本步骤,正确的顺序是 C
    ① 确定输入、变换、输出三部分之间的边界
    ② 系统模块结构图顶层和第一层的设计
    ③ 复审并精化系统需求模型
    ④ 自顶向下,逐步求精
    A.①②③④
    B.②①③④
    C.③①②④
    D.①③②④
    3单选(2分)下列说法错误的是 B
    A.变换型DFD是由输入、变换和输出三部分组成
    B.变换设计中,有几个物理输入就设计几个输入模块 //是有几个逻辑输入就设计几个输入模块
    C.事务型DFD一般只接受一个输入数据
    D.通常来说,变换型数据流图更加常见,而事务型数据流图往往作为局部出现
    4单选(2分)关于事务设计,下列说法正确的是 B
    A.事务设计的第一步是确定事务处理中心 //第一步是 设计准备,复审和精化系统模型
    B.在第一级分解中,需要为每一条活动路径设计一个事务处理模块
    C.在第一级分解中,需要分别设计输入输出模块
    D.在第二级分解中,对各条路径的细化类似于变换设计的细化过程
    初始模块结构图精化的原则
    1单选(2分)软件概要设计结束后得到 B
    A.初始化的模块结构图
    B.精化的模块结构图
    C.模块详细的算法
    D.程序编码
    2填空(2分)模块化的基本原则是高内聚,低耦合.
    3单选(2分)一个模块把一个数值量作为参数传送给另一模块,这两个模块之间的耦合是 B
    A.逻辑耦合
    B.数据耦合
    C.控制耦合
    D.内容耦合
    4单选(2分)下列几种耦合中, D 的耦合性最强。
    A.公共耦合
    B.数据耦合
    C.控制耦合
    D.内容耦合
    5单选(2分)为了提高模块的独立性,模块内部最好是 C
    A.逻辑内聚
    B.时间内聚
    C.功能内聚
    D.通信内聚
    6单选(2分)通信内聚是指 B
    A.把需要同时执行的动作组合在一起形成的模块
    B.各处理使用相同的输入数据集或产生相同的输出数据集
    C.一个模块内各个元素都密切相关于同意功能且必须顺序执行
    D.模块内所有元素共同完成一个功能,缺一不可

    第四周:结构化分析方法2
    初始模块结构图精化的启发规则
    1、单选(2分)关于模块的扇入扇出,以下说法正确的是 C
    A.扇入表示有多少个上层模块直接或间接调用它
    B.模块扇入高时应当重新分解,以消除控制耦合的情况
    C.一个模块的扇出太多,说明该模块过分复杂,缺少中间层
    D.一个模块的扇入太多,说明该模块过分复杂,缺少中间层
    2、单选(2分)划分模块时,一个模块的 A
    A.作用范围应在其控制范围内
    B.控制范围应在其作用范围内
    C.作用范围与控制范围互不包含
    D.作用范围与控制范围不受任何限制
    3、单选(2分)在对初始的MSD精化过程中,将多个模块公用的子功能独立出来,形成一个新的模块,这利用了哪一条启发式规则? A
    A.改进软件结构,提高模块独立性
    B.模块规模适中,每页60行语句
    C.模块的作用域力争在控制域之内
    D.降低模块接口的复杂性
    4、多选(2分)以下说法错误的是 ABD
    A.启发式规则是人们从长期的软件开发实践中总结出来的规则,在设计中应当普遍遵循
    B.扇入扇出应当适中,尽量满足7+2原则
    C.好的设计控制域应当包含作用域
    D.为了降低模块接口的复杂性,应当将多个同类型的参数合并为一个数组进行传递
    接口设计
    1、单选(2分)接口设计的主要内容是 D
    A.模块或软件构件间的接口设计
    B.软件与其他软硬件系统之间的接口设计
    C.软件与用户之间的交互设计
    D.以上都是
    2、单选(2分)用户界面应具备的特性中,最重要的是 A
    A.可使用性
    B.灵活性
    C.可靠性
    D.可扩展性
    3、单选(2分)设计人机交互的界面时,应当遵循一定的设计原则,不包括 D
    A.操作步骤少
    B.提供undo功能
    C.减少人脑的记忆负担
    D.增加复杂的功能
    数据设计
    1、单选(2分)下面哪种类型的数据适合用文件进行存储? B
    A.bbs上的用户名和密码
    B.视频网站上的视频
    C.社交网站上的动态
    D.购物网站上用户的交易记录
    2、判断(2分)判断题:如果对响应速度要求很高,可以采用文件来储存数据。A
    A.对
    B.错
    3、判断(2分)判断题:文件一般用于长期存储,数据库一般用于临时存储。 B
    A.对
    B.错
    4、判断(2分)判断题:系统日志用文件存储是因为其信息格式较为松散。 A
    A.对
    B.错
    详细设计工具
    1、单选(2分)详细设计的任务是定义每个模块的 C
    A.外部特性
    B.内部特性
    C.算法和数据格式
    D.功能和输入输出数据
    2、单选(2分)程序控制分为 C 三种基本结构
    A.分块、顺序、循环
    B.顺序、嵌套、选择
    C.顺序、选择、循环
    D.递归、堆栈、队列
    3、单选(2分)下面哪条属于伪码的优点? A
    A.不仅可以作为设计工具,还可以作为注释工具
    B.形象直观
    C.便于描述较为复杂的条件组合
    D.支持逐步求精
    4、单选(2分)下面哪条属于程序流程图的优点? C
    A.支持逐步求精
    B.便于表达数据结构
    C.描绘直观,便于掌握
    D.程序员可以很早地开始考虑程序的控制流程
    5、单选(2分)以下说法正确的是 B
    A.程序流程图是一种算法描述工具
    B.PAD图是一种描述程序逻辑结构的工具
    C.PAD图又叫盒图
    D.N-S图相对于PAD图的优点在于其支持自顶向下逐步求精的设计
    软件设计规约
    1、单选(2分)概要设计规约不应包括 C
    A.软件测试方面的要求和说明
    B.系统环境的设定
    C.各处理过程的算法
    D.文件结构和全局数据
    2、单选(2分)关于软件设计规约,以下说法错误的是 C
    A.详细设计规约对应于系统的单元测试
    B.详细设计规约主要作为软件设计人员与编程人员之间交流的媒体
    C.概要设计规约对应于系统的确认测试
    D.概要设计规约主要作为软件项目管理人员、系统分析人员与设计人员之间交流的媒体
    3、判断(2分)判断题:在软件设计规约中,应当有针对出错的处理。 A
    A.对
    B.错
    4、判断(2分)判断题:概要设计规约需要对软件的组织和其组成部分的内部结构进行描述。 B
    A.对
    B.错
    5、判断(2分)判断题:概要设计阶段和详细设计阶段分别产生不同的设计规约。 A
    A.对
    B.错
    结构化方法总结
    1、单选(2分)关于结构化方法的世界观说法错误的是 B
    A.一切系统都是由信息流构成的
    B.信息流可以没有数据源和数据潭
    C.信息处理主要表现为信息的流动
    D.信息的流动离不开加工的处理
    2、单选(2分)下面哪条不是结构化方法的基本原理/原则? A
    A.自底向上功能分解
    B.数据抽象
    C.功能抽象
    D.模块化
    3、单选(2分)结构化方法的抽象层不包括 A
    A.问题层
    B.需求分析层
    C.设计层
    D.实现层
    4、单选(2分)结构化方法逐渐被面向对象方法所取代,以下哪一点不属于结构化方法的问题? D
    A.分析阶段和设计阶段的术语空间不一致
    B.解的结构没有保持原系统的结构
    C.捕获的“过程”和“数据”都是易变的
    D.没有提供控制信息复杂度的机制
    第五周:UML
    面向对象的概念
    1、填空(2分)在面向对象方法中,对于客观事物的描述,其静态特征用对象的 属性 表示。
    2、单选(2分)针对对象之间的动态联系,以下说法正确的是 A
    A.对象之间只能通过消息进行通信
    B.一个对象可以直接使用另一个对象的属性
    C.对象相互之间不允许进行联系
    D.???
    3、判断(2分)判断题:面向对象就是一种使用面向对象程序设计语言的程序开发方法。 B
    A.对
    B.错 面向对象是一种软件方法学
    UML的概念
    1、单选(2分)以下哪一项描述了UML的作用D。
    A.弥补应用系统和运行平台之间的“距离”
    B.建立不同抽象层次的术语空间和模型表达工具
    C.支持多视角地建立系统模型
    D.以上选项都正确
    2、单选(2分)UML是一种B语言。
    A.形式化
    B.半形式化
    C.非形式化
    D.???
    3、单选(2分)UML不具备一下哪个结构D。
    A.静态对象结构
    B.动态行为
    C.系统部署
    D.功能结构
    表达客观事物的术语——类
    1、单选(2分)在类的属性定义中引入可见性,主要是为了支持B这一软件设计原则。
    A.抽象
    B.信息隐蔽
    C.模块化
    D.自底向上
    2、判断(2分)判断题:所有的类都必须与客观事物相对应,都必须有具体的实例。 B
    A.对
    B.错
    3、判断(2分)判断题:一个类中可以有多个操作,也可以没有操作。 A
    A.对
    B.错
    4、单选(2分)B是描述类的所有对象的共同特征的一个数据项。
    A.实例属性
    B.类属性
    C.方法属性
    D.对象属性
    表达客观事物的术语——接口及其他
    1、判断(2分)判断题:接口之间没有关联、泛化、实现和依赖,也不能参与泛化、实现和依赖关系。 B
    A.对
    B.错 //可以参与这些关系
    2、判断(2分)判断题:接口不仅可以描述类的外部可见操作,而且可以描述其内部结构。 B
    A.对
    B.错 不可以描述其内部结构
    3、多选(2分)以下哪些项不属于UML描述客观世界实体的基本术语BD。
    A.类
    B.信号
    C.协作
    D.参与者
    4、单选(2分)以下UML术语体现并发行为抽象的是C。
    A.接口
    B.协作
    C.主动类
    D.用况
    控制复杂性的术语——包
    1、填空(2分)UML中为了组织类目,控制信息组织和文档组织的复杂性而引入的术语是包。
    2、判断(2分)判断题:包可以包含其他种类的模型元素,但本身不能嵌套在其他包中。 B
    A.对
    B.错 可以嵌套在其他包中
    3、判断(2分)判断题:包间的依赖通常隐含了各包中元素之间存在的一个或多个依赖。 A
    A.对
    B.错
    表达关系的术语——关联
    1、单选(2分)实例连接又称为链,它表达了对象之间的A。
    A.静态关系
    B.动态关系
    C.连接关系
    D.无关系
    2、判断(2分)判断题:对于关联另一端的类的每个对象,本端的类只可能会有一个对象出现。 B
    A.对
    B.错 本端的类可以有多个对象出现
    3、判断(2分)判断题:在关联关系中,聚合是组合的一种特殊形式。 B
    A.对
    B.错 聚合是特殊的关联
    4、判断(2分)判断题:在类的一个关联中,可以显示地命名该角色。 A
    A.对
    B.错
    表达关系的术语——泛化、细化、依赖及如何使用
    1、单选(2分)Jack在Google工作,是公司市场组的一名成员。那么描述Jack的类目Employee和描述Google的类目Company之间是A关系。
    A.关联
    B.泛化
    C.细化(实现)
    D.依赖
    2、单选(2分)以下表达类目之间关系的术语中,其正确的表示方法是无箭头实线线段的是A。
    A.关联
    B.泛化
    C.细化
    D.依赖
    3、单选(2分)在用UML对关系进行建模时,以下策略错误的是D。
    A.仅当要建模的关系不是结构关系时,才使用依赖。
    B.仅当关系是“is-a-kind-of”关系时,才使用泛化。
    C.应保持泛化关系的平衡:继承的层次不要多深,不要过宽。
    D.考虑到建模的复杂性,可以引入循环的泛化关系。
    4、判断(2分)判断题:对象的依赖关系是一种使用关系。 A
    A.对
    B.错
    第六周:UML
    UML的模型表达工具_概述
    1、单选(2分)以下不属于UML静态建模工具的是B。
    A.类图
    B.通信图
    C.对象图
    D.制品图
    2、单选(2分)以下不属于UML动态建模工具的是C。
    A.用况图
    B.活动图
    C.部署图
    D.状态图
    3、单选(2分)描述UML需求模型的是C。
    A.状态图
    B.顺序图
    C.用况图
    D.类图
    UML的模型表达工具_静态建模——类图
    1、判断(2分)判断题:类图主要使用“类”来抽象系统中各个组成部分,不包括系统环境。( B )
    A.√
    B.×
    2、判断(2分)判断题:对于每一个关联关系都需要说明其多重性,如果不说明,则默认是*。
    A.√
    B.×
    3、判断(2分)判断题:注解和约束不是类图的一部分。( B )
    A.√
    B.×
    4、单选(2分)可视化地表达系统的静态结构模型的是( B )。
    A.用况图
    B.类图
    C.状态度
    D.顺序图
    UML模型表达工具_动态建模——用况图
    1、判断(2分)判断题:用况表达了参与者使用系统的一种方式。( A )
    A.√
    B.×
    2、判断(2分)
    判断题:参与者一般可以表达与系统交互的人、硬件或系统等,因此实质上不是软件应用的一部分。( A )
    A.√
    B.×
    3、单选(2分)以下哪个不属于用况图中的关系D。
    A.关联
    B.泛化
    C.扩展
    D.依赖
    4、判断(2分)判断题:用况图可以划分系统与外部实体的界限,是系统开发的起点。( A )
    A.√
    B.×
    顺序图
    1、判断(2分)在顺序图中,对象生命线用于表示一个对象在一个特定的时间段中的存在,一般表示为垂直的虚线。( A )
    A.√
    B.×
    2、单选(2分)依据顺序图的表示规范,同步消息的回复应当使用以下哪种表示方法C。
    A.实线枝形箭头
    B.实线实心三角箭头
    C.虚线枝形箭头
    D.???
    3、单选(2分)
    顺序图由类角色,生命线,激活期和B组成。
    A.关系
    B.消息
    C.用例
    D.实体
    4、单选(2分)以下哪个不是UML的静态视图C。
    A.类图
    B.对象图
    C.顺序图
    D.用况图
    状态图
    1、单选(2分)
    以下哪一种不属于UML状态图中对于状态的分类D。
    A.初态
    B.终态
    C.正常状态
    D.中间状态
    2、判断(2分)
    判断题:一个活动是指状态机中一种可中断的计算,中断处理后仍可继续;而一个动作是指不可中断的原子计算,它可导致状态的改变或导致一个值的返回。因此活动和动作之间没有任何关系。(B)
    A.√
    B.×
    3、单选(2分)以下哪个UML视图是描述一个对象的生命周期的?(B)
    A.类图
    B.状态图
    C.协作图
    D.顺序图
    4、单选(2分)若将活动状态比作方法,那么动作状态即D。
    A.方法返回值
    B.方法名
    C.方法的可见性
    D.方法体中的每一条语句
    UML总结
    1、判断(2分)判断题:在UML可模型化的4种事件中,“信号”是一种异步事件,而“调用”一般是同步事件。(A)
    A.√
    B.×
    2、单选(2分)UML中的类没有体现下列哪一项软件设计原理C。
    A.数据抽象
    B.过程抽象
    C.功能抽象
    D.信息隐蔽
    3、判断(2分)判断题:UML表达模型元素之间关系的4个术语都体现了结构抽象的原理。(A)
    A.√
    B.×
    4、单选(2分)以下哪一项不属于UML的作用B。
    A.提供了跨越问题空间到目前“运行平台”之间丰富的建模元素。
    B.体现了软件设计的不同原理
    C.提供了相应的模型表示工具。
    D.提供了表达系统结构模型和行为模型的图形化工具。
    第七周:面向对象分析
    面向对象分析概述
    1、判断(2分)判断题:OOA的最终目的是产生一个只能直接反映问题域的OOA模型。( B )
    A.√
    B.×
    2、判断(2分)判断题:OOA过程中建立模型规约可以集中进行,也可以分散在各个活动中。( A )
    A.√
    B.×
    3、单选(2分)面向对象分析方法与结构化分析方法的区别之一是B。
    A.一个使用了“抽象”,一个没有使用“抽象”。
    B.一个以问题域的成分为几点来构造一个模块,而另一个不是。
    C.一个目标明确,而另一个不明确
    D.一个需要考虑数据结构,而另一个不需要考虑。
    识别类
    1、判断(2分)判断题:与实现条件有关的对象是OOA阶段需要重点关注的对象。( B )
    A.√
    B.×
    2、判断(2分)判断题:如果一个交互是由系统外的参与者发起的,第一个处理该交互的对象是主动对象。( A )
    A.√
    B.×
    3、判断(2分)判断题:在对象分类过程中,对于属性及操作相似的类需要考虑能够抽象出一个一般类或部分类。( A )
    A.√
    B.×
    4、单选(2分)以下说法错误的是B。
    A.吸尘器和电子琴同时作为商品销售,所以可以通过抽象合并为同一类。
    B.轿车和货车都是车,所以可以直接以一个类”车”代替两个类。
    C.轿车和货车都是车,所以可以提取出一个一般类“车”作为他们的父类。
    D.班主任只有一个属性姓名,所以可以取消该类,将属性”班主任姓名”添加至相关的其他类。
    识别属性和操作
    1、判断(2分)判断题:OOA过程中,为了提高操作的执行速度,可以考虑增加一些属性来保持操作的阶段性执行结果。( B )
    A.√
    B.×
    2、判断(2分)判断题:一个类的属性必须适合这个类和它的全部特殊类的所有对象,同时,一个类中的操作也应适合这个类及其所有特殊类的每一个对象实例。( A )
    A.√
    B.×
    3、判断(2分)判断题:在OOA过程中,不需要考虑任何主动对象和主动操作。( B )
    A.√
    B.×
    4、单选(2分)以下哪项不属于类范围的操作A。
    A.创建类的某个对象
    B.读取对象的属性值
    C.通过计算后修改对象的属性值
    D.监控对象的属性值
    识别对象之间的关系
    1、单选(2分)在面向对象分析阶段,对于继承关系的简化以下说法正确的是D。
    A.取消没有特殊性的特殊类
    B.增加属性简化继承关系
    C.取消用途单一的一般类
    D.以上说法均正确
    2、判断(2分)判断题:关联关系可用动词或动宾结构来命名,关联的命名不可缺省。( B )
    A.√
    B.×
    3、判断(2分)判断题:两个对象之间的关联关系只能有一个。( B )
    A.√
    B.×
    4、判断(2分)判断题:在初步建立类之间的关系时,可以暂时使用关联。在最终的类图中,若能用其他关系明确地指明类之间关系的含义,就不要使用关联。( B )
    A.√
    B.×
    5、判断(2分)判断题:依赖关系是一种使用关系,如果被使用的类发生变化,那么另一个类的操作也会受到影响。( A )
    A.√
    B.×
    面向对象设计概述
    1、单选(2分)
    需求是不断变化的,为了加强可维护性在设计上需要适应不可预见的变化。以下术语的易变性最低的是A。
    A.类
    B.服务
    C.接口
    D.属性
    2、判断(2分)判断题:与结构化的分析和设计类似,面向对象的分析和设计之间也存在一定的鸿沟。( B )
    A.√
    B.×
    3、单选(2分)从OOA到OOD的过程以下描述最恰当的是C。
    A.转换
    B.扩展和完善
    C.调整和增补
    D.细化
    4、判断(2分)判断题:OOD模型的4个部分均采用与OOA一致的概念、表示法、活动及策略。( B )
    A.√
    B.×
    问题域部分的概念
    1、判断(2分)判断题:所有的实现因素都能通过一些在OOD中新定义的独立组成部分而实行有效的隔离。( B )
    A.√
    B.×
    2、单选(2分)以下实现条件对OOD模型问题域部分影响最大的是A。
    A.编程语言
    B.硬件、操作系统及网络设施
    C.复用支持
    D.数据管理系统
    3、判断(2分)判断题:在OOA中未完成的细节定义需要在OOD完成,所以OOD的主要任务是对OOA的细化。( B )
    A.√
    B.×
    如何进行问题域部分的设计
    1、判断(2分)判断题:OOA强调如实地反映问题域,OOD考虑实现问题,当所用语言不支持多继承和多态,此时需要按编程语言调整多继承和多态。( A )
    A.√
    B.×
    2、单选(2分)相同的操作名在同一个类中可以被定义多次,按参数的个数、种类或次序等的不同对它们进行区分,这种现象在面向对象方法中被称为B。
    A.多态
    B.重载
    C.泛化
    D.分类
    3、多选(2分)以下属于进行问题域部分的设计需要考虑的方面有ABCD。
    A.提高性能
    B.考虑复用
    C.编程语言
    D.永久存储
    第八周:面向对象设计2
    人机交互部分的设计返回
    1、判断(2分)判断题:人机交互是OOD阶段的任务,在OOA阶段不需考虑。( B )
    A.√
    B.×
    2、判断(2分)判断题:人机交互的设计需要重点考虑比例最大的使用人群的情况,并适当地兼顾其他人。( A )
    A.√
    B.×
    3、判断(2分)判断题:人机交互的交互内容需求不仅与系统的功能需求有关,而且与人的主观意识也有很大关系。( B )
    A.√
    B.×
    4、判断(2分)判断题:人机交互部分的设计可以从use case抽取人机交互内容及过程,在抽取过程中需要删除所有与输入输出无关的语句。( A )
    A.√
    B.×
    控制驱动和数据管理部分的设计
    1、单选(2分)控制驱动部分由系统中的__A____构成。
    A.主动类
    B.抽象类
    C.对象
    D.接口
    2、判断(2分)判断题:控制流是一个在处理机上顺序执行的动作序列,在目前的实现技术中,一个控制流就是一个进程或线程。( A )
    A.√
    B.×
    3、多选(2分)为什么需要在OOD阶段考虑控制驱动部分,以下说法正确的是ABC。
    A.并发行为是现实中固有的,当前大量的系统都是并发系统
    B.多任务的设置
    C.隔离硬件、操作系统、网络的变化对整个系统的影响
    D.???
    4、单选(2分)数据管理部分主要目的是为系统中的A提供数据存储和恢复的功能。
    A.长久存储的对象
    B.临时存储的对象
    C.所有对象
    D.???
    程序设计范型和面向对象编程语言的特点发展
    1、单选(2分)在以下几种编程语言中,不属于面向对象编程语言的是A。
    A.C
    B.C++
    C.C#
    D.Objective-C
    2、判断(2分)判断题:过程设计是面向对象程序设计范型的特点之一。( B )
    A.√
    B.×
    3、判断(2分)判断题:面向对象的编程语言强调严格的封装。( B )
    A.√
    B.×
    4、判断(2分)判断题:C++是一种在C语言基础上扩充OO成分,对封装采取灵活策略的语言,所以属于混合型面向对象语言。( A )
    A.√
    B.×
    如何选择编程语言
    1、判断(2分)判断题:使用非OO语言不能实现OOD模型。( B )
    A.√
    B.×
    2、判断(2分)判断题:计算机语言中,静态绑定发生在程序执行之前,而动态绑定则只用到运行期的可用信息。( A )
    A.√
    B.×
    3、判断(2分)判断题:Java和C++在实现对象之间的关联关系的方法上是一致的。( B )
    A.√
    B.×
    敏捷开发概述
    1、单选(2分)单选题:下列关于敏捷软件开发说法错误的是(B)
    A.敏捷软件开发是一种应对快速变化的需求的一种开发方法
    B.敏捷软件开发强调文档的重要性
    C.敏捷软件开发注重程序员团队与业务专家的密切协作
    D.敏捷软件开发希望频繁的交付新的软件版本
    2、单选(2分)单选题:下列关于敏捷联盟宣言的理解错误的是(C)
    A.个体和交互胜过过程和工具,表明团队的构建比开发环境的构建重要得多
    B.可以工作的软件胜过面面俱到的文档,表明过多的文档比过少的文档更糟糕
    C.客户合作胜过合同谈判,表明成功的项目需要客户配合开发团队详细明确地制定合同,避免开发时关于工作内容的过多交互
    D.响应变化胜过遵循计划,表明项目计划不能考虑过远,只需要为下两周做详细计划即可,再远的时间可制定简略的规划
    3、单选(2分)单选题:下列关于敏捷原则说法错误的是(D)
    A.在整个项目开发期间,业务人员和开发人员必须天天在一起工作
    B.即使到了开发后期,也可以改变需求
    C.最有效果的、最有效率的传递信息的方法,是面对面的交谈
    D.首要的进度度量标准是代码量
    4、单选(2分)单选题:下列软件哪个最适合采用敏捷开发方法(D)
    A.Windows
    B.铁路12306购票网
    C.学生成绩管理系统
    D.小型创业项目软件
    极限编程
    1、判断(2分)判断题:极限编程是采取必要的手段,充分挖掘软件开发团队人员的极限能力,在最短的时间内交付软件的开发方法。( B )
    A.√
    B.×
    2、单选(2分)单选题:极限编程采用(A)工具来了解与需求相关的内容。
    A.用户素材
    B.用况图
    C.思维导图
    D.访谈大纲
    3、单选(2分)单选题:下列哪项不是结对编程的含义(D)
    A.共同设计
    B.共同编写
    C.功劳均等
    D.酬劳平分
    4、单选(2分)单选题:下列关于极限编程原则说法正确的是(D)
    A.一个特定的模块或技术由一个程序员单独负责
    B.开发人员可参与所有方面的开发工作,不需要某一领域的专业知识
    C.为了保证正确性,程序员每天只能一次检入(check in)他们的模块进行集成
    D.在编写功能代码的时候要同时编写测试代码
    5、单选(2分)单选题:下列哪项是极限编程过程的四个阶段(B)
    A.需求,分析,设计,实现
    B.策划,设计,编码,测试
    C.评估,编码,集成,测试
    D.分析,构造,测试,升级
    敏捷设计
    1、多选(2分)多选题:下列哪些问题会导致设计不能很好应对需求的变化(ABCD)
    A.在一部分的设计中包含了对其它部分有用的成分
    B.设计中包含了当前没有用的成分
    C.软件中的重复代码
    D.难于理解的模块
    2、判断(2分)判断题:为了防止软件腐化,开发团队不需要一个成熟的初始设计,而是通过多次使用单元测试和验收测试,灵活、持续地改进设计。( A )
    A.√
    B.×
    3、单选(2分)单选题:敏捷设计要求系统设计在任何时间都尽可能的简单、干净和富有表现力,下面对敏捷设计理解错误的是(D)
    A.对于用户来说,通过直观、简单的界面呈现出恰当特征的程序
    B.对于软件设计者来说,通过简单、直观的划分,使其具有最小耦合的内部结构
    C.对于开发人员来说,每周都会取得一些重大进展
    D.对于软件管理者来说,只需要做很少的管理工作
    Scrum模型
    1、单选(2分)单选题:Scrum模型中产品的一次迭代称作一个(B)
    A.增量
    B.冲刺
    C.循环
    D.接力
    2、单选(2分)单选题:在Scrum模型中,为用户提供商业价值的项目需求或特征的优先级列表称作(B)
    A.产品项
    B.待定项
    C.需求项
    D.功能项
    3、单选(2分)单选题:下列关于Scrum模型的说法错误的是(C)
    A.Scrum模型在规划纲要阶段建立大致的项目目标和设计软件体系结构
    B.Scrum模型每次迭代会开发出一个系统增量
    C.Scrum模型在迭代全部结束后向客户交付软件
    D.Scrum模型在项目结束阶段完善文档,并总结从项目中获得的经验
    第九周:软件测试
    软件测试的概念
    1、单选(2分)单选题:软件测试的目的是(B)。
    A.试验性运行软件
    B.发现软件错误
    C.证明软件正确
    D.修改软件中出现的错误
    2、单选(2分)单选题:被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测,这种测试称为(C)。
    A.白盒测试
    B.黑盒测试
    C.静态测试
    D.动态测试
    3、单选(2分)单选题:软件调试的目的是(B)。
    A.发现错误
    B.改正错误
    C.改善软件的性能
    D.挖掘软件的潜能
    4、单选(2分)单选题:调试应该由(B)完成。
    A.与源程序无关的程序员
    B.编制该源程序的程序员
    C.不了解软件设计的机构
    D.设计该软件的机构
    5、单选(2分)单选题:在下列描述中,关于测试与调试的说法错误的是(D)。
    A.测试是显示错误的行为,而调试是推理的过程
    B.测试显示开发人员的错误,调试是开发人员为自己辩护
    C.测试能预期和可控,调试需要想象、经验和思考
    D.测试需要在了解软件设计的条件下完成,调试则需要完整的程序代码
    软件测试过程模型和原则
    1、单选(2分)单选题:下列哪一项不属于软件测试过程模型的组成部分。(B)
    A.环境模型
    B.程序模型
    C.被测对象模型
    D.错误模型
    2、单选(2分)单选题:下面关于错误、失效、故障的说法错误的是(C)。
    A.错误是指与所期望的设计之间的偏差
    B.失效是指与所规约的系统执行之间的偏差
    C.故障是由于错误或失效导致的
    D.失效会导致程序出现不正确的状态,影响程序的输出结果
    3、单选(2分)单选题:下面关于软件测试的原则说法正确的是(D)
    A.测试应该从大规模开始,逐渐转向小规模
    B.测试计划应该在编码结束后开始制定
    C.软件最好由编写该程序的程序员自己来测试
    D.穷举测试是不可能的
    4、判断(2分)判断题:测试只能保证尽可能多地发现错误,无法保证能够发现所有的错误。(A)
    A.√
    B.×
    白盒测试技术
    1、单选(2分)单选题:白盒测试是结构测试,被测对象基本上是源程序,以程序的(C)为基础设计测试用例。
    A.应用范围
    B.功能
    C.内部逻辑
    D.输入数据
    2、单选(2分)单选题:白盒测试的被测对象模型是(B)。
    A.程序流程图
    B.控制流程图
    C.事务流程图
    D.模块结构图
    3、单选(2分)单选题:下列几种逻辑覆盖测试按查错能力从弱到强排序正确的是(A)。
    A.语句覆盖,分支覆盖,条件组合覆盖,路径覆盖
    B.分支覆盖,条件组合覆盖,语句覆盖,路径覆盖
    C.路径覆盖,条件组合覆盖,分支覆盖,语句覆盖
    D.语句覆盖,路径覆盖,分支覆盖,条件组合覆盖
    4、单选(2分)单选题:如果一个判定中的复合条件表达式为(A > 1)or(B <= 3),则为了达到100%的条件组合覆盖率,至少需要设计多少个测试用例(D)。
    A.1
    B.2
    C.3
    D.4
    黑盒测试技术
    1、单选(2分)单选题:黑盒测试是根据软件的(C)来设计测试用例的。
    A.应用范围
    B.内部逻辑
    C.功能
    D.输入数据
    2、单选(2分)单选题:黑盒测试不能发现下面的哪种类型的错误。(D)
    A.界面错误
    B.性能错误
    C.功能遗漏
    D.是否存在冗余代码
    3、单选(2分)单选题:下列方法中,不属于黑盒测试的是(A)。
    A.基本路径测试法
    B.等价类测试法
    C.边界值分析法
    D.事务流测试法
    4、单选(2分)单选题:在某大学学籍管理信息系统中,假设学生年龄的输入范围为16—40,则等价类划分技术,下面划分正确的是(B)。
    A.可划分为2个有效等价类,2个无效等价类
    B.可划分为1个有效等价类,2个无效等价类
    C.可划分为2个有效等价类,1个无效等价类
    D.可划分为1个有效等价类,1个无效等价类
    5、单选(2分)单选题:假定某参数的输入范围是0—10的整数,采用边界值测试技术,最少需要(D)个测试用例。
    A.1
    B.2
    C.3
    D.4
    软件测试的步骤
    1、单选(2分)单选题:单元测试计划、集成测试计划、确认测试计划分别在(D)阶段制定。
    A.详细设计、需求分析、总体设计
    B.总体设计、详细设计、需求分析
    C.需求分析、总体设计、详细设计
    D.详细设计、总体设计、需求分析
    2、单选(2分)单选题:单元测试主要针对模块的几个基本特征进行测试,该阶段不能完成的测试是(A)。
    A.系统功能
    B.局部数据结构
    C.重要的执行路径
    D.错误处理
    3、单选(2分)单选题:在单元测试中由被测模块调用,用以代替被测模块所调用的子模块被称作(B)。
    A.驱动模块
    B.桩模块
    C.骨架模块
    D.响应模块
    4、判断(2分)判断题:集成测试既可以将所有模块组装到一起然后进行测试,也可以在组装的过程中边连接边测试。(A)
    A.√
    B.×
    5、判断(2分)判断题:有效性测试是在真实环境下验证被测软件是否满足需求规格说明书列出的需求。(B)
    A.√
    B.×
    6、单选(2分)单选题:超出软件工程范围的测试是(D)。
    A.单元测试
    B.集成测试
    C.确认测试
    D.系统测试
    第十周:项目管理
    项目管理的概念
    1、单选(2分)关于项目的特性,下面说法错误的是__D____
    A.项目有一个独特的目的
    B.项目是临时性的
    C.项目应该有一位主要客户或项目发起人
    D.项目应该是确定的
    2、单选(2分)关键路径法(CPM)之所以能节省项目时间,是因为____A___
    A.缩短了最长路径的时间开销
    B.采用了“三值加权”的方法对计划进行编排
    C.考虑了项目的风险
    D.简化了项目
    3、单选(2分)项目管理发展的产物是___D____
    A.项目管理协会
    B.项目管理知识体系
    C.人才认证
    D.以上都是
    4、判断(2分)判断题:项目管理是指在项目中运用专门的知识、技能、工具和方法,使项目能够实现或超过项目干系人的需要和期望。(A)
    A.√
    B.×
    项目管理框架和要素
    1、单选(2分)关于项目干系人,以下说法错误的是___B____
    A.项目干系人是指参与和受项目活动影响的人
    B.项目干系人包括项目发起人、项目组、协助人员等,不包括项目的反对者
    C.项目经理需要了解和识别各干系人对项目的需求、期望,使其能发挥作用
    D.项目经理需要对所有的项目干系人进行管理
    2、单选(2分)项目管理的四大核心知识领域不包括__C_____
    A.时间
    B.成本
    C.人员
    D.质量
    3、单选(2分)项目整体管理所包括的主要过程不包括___D____
    A.项目计划制定
    B.项目计划执行
    C.整体变更控制
    D.整体人员调度
    4、单选(2分)关于项目管理工具,下列说法错误的是___B_____
    A.工作分解结构支持自顶向下列出一个项目需要做的事情
    B.净值图是当前项目实际成本与总的预算成本的比值
    C.甘特图用来安排和估算项目的进度
    D.网络图主要用来识别关键路径
    5、判断(2分)判断题:项目管理的要素包括范围、进度、成本、质量。(A)
    A.√
    B.×
    软件项目管理的概念
    1、单选(2分)软件项目管理是__D___一切活动的管理。
    A.需求分析
    B.软件设计过程
    C.模块设计
    D.软件生命周期
    2、单选(2分)下面哪一条不是范围管理中常用的项目管理工具或技术?(C)
    A.范围说明
    B.工作分解结构
    C.变更请求
    D.需求分析
    3、单选(2分)下面哪个图属于时间管理的工具(A)
    A.甘特图
    B.净值图
    C.鱼骨图
    D.项目组织图
    CMM概念及发展
    1、单选(2分)软件质量三因素包括___C___
    A.人员、成本、技术
    B.人员、范围、过程
    C.人员、技术、过程
    D.需求、设备、过程
    2、判断(2分)判断题:CMM指的是软件过程能力成熟度等级,共划分了五个等级,1级成熟度最高,5级成熟度最低。(B)
    A.√
    B.×
    3、单选(2分)下列关于CMM说法错误的是__D____
    A.CMM给出了从混乱、个人的过程到成熟的规范化过程的一个框架
    B.软件组织可以通过CMM去定义、实施、度量、控制和改进自己的软件过程
    C.CMM体现了软件工程和软件管理的优秀实践
    D.CMM中涉及了项目是否成功的所有要素
    CMM的基本内容
    1、多选(2分)下面哪些属于低过程能力的基本特征?(ABC)
    A.非常依赖当前的参与人员
    B.冒险地使用新技术
    C.进度延迟
    D.实现了过程制度化
    2、单选(2分)关于过程性能和过程能力,说法错误的是__C_____
    A.过程能力是能够实现预期结果的程度
    B.过程性能是得到的实际结果
    C.一个项目的过程性能可以充分反映其所在组织的整个过程能力
    D.过程能力和过程性能不一定完全匹配
    3、单选(2分)下面哪一条不能体现一个过程的成熟度?(B)
    A.可控制的
    B.可扩展的
    C.已定义的
    D.可测量的
    4、判断(2分)判断题:能力成熟度等级反映的是软件开发组织的软件过程能力成熟程度,一旦满足了某个等级的过程目标,就可以直接提升到该等级。(B)
    A.√
    B.×
    CMM五级标准
    1、单选(2分)按过程能力成熟度由低到高排序的结果是____B___
    A.初始级、已定义级、已管理级、可重复级、持续优化级
    B.初始级、可重复级、已定义级、已管理级、持续优化级
    C.初始级、已定义级、持续优化级、可重复级、已管理级
    D.初始级、已管理级、已定义级、可重复级、持续优化级
    2、单选(2分)可重复级的特征不包括以下哪一条?(D)
    A.将软件项目的有效管理过程制度化
    B.配备了基本的软件管理控制
    C.项目是稳定的
    D.开发新领域软件的风险是可定量估计的
    3、判断(2分)判断题:CMM不包括对人员能力的确认和提升。(A)
    A.√
    B.×
    4、判断(2分)判断题:虽然CMM不允许跳级,但是对于有志向的项目开发组织,应当一开始就以高级别的标准要求自己。(B)
    A.√
    B.×
    ISO9000标准
    1、判断(2分)判断题:ISO 9000标准和ISO 9001标准分别定义了不同类型开发过程的标准。(B)
    A.√
    B.×
    2、判断(2分)判断题:ISO 9001标准是建立在ISO 9000标准之上的,所以是最具普遍性的。(B)
    A.√
    B.×
    3、判断(2分)判断题:ISO 9001标准适用于设计、开发和产品维护等机构内的质量过程。(A)
    A.√
    B.×
    4、判断(2分)判断题:ISO 9000标准提供了类似于CMM的控制软件过程质量的途径。(B)
    A.√
    B.×

    第十一周:软件开发工具与环境
    软件开发工具及环境的定义
    1单选(2分)关于CASE的定义,说法错误的是___D___
    A.是一组工具和方法的集合
    B.在开发/维护中,提供计算机的辅助支持
    C.在开发/维护中,引入工程化方法
    D.支持软件开发的软件工具
    2单选(2分)Alfonso Fuggetta将CASE工具分为了几类,其中,我们较为熟悉的软件开发集成环境(IDE)属于哪一类?C
    A.工具
    B.工作台
    C.环境
    D.以上都不是
    3单选(2分)关于CASE工作台,以下说法错误的是___C____
    A.CASE工作台是一组工具,支持分析、设计或测试等特定阶段
    B.工作台将一组工具组装,并使这组工具可以协同工作
    C.包括了编译器、编辑器和文件比较器等
    D.分为开放式工作台和封闭式工作台
    4判断(2分)
    判断题:软件开发环境主要由软件工具构成,包括软件开发的相关过程、活动和任务。×
    5判断(2分)
    判断题:软件工程环境是指以软件工程为依据,支持大型软件生成的系统。√
    工具集成模型
    1单选(2分)数据集成采用的是以下哪种方式?D
    A.共享文件
    B.共享数据仓库
    C.共享数据结构
    D.以上都是
    2单选(2分)关于Wasserman五级模型,说法错误的是___C___
    A.平台集成是指工具运行在相同的硬件/操作系统平台上
    B.数据集成是指工具共享数据结构,工具之间可以交换数据
    C.控制集成是指各工具采用共同的用户交互标准集
    D.过程集成是指CASE系统嵌入了关于过程活动、约束以及支持这些活动所需的工具等知识
    3单选(2分)关于层次模型,以下说法错误的是___D___
    A.层次模型中,把环境看作是一组服务的集合
    B.按层次的由低到高,将环境分为平台服务、框架服务和工具应用
    C.有关工具的集成可以分为三个部分,集成工具、半分离工具、外来工具
    D.外来工具管理自己的数据结构和文件,不依赖于平台服务
    常用的软件开发工具和环境
    1单选(2分)主流的应用类型不包括__C____
    A.桌面应用
    B.Web应用
    C.安卓应用
    D.嵌入式系统应用
    2多选(2分)下列开发环境适合用于java开发的是__ABC_____
    A.Eclipse
    B.MyEclipse
    C.JBuilder
    D.Xcode
    3多选(2分)下列开发环境适用于C/C++开发的是__ACD____
    A.Visual Studio
    B.Android Studio
    C.GCC
    D.Dev C++

    展开全文
  • 软件工程知识点复习总结

    万次阅读 多人点赞 2018-01-06 14:18:14
    软件工程

    Software:

    (1)指令的集合,通过执行这些指令可以满足预期的特征、功能和性能需求;
    (2)数据结构,使得程序可以合理利用信息
    (3)软件描述信息,它以硬拷贝和虚拟形式存在,用来描述程序操作和使用


    Software Engineering:

    软件工程是:
    (1)将系统化的、规范化、可量化的方法应用于软件的开发、运行和维护,即将工程化方法应用于软件。
    (2)在(1)中所述方法的研究

    What the difference between software and hardware?
    1.软件是设计开发的,而不是传统意义上生产制造的。
    2.软件不会“磨损”
    3.大多数软件根据实际的顾客需求定制的。

    Why does software need Change or Evolved?
    软件必须适应新的计算环境或技术的需要。
    必须增强软件来实现新的业务需求。
    软件必须扩展到与其他更现代的系统或数据库进行互操作。
    必须重新构建软件,使其在网络环境中可行。
    列表内容
    支持软件工程的根基在于质量关注点(quality focus)
    是对软件的组织承诺,是支持软件工程的基石
    软件工程的基础是过程(process)层。软件过程将各个技术层次结合在一起,使得合理、及时地开发计算机软件成为可能。
    软件工程方法(method)为构建软件提供技术上的解决方法。方法包括:沟通、需求分析、设计模型、编程、测试和技术支持。


    Software Process :

    软件过程:软件过程是工作产品构建时所执行的一系列活动、动作和任务的集合。

    Generic Framework Activity
    适用于所有软件项目,无论其规模和复杂程度如何
    1.沟通(Communication):目的是理解利益相关者的项目目标,并收集需求以定义软件特性和功能。
    2.策划(Planning):定义和描述了软件工程工作,包括需要执行的技术任务、可能的风险、资源需求、工作产品和工作进度计划。
    3.建模(Modeling):利用模型哎更好地理解软件需求并完成符合这些需求的软件设计。
    4.构建(Construction):它包括编码和测试以发现编码中的错误。
    5.部署(Deployment):软件交付到用户,用户对其进行评测并给出反馈意见。

    Umbrella Activities(普适性活动):
    普适性活动贯穿软件项目始终。
    1.软件项目跟踪和控制:项目根据计划评估项目进度,并且采取必要的措施保证项目按进度计划进行。
    2.风险管理:对可能影响项目成果或者产品质量的风险进行评估。
    3.软件质量保证:确定和执行软件质量保证的活动
    4.技术评估:评估软件工程产品、尽量在错误传播到下一个活动之前,发现并清除错误。
    5.测量:定义和收集过程、项目和产品的度量,以帮助团队在发布软件的时候满足利益相关者要求。同时,测量还可以与其他框架活动和普适性活动配合使用。
    6.软件配置管理:在整个软件工程中,管理变更所带来的影响。
    7.可复用管理:定义产品复用的标准,并且建立构建复用机制。
    8.工作产品的准备和生产:包括了生产产品所必需的活动。


    Process Flow

    过程流:描述了在执行顺序和执时间上,如何组织框架中的活动,动作,任务。
    线性过程流(Liner process flow):从沟通到部署顺序执行五个框架活动。
    这里写图片描述
    迭代过程流(iterative process flow):在执行下一个活动前重复执行之前一个或多个活动。
    这里写图片描述
    演化过程流(evolution process flow):采取循环的方式执行各个活动。
    这里写图片描述
    并行过程流(parallel process flow):将一个或是多个活动与其他活动并行执行。
    这里写图片描述


    过程模式(process pattern):描述了软件工程工作中遇到的过程相关的问题、明确了问题环境并给出了针对该问题的一种或几种可证明的解决方式。


    Process Model

    惯用过程模型是为了改变软件开发的混乱状态,促使软件开发更加有序。
    瀑布模型(waterfall model):又被称为经典生命周期(classic life cycle),它提出了一个系统的、顺序的软件开发方法。
    优点:
    有利于大型软件开发过程中人员的组织、管理,从而提高了大型软件项目开发的质量和效率。
    当需求确定、工作采用线性的方式完成的时候瀑布模型是一个很有用的过程模型。
    一个有用的过程模型,其中需求是固定的,工作将以线性方式完成。
    缺点:
    过于理想,缺乏灵活性,容易产生需求偏差。
    实际的项目很少遵守瀑布模型提出的顺序。
    客户通常很难清除的描述所有的需求。
    客户必须要有耐心,因为只有在项目接近尾声的时候,他们才能的带执行的程序。
    适用范围:需求确定,工作能够采用线性的方式完成的软件。
    这里写图片描述
    V模型(V-model):
    描述了质量保证动作同沟通、建模相关动作以及早期构建相关的动作之间的关系。
    V模型强调软件开发的协作和速度,将软件实现和验证有机地结合起来,在保证较高的软件质量情况下缩短开发周期。
    优点:适合工程量小、人力资源少并且开发过程中改动不大的项目
    缺点:错误发现时间迟,产生的风险代价高
    这里写图片描述

    增量过程模型(Incremental Model)
    增量过程模型侧重于每一个增量都提交一个可以运行的产品。
    优点:
    1.能在较短的时间内向用户提交可完成部分工作的产品。
    2.逐步增加产品功能可以使用户有充裕的时间学习和适应新产品,从而减少一个 全新的软件可能给客户组织带来的冲击。
    3. 规避技术风险
    4. 可并行开发构件,加快开发的进度
    5. 对于在业务截止日期之前完全实施的人员配置非常有用。
    缺点:
    (1)并行开发构件有可能遇到不能集成的风险,软件必须具备开放式的体系结构;
    (2)增量模型的灵活性可以使其适应这种变化的能力大大优于瀑布模型和快速原型模型,但也很容易退化为边做边改模型,从而是软件过程的控制失去整体性。
    适用范围:
    (1)进行已有产品升级或新版本开发,增量模型是非常适合的; (2)对完成期限严格要求的产品,可以使用增量模型;
    (3)对所开发的领域比较熟悉而且已有原型系统,增量模型也是非常适合的。
    (4) 项目在既定的商业要求期限之前不可能找到足够的开发人员
    这里写图片描述

    演化过程模型(Evolutionary Model)
    演化模型是迭代的过程模型。
    原型开发(prototyping ):当需求很模糊的时候,原型开发可以帮助软件开发人员和利益相关者更好地理解究竟需要做什么。
    优点:
    开发者与用户充分交流,可以澄清模糊需求,需求定义比其他 模型好得多
    开发过程与用户培训过程同步
    为用户需求的改变提供了充分的余地
    开发风险低,产品柔性好
    开发费用低,时间短
    系统易维护,对用户更友好

    缺点:
    1、 没有考虑软件的整体质量和长期的可维护性。
    2、 大部分情况是不合适的操作算法被采用目的为了演示功能,不合适的开发工 具被采用仅仅为了它的方便,还有不合适的操作系统被选择等等。
    3、 由于达不到质量要求产品可能被抛弃,而采用新的模型重新设计。
    适用范围:
    尽管原型可以用作独立的流程模型,但它更常用作一种可以在任何流模型的上下文中实现的技术。
    这里写图片描述
    螺旋模型(Spiral Model)
    螺旋模型是一种风险驱动型的过程模型生成器,对于软件集中的系统,它可以指导多个利益相关者的协同工作。
    优点:
    它结合了原型的迭代性质和瀑布模型的系统性和可控性特点。
    1. 强调风险
    2. 强调阶段质量
    3. 提供纠错的机会
    4. 使用原型作为风险降低机制,进一步使开发人员能够在产品演变的任何阶段应用原型方法。
    缺点:
    1. 每个阶段都要提出被选方案,进行风险分析,研发周期长,效率低
    2. 必须要转业的风险分析人员的参与
    3. 如果没有发现和管理重大风险,问题无疑将会发生。
    适用范围:大型项目
    这里写图片描述

    协同模型(concurrent development model)
    有时候又称为协同工程,它允许软件团队表述本章所描述的任何模型中的迭代和并发元素。
    协同建模提供了项目当前状态的准确画面。
    适用范围:所有类型的软件开发,协同模型通常更适合涉及不同工程团队的产品工程项目。
    这里写图片描述

    统一过程(Unified Process)
    统一过程模型
    统一过程模型是一种“用例驱动、以体系结构为核心、迭代及增量”的软件 过程框架,由 UML 方法和工具支持。它是一种增量模型,定义了五个阶段:
    a、起始阶段,包括用户沟通和计划活动,强调定义和细化用例
    b、 细化阶段,包括用户沟通和建模活动,重点是创建分析和设计模型。
    c、构件阶段,细化模型设计,并将设计模型转化为软件构件实现
    d、 转化阶段,将软件从开发人员传递给最终用户,并由用户完成 beta 测试和验 收测试
    e、生产阶段,持续地监控软件的运行,并提供技术支持。
    优点:
    1. 任何功能开发后就进入测试过程,及早进行验证
    2. 早期风险识别,采取预防措施

    缺点:
    1. 需求必须在开始之前完全弄清楚,否怎有可能在架构上出现错误
    2. 必须有严格的过程管理,以免使过程退化为原始的试→错→改模式
    3.如果不加控制的让用户过早接触没有测试完全,版本不稳定的产品可能对用 户和开发团队都带来负面的影响。
    这里写图片描述


    Agile Development

    敏捷宣言(Agile development manifesto):
    个人和这些个人之间的交流胜过了开发过程和工具
    可运行的软件胜过了宽泛的文档
    客户合作胜过了合同谈判
    对变更的良好响应胜过了按部就班地遵循计划

    极限编程(Extreme Programming (XP))
    极限编程是敏捷软件开发使用最广泛的一个方法。

    极限编程过程:
    1.策划:
    开始创造“用户故事”
    敏捷团队评估每个故事并分配一个成本(开发周数)
    故事被分组到一个可交付增量
    承诺在交付日期进行
    在第一次递增之后,“项目速度”用于帮助估计后续发行版本的发布日期和进度安排,确定是否对整个开发项目中的所有故事有过分承诺。
    2.设计
    遵循KIS(保持简洁)原则
    鼓励使用CRC(类-责任-协作者)卡(见第8章)
    对于困难的设计问题,建议创建“尖峰解决方案” - 一个设计原型
    鼓励“重构”: 重构是以不改变代码外部行为而改进其内部结构的方式来修改软件系统的过程。
    3.编码
    在编码开始之前,建议对故事进行单元测试
    鼓励“结队编程”
    4.测试
    所有的单元测试每天都执行
    “验收测试”,由客户规定技术条件,并且着眼于客户可见的、可评审的系统级的特征和功能。
    这里写图片描述

    工业极限编程(Industrial XP (IPX))
    IXP是XP的一种有机进化。它由XP的最低限要求、以客户为中心、测试驱动精神组成。IXP和XP的主要差别在于其管理具有更大的包容性,它扩大了用户角色,升级了技术实践。
    IXP合并了六个新实践
    Readiness assessment(项目准备)
    Project community(项目社区)
    Project chartering(项目承租)
    Test-driven management (测试驱动管理)
    Retrospectives.(回顾)
    Continuous learning (持续学习)

    需求工程(Requirement engineering)

    七个任务
    1.起始(Inception):在项目起始阶段,要建立基本的理解,包括对问题、谁需要解决方案、所期望解决方案的性质、与项目利益相关者和开发人员之间达成初步交流合作的效果。
    2.导出(Elicitation –gathering requirements):询问客户、用户和其他人,系统或产品的目标是什么,想要实现什么,系统和产品如何满足业务的要求,最终系统或产品如何利用于日常工作。
    3.精化(Elaboration-requirement modeling):在起始和导出阶段获得的信息将在精化阶段进行扩展和提炼该任务集中于开发一个精确的需求模型。
    4.协商(Negotiation-win-win):使用迭代的方法给需求排序,评估每项需求对项目产生的成本和风险,表述内部冲突,删除、组合和修改需求,以便参与各方均能达到一定的满意度,实现双赢。
    5.规格说明(Specification-document,Model,prototype):一个规格说明可以是一份写好的文档、一套图形化的模型、一个形式化的数学模型、一组使用场景、一个原型或上述各项的任意组合。
    6.确认(Validation-Quality assess):在确认这一步对需求工程的工作产品进行质量评估。
    7.需求管理(Management-Change):基于计算机的系统其需求会变更,并且变更的要求贯穿于系统的整个生存期。需求管理是用于帮助项目组在项目进展中标识、控制和跟踪需求以及需求变更的一组活动。

    需求建模的元素

    这里写图片描述
    这里写图片描述

    基于场景建模(功能)

    使用基于场景的方法可以从用户的视角描述系统。
    开发用例图时,应列出特定参与者执行的功能或活动。
    例:
    这里写图片描述

    UML**活动图**在特定场景通过提供迭代流的图形表示来补充用例。
    例:
    这里写图片描述

    UML**泳道图**是活动图的一种有用变化,可以让建模人员表示用例所描述的活动流,同时指示哪个参与者或分析类是由活动矩形所描述的活动来负责。
    这里写图片描述

    基于类的建模

    基于类建模表示了系统操作的对象、应用于对象间能有效控制的操作、这些对象间的关系以及已定义类之间的协作。
    基于类的分析模型包括类和对象、属性、操作、类的职责协作者(CRC)模型、协作图和包。

    识别分析类
    外部实体(其他系统、设备、人员),产生或实验基于计算机系统的信息。
    事物(报告、显示、字母、信号),问题信息域的一部分。
    偶发事件或事件(所有权转移或完成机器人的一组移动动作),在系统操作环境内发生。
    角色(经理,工程师,销售人员),由和系统交互的人员扮演
    组织单元(部门,组,团队),和某个应用系统相关
    场地(制作车间或码头),建立问题的环境和系统的整体功能
    结构(传感器、交通工具、计算机),定义了对象的类或与对象相关的类。
    例:
    这里写图片描述
    这里写图片描述

    类-职责-协作者建模(CRC)
    CRC模型实际上是表示类的标准索引卡片的集合。
    顶部写类名,左侧列出类的职责,右侧部分列出了类的协作者。
    这里写图片描述

    类:
    Entity classes 实体类:一般代表保存在数据库中和贯穿应用程序的事物。
    Boundary classes 边界类:创建用户可见的和在使用软件时交互的接口
    Controller classes 控制类:管理“控制单元”

    职责:
    职责的基本原则:
    属性:描述了已经选择包含在需求模型中的类
    操作:定义了某个对象的行为。
    5个指导原则:
    1.智能系统应分布哎所有类中以求最佳地满足问题的需求。
    2.每个职责的说明应尽可能具有普遍性。
    3.信息和与之相关的信息应局限于一个类中而不要分布在多个类中。
    4.信息和与之相关的行为应该放在同一类中。
    5.适合时,职责应由相关类共享。

    生成行为模型

    生成行为模型的步骤:
    1.评估所有的用例,以保证完全理解系统内的交互顺序
    2.识别驱动交互顺序的事件,并理解这些事件如何与特定的对象相互关联
    3.为每个用例生成序列
    4.创建系统状态图
    5.评审行为模型以验证准确性和一致性。

    状态图:
    UML状态图就是一种行为模型,该图为每个类呈现了主动状态和导致这些主动状态变化的事件。
    例:
    这里写图片描述
    顺序图:
    表明事物引发从一个对象到另一个对象的转移。
    这里写图片描述

    软件设计(Software Design)

    这里写图片描述

    设计概念

    1.抽象(Abstraction):
    过程抽象是指具有明确和有限的指令序列(描述动作)
    数据抽象是描述数据对象的冠名数据集合(描述动作怎么做)

    2.体系结构(Architecture):软件的整体结构和这种结构为系统提供概念完整方式。构件表示主要的系统元素及其交互。

    3.模式(Patterns):模式承载了已证实的解决方案的精髓。设计模式描述了在某个特定场景与可能影响模式应用和使用方法的“影响力”中解决某个特定的设计问题的设计结构。

    4.关注点分离(Separation of concerns):它表明任何复杂问题如果被分解为可以独立解决和优化的若干块,该复杂问题能够更容易的被处理。

    5.模块化(Modularity):模块化是关注点分离最常见的表现。模块化设计使得开发工作更易规划。

    6.信息隐蔽(Hiding):隐蔽意味着通过定义一系列独立的模块可以得到有效的模块化,独立模块互相之间只交流实现软件功能所必须的那些信息。隐蔽定义并加强了对模块内过程细节的访问约束和对模块所使用的任何局部数据结构的访问约束。

    7.功能独立(Functional independence):开发具有“专一”功能和低耦合性的模块即可实现功能独立。

    8.求精(Refinement):通过连续精化过程细节层次来实现程序的开发,通过逐步分解功能的宏观陈述直到形成程序设计语言的语句来进行层次开发。
    抽象和精化是互补的概念。

    9.方面(Aspects):一个方面作为一个独立的模块进行实施,而不是作为“分割的”或者和许多构件“纠缠的”软件片段进行实施。设计体系结构应当支持定义一个方面,该方面即一个模块,该模块能够使该关注点经过它横切的所有其他关注点而得到实施。

    10.重构(Refactoring):重构是使用这样一种方式改变软件系统的过程:不改变代码的外部行为而是改进其内部结构。

    11.面向对象的设计概念(OO design concepts):
    面向对象概念(类、对象、继承、消息和多态)

    12.设计类(Design Class):提供设计细节,使程序得以实施。

    设计概念强调了:
    (1)抽象的必要性,它提供了一种创造可重用软件构件的方法
    (2)体系结构的重要性,它使得能够更好地理解系统整体结构
    (3)基于模式的工程的有益性,它是一项用于已证明能力的软件的设计技术
    (4)关注点分离和有效的模块化的价值,他们使得软件更容易理解、更容易测试以及更容易维护。
    (5)信息隐藏的直接作用,当错误发生时,它能够减少负面影响的传播
    (6)功能独立的影响,他是构造有效模块的标准
    (7)求精作为一种设计方法的作用
    (8)横切系统需求方面的考虑
    (9)重构的应用,他是为了优化已导出的设计
    (10)面向对象的类和与类相关特征的重要性

    设计模型(design model)

    数据设计元素:数据设计创建在高级抽象级上表示的数据模型和信息模型。
    体系结构设计元素:体系结构设计元素通常描述为一组相互关联系统的子系统,且常常从需求模型中的分析包中派生出来。
    接口设计元素:软件接口设计元素描述了信息如何流入和流出系统以及被定义为体系结构一部分的构件之间是如何通信的。
    接口设计有3个重要的元素:
    (1)用户界面
    (2)和其他系统、设备、网络或其他信息生成者或使用者的外部接口
    (3)各种设计构件之间的内部接口
    构件级设计元素:软件的构件级设计完整地描述了每个软件构件的内部细节。构件级设计为所以局部数据对象定义数据结构,为所有在构件内发生的处理定义算法细节,并定义允许访问所有构件操作的接口。
    部署级设计元素:部署级设计元素指明软件功能和子系统将如何在支持软件的物理计算环境内分布。

    体系结构设计

    程序或计算机系统的软件体系结构是指系统的一个或者多个结构,它包括软件构件、构件的外部可见属性以及它们之间的相互联系
    体系结构并非可运行的程序。
    确切的说,它是一种表达,是能够:
    (1)对设计在满足既定需求方面的有效性进行分析
    (2)在设计变更相对容易的阶段,考虑体系结构可能的选择方案
    (3)降低与软件构造相关的风险

    体系结构重要的3个关键原因
    1.软件体系结构的表示有助于对计算机系统开发感兴趣的各方展开交流。
    2.体系结构突出了早期的设计决策,这些决策对随后所有的软件工程工作有深远影响,同时对系统作为一个可运行实体的最后成功有重要作用。
    3.体系结构“构建了一个相对小的、易于理解的模型,该模型描述了系统如何构成以及其构件如何一起工作”

    体系结构风格
    1.以数据为中心的体系结构。
    2.数据流体系结构。
    3.调用和返回体系结构
    4.面向对象体系结构
    5.层次体系结构

    体系结构环境图(ACD)
    上级系统:这些系统把目标系统作为某些高层处理方案的一部分
    下级系统:这些系统被目标系统使用,并为完成目标系统的功能提供必要的数据和处理
    同级系统:这些系统在对等的基础上相互作用
    参与者:通过产生和消耗必要处理所需的信息,实现与目标系统交互的实体(人,设备)
    这里写图片描述
    这里写图片描述

    构件级设计

    构件的概念:
    1.构件是计算机软件中的一个模块化的构造块。
    2.OMG定义构件:系统中模块化的、可部署的和可替换的部件,该部件封装了实现并暴露一组接口。
    面向对象的观点(Object-Oriented view):构件包括一组协作的类。
    传统观点(Traditional View):一个构件就是程序的一个功能要素,程序由处理逻辑及实现处理逻辑所需的每部数据结构以及能够保证构件被调用和实现数据传递的结构构成。

    基本设计原则

    开闭原则(Open-Closed Principle ,OCP):模块应该对外延具有开放性,对修改具有封闭性。
    依赖倒置原则(Dependency Inversion Principle ,DIP):依赖于抽象,而非具体实现。

    Liskov替换原则(Liskov Substitution Principle (LSP)):子类可以替换他们的基类。
    接口分离原则(The Interface Segregation Principle (ISP)):多个客户专用接口比一个通用接口好
    发布复用等价性原则(The Release Reuse Equivalency Principle,REP):复用的粒度就是发布的粒度
    共同封装原则(The Common Closure Principle (CCP)):一同变更的类应该合在一起
    共同复用原则(The Common Reuse Principle (CRP)):不能一起复用的类不能被分到一组

    内聚性(Cohesion):内聚性意味着构件或者类只封装那些相互关联密切,以及与构件或类自身有亲密关系的属性和操作。
    功能内聚:主要通过操作来体现,当一个模块只完成某一组特定操作并返回结果时,就称此模块是功能内聚的。
    分层内聚:高层能够访问低层的服务,但低层不能访问高层的服务。
    通信内聚:访问相同数据的所有操作被定义在同一个类中。(数据的查询,访问,存储)

    耦合性(Coupling):
    耦合是类之间彼此联系程度的一种定性度量。
    随着类(构件)相互依赖越来越多,类之间的耦合程度亦会增加。
    内容耦合:暗中修改其他构件的内部数据,这违反了信息隐蔽原则
    公用耦合:当大量的构件都要使用同一个全局变量时发生这种耦合
    控制耦合:当操作A调用操作B,并向B传递控制标记时,就会发生这种耦合。
    标记耦合:当类B被声明为类A某一操作中的一个参数类型时,就会发生这种耦合。
    数据耦合:当操作需要传递长串的数据参数时,就会发生这种耦合。
    例程调用耦合:当一个操作调用另一个操作时,就会发生这种耦合。
    类型使用耦合:当构件A使用了在构件B中定义的一个数据类型时,就会发生这种耦合。
    包含或者导入耦合:当构件A引入或者包含一个构件B的包或者内容时,就会发生这种耦合。
    外部耦合:当一个构件和基础设施构件进行通信和协作时,就会发生这种耦合。

     为什么要高内聚?  
     模块之间的关系越紧密,出错就越少!
     为什么要低耦合?  
     子程序间的关系越复杂,就会产生更多的意想不到的错误!会给以后的维护工作带来很多麻烦!
      高内聚低耦合,是软件工程中的概念,是判断设计好坏的标准,主要是面向对象的设计,主要是看类的内聚性是否高,耦合度是否低。

    用户界面设计

    黄金准则

    1.用户操纵控制
    (1)以不强迫用户进入不必要的或不希望的动作的方式来定义交互模式
    (2)允许用户交互被中断和撤销
    (3)当技能级别增长时可以使交互流线化并允许定制交互
    (4)使用用户与内部技术细节隔离开来
    (5)设计应允许用户与出现在屏幕上的对象直接交互
    2.减少用户的记忆负担
    (1)减少对短期记忆的要求
    (2)建立有意义的缺省
    (3)定义直观的快捷方式
    (4)以不断进展的方式揭晓信息
    3.保持界面一致
    (1)允许用户当前任务放入有意义的环境中
    (2)在应用系统家族内保持一致性
    (3)如果过去的交互模型已经建立起了用户期望,除非有迫不得已的理由,doze不要改变它。

    可用性

    可用性是指用户在使用高科技产品所提供的功能和特性时,对使用的容易程度和有效程度的定量测量。

    用户界面的分析与设计

    工程师建立用户模型。软件工程师创建设计模型。最终用户在脑海中对界面产生映像,称为用户的心理模型或系统感觉。系统的实现者创建实现模型
    用户模型:确定了系统最终用户的轮廓。
    设计模型:用户界面的设计
    心理模型:最终用户在脑海里对系统产生的印象。
    实现模型:组合了计算机系统的外在表现,结合了所有用来描述系统语法和语言的支撑信息。

    用户界面的分析和设计过程是迭代的,用户界面分析和设计过程开始于螺旋模型的内部,并且包括4个阶段:(1)界面分析及建模。(2)界面设计。(3)界面构造。(4)界面确认。

    这里写图片描述

    界面设计的目标是定义一组界面对象和动作,使得用户能够以满足系统所定义的每个使用目标的方式完成所有定义对的任务。

    界面分析

    在用户界面的设计中,理解问题就意味着了解:
    (1)通过界面和系统交互的人
    (2)最终用户为完成工作要执行的任务
    (3)作为界面的一部分而现实的内容
    (4)任务处理的环境

    界面分析:
    (1)用户分析:
    设计师能够将用户心理模型与设计模型聚合在一起的唯一办法就是努力了解用户,以及了解用户是如何使用系统的。
    可以从各种途径获得信息
    用户访谈:软件团队(代表)与用户讨论。
    销售输入:销售人员与用户定期见面。
    市场输入:市场分析,分析/理解市场每个部分使用软件的细微差别。
    支持输入:技术支持人员与用户访谈。

    (2)任务分析与建模
    任务分析的目标就是将这些技术应用到用户界面:
    a.用例:用例描述了参与者和系统的交互方式。从用例描述中,软件工程师可以提炼出任务、对象和整个的交互过程。
    b.任务细化:改进了交互流程。任务细化有两种方法:
    1.理解实现活动目标而必须完成的任务
    2.研究已有的基于计算机的解决方案的规格说明,并且得到一个适应于用户模型、设计模型和系统感觉的用户任务集合。
    逐步细化。
    c.对象细化:对象细化标识了接口对象
    d.工作流分析:工作流分析定义了涉及多个人(和角色)时工作流程是如何完成的。
    e.层次分析:
    用户任务:请求重新填写处方
    提供识别信息。
    指定名称。
    指定用户ID。
    指定PIN和密码。
    指定处方号码。
    指定日期重填是必需的。

    测试

    测试:测试是在交付给最终用户之前以特定意图找出错误为目的来执行程序的过程。
    验证与确认(Verification and Validation,V&V):
    验证是指确保软件正确地实现某一特定功能的一系列活动。
    确认是指确保开发的软件可追溯到客户需求的另外一系列活动。

    测试策略

    从小到大

    这里写图片描述

    传统的测试策略

    单元测试

    单元测试侧重于软件设计的最小单元(软件构件或模块)的验证工作。
    单元测试侧重于构件的内部处理逻辑和数据结构。
    可以对多个构件并行执行。
    测试模块的接口是为了保证被测试程序单元的信息能够正常地流入和流出;
    检查局部数据结构以确保临时存储的数据在算法的整个执行过程中能维持其完善性。
    执行控制结构中的所有独立路径(基本路径)以确保模块中的所有语句至少执行一次。
    测试边界条件确保模块在到达边界值得极限或受限处理的情形下仍能正确执行。
    最后要对所有的错误处理路径进行测试。
    这里写图片描述
    在单元测试期间,选择测试的执行路径是最基本的任务。
    边界测试时最重要的单元测试任务之一。

    单元测试过程
    这里写图片描述
    驱动模块:接收测试用例数据,将这些数据传递给被测模块,并输出结果。
    桩:替换那些从属于被测模块的模块
    当设计高内聚的构件时,就可以简化单元测试。当构件只强调一个功能时,测试用例数就会降低,且比较容易预见错误和发现错误。

    集成测试

    集成测试时构造软件体系结构的系统化技术,同时也是进行一些旨在发现与接口相关的错误的测试。
    集成测试的目标是利用单元测试的构件建立设计中描述的程序结构。

    自顶向下集成:自顶向下集成测试是一种构造软件体系结构的增量方法。
    深度优先:深度优先集成是首先集成位于程序结构中主控路径上的所有控件。
    广度优先:广度优先集成首先沿水平方向,将属于同一层的构件集成起来。
    自顶向下集成过程:
    1.主控模块作为测试驱动模块,用桩模块代替直接附属的下层模块;
    2.根据所选的集成策略(深度优先/广度优先),每次用一个实际模块替换一个桩模块;
    3.每集成一个模块都进行测试;
    4.完成每个测试集之后,用实际模块替换另一个桩模块;
    5.可以进行回归测试(即全部或部分地重复已做过的测试),以避免引入新错误。
    回到第2步继续执行此过程,直到完成整个程序结构的构造。

    自底向上集成测试:就是从原子模块(程序结构的最底层构件)开始进行构造和测试。
    自底向上集成测试过程:
    1.连接底层构件以构成完成特定子功能的簇。
    2.编写驱动模块(测试的控制程序)以协调测试用例的输入和输出
    3.测试簇
    4.去掉驱动程序,沿着程序结构向上逐步连接簇
    这里写图片描述

    回归测试

    回归测试重新执行已测试过的某些子集,以确保变更没有传播不期望的副作用。
    回归测试有助于保证变更不引入无意思行为或额外的错误。
    回归测试可以手工进行,方法是重新执行所以测试用例的子集,或者利用捕捉/回放工具自动进行。

    面向对象软件的测试策略

    面向对象软件的类测试等同于传统软件的单元测试。
    不同的是:
    传统软件单元测试侧重于模块的算法细节和模块接口数据;
    面向对象类的测试侧重于封装在该类中的操作和类的状态行为。
    封装的类是单元测试的重点,但不再孤立地对单个操作进行测试,而是将其作为类的一部分。
    簇测试时面向对象软件集成测试中的一个步骤。

    确认测试(Validation Testing)

    确认测试准则:软件确认是通过一系列表明与软件需求相符合的测试而获得的。

    α测试(Alpha testing):α测试测试是由代表性的最终用户在开发者的场所进行。软件在自然的环境下使用,开发者站在用户的后面观看,并记录错误和使用问题。α测试在受控的环境下测试。

    β测试(Beta testing)(又称客户验收测试,Acceptance testing):β测试在一个或多个最终用户场所进行。与α测试不通过,开发者通常不在场,因此,β测试是在不为开发者控制的环境下软件的“现场”应用。是在不可控的环境下测试。

    系统测试

    系统测试实际上是对整个基于计算机的系统进行一系列不同考验的测试。所有测试都是为了验证系统成分已经正确地集成在一起,并且完成了指派的功能。

    恢复测试(Recovery testing):通过各种方式强制让软件以各种方式失败并验证恢复是否正确执行。
    安全测试(Security testing):安全测试验证建立在系统内的保护机制是否能够实际保护系统不受非法入侵。
    压力测试(Stress testing):压力测试的目的是是软件面对非正常的情形。是一种要求以非正常数量、频率或容量的方式进行彻底评估。
    性能测试(Performance testing):性能测试用来测试软件在集成环境中的运行性能。
    部署测试(Deployment testing):部有时也将署测试称为配置测试,是在软件将要在其中运行的每一种环境中测试软件。

    测试传统的应用系统

    白盒测试:白盒测试有时也称为玻璃盒测试,是一种测试用例设计方法,它利用作为构件层设计的一部分描述的控制结构来生成测试用例。
    白盒测试是在了解模块内部结构的情况下进行的测试。
    利用白盒测试方法导出的测试用例可以:
    (1)保证一个模块中的所有独立路径至少被执行一次。
    (2)对所有的逻辑判定均需要测试取真和取假两个方面。
    (3)在上下边界及可操作的范围内执行所有的循环。
    (4)检验内部数据结构以确保其有效性。

    基本路径测试(Basic path testing)
    基本路径测试时由TOM首先提出的一种白盒测试技术。
    流图(程序图)是一种简单的控制流表示方法。
    流程图用于描述程序的控制结构,流程图映射为相应的流图。
    圆称为流图结点(flow graph node),表示一个或多个过程语句。处理框序列和一个菱形判定框可以映射为单个节点。
    流图中的箭头称为边或者连接,标识控制刘,类似于流程图中的箭头。
    由边和结点限定的区域称为域。当计算域时,将图的外部作为一个域。
    包含条件的结点称为判定结点,其特征是由它发射出两条或多条边。
    这里写图片描述
    这里写图片描述
    独立路径是指任何贯穿程序的、至少引入一组新语句或一个新条件的路径。
    如果设计测试用例强迫执行这些路径(基本集合),就可以保证程序中的每条语句至少执行一次,同时,每个条件判断的真和假都被执行。
    这里写图片描述
    环复杂度(Cyclomatic Complexity )计算方法:
    这里写图片描述
    V(G)的值提供了组成基本集合的独立路径的上街,并由此得出覆盖所有程序语句所需设计和运行的测试数量的上界。

    黑盒测试

    黑盒测试也称为行为测试,侧重软件的功能需求。
    黑盒测试使软件工程师能设计出将测试程序所有功能需求的输入条件集。
    黑盒测试不是白盒测试的替代品,而是作为发现其他类型错误的辅助方法。
    黑盒测试试图发现以下类型的错误:
    (1)不正确或遗漏的功能
    (2)接口错误
    (3)数据用在测试的后期阶段
    (4)行为或性能错误
    (5)初始化和终止错误
    黑盒测试的方法:
    Graph-based testing methods 基于图的测试方法
    Equivalence partitioning 等价类划分
    Boundary value analysis 边界值分析
    Orthogonal array testing 正交数组测试

    黑盒测试的例子:
    这里写图片描述
    这里写图片描述
    这里写图片描述

    展开全文
  • 软件工程导论--软件工程概述

    万次阅读 2019-09-26 17:41:23
    1 软件软件危机 1.1 软件的特性 软件是一种逻辑实体,而非具体的物理...  软件产品一般分为两类:通用软件产品(如数据库软件、文字处理软件、绘图软件工程管理工具…)和定制软件产品(如电子设备的控制软...
  • 软件工程 毕业设计题目

    万次阅读 多人点赞 2019-05-23 14:45:04
    软件工程毕业设计 题目汇总 【不断更新中】 1.微信小程序 校园表白墙微信小程序 2.房屋租赁管理系统 3.航空售票管理系统 4.高校会议室管理系统 5.高校就业管理系统 6.失物招领系统 7.图书销售系统 8.微信小程序 ...
  • 软件工程导论

    千次阅读 热门讨论 2020-11-08 17:20:10
    软件工程(Software Engineering),是应用计算机科学理论和技术以及工程管理原则和方法,按预算和进度实现满足用户需求的软件产品的工程,或以此为研究对象的学科。
  • 软件工程工程伦理案例分析A CASE (Computer-Aided Software Engineering) tool is a non-exclusive term used to indicate any form of automated support for software engineering. In an increasingly ...
  • 软件工程导论习题

    万次阅读 2020-09-08 20:48:17
    软件工程软件工程专业的一门重要学科,掌握好软件工程原理是开发软件的重要基础知识。本博客对软件工程导论部分习题解释,以更加深理解。
  • [color=#FF0000]2014年度下半年计算机技术与软件专业技术资格(水平)考试[/color]现在正在报名中,截止日期是8月26日 小弟人在北京,13年初出来实习,13年6月份毕业,现在算是在一家网络安全公司工作一年半,刚调...
  • 软件工程-软件工程基本概念

    千次阅读 2018-10-16 22:38:30
    软件工程的概念、基本原理、方法学; 软件生命周期,主要软件过程的特点。 一、软件危机的定义:软件开发和维护过程中所遇到的一系列严重问题; 二、软件危机产生原因:用户需求不明确、缺乏科学理论作为指导、...
  • 软件工程】什么是软件工程

    千次阅读 热门讨论 2018-02-28 23:11:20
    软件工程的视频看了一半了,看的也是一头雾水,看视频的时候我就在想软件工程究竟是什么,它是干什么的,有什么用呢?如果这个不了解清楚,我感觉我视频看了也是白看。就按照我这不将就的小脾气,我就要整明白这是个...
  • 软件工程概述

    千次阅读 2019-11-13 09:22:08
    软件工程基本概念 软件的概念: 软件是计算机系统中与硬件相互依存的另一部分,它包括程序、相关数据及其说明文档。 ######软件工程的概念: 软件工程是针对软件这一具有特殊性质的产品的工程化方法,它涵盖了软件...
  • 软件工程期末复习总结

    万次阅读 多人点赞 2016-07-03 15:22:39
    软件工程
  • 软件工程软件工程管理

    千次阅读 热门讨论 2014-01-07 16:56:43
    那么我们的软件工程管理又是怎么回事呢?让我们一起来揭晓她的答案,软件工程管理是指对工程建设的过程以及在建设过程中涉及的人、财、物、时间的综合管理。我们从两个方面来认识一下软件工程管理:首先,从过程来看...
  • 文章目录软件工程过程软件工程方法软件质量软件质量如何评价软件的质量模型为什么内存缓冲区是2048或4096 软件工程过程 软件工程方法 软件质量 软件质量如何评价 软件的质量模型 为什么内存缓冲区是2048或4096...
  • 软件工程》— 实用软件工程——习题答案

    万次阅读 多人点赞 2017-06-18 17:45:09
    实用软件工程——课后习题答案 软件工程(英语:Software Engineering[1])1968年秋季,NATO(北约)的科技委员会召集了近50名一流的编程人员、计算机科学家和工业界巨头,讨论和制定摆脱“软件危机”的对策。在那...
  • 软件工程名词解释

    千次阅读 2019-11-06 16:01:00
     软件工程是研究和应用如何以系统化的、规范的、可度量的方法去开发、运行和维护软件,即把工程化应用到软件上。 软件生存周期  软件生存周期是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 144,104
精华内容 57,641
关键字:

软件工程