软构复习(一)

1.软件构造的多维视图

2.Build-time
Code-level: 源代码:代码的逻辑组织:AST抽象语法树、函数、方法、类、接口等具体的逻辑实现List
item
(class diagram类图)
Component-level:结构:代码的物理组织:源文件、包、库、静态链接、测试用例
(component diagram构建/组件图),编译
Moment view : 特定时刻的源码或组件形态
Period view:软件形态随时间的变化

3.Build-moment-code:词汇(源码)、语法(抽象语法树)、语义(类图)

4.Build-period-code:code churn代码变化:增减修改

Build-moment-component:文件目录,静态链接、包、库

Build-period-component:files/packages/components/libraries
change

SCI(software configuration item 配置项)、VCS

5.Runtime Views

Code-level : 可执行程序的内存状态,程序之间的互动、调用

Component-level:软件包部署到物理环境(OS、network、硬件等),及其互动

Moment view:特定时刻的程序行为

Period view:随着时间的行为

6.Run-moment-code:snapshot 快照 描述程序运行时内存里变量层面的状态 ,Memory dump(内存转储/导出)

Run-period-code:sequence diagram序列图(时序交互),Execution tracing 执行跟踪(代码层面,用日志方式记录程序执行的调用次序)

Run-moment-component:Deployment diagram(部署图:设备、操作系统),

Run-period-component:Event logging 事件日志(系统层面)

Event logging:系统管理员使用,高层次信息(如安装程序失败),有一定输出格式,不必敏捷

Execution tracing:开发者使用,低层次信息(如抛出异常),较低格式限制,必须敏捷

软件构造的阶段划分,各阶段的活动

(第三章)
数据类型
Primitive types 基本数据类型(8种)

1.Object types 对象数据类型(reference types 引用数据类型)
Short、int 、long、float、double、boolean、char、byte

如:String、BigInteger

只有值,没有ID(无法与其他值区分),不能赋值为null;
immutable

有值,也有ID;
部分mutable,部分immutable

在栈中分配内存,代价低

在堆中分配内存,代价高

2.静态类型检查&动态类型检查
静态类型检查

动态类型检查

(静态类型语言 如java)

(动态类型语言 如python)

提高程序的正确性和健壮性

关于"类型"的检查,不考虑值(不知道运行时会是什么值)

关于"值"的检查

3.Mutable &
Immutable
Immutable 不可变数据类型

mutable 可变数据类型

优点

优点:安全

优点:最少化拷贝以提高效率获得更好的性能,适合于在多个模块之间共享数据

缺点

缺点:频繁修改产生大量临时拷贝,需要垃圾回收·

缺点:不安全
其他

一旦被创建,其值不能改变
对于引用类型,加final限制不能改变引用

安全地使用可变类型:局部变量(不涉及共享,且只有一个引用)
如果有多个引用(别名),不安全
Defensively copy 防御式拷贝:返回全新的对象

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值