软件构造复习1--ch1

    技术2022-07-10  152

    1-1 Multi-Dimensional Views of Software Construction

    可以从三个角度看待软件构造

    1.时间维度

    Moment

    从瞬时的角度看待软件

    Period

    从周期的角度看待软件 即软件的变化

    2.编码维度

    Build-time

    开发阶段:程序员编写代码

    Run-time

    运行阶段:代码与系统的交互

    3.代码-模块维度

    Code-level

    Source-code Interface Method Class

    Component

    更加宏观的角度 Package File

    下面分情况考虑软件构造的不同维度

    1.1 Build-time,Moment,and code-level

    词汇层面

    语法层面

    算法的流程 [AST:结构化,将源代码变成结构树 Abstract Syntax Tree]

    语义层面

    不同部分之间的联系–类与类之间的关系 图形化或形式化 了解UML语言

    1.2 Build-time,Period,and code-level

    Code churn 代码变化 版本控制 github+git

    1.3 Build-time,Moment,and component-level

    组织程序文件 可以采用库函数的方式去组织

    Link

    Static Link

    构造阶段:库被拷贝进代码形成整体 优点:执行时无需提供库文件 缺点:无法升级

    Dynamic Link

    针对静态链接的缺点产生 库文件不会在build阶段加入可执行软件,仅做出标记 程序执行时,根据标记装载库至内存

    1.4 Build-time,Moment,and component-level

    软件实体随时间进行变化—Version 版本

    2.Run-time

    程序被载入目标机器,开始执行

    Executable programs

    解释型程序:执行一行编译一行 可以移植性好

    Libraries

    库 复用代码

    Configuration and data file

    配置文件

    Distributed programs

    分布式程序

    Transformation between views

    不同视图之间的联系

    1-2Quality Objectives of Software Construction

    “存在矛盾的因素–折衷、妥协”

    Five key quality of software construction

    1.Easy to understand

    2.Ready to change

    3.Cheap for develop

    reuse

    4.Safe from bugs

    5.Efficient to run

    消耗资源较小

    外部质量因素和内部质量因素

    外部质量因素

    1.Correctness

    如果是分层开发,确保每一层都是正确的,在开发高层时,假设底层是正确的。 满足软件规格书 验证方法:Testing and Debugging

    2.Robustness

    鲁棒性即健壮性 软件系统对异常情况做出反应的能力。“如果灾难发生,降低灾难的危害。”

    3.Extensibility

    软件易于调整以适应变化的能力。 可扩展性同规模相关,越大的程序越难扩展。 使用简单的体系结构,提高模块的自治性。

    4.Reusability

    利用共性,避免重复实现

    5.Compatibility

    使用协议实现更通用的兼容性 标准化

    6.Efficiency

    效率是软件系统对硬件资源尽可能少的需求的能力

    7.Portability 可移植性

    将软件产品转移到各种硬件和软件环境

    8. Ease of use 易用性

    用户可以轻松掌握软件的使用,也包括安装、运行和监控的容易度 换位思考,站在用户的角度设计软件

    9.Functionality 功能性

    10.Timeliness 时效性

    10++ Other qualities

    是否易于验证 完整性:保护各种组件未经授权可不被修改和访问 可修复性

    内部质量因素

    Lines of Code 圈复杂度 设计中追求高内聚和低耦合

    Tradeoff between quality properties 权衡

    Processed: 0.010, SQL: 9