自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 软件构造课程总结(十二)——面向正确性与健壮性的软件构造

健壮性:系统在不正常输入或不正常外部环境下仍能够表现正常的程度面向健壮性的编程处理未期望的行为和错误终止即使终止执行,也要准确/无歧义的向用户展示全面的错误信息错误信息有助于进行debug健壮性原则(Postel定律)总是假定用户恶意、假定自己的代码可能失败。把用户想象成白痴,可能输入任何东西。因此,程序员返回给用户一个明确的、直观的错误消息,不需要查找错误代码。错误消息应尽量尽可能准确,而不误导用户,从而使问题能够轻松解决。对别人宽容点,对自己狠一点(Postel定律)

2023-05-27 13:13:25 364

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

区别:visitor是站在外部client的角度,灵活增加对ADT的各种不同操作(哪怕ADT没实现该操作),strategy则是站在内部ADT的角度,灵活变化对其内部功能的不同配置。问题:一些客户共享相同的算法,但在具体细节上有所不同,即,一个算法由可定制的部分和不变的部分组成。访问者模式:对特定类型的object的特定操作(visit),在运行时将二者动态绑定到一起,该操作可以灵活更改,无需更改被visit的类。如果操作的逻辑发生了变化,那么我们只需要在访问者实现中进行更改,而不是在所有的类中进行更改。

2023-05-26 23:20:10 277

原创 软件构造课程总结(十)——面向可维护性的构造技术

为了描述一串符号,无论它们是字节、字符,还是从一个固定的集合中提取的其他类型的符号,我们使用一种称为语法的紧凑表示。也就是说,一些语法不能简化为单一的非递归产物。模块化编程是一种设计技术,它强调将程序的功能分离为独立的、可互换的模块,这样每个模块就包含只包含执行所需功能的一个方面所需的所有内容。正则表达式去掉了终端周围的引号,以及终端和运算符之间的空格,因此它只由终端字符、用于分组的圆括号和运算符字符组成。:它是一个广泛使用的工具,用于许多字符串处理任务,需要分解一个字符串,从中提取信息,或转换它。

2023-05-26 19:21:18 242

原创 软件构造课程总结(九)——面向复用的软件构造技术

软件复用是指使用现有的软件组件来实现或更新软件系统的过程。软件重用的两个角度面向复用编程:开发出可复用的软件基于复用编程:利用已有的可复用软件搭建应用系统为什么复用:降低成本和开发时间通过缩短软件生产周期(软件开发速度更快、人员更少)来提高软件的生产力不浪费资源而不必要地“重新发明车轮”降低维护成本(可以生产出更好的质量、更可靠和高效的软件)经过充分测试,可靠、稳定重用已经存在了一段时间并被调试的功能构建稳定子系统的基础标准化,在不同应用中保持一致。

2023-05-26 13:29:22 430

原创 软件构造课程总结(八)——ADT和OOP中的“等价性”

为了使用f作为等式的定义,我们假设a等于b当且仅当f (a)=f (b)。即AF映射到同样的结果,则等价。由抽象函数引起的关系是一种等价关系。

2023-05-26 03:46:59 78

原创 软件构造课程总结(七)——面向对象的编程

有时一个类型有一个小的,有限的不可变值集,例如:一年中的月:1月,2月,…一周的日子:星期一,星期二,…如果S是T的一个子类型,那么T类型的对象可以被S类型的对象替换(即T类型的对象可以被子类型S的任何对象替换),而不改变T的任何理想属性。重载的方法通常意味着对调用方法的人来说更好一些,因为您的代码承担了处理不同参数类型的负担,而不是强迫调用者在调用方法之前进行转换。泛型编程围绕着从具体的、有效的算法中抽象出来以获得通用算法的思想,这些算法可以与不同的数据表示相结合,从而产生各种有用的程序。

2023-05-26 02:04:16 165

原创 软件构造课程总结(六)——抽象数据类型 (ADT)

除了编程语言所提供的基本数据类型和对象数据类型,程序员可定义自己的数据类型。数据抽象:由一组操作所刻画的数据类型。传统的类型定义:关注数据的具体表示抽象类型:强调“作用于数据上的操作”,程序员和客户端无需关心数据如何具体存储的,只需设计/使用操作即可。操作本身(及其规范)完全定义了数据类型,并从数据结构、内存存储或实现的细节中抽象出来。ADT是由操作定义的,与其内部如何实现无关!

2023-05-25 19:55:13 470

原创 软件构造课程总结(五)——设计规约

*在规约中避免使用可变的全局变量。作为这种非本地契约现象的问题,考虑Java集合类,它们通常在类的客户端和实现者上有非常清晰的契约记录。一个给定的实现要么按照规范进行行为,满足前提条件-隐含-后置条件契约(它在区域内),要么不满足(在区域之外)。它们通常更短,更容易理解,而且最重要的是,不会无意中暴露客户机可能依赖的实现细节。方法的规范可以讨论方法的参数和返回值,但它不应该讨论方法的局部变量或方法类的私有字段。一个好的“方法”设计,并不是你的代码写的多么好,而是你对该方法的spec设计得如何。

2023-05-25 02:43:15 408

原创 软件构造课程总结(四)——数据类型与类型检验

快照图表示一个程序在运行时的内部状态——它的堆栈(正在进行中的方法及其本地变量)和它的堆(当前存在的对象)。不可修改的包装器通过拦截所有将修改集合的操作,并抛出一个不受支持的操作异常,从而剥夺了修改集合的能力。所有变量的类型在编译时(在程序运行之前)都是已知的,因此编译器也可以推断出所有表达式的类型。在使用迭代器过程中,需要注意使用某些方法修改了列表对象时对迭代器状态的破坏。如果是引用类型,也可以是不变的:一旦确定其指向的对象,不能再被改变。,通常是在定义集合类型的时候使用它们,一般情况下,尽量避免使用。

2023-05-24 16:45:15 92

原创 软件构造课程总结(三)——软件构造过程与配置管理

和测试一样,调试也不是一种提高软件质量的方法,但它也是一种诊断缺陷的方法。重构会带来短期的时间/工作成本,以获得长期的利益,并对您的系统的整体质量进行长期的投资。(文件管理,库管理,软件逻辑实体可视化,图形化用户界面构造器,编译器、解释器,自动化build工具,版本控制系统,外部的第三方工具)建模语言是任何人工语言,可以用来表达由一组一致的规则定义的结构中的信息、知识或系统的语言,目的是可视化、推理、验证和交流系统的设计。正式的检查是非常彻底的,并已被证明在发现正在审查的代码中的缺陷方面是有效的。

2023-05-23 16:00:00 324

原创 软件构造课程总结(二)——软件测试与测试优先的编程

软件测试是提高软件质量的重要手段。确认是否达到可用级别(用户需求)关注系统的某一侧面的质量特性即使是最好的测试,也无法达到100%的无错误。测试分类:单元测试;集成测试;系统测试;验收测试等静态测试&动态测试静态测试通常是隐式的,如校对,而且当编程工具/文本编辑器检查源代码结构或编译器(预编译器)时,检查语法和数据流作为静态程序分析。动态测试是描述代码动态行为的测试,它实际上使用给定的测试用例执行编程代码。测试&调试测试:发现是否存在错误调试:识别错误根源,消除错误黑盒测试&白盒测试。

2023-05-22 21:29:01 171 1

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

内存信息转储:硬盘上的文件,其中包含进程内存内容的副本,当进程因某些类型的内部错误或信号而中止时生成。描述源代码如何按基本程序块进行逻辑组织,如函数、类、方法、接口等,以及它们之间的依赖关系。正确的软件开发过程中,开发者应该将不同质量因素之间如何做出折中的设计决策和标准明确的写下来。源代码如何按文件、目录、包、库以及它们之间的依赖关系进行物理组织。描述软件是否能够按时发布,过晚地发布将不能达到软件原本的目标。描述软件能否正确处理异常情况,是对正确性的补充。评价对软件的规约进行修改是否足够容易。

2023-05-22 16:12:57 150

原创 ADT使用小结(哈工大软构lab2总结)

软件构造的实验2主要为了训练ADT的设计与使用,包括训练抽象数据类型(ADT)的设计、规约、测试,以及设计每种ADT的表示 (representation)、表示不变性(rep invariant)、抽象过程(abstraction function),判断是否存在表示泄露(rep exposure)等等。由于在之前的编程中我并没有特别注意ADT编写的一些规范,没有特别区分Rep,RI,AF等等,因此在这次实验中我还是产生了许多感悟,接下来我就围绕ADT以及ADT设计来谈谈自己的感受。

2023-05-21 16:35:13 116 1

原创 简谈Java与git(哈工大软构lab1总结)

最近学校开设《软件构造》这门课,lab1作为第一次实验,整体难度不大,主要是为了熟悉git的使用以及java的基本语法。接下来我就这两块部分谈谈我对感受。

2023-05-19 17:08:24 95 1

原创 Junit单元测试总结

超详细的Junit单元测试笔记总结

2023-03-01 01:18:03 689

原创 Unity PlasticSCM 详解

Unity PlasticSCM详解跟随Unity官方学习 Unity PlasticSCM 的课程笔记

2022-05-05 02:35:20 2657

原创 C# in Unity 协程&反射

Unity 中 c# 关于协程和反射相关知识的学习笔记

2022-05-03 01:47:03 1035

原创 Pr入门教学笔记

简单的Pr零基础入门笔记,希望对你有帮助。

2022-04-28 02:06:31 1085

原创 obs教程笔记

最近学习obs的学习笔记,希望对大家有些帮助

2022-04-27 21:30:06 5071

原创 游戏美术资源网站推荐

给大家分享一些自己使用过的购买游戏美术资源的网站,希望给大家带来些帮助

2022-04-25 20:17:23 4752

空空如也

空空如也

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

TA关注的人

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