🚀 优质资源分享 🚀
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
🧡 Python实战微信订餐小程序 🧡 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
💛Python量化交易实战💛 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
一.软件构造的视图和质量分析
1.软件系统构成的三个维度:
按阶段划分:构造时/运行时视图;
按动态性划分:时刻/阶段视图;
按构造对象的层次划分:代码/构件视图。
2.软件构造多维视图:
Moment维度关注程序在某一时刻的表现,而Period关注的是程序在一段时间内的表现;Build-time维度关注程序还未被投入运行,编码阶段的表现,而Run-time维度更关注于程序运行时的表现。
(1)Build-time:构造代码的过程,代码分为逻辑结构和物理结构。
Moment,code-level view:基于词汇的半结构化源代码,AST(彻底结构化,将源代码变成一棵树,对树的修改等价于对源代码的修改)
Period,code-level view:代码变化,被定义为在版本迭代中代码内容的的增删改查。
Moment,component-level view:源文件的组织方式:package(包),library(库),包括别人提供的库和你自己积累的库。
寻找库的命令:javac -classpath ./lib/*.jar
静态链接:发生在构造阶段,库被拷贝成代码,执行时无需提供库文件。
Period,component-level:Version Control System (VCI),版本更新。
(2)Run-time:运行时,程序被载入内存,开始运行。
代码层面:逻辑实体在内存中如何实现?
构建层面:物理实体在物理硬件环境中如何呈现?
动态链接:库文件不会在build阶段被加入可执行软件,仅仅做出标记;程序运行时,根据标记装载库到内存;发布软件时,记得将程序所依赖的所有库都复制给用户。
分布式运行程序态:需要多个运行程序,分别部署于计算机的多个物理环境。
Moment,code-level view:代码快照图:描述程序运行时内存变量层面的状态(debugger)。
Period,code-level view:执行跟踪:用日志记录程序执行的调用次序。
Moment,component-level view:硬件部署图。
Period,component-level:系统层面的事件日志。
3.软件构造:不同视图的转换