FuLucas's blog

Home

About

Archives

loading..
HIT-Software-Process-and-Tools

软件过程与工具——软件工程核心思想

软件工程核心思想 一. 软件工程的本质:不同抽象层次之间的映射与转换 1. 映射与转换 任何软件系统开发的共同本质在于:从现实空间的需求到计算机空间的软件代码之间的映射与转换 image-20211219221556475 2. 单步映射与多步映射 image-20211219221748916 软件工程本质:用严格的规范和管理手段来缩小偏差,通过牺牲“时间”来提高“质量” 3. 软件工程的两个映射 概念映射:问题空间的概念与解空间的模型化概念之间的映射(概念映射,类似于数据结构) e.g. 学生成绩 Struct StudentScore (StudentNo, CourseNo, Score) 业务逻辑映射:问题空间的处理逻辑与解空间处理逻辑之间的映射(处理逻辑映射,类似于算法) e...

Read more
loading..
HIT-Software-Construction

软件构造笔记六——ADT抽象数据类型

抽象数据类型 表示泄露 AF RI Abstraction and User-Defined Types 抽象和用户定义的类型 抽象类型:强调“作用于数据上的操作”,程序员和client无需关心数据如何具体存储的,只需设计/使用操作即可。 ADT是由操作定义的,与其内部如何实现无关! 2 Classifying Types and Operations 分类类型和操作 可变类型的对象:提供了可改变其内部数据的值的操作。不变数据类型: 其操作不改变内部值,而是构造新的对象 Creator 构造器 可以将对象作为参数,但是不能把对象类型作为构造对象。(t* -> T) Producer 生产器 例如 String 的 contact 方法,将两个两个字符串连接为一个新的字符串..

Read more
loading..
HIT-Software-Construction

软件构造笔记五——设计规约

规约的强度及其比较 如何写出好的规约 Functions & methods in programming languages 返回值类型是否匹配、参数类型是否匹配,在静态类型检查阶段完成 使用“方法”的客户端,无需了解方法内部(方法体信息隐藏)具体如何工作—“抽象”。 2 Specification: Programming for communication API:应用程序编程接口 Documenting in programming “假设”写什么?变量的数据类型定义、final关键字定义了设计决策-“不可改变”、方法假设策略 为什么写?:自己记不住、别人不懂 编程时注意两点目标:代码中蕴含的“设计决策”--给编译器读;注释形式的“设计决策”--给自己和别人读。就是依据假设来进行..

Read more
loading..
HIT-Software-Construction

软件构造笔记四——数据类型与类型检验

数据数据类型及定义,检测方式 Mutable, Immutable snapshot图解析数据类型 1 Data type in programming languages 数据类型 A type is a set of values, along with operations that can be performed on those values. 数据类型 = 一组值 + 可执行操作 primitive types 基本数据类型:int, long, boolean, double, char object types 对象数据类型:String, BigInteger Java 约定:基本数据类型是小写字母开头,对象数据类型是大写字母开头 PrimitiveObject ..

Read more
loading..
HIT-Software-Construction

HashSet

HashSet添加元素时如何保证不重复 调用 add(Object 方法时,首先会调用 Object 的 hashCode 方法判 hashCode 是否已经存在 HashCode 相同的元素,如不存在则直接插入元素;如果已存在,则调用 Object 对象的 equals 方法判断是否返回true, 如果为 true 则说明元素已经存在,如为false则插入元素。 可以认为HashMap的key是不能重复的,而这里HashSet的元素是作为了map的key,所以也不能重复。 image-20210718104050829 image-20210914180921174

Read more
HIT-Software-Construction

Java静态实例方法

Java方法 类可以有两种类型的方法:实例方法(非静态方法)和类(静态方法)方法。实例方法用于实现类的实例的行为,只能在类的实例的上下文中调用。类方法用于实现类本身的行为,类方法总是在类的上下文中执行,但也能在类的实例的上下文中调用。 用静态修饰符(static)定义类方法,若缺少则为实例方法。 静态方法和实例方法的调用 外部调用静态方法时:类名.方法名/对象名.方法名;调用实例方法:对象名.方法名,即调用静态方法不需要创建对象。 1234567891011121314public class staticMethod { // a static method public static void callStatic() {    System.out.println("static ..

Read more
loading..
HIT-Software-Construction

软件构造笔记九——面向复用的软件构造技术

Software Reuse 优点:降低成本和开发时间;经过充分测试,可靠、稳定;标准化,在不同应用中保持一致。 缺点:开发可复用的软件(性能差,缺少针对性)和使用已有软件进行开发(需要适配)都需要代价。 measure “reusability”:复用的机会有多频繁;复用的代价有多大(搜索、获取,适配、扩展,实例化,与软件其他部分的互连的难度) 最主要的复用是在代码层面,但软件构造过程中的任何实体都可能被复用(包括需求、规约spec、数据、测试用例、文档等) Source code level: methods, statements, etc (lowest level) Module level: class and interface Library level: API (Java Librar..

Read more
loading..
HIT-CSAPP

CSAPP FinalHomeWork

image002 计算机系统 大作业 题 目 程序人生-Hello's P2P 专 业 计算机 学 号 1190202105 班 级 1903002 学 生 傅浩东    指导教师 郑贵滨    计算机科学与技术学院 2021年6月 摘 要 摘要是论文内容的高度概括,应具有独立性和自含性,即不阅读论文的全文,就能获得必要的信息。摘要应包括本论文的目的、主要内容、方法、成果及其理论与实际意义。摘要中不宜使用公式、结构式、图表和非公知公用的符号与术语,不标注引用文献编号,同时避免将摘要写成目录式的内容介绍。 关键词: hello;程序的一生;预处理;编译;汇编;链接;进程管理;存储管理;I/O管理 本文在Ubuntu系统下,通过介绍hello程序从编写到最终运行结束的过程..

Read more
loading..
HIT-CSAPP

CSAPP Chapter09

虚拟内存是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的、一致的和私有的地址空间。 本章的前一部分描述虚拟内存工作原理,后一部分描述应用程序如何使用和管理虚拟内存。 9.1 物理和虚拟寻址 物理寻址 (physical addressing):计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组。每字节都有一个唯一的物理地址(Physical Address, PA). 物理地址应用:早期的PC,而诸如数字信号处理器、嵌入式微控制器(汽车、电梯、数字图像帧等)以及Cray超级计算机仍然继续使用这种寻址方式。 PhysicalAddressing 虚拟寻址 (virtual addressing):CPU 通过生成一个虚拟地址 (Virtual Ad..

Read more
loading..
HIT-Software-Construction

软件构造笔记三——软件构造过程与配置管理

重点掌握:软件开发过程与版本控制工具 Software Development Life Cycle (SDLC) 软件开发生命圈(了解即可) 从无到有,从有到好。 SDLC Traditional Software Process Models 要求 区别不同开发过程模型的异同 根据不同场景给出相应模型 线性过程 Linear:顺序,要求一点要明确,难以更改 迭代过程 Iterative:每个阶段给用户反馈,用户需求不明确 选择合适模型依据:用户参与程度,适应变化能力,开发效率,管理复杂段,开发出的软件质量 瀑布过程 Waterfall (Linear, non-interative) 线性推进、阶段划分清楚、整体推进、无迭代、管理简单 无法适应需求增加/变化(prohibitively ..

Read more
1234