软考中级-软件设计师(五)软件工程基础知识 考点最精简

一、软件工程概述
1.1计算机软件

计算机软件是指计算机系统中的程序及其文档。按照软件的应用领域,可以将计算机软件分为十大类:

·系统软件:系统软件是一整套服务于其他程序的程序,如操作系统构件、驱动程序等;

·应用软件:解决特定业务需要的独立应用程序;

以及工程/科学软件、嵌入式软件、产品线软件、Web应用、人工智能软件、开放计算、网络资源以及开源软件

1.2软件工程基本原理

用分阶段的生命周期计划严格管理、坚持进行阶段评审、实现严格的产品控制、采用现代程序设计技术、结果应能清楚的审查、开发小组成员应少而精、承认不断改进软件工程实践的必要性

1.3软件生存周期

可行性分析与项目开发计划(确定要解决的问题、解决办法、资源等,生成可行性分析报告和项目开发计划)—>需求分析(准确定义软件系统必须做什么,实现什么功能,产生软件需求说明书)—>概要设计(把确定的各项功能转化为需要的体系结构,生成概要设计说明书)—>详细设计(把功能转化为结构化过程描述,产生详细设计文档)—>编码(编写实现代码)—>测试(检查软件各个组成部分,生成软件测试计划、测试用例和测试报告)—>维护(软件生存周期中最长的阶段)

1.4软件过程

1)能力成熟度模型(CMM):提供一种评价软件承接方能力的方法,分为5级:

初始级(Initial):软件过程杂乱无章,项目的成功完全依赖个人努力或核心人物作用

可重复级(Repeatable):建立了基本的项目管理过程,有必要的过程准则

已定义级(Defined):大部分工程的努力目标,管理和工程两方面的软件已经文档化、标准化

已管理级(Managed):制定了软件过程和产品质量的详细度量标准

优化级(Optimized):加强了定量分析,不断持续改进

2)能力成熟度模型集成(CMMI):若干过程模型的综合改进,提供了两种表示方法:

阶段式模型:类似于CMM,关注组织的成熟度,初始的,过程不可预测且缺乏控制;已管理的,过程为项目服务;已定义的,过程为组织服务;定量管理的,过程已度量和控制;优化的,集中于过程改进

连续式模型:关注每个过程领域的能力,分6级,编号0~5。

二、软件过程模型
2.1瀑布模型(Waterfall Model)

规定了从前至后、相互衔接的固定次序,容易理解,管理成本低,但客户必须能完整、正确和清晰的表达需求,需求设计中的错误往往到了后期才能被发现。可强迫开发人员采用规范的方法,严格规定了必须提交的文档,要求严格的评审

2.2增量模型(Incremental Model)

增量模型假设可以将需求分段为一系列增量产品。第一个增量往往是核心产品,客户对,每个增量的使用和评估都作为下一个增量发布的新特征和功能,这个过程不断重复,直到产生最终的完善产品

2.3演化模型(Evolutionary Model)

1.原型模型(Prototype Model):原型方法适用于用户需求不清、需求经常变化的情况。原型是预期系统的一个可执行版本,不必满足目标软件的所有约束,其目的是能快速、低成本的构建原型适用于需求不明确的项目,能有效捕捉用户需求

2.螺旋模型(Spiral Model):螺旋模型将开发过程分为几个螺旋周期,将开发过程分为几个螺旋周期,每个周期分为:制定计划、风险分析、实施工程、用户评估。螺旋模型强调风险,适用于庞大、复杂并且具有高风险的系统。重点在风险识别

2.4喷泉模型(Water Fountain Model)

喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适合于面向对象的开发方法。喷泉模型开发过程具有迭代性和无间隙性。喷泉模型各个阶段没有明显的界限,开发人员可以同步进行

2.5敏捷方法(Agile Development)

1.极限编程(XP):XP是一种轻量级(敏捷)、高效、低风险、可预测的软件开发方式。快速反馈、简单性假设、逐步修改

2.水晶法(Crystal):水晶法认为每一个不同的项目都需要一套不同的策略、约定和方法论

3.并列争球法(Scrum):使用迭代化的方法,把每30天一次的迭代称为一个“冲刺”

4.自适应软件开发(ASD):“重做”与“做”同样重要,变化不被视为改正,而是视为对实际情况的调整

三、系统设计
3.1概要设计

1.设计软件系统总体结构:将复杂的系统按功能划分成模块,确定模块间的关系

2.数据结构及数据库设计:数据库设计是指数据存储文件的设计,其中,概念设计使用E-R模型,逻辑设计要结合具体的DBMS特征设计,物理设计是设计一些物理细节

3.编写概要设计文档:文档主要有设计说明书、数据库设计说明书、用户手册以及修订的测试计划

4.评审:对设计部分是否完整的实现了需求中规定的功能、性能等要求,设计方法的可行性等一一进行评审

3.2详细设计

对每个模块进行详细的算法设计,对模块内的数据结构进行设计,对数据库进行物理设计,其他设计,编写详细设计说明书,评审

四、系统测试
4.1系统测试与调试

测试是为了发现错误而执行的过程(故一次成功的测试是发现了迄今为止未发现的错误,而不是未检测出错误),应尽早并不断进行测试;测试工作应避免由原开发人员承担;在设计测试方案时,不仅要设计有效数据,也要包含不合理数据

测试过程:制定测试计划—>编制测试大纲—>根据测试大纲设计和生成测试用例,产生设计说明文档—>实施测试—>生成测试报告

4.2传统软件的测试策略

1.单元测试:检查模块接口、局部数据结构、重要的执行路径、出错处理和边界条件

2.集成测试:把模块按系统设计说明书的要求组合起来进行测试

3.确认测试:确认测试始于集成测试的结束,那时已测试完单个构件,软件已组装成完整的软件包,且接口错误已被发现和改正

4.系统测试:将已确认的软件、计算机硬件、外设和网络等其他因素结合在一起进行测试,其中,恢复性指从错误中恢复并在一定时间内重新运行的能力;安全性指系统抵抗非法入侵的能力

4.3测试方法

1.黑盒测试:也称功能性测试,不考虑软件内部结构和特性,测试外部特性。有等价类划分、边界值分析、错误推测、因果图等

2.白盒测试:也称结构测试,根据内部结构和逻辑设计测试用例

(1)逻辑覆盖:·语句覆盖:测试用例使程序中的每条语句至少执行一次;

   ·判定覆盖:使程序中每个判定表达式至少获得一次“真”和“假”值

   ·条件覆盖:使得每一句判定语句中的每个条件的各种可能的值至少满足一次

   ·判定/条件覆盖:使得判定中每个条件的所有可能取值至少出现一次,并使每个判定本身的判定结果也至少出现一次

   ·路径覆盖:覆盖程序中的所有可能的路径

(2)循环覆盖:使得循环中的每个条件都得到验证

(3)基本路径测试:在程序控制流图的基础上分析导出基本可执行路径集合并设计测试用例

五、运行和维护
5.1系统维护

系统可维护性的评价指标:可理解性(指别人能理解系统的结构、页面等的难易程度)可测试性(诊断和测试的难易程度)可修改性

5.2系统维护的内容及类型

系统的软件维护:正确性维护(指改正在系统开发阶段已发生而系统测试阶段尚未发现的错误),适应性维护(指使软件适应信息技术变化和需求变化而进行的改正),完善性维护(为了扩充功能而进行的维护),预防性维护(为了改进软件的可靠性和可维护性而进行的维护)

六、项目管理
6.1项目范围及项目管理

1)范围管理:确定在项目内包括什么工作和不包括什么工作,项目范围的变化叫变更

      规划管理范围、定义范围、创建工作分解结构、确认范围、范围控制

2)项目范围和产品范围:产品范围指产品或服务应该包含的功能;项目范围指为了能够交付产品,项目所必须做的工作

6.2管理分类

范围管理:WBS将项目整体分为若干个子项目或工作包(分配为最小单位)

进程管理:活动定义、活动排序、活动资源估算、活动历时估算、进度计划编制、进度控制

进度管理:进程安排的常用图形描述方法:甘特图(Gantt)、项目计划评审技术图。甘特图能清晰的描述任务的开始、结束及任务间的并行关系;另一个则能表示任务间的先后依赖关系

成本管理:包括成本估算、成本预算、成本控制三个过程

        成本的类型:可变成本、固定成本、直接成本、间接成本(以“是否分摊”来区分)、机会成本、沉没成本

        学习曲线:产品的单位成本随产量扩大呈规律性递减

配置管理:在系统整个生命周期中维持配置的完整性和跟踪性,而标识的系统在不同时间点上配置的学科。包括:制定配置管理计划、配置标识、配置控制、配置状态报告、配置审计、发布管理和交付

6.3配置管理

·以下内容都可以作为配置项进行管理:外部交付的软件产品和数据、指定的内部软件工作产品和数据、指定的用于创建或支持软件产品的支持工具……

·典型的配置项包括:项目计划书、需求文档、设计文档、源代码、可执行代码、测试用例、运行软件所需的各种数据……它们经评审和检查通过后进入配置管理

·每个配置项的主要属性:名称、标识符、文件状态、版本……

·配置项分为基线配置项和非基线配置项:基线配置项可能包括所有的设计文档和源程序;非基线配置项可能包括项目的各类计划和报告等

·所有配置项的操作权限应由配置管理员(CMO)严格管理,基线配置项向开发人员开放读取权限;非基线配置项向PM、CCB及相关人员开放

·配置项的版本号:1)处于“草稿”状态的配置项的版本号格式为0.YZ,YZ范围为01~99,取值递增,初值和增幅由用户自己决定;2)处于“正式”状态的版本号格式为 X.Y ,X为主版本号,范围1~9,Y为次版本号,范围0~9,第一次发布为正式,版本号1.0,升级幅度较大时,允许直接增大X值;3)修改 X.YZ ,正在修改时,一般只增大Z值,XY保持不变,配置项修改完毕,成为正式,Z设为0,增大XY值

·配置基线:由一组配置项组成,构成一个相对稳定的逻辑实体交付给外部的发行基线、内部开发、构造基线

·配置库:存放配置项并记录与配置项相关的所有信息,分为开发库、受控库、产品库

6.4质量管理

质量特性:功能性、可靠性、可用性、效率、可维护性、可移植性

功能性:适合性、准确性、互用性、依从性、安全性;

可靠性:成熟性、容错性、易恢复性;

可用性:易理解性、易学性、易操作性;

效率:时间特性、资源特性;

可维护性:易分析性、可修改性、稳定性、可测试性;

可移植性:适应性、易安装性、一致性、可替换性

七、典型例题


  • 31
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
中级Python软件工程师题库是一个专门用于考察中级Python软件工程师技能的题库,旨在评估应聘者的基本知识、编程能力和解决问题的能力。以下是一些可能包含在中级Python软件工程师题库中的问题和题型。 1. 请解释Python中的列表和元组之间的区别。 列表和元组都是Python中常用的数据结构,它们的主要区别在于: - 列表是可变的,可以通过修改、删除、添加元素来改变列表的内容。而元组是不可变的,一旦创建就不能修改。 - 列表使用方括号([])来表示,元组使用圆括号(())来表示。 2. 请解释Python中的深拷贝和浅拷贝。 深拷贝和浅拷贝都是用于在Python中复制对象。 - 浅拷贝是创建一个新对象,该对象与原始对象的基本数据类型属性具有相同的值。如果原始对象包含引用类型的属性,浅拷贝将共享这些属性的引用。 - 深拷贝创建一个全新的对象,该对象与原始对象的所有属性(包括引用类型属性)都具有相同的值。深拷贝不共享原始对象的任何属性。 3. 请解释Python中的装饰器。 装饰器是Python中的一种函数,它可以用来修改其他函数的功能。装饰器本身接受一个函数作为参数,并返回一个新函数,新函数通常会对原函数进行一些额外的处理或封装。 4. 请解释Python中的异常处理机制。 Python的异常处理机制用于捕获和处理程序运行时发生的错误。通过使用try-except语句块,可以捕获并处理可能导致程序崩溃的错误,从而增加代码的健壮性和可靠性。 5. 请解释Python中的迭代器和生成器。 迭代器和生成器都是用于对数据进行遍历的工具。 - 迭代器是一个对象,它实现了用于在序列(如列表或字符串)上进行迭代的方法。通过调用iter()函数,可以将可迭代对象转换为迭代器。 - 生成器是一种特殊的迭代器,它可以使用yield关键字来逐次生成值。生成器可以通过函数来定义,并且每次生成一个值后都会暂停执行,直到下一次迭代。 以上只是一些可能出现在中级Python软件工程师题库中的问题,这些问题旨在评估应聘者对Python的基本知识的掌握程度以及解决问题的能力。具体的题目和要求可能会因公司和职位的不同而有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值