Chapter 1 Views and Quality Objectives of Software Construction
一、软件构造多维视图
0. 软件系统的组成
软件=程序+数据+文档
软件=模块(组件)+数据/控制流
阶段phrases | 构建->运行 (build-& run-time) |
动态dynamics | 时刻->周期 (moment & period) |
级别levels | 代码->组件 (code & component) |
Ø -> Code :
-Programming / Coding(Chapter 3 ADT/OOP)
-Review,static analysis / Checking(Chapter 4 Understandability)
Code -> Component :
-Design(Chapter 3 ADT/OOP,Chapter 5 Reusability,Chapter 6 Maintainability)
-Build : compile, static link,package,install,clean(Chapter 2 Construction Process)
Build-time -> Run-time:
-Install / Deploy
-Debug,unit / integration testing(Chapter 7 Robustness)
Moment ->Period:
-Refactoring(Chapter 9 Refactoring)
-Version Control(Chapter 2 SCM)
-Loading,dynamic linking, interpreting,execution (dumping, profiling,logging)(Chapter 8 Performance)
二、 软件构造阶段划分、各阶段活动
1.构建j阶段
Build-time: idea -> requirement -> design -> code -> installable/exe package
-Code(Moment):源代码--基本程序块(如函数、类、方法、接口)及其依赖关系进行逻辑组织
-Component(Moment):源代码--文件、目录、包、库及其依赖关系组织进行物理组织,
体系结构--软件包如何部署到物理环境(OS,network,hardwork,etc)
-Code(Period) : 添加、修改、删除一版本到另一版本文件
-Component(Period) : 版本控制和软件演变
2.运行阶段
-Code(Moment) :快照图--描述目标计算机程序运行时内存里变量层面的状态
内存信息转储--将被内部错误或信号中止的程序内存的内容拷贝到硬盘的一个文件
-Component(Moment) :软件包的物理部署
-Code(Period) : 执行日志追踪
-Component(Period) : 软件追踪(开发)事件记录(管理)
Library:存储于磁盘文件,一系列可跨程序可用的代码函数的集
System.out.println("hello World");
库来源:操作系统提供、编程语言提供、第三方公司、自己积累
整合库到exe程序:静态链接和动态链接
exe程序:机器可读、cpu可执行的指令和相关数据
静态链接:发生在构造阶段、库被拷贝进代码,无需提供库文件
动态链接:可直接升级库,无需重建exe文件、多人共享
三、内/外部的质量指标
1.外部质量指标
-正确性:按照预先定义规约完成
-健壮性:恰当反应异常
-可扩展性:应对软件规约的变化
-可复用性:一次开发多次使用
-兼容性:不同软件系统间易相互集成
-效率:对硬件资源占用较少
-可移植性:方便在不同技术环境下移植
-易用性:客户易学、安装、操作、监控
-功能性:不合时宜的趋势,累赘功能
-及时性:预知市场需求
-可验证性、完整性、可修复性、经济性
2.内部质量指标
-可读性
-复杂度:模块复杂程度
-高内聚性/低耦合度:模块内部紧密,外部联系松散