软件构造的多维视图
一、软件构造的多维视图
从三个方面认识软件构造,软件的构造就是在不同方面之间的变换
代码(code)-------------------------组件(Component)
构建时(build)----------------------运行时(run)
时刻(Moment)-------------------------时间段(Period)
多维视图Multi-dimensional software views
软件包括:
1.项目(Programs (UI, Algorithms, Utilities, APIs, test cases, etc))
2.数据:(Data(files, databases, etc))
3.文档:(Documents (需求规格说明SRS, 设计规格说明SDD, user manuals, etc))

构建(build)时视图
软件构建的核心过程和环节:想法->需求->设计->代码->变为可安装或可执行包
1.代码层:源代码如何通过基本程序块(如函数,类,方法,接口等)以及它们之间的依赖关系进行逻辑组织
2.组件层(体系结构):源代码如何按文件,目录,包,库以及它们之间的依赖关系进行物理组织
3.时刻层:源码与组件在某一特定时间的样子
时间段层:他们在一段时间的改变与发展
一些概念:
1、可执行程序:CPU执行的机器可读指令序列以及相关数据值。
2、库:大多数操作系统都包含一组开发人员可以重用的标准库,无法在目标机器上直接加载和执行库; 它必须首先与可执行程序链接。
3、可执行程序
1.本地机器代码:完全转换为CPU能识别的机器码。
2.全解释型:源代码被加载入内存进行解释执行
3.Interpreted Byte Codes:
– java:代码编译为二进制代码(与机器码相似,但cpu不直接理解它),运行时需要由解析器转换成机器码或者解释执行,因此,字节代码环境要求在加载程序的同时加载另外的解释器或编译器。
– Perl或python在执行时编译为字节码解释执行
4.动态链接:
– 原理:不将目标文件复制到可执行程序 中,而是会标注用到的类库。在运行时,加载用到的库到内存中,然后同主程序链接。
– 优点:类库 变化时,不需要重新生成可自行程序;多个运行中程序可共享同一类 库,优化内存使用.
5.配置和数据文件:程序调用操作系统以请求将数据读入内存。
6.分布式程序:举个例子。某软件需要有客户端与服务器端。其中一台机器跑服务器端的程序,另外多台机器跑用户端的程序。此时,构建系统可以创建两个release package,一个给服务器端,一个给用户端。或者,可以使用相同的发行包来安装两个不同的程序
思考
1.版本(configuration item/version)
版本号的格式:major . minor . patch
2.静态链接和动态链接
静态:编译时链接、更新不方便
动态:运行时链接、无需将库拷贝一份到文件中
3.编译执行和解释执行
编译执行:C
解释执行:Java
4.执行跟踪和事件日志
执行跟踪:用日志方式记录程序执行的调用次序
事件日志:系统层面

浙公网安备 33010602011771号