软件工程部分知识点总结
1.比较黑盒测试、白盒测试的优缺点
黑盒测试,也称功能测试、数据驱动测试或基于规格说明的测试,优点为
①比较简单,不需要了解程序的内部的代码及实现
②与软件的内部实现无关
③从用户的角度出发,很容易被接受和理解。
④基于软件开发文档,能知道软件实现了文档中的哪些功能。
⑤在做软件自动化测试时比较方便。
缺点:
①不可能覆盖所有的代码,覆盖率较低。大概只能达到总代码的30%
②自动化测试的复用性比较低。
白盒测试,也称结构测试、逻辑驱动测试或基于代码的测试,优点为:
①帮助软件测试人员增大代码的覆盖率,提高代码质量,发现代码中隐藏的问题。
②检测代码中的每条路径和分支,对代码的测试进行的比较彻底。
③揭示隐藏在代码中的错误。
④迫使测试人员去了解软件的实现。
缺点:
①无法检查代码中遗漏的路径和数据敏感性错误。
②测试基于代码,不验证规格的正确性。
③系统庞大时,测试开销会非常大。
2.软件生命周期
软件生命周期,如同其他事物一样,软件也有一个孕育,诞生,成长,成熟,衰亡的生存过程,我们将这个过程称为软件生命周期,由软件定义,软件开发和运行维护三个时期组成。
软件定义时期的主要任务就是解决做什么的问题,该时期的工作就是系统分析,由系统分析员完成,分为三个阶段,问题定义,可行性研究,需求分析。
运行维护时期的主要任务是使软件持久地满足用户的需要,通常有四类维护性活动,改正性维护,适应性维护,完善性维护,预防性维护。
3.为什么软件维护费用一直居高不下?
软件工程师没有认识到软件维护的重要性和困难,没有系统的考虑软件维护问题和相应的技术问题。
4.软件生存期模型的适用范围
快速原型模型:用户需求不明确,需要构建原型来帮助用户确定需求的软件开发。
增量模型:可以将系统模块化,对现有的系统进行升级或新版本开发。
螺旋模型:内部软件开发的大规模软件项目。
喷泉模型:面向对象的开发。
RUP(统一过程):面向对象开发,大型团队开发大型项目。
敏捷过程:小型团队开发中小型项目。
5.为什么要进行软件项目管理?
①人员管理
软件工作的管理归根到底就是对人员行为的管理,人的因素是软件工程的核心要素,大型复杂的项目不是少数人凭借个人技能就能胜任的,需要团队之间合作共同来完成,这就需要严格注重人员管理。
②产品管理
软件产品是软件项目的成果和预期目标,在开发前,要明确项目的规模、工作量、功能、性能,要知道项目的目标。
③过程管理
过程在软件工程项目中是重要的因素,决定着项目开展哪些活动以及对活动的要求和开展活动的顺序。
④项目管理
把软件项目置于有计划、可控的项目中是保证其成功的唯一途径,项目管理的任务是如何利用已有的资源,组织实施既定的项目,提交给用户适用的产品,主要工作包括计划及计划管理,资源管理和成果要求管理。
6.软件在交付时,如果运行没有问题,能不能说这个软件就是高质量的软件?(仅供参考)
软件质量包含两个层次的质量含义,正确的软件及软件运行正确。
“正确的软件”指一个软件要满足用户的需求,为用户创造价值。一个产品尽管运行很好,没有Bug,性能良好,拓展性很强,但如果没有服务的用户人群,没有为用户创造价值,就无任何价值可言。
“软件运行正确”指软件没有或很少有Bug,拓展性很强,性能良好,易用性高,软件运行良好。如果一个产品满足用户的需求,但是在运行过程中经常遇到问题、Bug,甚至无法持续运行,这样的软件也不是高质量的软件。只有满足用户需求同时
7.从用户哪里得到的原始需求,能不能不用分析就直接作为软件设计阶段的依据?(仅供参考)
从用户那里得到的原始需求是用户从自身的角度出发,自认为的需求,是根据他们的自身情况考虑的需求,但是他们对产品的定位设计不了解,不清楚如何设计各个模块的功能,他们的建议也不一定是该功能的最好的实现方式,设计人员不一定熟知用户的原始需求,需要根据用户的原始需求来进行分析,转化为符合产品要求的需求。
8.判断下面的类图是否符合规范,如果不符合,请画出重构的类图
问题描述:某软件公司开发人员针对某系统中的客户信息统计模块提出了如图所示的初始设计方案
初始化设计方案类图
在图中,GetConnection()方法用于连接数据库,FindCustomers()方法用于查询所有的客户信息,CreateChart()方法用于创建图表,DisplayChart()方法用于显示图表。上述类图是否符合规范,若不符合规范,请画出重构后的类图。
解:上述类图不满足单一原则,根据单一原则重构后的类图如下
9.根据类图和题目条件写代码(注意编码风格)
问题描述:某电影院票价设置如下:学生票打8折,VIP用户半价,儿童打7折,请根据下方的类图和题目要求使用面向对象语言写出代码
MovieTicket类:
public class MovieTicket { private Discount discount; private double price; public double Price; public double getPrice() { return Price; } public void setPrice(double price) { this.Price = price; } public void setDiscount(Discount discount) { this.discount = discount; } }
接口Discount:
public interface Discount { public double Calculate(double price); }
StudentDiscount类
public class StudentDiscount implements Discount { @Override public double Calculate(double price) { return price * 0.8; } }
VIPDiscount类
public class VIPDiscount implements Discount { @Override public double Calculate(double price) { return price * 0.5; } }
ChildrenDiscount类
public class ChildrenDiscount implements Discount { @Override public double Calculate(double price) { return price * 0.7; } }
作 者:sweetheart1998
出 处:https://home.cnblogs.com/u/gujun1998/
如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
如果您觉得文章对您有帮助,可以点击文章右下角推荐一下!