软件构造学习
Mkotori
这个作者很懒,什么都没留下…
展开
-
Software Construction学习——多维度看软件
软件的开发过程:idea->requirement->design->code->installable/executable package软件的维度主要有三块: 1.Moment--某一时间点;Period--长时间下 2.Build-time--构造阶段;Run-time--运维阶段 3.Code-level--代码层面;Component-leve...翻译 2018-03-12 23:00:18 · 702 阅读 · 0 评论 -
Software Construction学习——可复用性的形态与特征
一.什么是可复用软件定义:软件的复用是一个通过实用已经存在的软件的组件来实现或更新软件系统的一个过程。从两个角度来看软件复用: · 创造(Creation):面向复用的编程(Programming for reuse)——开发出可复用的软件。 · 使用(Use):基于复用的编程(Programming with reuse)——利用已有的可复用软件搭建应用系统复用的好处: ...翻译 2018-05-01 15:48:35 · 354 阅读 · 0 评论 -
Software Construction学习——抽象数据类型(ADT)
抽象数据类型(Abstract Data Type)和表示独立性(Representative independence):使我们能够区分如何在程序中使用数据结构和数据结构本身的形式 · 抽象数据类型会避免客户对数据内部的表示进行猜测(即“表示泄漏”)。从而导致潜在的bug——即在用户和实现者之间建立起了一个防火墙。一. 抽象(Abstraction)和用户(User-Defin...翻译 2018-04-06 19:11:50 · 638 阅读 · 0 评论 -
Software Construction学习——设计规则(Designing Specification)
在软件构造的过程中,每一个函数、方法都有自身具体的实现方式,而其实现方式是依据所给定的规约(spec)来实现的。本次就是来学习如何定义编程中的“规约”。一. 编程语言中的函数(Function)和方法(Method)“void”意味着没有返回值,而java对于返回值类型是否匹配,是在静态类型检查阶段完成。而对于参数类型是否匹配的检查,也是在静态类型检查阶段完成。“方法”是程序的“积木”,可以...翻译 2018-04-02 20:00:09 · 293 阅读 · 0 评论 -
Software Construction学习——可理解性(Understandability)
代码的可理解性是针对程序员而言,防止为了使程序员能更好地理解自己所写的代码,并且让他人也能理解代码的功能。一个软件的外部性的好坏取决于其内部性,而内部代码能被更好地理解,也能使其更好优化其它内部性质从而实现一个优质代码。一. 理解性的指标e.g. · 是否遵循特定的命名规范? · 是否有足够的注释/说明 · 是只能同时执行一个事情还是多个事情可以被同时执行...翻译 2018-04-08 18:58:42 · 2177 阅读 · 0 评论 -
Software Construction学习——数据类型和类型检查
数据类型是代码中经常出现的东西,但是我们可能对其本身并没有多少深入的了解,在java之中,数据的不同类型之间还有着各种各样的共性和差异,理解这种数据类型,就可以更好防止数据泄露,更好的利用数据。一. 编程语言中的数据类型类型(type)是一系列的值,还有一系列与之相关的操作。 e.g. boolean: 布尔值(true, false) int: ...翻译 2018-03-30 14:09:21 · 259 阅读 · 0 评论 -
Software Construction学习——ADT和OOP的相等性
在很多场景下,需要判定两个对象是否“相等”,例如,判断某个Collection中是否包含特定元素。“==”和“equals()”有何区别?如何定义ADT正确实现equals()一. 什么是等价性(Equality)ADT是对数据的抽象,体现为一组对数据的操作。而抽象函数AF是将内部表示R转换为抽象表示A。而等价性就是基于AF来定义的。现实中每个对象都是独特的,所以无法有完全相等,但有“相似性...翻译 2018-04-07 20:50:42 · 178 阅读 · 0 评论 -
Software Construction学习——面向对象编程(OOP)
面向对象编程(Object-Oriented Programming)——将ADT的接口和其实现分离开来,在Java之中通过Java的接口来实现。并且通过接口来定义ADT,然后在用具体的类去实现ADT。一. 面向对象的标准一个面向对象编程的语言应当有着一个有关类的中心理论。这样的编程语言应当使其类和特征具有断言(assertion)(规约,前提,后置和不变量)和异常处理,并且能依靠工具来针对...翻译 2018-04-07 19:21:38 · 257 阅读 · 0 评论 -
Software Construction学习——软件的质量属性
软件的质量是衡量软件好坏的一个重要的指标;在软件构造的过程中需要了解如果达不到质量指标,会有什么后果;还需要了解有哪些面向质量指标的软件构造技术。 一.软件系统的质量属性外部质量因素(External quality factor):外部质量因素比如软件使用的速度和难易度,这些因素都会被用户所探查到。内在因素(internal factors):内部质量因素比如模块化编程、代码可读性。内部因素一般...翻译 2018-03-20 22:09:35 · 441 阅读 · 0 评论 -
Software Construction学习——可复用的构建
一.设计可复用的类在OOP之中设计可复用的类 · 封装和信息隐藏 · 继承和重写 · 多态、子类和重载 · 泛型编程 · LSP原则 · 委派和组合(Composition)1.LSPBehavioral subtyping——行为子类型 -子类型多态( Subtype polymorphism) :客户端可用统一的方式...翻译 2018-05-07 23:18:49 · 352 阅读 · 0 评论