什么是软件
图灵的提出:系统软件、应用软件......
个人理解:软件就是解决问题的工具,未来的软件就像满足人们需求的基础设施一样,和老师讲的软件定义世界是一样的道理
软件组成的变化:模块、数据 =====>进一步与我们的技术主流相关
软件开发过程/软件开发流程:可以参考软件工程中的内容,瀑布模型,以及流行的敏捷开发
多维度视图
阶段划分、按动态性划分、按构造对象的层次划分
build time && run time
moment &&period
code-level && component-level
build time && moment && code-level
表达方式:source code、AST、class diagram
build time && period && code-level
code churn:代码改变
build time && moment && component-level
文件目录、分类、类库的引入(library reused可复用设计)
库library
操作系统、编程语言SDK、第三方公司、自己积累的库
静态链接:编译阶段,build阶段
动态链接:
Component Diagram 组件之间的uml
build time && period && component-level
文件目录的变化,版本控制
SCI 配置项
Version 版本
run time综述
run time&& code-level:代码中逻辑实体的内存变化
run time &&Component-level:物理试题在物理硬件环境中如何呈现
run time && moment :特定时刻的逻辑、物理实体内存、硬件环境特定时刻状态
run time && period:逻辑、物理实体内存、硬件环境随时间变化
回顾:可执行程序、类库。配置、数据文件、分布系统
可执行程序
原生机器码:速度比较快,编译时间长、与操作系统密切相关
程序完全解释器:不断翻译,比较慢
解释型字节码:介于二者之间,虚拟机要可以跨平台Java
执行时编译成字节码:Python
动态链接
build阶段不加入执行文件只会标记
运行时标记转至内存
发布软件时要讲库均上传
优势:类库变化的时候不需要重新生成可执行程序、共享同一个类库,优化内存
配置、数据文件
分布系统
run time && moment&& code-level
代码快照图snapshot Diagram:描述某时刻内存中变量层面的状态
内存信息转储memory dump:任务管理器
run time && period&& code-level
uml:时序图、顺序图(类似于一种整体框架)
执行跟踪:用日志记录程序变化
run time && moment&& Component-level
依赖图deployment Diagram:部署图
run time && period&& Component-level
事件日志:系统层面
日志的细节区别:事件日志、代码层面的日志记录
重点学习目标
视图的转化
=>code
code=>component
build time=>run time
moment=>period
质量指标
五个最关注的指标
总结
第一节课主要是介绍三维度八视图的知识容量 具体的ppt部分仍然需要咀嚼