软件设计与规范复习指南文档

                 软设复习文档

软件工程标准编制的层次分为5个,分别为  

国际标准国家标准行业标准企业标准;机构标准;企业(机构)标准项目标准;课题标准;项目(课题)标准

camelCasing:骆驼拼写法第一个单词的首字母小写,其他单词的首字母大写

PacalCasing:所有单词的首字母大写

C#命名规则

形参、私有变量、局部变量用camelCasing命名法。(记住这个,其他的是PascalCasing命名)

接口应加前缀 “I”

软件工程的要素有哪三个?

过程、方法和工具

软件生命周期“V模型”,简述各测试阶段的关注点

单元测试关注模块内所有重要控制路径;

集成测试关注各模块间的连接正确性、系统或子系统的输入/输出处理、系统或子系统正确处理能力和承受错误的能力;

确认测试关注全部功能和性能要求。

 

 

 

软件生命周期V模型中,各测试阶段的依据是什么?

单元测试阶段的依据是详细设计规格说明;

集成测试阶段的依据是概要设计规格说明;

确认测试阶段的依据是软件需求规范说明。

 

分析瀑布模型与V模型的优缺点

1、瀑布模型

优点:

1)为项目提供了按阶段划分的检查点.

2)当前一阶段完成后,您只需要去关注后续阶段.

3)可在迭代模型中应用瀑布模型.

缺点:

1)在项目各个阶段之间极少有反馈.

2)只有在项目生命周期的后期才能看到结果.

3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段.

 

 

2、V模型

优点:

简单、高效

缺点:

1)容易让人误解为测试是在开发完成之后的一个阶段;

2)由于它的顺序性,当编码完成之后,正式进入测试时,这时发现的一些bug可能不容易找到其根源,并且代码修改起来很困难;

3)实际中,由于需求变更较大,导致要重复变更需求、设计、编码、测试。返工量大。

 

简述SOLID设计原则

(1)SRP(Single Responsibility Principle)

单一职责,一个类应该仅有一个引起它变化的原因

(2)OCP(Open-Closed Principle)

开放-封闭,可扩展,不可修改,避免添加新功能之后产生连锁反应。

OCP关注灵活性,功能的改动是通过增加代码进行的,而不是修改现有代码

(3)LSP(Liskov Substitution Principle)

里氏替换,子类型必须能替换基类型

(4)ISP(Interface Segregation Principle)

接口分离,不强迫类实现它不需要的方法。

如果一个接口中包含许多不大而且不相关的方法,那么就应该分离成多个接口,让实现接口的类只是去实现它所需要的方法

(5DIP(Dependency Inversion Principle)

依赖倒置,高层模块不依赖于低层模块,都依赖于抽象;抽象不依赖于细节,细节依赖于抽象

 

 

简要说明下列软件设计基本原则:

(1)KISS;(2)DRY;(3)Tell,Don’t Ask;(4)YAGNI;(5)SoC。

KISS(Keep It Simple Stupid)

避免不必要的复杂,尽量保持代码的简约

DRY(Don’t Repeat Yourself)

抽取系统中的公共部分,并将其放置在一个地方避免重复

Tell,Don’t Ask

合理封装,将代码方到正确的类中。明确告诉对象我们想要它们去执行怎样的操作,而不是首先询问对象状态,然后我们决定执行什么操作

YAGNI(You Ain’t Gonna Need It)

防止过度设计,只包含必需的功能,不包含你认为将来可能会用到的功能或特性

SoC(Separation of Concerns)

把软件功能分离为单独功能点。被分离的功能点有唯一的行为和数据,而且每个功能点都能被其他所需要的类单独使用。通过该原则,可最大限度地实现代码重用、功能重用、模块重用

 

设计四则计算器程序,要求实现加减乘除二元运算。

采用接口抽象封装运算,绘制类图

撰写除法类实现代码,操作数数据类型为double,除数为零应抛出异常。

public double Calculate(double operatorX, double operatorY)

        {

            if (operatorY - double.Epsilon > 1e-5)

            {

                return operatorX / operatorY;

            }

            else

            {

                throw new DivideByZeroException("除数为0");

            }

        }

软件设计一般被看作是迭代的过程,这里的迭代包括哪两层含义?

第一层含义是,针对给定的需求模型,通过多次从抽象到具体的设计过程,得出足够精细的设计模型以供软件实现之用。

在需求模型发生变化并更新完成后,第一层含义的设计过程再随之展开,直至获得最终的目标软件产品。

 

软件设计活动主要包括哪些?

体系结构设计、界面设计、模块/子系统设计、过程/算法设计、数据模型设计。

思考-计算器(UI与算法分离)
以计算器新增二元计算log为例,

比较UI与算法分离、UI与算法绑定的优缺点

优点

结构稳定,只需为log增加一个实现类,然后在UI中增加实例化该类的代码

缺点

UI与算法绑定,难以扩展,无论更改表现层技术还是新增功能,都必须对已有代码进行改动,极易引入缺陷。

反思(流程与实例化分离)

针对UI采用switch实例化对象的设计,给出改进建议

改进建议一

用工厂封装Switch

将switch代码封装起来,对外只暴露一个通用的获得实例化对象的方法(输入为字符串,代表四则计算操作符,输出为ICalculate接口类型的对象)

这样新增log计算时,只要更改实例化方法,增加log实现类,UI代码无需更改,保持了结构稳定

 

改进建议二

流程与实例化分离

UI增加操作符按钮,每个按钮的点击事件负责算法类的实例化,取代switch

计算流程放在等号按钮事件中处理。

新增log计算时,只需要增加log实现类,UI增加log按钮,按钮实例化log类,分工明确、条理清晰。

 

以如下订单为例,建立软件业务模型,绘制类图

买家姓名

张三

联系电话

123456

收货地址

南华大学

订单编号

654321

交易时间

2013-10-27 23:05:47

宝贝名称

单价

数量

小计

LG Nexus5

2400

1

2400

移动电源11000mah

158

2

316

 

 

总计

2716

简述抽象与逐步求精的设计过程。

识别业务概念,概念之间关系,类属性和业务方法,属性数据类型与方法签名。

 

1、软件文档分类:开发文档、用户文档和管理文档

2、开发文档包括可行性研究报告、项目开发计划、需求说明、数据库设计说明、概要设计、详细设计

3、用户文档包括安装配置手册、用户操作手册、需求说明、数据要求说明

4、管理文档包括项目开发计划、开发进度月报、测试计划、测试分析报告、项目开发总结报告

 

用例常用方法

 

 

 

猜你喜欢

转载自blog.csdn.net/lfy905805357/article/details/89470752