2.1.
- 软件工程标准编制的层次分为5个,分别为 :
正确答案:
国际标准、国家标准、行业标准、
企业标准;机构标准;企业(机构)标准 、
项目标准;课题标准;项目(课题)标准。
2.GB/T 25000.51-2010,软件工程 软件产品质量要求和评价(SQUARE) 商业现货(COTS)软件产品的质量要求和测试细则
属于什么层次的标准
A.国际标准 B.国家标准 C.行业标准 D.企业标准
正确答案:B
3.ISO 9000系列质量管理与质量保证标准属于哪个层次的标准
A.国际标准 B.国家标准 C.行业标准 D.企业标准
正确答案:A
4.IEEE Std 1012-2012,系统和软件验证与确认标准哪个层次的标准?
A.国际标准 B.国家标准 C.行业标准 D.企业标准
正确答案:C
解析:IEEE 美国电气与电子工程师学会,属于行业标准
5.GJB与GB,哪一个是行业标准
A.GJB B.GB
正确答案:A
解析:GB为中国国家标准,GJB为中国国家军用标准
2.3
1.计算机软件 =______+_______+_______.
正确答案: 程序 , 数据 , 文档
2.造成软件危机的原因不包括
A.缺乏管理经验 B.需求不断变化 C.预算不足 D.问题复杂
正确答案:C
3.造成软件危机的原因包括
A.缺乏管理经验 B.需求不断变化 C.预算不足 D.问题复杂
正确答案:ABD
4.软件工程的要素有哪三个?
正确答案:过程、方法、工具
5.以下属于软件开发过程模型的有
A.瀑布模型 B.螺旋模型 C.喷泉模型 D.快速原型模型 E.W模型
正确答案:ABCD
- 软件开发过程模型主要有:_______、_______、_______、_______。
正确答案: 瀑布模型 , 快速原型模型 , 螺旋模型 , 统一软件开发过程模型
- 软件的生存周期通常包括 可行性研究、需求分析、 、 、 、 、 、 、使用与维护、退役等阶段。
正确答案: 概要设计 , 详细设计 , 软件构造 , 单元测试 , 集成测试 , 确认测试
[简答题]
1.软件生命周期“V模型”,简述各测试阶段的关注点
正确答案:
1.单元测试关注模块内所有重要控制路径;
2.集成测试关注各模块间的连接正确性、系统或子系统的输入/输出处理、系统或子系统正确处理能力和承受错误的能力;
3.确认测试关注全部功能和性能要求。
2.软件生命周期V模型中,各测试阶段的依据是什么?
正确答案:单元测试阶段的依据是详细设计规格说明;
集成测试阶段的依据是概要设计规格说明;
确认测试阶段的依据是软件需求规范说明。
3.分析瀑布模型与V模型的优缺点
正确答案:
1、瀑布模型
优点:
1)为项目提供了按阶段划分的检查点.
2)当前一阶段完成后,您只需要去关注后续阶段.
3)可在迭代模型中应用瀑布模型.
缺点:
1)在项目各个阶段之间极少有反馈.
2)只有在项目生命周期的后期才能看到结果.
3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段.
2、V模型
优点:简单、高效
缺点:
1)容易让人误解为测试是在开发完成之后的一个阶段;
2)由于它的顺序性,当编码完成之后,正式进入测试时,这时发现的一些
bug 可能不容易找到其根源,并且代码修改起来很困难;
3)实际中,由于需求变更较大,导致要重复变更需求、设计、编码、测试。返工量大。
3.1
【简答题】
1.简述SOLID设计原则
正确答案:
- SRP(Si,需求的满足情况一直到后期的验收测试才被验证。ngle Responsibility Principle)
单一职责,一个类应该仅有一个引起它变化的原因
(2)OCP(Open-Closed Principle)
开放-封闭,可扩展,不可修改,避免添加新功能之后产生连锁反应。
OCP关注灵活性,功能的改动是通过增加代码进行的,而不是修改现有代码
(3)LSP(Liskov Substitution Principle)
里氏替换,子类型必须能替换基类型
(4)ISP(Interface Segregation Principle)
接口分离,不强迫类实现它不需要的方法。
如果一个接口中包含许多不大而且不相关的方法,那么就应该分离成多个
接口,让实现接口的类只是去实现它所需要的方法。
(5)DIP(Dependency Inversion Principle)
依赖倒置,高层模块不依赖于低层模块,都依赖于抽象;抽象不依赖于细节,细节依赖于抽象
2.简要说明下列软件设计基本原则:
(1)KISS;(2)DRY;(3)Tell,Don’t Ask;(4)YAGNI;(5)SoC。
正确答案:
(1)KISS(Keep It Simple Stupid)
避免不必要的复杂,尽量保持代码的简约
(2)DRY(Don’t Repeat Yourself)
抽取系统中的公共部分,并将其放置在一个地方避免重复
(3)Tell,Don’t Ask
合理封装,将代码方到正确的类中。明确告诉对象我们想要它们去执行怎样的操作,
而不是首先询问对象状态,然后我们决定执行什么操作
(4)YAGNI(You Ain’t Gonna Need It)
防止过度设计,只包含必需的功能,不包含你认为将来可能会用到的功能或特性
(5)SoC(Separation of Concerns)
软件功能分离为单独功能点。被分离的功能点有唯一的行为和数据,而且每个功能点都能被其他所需要的类单独使用。通过该原则,可最大限度地实现代码重用、功能重用、模块重用
[多选题]
1.四则计算器的UI设计方案中,将计算类的实例化与流程分离,通过ICalculate获得计算结果,当增减功能时保持了流程代码的稳定,运用了以下哪些设计原则。
A.SRP单一职责 B.OCP开放-封闭
C.LSP里氏替换 D.ISP接口分离 E.DIP依赖倒置
正确答案:BCD
1. [简答题]
设计四则计算器程序,要求实现加减乘除二元运算。采用接口抽象封装运算,绘制类图
正确答案:
2. [简答题]
撰写除法类实现代码,操作数数据类型为double,除数为零应抛出异常。
正确答案:
public double Calculate(double operatorX, double operatorY)
{
if (operatorY - double.Epsilon > 1e-5)
{
return operatorX / operatorY;
}
else
{
throw new DivideByZeroException("除数为0");
}
}
3.3
[选择题]
1.以下哪种情况不使用camel命名风格
A.私有字段 B.命名空间
C.局部变量 D.方法参数
正确答案:B
2.以下哪一种名称符合软件命名规范
A.System.Xml B.System.XMl
C.System.XML D.System.xml
正确答案:A
3.下面是某方法的签名,符合软件设计规范的是
A.public IList<City> showCities ( int provinceId )
B.public IList<City> ShowCities ( int provinceId )
C.public IList<City> showCities ( int ProvinceId )
D.public IList<City> ShowCities ( int ProvinceId )
正确答案:B
4.以下哪一种符合软件命名规范
A.System.XML B.System.IO
C.System.Io D.System.HTML
正确答案:B
5.以下哪种情况使用PascalCasing命名风格
A.私有字段 B.命名空间
C.局部变量 D.方法形参
正确答案:B
6.代码命名规范中标识符大小写规则有哪些?
A.PascalCasing B.BasicCasing
C.camelCasing D.CSharpCasing
正确答案:AC
7. 下面是某个类中字段的声明,符合软件设计规范的是 正确答案:BD
A.private string Textbook;
B.private string textbook;
C.public string textbook;
D.public string Textbook;
3.5
[填空题]
1.软件设计的基本概念包括
正确答案: 抽象与逐步求精 , 模块化与信息隐藏 , 内聚与耦合
2.软件设计的入口文档是?
正确答案: 需求规格说明
- 软件设计的一般过程,首先制订 ,然后展开设计活动,形成 文档,通过 后方进入下一阶段。
正确答案: 设计计划 , 设计规格说明 , 设计评审
3.软件设计一般被看作是迭代的过程,这里的迭代包括哪两层含义?
正确答案:
第一层:针对给定的需求模型,通过多次从抽象到具体的设计过程,得出足够精细的设计模型以供软件实现之用。
第二层:在需求模型发生变化并更新完成后,第一层含义的设计过程再随之展开,直至获得最终的目标软件产品。
4.软件设计活动主要包括哪些?
正确答案:体系结构设计、界面设计、模块/子系统设计、过程/算法设计、数据模型设计。
[选择题]
1.抽象与逐步求精、模块化与信息隐藏、内聚与耦合是软件设计过程常用原则,关注设计的不同侧面,
A.设计过程 B.业务对象
C.业务对象之间的关系 D.设计活动
正确答案:ABC
[填空题]
1.软件设计一般过程的基本概念有
正确答案: 抽象与逐步求精、模块化与信息隐藏、内聚与耦合。
2.进行模块设计时,要尽量保持功能独立性,遵循_____、低耦合的设计原则。
正确答案: 高内聚
3.6
[简答题]
- 思考-计算器(UI与算法分离)
以计算器新增二元计算log为例,比较UI与算法分离、UI与算法绑定的优缺点
正确答案:
优点
结构稳定,只需为log增加一个实现类,然后在UI中增加实例化该类的代码
缺点
UI与算法绑定,难以扩展,无论更改表现层技术还是新增功能,都必须对已有代码进行改动,极易引入缺陷。
2.反思(流程与实例化分离)
针对UI采用switch实例化对象的设计,给出改进建议
正确答案:
改进建议一:
用工厂封装Switch。将switch代码封装起来,对外只暴露一个通用的获得实例化对象的方法(输入为字符串,代表四则计算操作符,输出为ICalculate接口类型的对象)。这样新增log计算时,只要更改实例化方法,增加log实现类,UI代码无需更改,保持了结构稳定。
改进建议二:
流程与实例化分离。UI增加操作符按钮,每个按钮的点击事件负责算法类的实例化,取代switch计算流程放在等号按钮事件中处理。新增log计算时,只需要增加log实现类,UI增加log按钮,按钮实例化log类,分工明确、条理清晰。
3.7
[简答题]
1.
答案:
2. 简述抽象与逐步求精的设计过程。
正确答案:识别业务概念,概念之间关系,类属性和业务方法,属性数据类型与方法签名。
我的答案:“逐步求精”是与“抽象”密切相关的一个概念,可视为一种早起的自顶向下设计策略,其主要思想是,针对某个功能的宏观描述,使用逐步求精的方法不断的分解,逐步确立过程细节,直到该过程能用程序语言描述的算法实现为止。因为求精的每一步都是用更为详细的描述代替上一层次的抽象描述,所以在整个设计过程中,产生的具有不同详细程度的各种描述,组成了系统层次结构。层次结构的上一层还是下一层的抽象,下一层是上一层的求精。在过程求精的同时自然伴随着数据的求精,无论是过程还是数据,每个求精步骤都蕴含着某些设计决策。
4.1
[单选题]
1.UML是一种软件设计工具,它不适合用来绘制
A.构件图 B.部署图 C.交互图 D.E-R图
正确答案:D
2.用例分析与设计阶段,常用UML图包括
A.用例图 B.类图 C.包图 D.部署图
正确答案:A
3.UML可以绘制哪些图
A.用例图 B.类图 C.活动图
D.包图 E.数据流图 F.E-R图
正确答案:ABCD
4.下列说法正确的是
A.接口不能有方法实现,抽象类也不能
B.接口不能有方法实现,抽象类可以
C.接口可以有方法实现,抽象类也可以
D.接口可以有方法实现,抽象类不可以
正确答案:B
[填空题]
1.接口实现与类继承是常用的软件抽象手段,表达的涵义却不相同。
接口用于描述_____关系,类表达的是_____关系。
正确答案: Can-Do , Is-A
[简答题]
1.以手机为例,建立软件模型。
(1)手机要提供收发短信、拨打电话、移动上网、导航、浏览网页、安装应用等功能,绘制用例图。
正确答案:
2.以手机为例,建立软件模型。
(1)手机具备IMEI、品牌、型号、屏幕尺寸、CPU、Ram、ROM等属性,以及发声、拨号、显示等方法,绘制类图
4.2
[简答题]
- 为订单项目绘制用例图:
4.4
[单选题]
1.以下软件文档中不属于用户文档的是
A.系统安装配置手册 B.用户操作手册
C.数据库设计说明书 D.数据要求说明书
我的答案:C
2.常用的软件开发文档包括
A.软件需求规范说明 B.软件开发计划
C.概要设计文档 D.详细设计文档
我的答案:ABCD
3.以下属于软件管理文档的是
A.项目开发计划 B.测试计划
C.测试报告 D.开发进度月报
我的答案:ABCD
5.1
[选择题]
1.开发视图侧重于软件模块的组织与管理,关注的是
A.用例 B.功能需求
C.领域对象 D.分层与层间模块的关系
正确答案:D
2.逻辑视图主要支持系统的功能需求,关注的是、
A.逻辑结构建模 B.业务需求
C.领域模型 D.模块之间的关系
正确答案:AC
[填空题]
1.软件体系结构设计中的“4+1”视图,包括______、________、________、________、_________。
正确答案:逻辑视图、开发视图、进程视图、物理视图、场景视图。
- 软件体系结构设计的4+1视图中,哪些描述系统的动态结构:_________、___________。
正确答案:进程视图、物理视图。
3.软件架构设计视图包括:_______、_________、_________、___________。
正确答案:业务架构、应用架构、信息架构、基础设施架构。
4.软件架构=_______+________+_______。
正确答案:软件元素、元素间关系、约束。
[填空题]
- 软件设计中经常提到分层,Tier是指 分层,而Layer指 分层
正确答案:物理、逻辑。
2.以常见的SOA五层架构为例,绘图说明Tier与Layer的区别
3.简述Tier与Layer在软件设计中的关系
答案:
Tier指物理的分层,Layer指逻辑上的分层。
不同的Layer可以部署在同一个Tier上,不同的Tier上可以有相同的Layer
4.软件体系结构设计中常用的三层架构,其中“层”指的是Tier or Layer?说明理由。
答案:三层架构是Layer层。三层架构的界面,业务逻辑,数据访问三层。分层的目的是为了实现功能和实现的分离
1.软件文档根据其产生和使用的范围,主要划分为三类,包括
我的答案:开发文档、用户文档、管理文档
5.3.
[多选题]
1.《设计模式—可复用面向对象软件的基础》中描述了23个设计模式,可分为三个类型
A.创建型 B.结构型 C.行为型 D.关系型
我的答案:ABC
[简答题]
1.什么是软件设计模式
我的答案 :
广义定义: 可解决一类软件问题并能 重复使用的软件设计方案
狭义定义: 设计模式是对被用来在特 定场景下解决一般设计问题的类和相 互通信的对象的描述,是在类和对象 的层次描述的可重复使用的软件设计问题解决方案。
2.以商品打折为例,试比较策略模式与装饰者模式在应用场景上的区别。
我的答案 :
策略模式(Strategy) :定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户。
装饰模式(Decorator) :动态地给一个对象添加一些额外的职责。就扩展功能而言,它能生成子类的方式更为灵活。
[多选题]
1.软件再工程包括
A.业务过程重构 B.设计重构
C.代码重构 D.数据重构
正确答案:ABCD
2.软件的进化策略包括
A.完全放弃该软件
B.不改变该软件系统并继续进行常规的维护
C.对软件系统实施再工程以提高可维护性
D.用新系统替换遗留软件系统的全部或其中一部分
正确答案:ABCD
5.4[简答题]
1.业务需求:商品包含名称、定价和折扣价属性,折扣类型有四种:
(1)默认折扣为保持原价;
(2)商家折扣为9折;
(3)商场折扣为满100减10;
(4)政府折扣为22:00至23:59实行95折,
同一时刻只允许一种折扣方案生效,试设计业务模型。
- 基于该场景适用何种设计模式?绘制该模式类图
答案:
装饰者模式:
public decimal DiscountedPrice
{
get
{
//对商向下取整
var mod = Math.Floor(_price.DiscountedPrice / 100);
var discountedPrice = _price.DiscountedPrice - mod * 10;
return discountedPrice;
}
}
计算流程:取得前一个折扣算法的折后价-->进行该折扣的打折-->返回折后价.