自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 软件构造课程阶段总结(十):面向可复用性和可维护性的设计模式

当client不知道要创建哪个具体类的实例,或者不想在client代码中指明要具体创建的实例时,用工厂方法。定义一个用于创建对象的接口,让其子类来决定实例化哪一个类,从而使一个类的实例化延迟到其子类。问题:一些客户共享相同的算法,但在具体细节上有所不同,即,一个算法由可定制的部分和不变的部分组成。解决方法:定义抽象类,共性的步骤在抽象类内公共实现,差异化的步骤在各个子类中实现。子类为上述每个步骤提供了不同的实现。通过增加一个接口,将已存在的子类封装起来,client面向接口编程,从而隐藏了具体子类。

2024-06-23 23:30:00 315

原创 软件构造课程阶段总结(九): 面向可维护性的构造技术

软件维护:修复错误、改善性能运维是软件开发中最困难的工作之一,涉及到其他所有环节最大的问题:修改后没有足够的文档记录和测试用例软件维护的类型对交付后执行的软件产品进行反应性修改,以纠正发现的问题;修改交付后执行的软件产品,以保持软件产品在变化或变化的环境中可用;软件产品交付后的改进,以提高性能或可维护性;软件产品交付后的修改,在软件产品中的潜在故障成为有效故障。是软件维护的重要部分;对软件进行持续的更新软件的大部分成本来自于维护阶段软件维护不仅仅是运维工程师的工作,而是从设计和开发阶段就开始了。

2024-06-23 23:22:26 532

原创 软件构造课程阶段总结(八):面向复用的软件构造技术

软件复用是指使用现有的软件组件来实现或更新软件系统的过程。软件重用的两个角度重用代价高昂:它涉及到跨越组织、技术和流程的更改,以及支持这些更改的工具的成本,以及培训人员使用新工具和更改的成本。面向复用编程和基于复用编程代价都高。开发成本高于一般软件:需要有足够高的适应性性能较差:需要针对普适场景,舍弃一定性能,缺少针对性需要可复用软件库以管理;无法拿来就用,需要适配复用机会有多频繁?复用场合有多少?代价有多大?

2024-06-23 23:13:46 750

原创 软件构造课程阶段总结(七):ADT和OOP中的等价性

现实中每个对象都是独特的,并不存在完全相等,但存在对“等价性”的需要。数学中完全相等存在等价关系问题即为在软件领域中界定判断为相等:等价、可相互替代的数学中认为等价关系为“自反、对称、传递”的关系。在ADT中,抽象函数AF映射到同样的结果(AF(a)==AF(b))=两对象等价.对两个对象执行任何相同操作,得出的结果都相同,则认为两对象等价。(为充要关系)Java下有==和.equals()两种操作来测试相等性,其有不同原理和用法。

2024-06-23 22:53:18 671

原创 软件构造课程阶段总结(六):面向对象的编程

接口中的每个方法在所有类中都要实现,而通过default方法,在接口中统一实现某些功能,无需在各个类中重复实现它。泛型编程是一种编程风格,其中数据类型和函数是根据待指定的类型编写的,随后在需要时根据参数提供的特定类型进行实例化。区分一个设计良好的模块和一个坏的模块的一个最重要的因素是它对其他模块隐藏内部数据和其他实现细节的程度。Java的接口是设计和表达ADT的一种有用的语言机制,其实现是一个实现该接口的类。如果类在其实现子句中声明了接口,则会实现接口,并为接口的所有方法提供方法体。

2024-06-13 23:34:22 540

原创 软件构造课程阶段总结(五):ADT

除了编程语言所提供的基本数据类型和对象数据类型,程序员可定义自己的数据类型。数据抽象:由一组操作所刻画的数据类型。

2024-06-12 23:57:07 916

原创 程序人生-Hello’s P2P

P2P (From Program to Process) :指从C语言程序文件(Program)hello.c变为一个在计算机中运行的进程(Process)的过程。这一过程是从用户编辑的C语言文件开始,经过预处理、编译、汇编、链接,生成可执行文件hello;在shell中通过./hello运行,shell程序经过分析命令行、初始化环境变量、fork创建进程、execve加载程序,系统为该程序分配内存空间等过程,以hello为基础创建出一个在计算机中运行的进程,即完成了hello.c的P2P过程。

2024-06-10 20:26:29 747

原创 软件构造课程阶段总结(四):设计规约

它可以自由地做任何事情,包括不终止,抛出异常,返回任意结果,进行任意修改,等等。方法的规范可以讨论方法的参数和返回值,但它不应该讨论方法的局部变量或方法类的私有字段。对规约的读者来说是方法的实现是不可见的。客户端不喜欢太强的precondition,不满足precondition的输入会导致失败。一个好的“方法”设计,并不是你的代码写的多么好,而是你对该方法的spec设计得如何。越强的规约,意味着实现者的自由度和责任越重,而客户端的责任越轻。在规约里使用抽象类型,可以给方法的实现体与客户端更大的自由度。

2024-06-02 23:41:31 760

原创 软件构造课程阶段总结(三):数据类型与类型检验

前两篇回顾了什么是高质量软件,如何从不同维度刻画软件、软件构造的基本过程和步骤,本篇关注软件构造的理论基础ADT(抽象数据类型)和软件构造技术基础OOP(面向对象编程)

2024-05-30 00:06:05 704

原创 软件构造课程总结(二)——软件测试与构造过程管理

可以通过bug排查和质量特性评价以提高质量。确认是否达到可用级别(用户需求)关注系统的某一侧面的质量特性即使是最好的测试,也无法达到100%的无错误。可用defects/kloc即残留缺陷率描述质量,按1-10,0.1-1,0.01-0.1从一般到最佳分为不同等级。测试的目标为证错,但无法证明无错误。有如下分类:单元测试;集成测试;系统测试;验收测试等。

2024-05-27 22:15:39 595

原创 软件构造课程总结(一)——软件构造的多维度视图与质量指标

针对软件构造课程第一讲:软件构造的多维度视图和质量目标进行简要总结

2024-05-27 21:53:23 673

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除