软件工程技术与应用感兴趣的几个问题。

本文探讨了面向对象编程的四个基本特征(抽象、继承、封装和多态),以及遵循的设计原则如信息隐藏、强内聚和弱耦合。同时强调了软件测试的目标不仅是发现错误,还有分析错误原因和改进软件过程的价值。最后,讨论了软件维护的必要性和在实践中遇到的问题。
摘要由CSDN通过智能技术生成

面向对象程序设计的重点。

面向对象的4个基本特征:

(1)抽象。面向对象方法不仅支持过程抽象而且还支持数据抽象。类实际上是一种抽象数据类型,它对外提供的公共接口构成了类的规格说明 (即类的协议)。使用者无须知道类中的具体操作是如何实现的,也无须了解内部数据的具体表现形式,只要清楚它的规格说明,就可以通过接口定义的操作访问类的数据,这种抽象被称作规格说明抽象。此外,面向对象的程序设计语言还支持参数化抽象。所谓参数化抽象是指当描述类的规格说明时并不具体指定所要操作的数据类型,而是把数据类型作为参数。这使得类的抽象程度更高,应用范围更广,可复用性更好。

(2)继承。继承是面向对象软件技术当中的一个概念。如果一个类A 继承自另一个

类B,就把这个A称为“B的子类”,而把B称为“A的父类”。继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。另外,为子类追加新的属性和方法也是常见的做法。

通过继承,可以实现代码的重用。

(3) 封装。封装是将一个完整的概念组成一个独立的单元,然后通过一个名称来引用

它。在系统的较高层次,可以将一些相关的应用问题封装在一个子系统中,对子系统的访问是通过访问该子系统的接口实现的;在系统的较低层次中,可以将具体对象的属性和操作封装在一个对象中,通过对象类的接口访问其属性。

(4) 多态。多态(polymorphism) 按字面的意思就是“多种状态”。在面向对象语言

中,接口的多种不同的实现方式即为多态。多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。简单的说、就是一句话:允许将子类类型的指针赋值给父类类型的指

针。多态性在C++中都是通过虚函数实现的。

 

 

 

2、面向对象设计原则

在面向对象需求分析过程给出了问题域的对象模型,为了便于系统的实现和优化,在

设计过程中需要对这个模型进行扩展和重构。在设计时应该尽可能地考虑复用已有对象类,这是为了提高软件的复用度,尽量利用继承的优点。

为了更好地进行对象设计,需要遵循以下原则:

(1) 信息隐藏。在而向对象设计的方法中,信息隐藏是通过对象封装实现的。类的结构分离了接口和实现。对于类的使用者来说,属性的表示和操作的实现都是隐藏的

(2) 强内聚。对象设计中包括两种内聚:服务内聚,一个服务内聚完成并且仅完成一个功能;类内聚,设计类的原则就是一个类的属性和操作全部都是完成某个任务所必需的。

(3) 弱藕合。弱藕合是设计高质量软件的一个重要原则,因为它有助于隔离变化对系统其他元素的影响。在面向对象设计中,藕合主要指不同对象之间相互关联的程度。如果一个对象过多地依赖于其他对象来完成自己的工作,那么会使该对象的可理解性下降、而且还会增加测试、修改的难度,同时降低了类的可复用性和移植性。.

(4) 可复用。软件复用是从设计阶段开始的,所有的设计工作都是为使系统完成预期的任务,提高工作效率、减少错误、降低成本。复用性有两方面的含义:一是尽量使用已有的类,包括开发环境提供的类库和已有的相似类:二是对于创建的新类应在设计时考虑其将来的可复用性。在对象设计过程中,将分析模型转换为设计模型的对应关系。

 

软件测试也是软件开发的重要部分。

软件测试的目的:

       基于不同的立场,存在着两种完全不同的测试目的。从用户的角度出发普遍希望通过软件测试暴露软件中隐藏的错误和缺陷,以考虑是否可接受该产品。从软件开发者的角度出发,则希望测试成为表明软件产品中不存在错误的过程,验证该软件已正确地实现了用户的要求,确立人们对软件质量的信心。

Grenford J. Myers 曾对软件测试的目的提出过以下观点:

(1) 测试是为了发现程序中的错误而执行程序的过程。

(2):好的测试方案是极可能发现迄今尚未发现的错误的测试方案。

(3) 成功的测试是发现了至今尚未发现的错误的测试。

      换言之,测试的目的是想以最少的时间和人力,系统地找出软件中潜在的各种错误和缺陷。如果我们成功地实施了测试,我们就能够发现软件中的错误。测试的附带收获是.它能够证明软件的功能和性能与需求说明相符合。实施测试收集到的测试结果数据为可靠性分析提供了依据。测试不能表明软件中不存在错误,它只能说明软件中存在错误。

     然而,这种观点指出测试是以查找错误为中心,而不是为了演示软件的正确功能,但是只从字面意思理解可能会产生误导,认为发现错误是软件测试的唯一目的,查找不出错误的测试就是没有价值的测试,实际上并非如此!

(1)测试并不仅仅是为了找出错误。通过分析错误产生的原因和错误的发生趋势,可

以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。

(2)这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率。

(3) 没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。

 

人们对于软件维护的认识远远不如软件开发。

什么是软件维护

在软件开发阶段结束以后,作为产品的软件交付用户使用,进入运行阶段。实践表

明,在运行中仍然有必要对软件进行改动,原因如下:

(1) 改正在运行中新发现的软件错误和设计上的缺陷。这些错误和缺陷是在开发后期测试阶段未能发现的。

(2) 改进设计,以便增强软件的功能,并提高软件的性能。

(3)要求已运行的软件能适应特定的硬件、软件、外部设备、通信设备的工作环境或是要求适应已变动的数据或文件。

(4) 为使投入运行的软件与其他相关的程序有良好的接口以利于协同工作。

(5)为使运行的软件的应用范围得到必要的扩充。

需要注意的是,这里所说的软件“维护”是从硬件的“维护”一词借用过来的。其

实两者的含意有着很大的不同。对硬件来说“维护”意味着“维修”,它表示更换已损坏的零部件,或是对机械零件进行擦洗、注油,加以润滑保养。然而,这并不会影响到设备的功能,对设备性能的提高也是非常有限的。也许对提高设备工作的效率和延长设备的使用期限是有作用的。软件的维护工作则完全是另外一回事。软件的维护不仅可以改正原来设计中的错误或不当之处,而且还能增强软件的功能,提高它的性能。

我国软件工程的实践还很不够,许多人对于维护工作至今尚未充分地理解。有人甚至

错误地否认维护工作的必要性,而不少用户对软件维护的知识了解得很少,一些重要的软件运行过程中,没有专人负责维护。致使有的软件在运行中出现了问题,因得不到解决而被放置起来,遭受经济损失。也有人以为,运行中发生的问题都应该由原软件开发人员或原开发部门来解决。其实,他们并不理解,已交付的软件产品一旦投入运行,并且超过合同规定的保修期以后,开发人员和开发部门就完全没有责任了。否则,软件开发人员就会被大量的维护工作所束缚。开发的软件越多;承受维护工作的负担也越重,最终将导致完全没有时间和精力从事新的软件开发工作。很显然,这种情况对软件产业的发展是极为不利的。

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值