软件工程 |
https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1 |
作业要求 |
https://edu.cnblogs.com/campus/zswxy/software-engineering-2017-1/homework/10618 |
作业目标 |
做一个学习工程中的问题清单 |
作业正文 |
如下所示 |
其他参考文献 |
百度、慕课 |
1.什么是软件的可移植性?
软件可移植性指一种计算机上的软件转置到其它计算机上的能力(也可称作软件自动搬家)。软件移植是实现功能的等价联系,而不是等同联系。软件可移植性的主要标志是:这类软件有个通用的标准文本;它们独立于具体的计算机。
2.Python和C语言的不同之处?
C 属编译型语言,Python 属解释型语言;C 是弱类型、静态类型检查的,Python 是强类型、动态类型检查的;Python 是原生支持面向对象范式的语言,C 不是;C 更偏向底层,抽象和语法糖更少,使用起来不如 Python 方便。但 C 更简单,如果有计算机体系的知识,精通起来比 Python 可能更容易。
C 的语法不如 Python 简洁。
C 函数声明的先后顺序影响其可被调用的区域,Python 不会。
C 需要自己维护堆内存,Python 有垃圾回收机制。
C 的跨平台性不如 Python(对于使用这两个语言的程序员而言),因为 C 是大多数操作系统的实现语言,各操作系统会提供标准之外的系统调用库,而不同操作系统上系统库中的函数和定义不同。Python 基于虚拟机执行字节码,只要官方提供了某操作系统的虚拟机实现,就能将 Python 代码无缝在各操作系统转移(os.system 等涉及特定操作系统的东西除外)。
C 除预编译指令外可以压缩到一行,Python 要用游标卡尺
3.什么叫模块化设计?
模块化设计:在对产品进行市场预测、功能分析的基础上,划分并设计出一系列通用的功能模块;根据用户的要求,对这些模块进行选择和组合,就可以构成不同功能、或功能相同但性能不同、规格不同的产品。这种设计方法称为模块化设计。
4.模块化设计的目的是什么?
提高代码重复利用率,便于调试排错易于扩展。
5.良好编码的原则有哪些?
在开始编码之前建立单元测试
选择好的程序设计风格
确保注释与代码完全一致
6.mock方法除了测试那些比较复杂的场景,也可以像xunit方法一样测试简单的场景吗?
可以
7.瀑布模型的优缺点、适用范围和显著特点?
优点:
1.它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该摸板下有一个共同的指导。
2.虽然有不少缺陷但比在软件开发中随意的状态要好得多。
缺点:
1.实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接的,这很容易由微小的变化而造成大的混乱。
2.经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。
3.客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。
4.采用这种线性模型,会经常在过程的开始和结束时碰到等待其他成员完成其所依赖的任务才能进行下去,有可能花在等待的时间比开发的时间要长。我们称之为“堵赛状态”。
适用范围:
1. 用户的需求非常清楚全面,且在开发过程中没有或很少变化
2. 开发人员对软件的应用领域很熟悉
3. 用户的使用环境非常稳定
4. 开发工作对用户参与的要求很低
显著特点:
按工序将问题化简,将功能的实现与设计分开,便于分工协作
8.软件单元测试的主要内容是什么?
9、软件工程过程通常包含哪四种基本活动?
P软件规格说明
D软件开发
C软件确
A软件演进
10.软 件工程过程的特性
易理解性
可见性
可支持性
可接受性
可靠性
健壮性
可维护性
速度
11.敏捷开发的优点是?
精确要求,精准成果。敏捷开发不似瀑布模式的开发,从一个点开始却会以一大片结束。这样的开发会导致成果与出发点严重偏离,重点无法被作为重点开发出来,而是与原来的构想相差甚远。敏捷开发似接力比赛,每一段赛道都不长,并且还能把握好每次交接棒的时机,遵循计划更响应变化,这使成果变得十分精准。
质量有保障。敏捷方法对每一次迭代周期的质量都有严格要求。敏捷开发团队拥有高水平的开发方法,有的会在正式开发功能代码之前先开发该功能的测试代码,质量可保证。
客户合作胜过合同谈判。好的团队会更在乎与客户合作的这个过程。
投资回报率高。在敏捷开发过程中,最具价值的功能总是被优先开发,这样能给客户带来最大的投资回报率。
较高的速度是敏捷开发最显著的优点之一。
12.敏捷开发的特征
工作在小的团队中
团队是跨功能的-包括测试人员,开发人员,文档开发人员等等
短迭代-利用短迭代方法来交付软件
相较于文档,敏捷开发更注重面对面的交流
敏捷不是一个过程,而是一个软件开发的形式或者方法
敏捷可以与软件过程如CMMI等一起实施
13.完整的需求开发的过程
需求获取、需求分析、需求定义、需求验证。
14.需求开发的目的
通过调查与分析,获取用户需求并定义产品需求
15.软件开发过程中为什么要进行软件的配置管理?
软件配置管理(SoftwareConfigurationManagement,SCM)是一种标识、组织和控制修百改的技术。软件配度置管理应用于整个软件工程过程。在软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱。SCM活动问的目标就是为了标识变更、控制答变更、确保变更正确实现并向其他有关人员版报告变更。从某种角度讲,SCM是一种标识、组织和控制修改的技术,目的权是使错误降为最小并最有效地提高生产效率。