软件构造的多维度视图
|
Moment |
Period |
||
|
Code-level |
Component-level |
Code-level |
Component-level |
Build-time |
源代码 AST(抽象语法树) 界面-Class-属性-方法 (Class视图)
|
Package Source File Static linking Library Test Case (Component视图)
|
代码变化 |
软件配置项SCI 版本 |
Run-time |
代码快照snapshot 内存转储(垃圾) |
Package Library Dynamic linking Configuratio配置 Database数据库 Middleware Network Hardware (部署视图) |
Execution trace (执行跟踪) 过程调用图 消息图(序列图) 并行和多线程/进程分布式进程 |
Event log 过程调用图 消息图(序列图) 并行和多线程/进程分布式进程 |
二、软件构造的阶段划分、各阶段的构造活动
按阶段:构建和运行时视图
按动力学:时间和周期视图
按级别:代码和组件视图
1.Build-time
·软件构建的核心过程和环节
idea—requirement—design—code—installable/executable package
·Code-level view:
源代码——源代码是如何按照基本程序块(如函数、类、方法、接口等)以及它们之间的依赖关系进行逻辑组织的。
·Component-level view:
架构:源代码是如何通过文件、目录、包、库以及它们之间的依赖关系进行物理组织的。
·Moment:源代码和组件在特定时间内是什么样子的
·Period:它们是如何随时间发展/变化的
(1.Build-time、Moment和Code-level视图
·在逻辑上代码是如何通过基本程序块组织的
三种相互关联的形式:面向词法、面向语法、面向语义
·AST(抽象语法树):面向语法的程序结构—结构化树
Class Diagram (UML):可以描述接口、类、属性、方法以及它们之间的关系
(2.Build-time、Period和Code-level视图
代码改动是指从一个版本添加、修改或删除到另一个版本的文件中的行。
(3.Build-time、Moment和Component-level视图
·静态链接
源代码在物理上被组织成文件,这些文件进一步按目录进行组织
文件被封装成包、组件和子系统
可复用模块形成类库
·库:磁盘文件中,可重用
·与库链接:用到的类库列表 — 复制类库到可执行程序中
将库集成到可执行程序中的两种不同方法:–静态链接–动态链接
·静态链接
静态链接在Build-time发生
将类库文件复制到可执行文件中,称为可执行文件的一部分,不能分离。
·UML中的组件图
在UML中,组件图描述了组件如何连接在一起以形成更大的组件或软件系统。
(4.Build-time、Period和Component-level视图
软件配置项(SCI)
版本控制系统(VCS)
版本控制是给计算机软件的不同状态分配唯一的名字或者编 的过程
软件演化是指软件产生之后,由于不同的原因对其进行持续地升级过程。
2.Run-time
·可执行程序:可以加载到计算机内存中并执行
库:可以被不同程序重用的常用对象代码集合,库不能直接在目标机器上加载和执行;必须首先与可执行程序链接。
·本机代码,完全转换为CPU能识别的机器码
源代码被加载入内存进行解释执行,程序被编译成字节码形式(如 java的class文件) ,运行时需要由解析器转换成机器码或者解释执行
·动态链接
不将目标文件复制到可执行程序 中,而是会标注用到的类库
在运行时,加载用到的库到内存中,然后同主程序链接
部署时需要将用到的类库同程序一起部署
类库变化时,不需要重新生成可自行程序
多个运行中程序可共享同一类库,优化内存使用
·配置文件
·分布式程序
(5.Run-time、Moment和Code-level视图
·Snapshot diagram:计算机内存中的可变执行状态
刻画内存中某时刻变量的状态
·内存转储(垃圾):硬盘上的一种文件,包含进程内存内容的副本,当进程因某种内部错误或信 而中止时产生。
调试程序可以加载转储文件并显示它包含的有关运行程序状态的信息。
信息包括寄存器、调用堆栈和所有其他程序数据(计数器、变量、开关、标志等)的内容。
(6.Run-time、Period和Code-level视图
·UML中的序列图:程序单元(对象)之间的交互
·跟踪涉及到日志记录有关程序执行的信息的专门用途。
用于调试目的
根据跟踪日志中包含的信息类型和详细信息,诊断常见问题。
(7.Run-time、Moment和Component-level视图
UML中的部署图
(8.Run-time、Period和Component-level视图
更容易地获得发生问题的信息。
·事件日志记录:主要由系统管理员使用,记录“高级”信息(例如程序安装失败),不要太“吵闹”(包含许多重复的事件或信息,对其目标受众没有帮助),基于标准的输出格式通常是可取的,有时甚至是必需的,事件日志消息通常是本地化的
·执行跟踪:主要由开发人员使用,记录“低级”信息(例如,一次性例外),可能有噪音,输出格式限制较少,本地化很少引起关注,添加新的跟踪消息必须灵活
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!