期末复习——1、2章

▪ 软件构造的多维度视图
▪ 软件构造的阶段划分、各阶段的构造活动
▪ 内部/外部的质量指标
▪ 软件配置管理SCM与版本控制系统VCS
▪ Git/GitHub

  • 软件构造的多维度视图

总结多维度视图
软件构造的过程实际上就是各个维度互相转换的过程

在这里插入图片描述
代码的从无到有是编程和静态检查的过程。
从代码到组件是设计ADT,运用设计模式的过程
从编译阶段到运行阶段是调试,测试的过程。
从时刻到时期是不断优化,生成多个版本的过程。
软件构造的过程:
Design 
Programming /refactoring:
编程语言(e.g., C, C++, Java, Python)建模语言(e.g., UML)
配置语言(e.g., XML)
重构是在不改变代码外部行为的前提下,改善其内部结构。
Debugging 
Testing 
Build:
编译,打包,测试,分析,报告
Release

在这里插入图片描述

  • 内部/外部的质量指标
    外部质量是用户能够感受到的,影响用户的使用
    包括:正确性->测试和调试、静态类型检查和断言
    健壮性->是软件系统对异常情况作出适当反应的能力
    健壮性所定义的异常情况取决于程序的规格说明
    可扩展性->是指软件易于调整以适应变化的能力。要适应变化的需求,需要使体系结构简单化,模块离散化(自治↑)
    可重用性
    兼容性->设计时要标准化(协议)
    效率->软件系统对硬件资源尽可能少的需求的能力 ,先保证正确性再考虑效率
    可移植性->便于将软件产品 转移到各种硬件和软件环境。
    易于使用
    功能性->creeping featurism 蠕变特征,程序设计中一种不 适宜的趋势,即软件开发者增加越来越多的功能,企图跟上竞争,其 结果是程序极为复杂、不灵活、占用过多的磁盘空间
    及时性->发布及时

    内部质量影响使用代码的相关人员,影响软件本身和开发者
    Lines of Code (LOC)
    Cyclomatic Complexity(圈复杂度, 用来衡量一个模块判定结构的复杂程度 )
    Architecture-related factors such as coupling(耦合度)
    cohesion(内聚度) 设计中追求高内聚和低耦合
    Readability, understandability and clearness
    Complexity
    Size
    内部质量因素通常用作外部质量因素的部分度量

    各个指标的权衡
    各个指标的权衡
    最重要的四个指标
    !!!!!!!

如何提升各个指标
正确性:封装,分散▪
稳健性:封装,错误处理▪
可扩展性:封装,信息隐藏▪
可重用性:模块化,组件,模型,模式▪
兼容性:标准化模块和接口▪可移植性:信息隐藏,抽象▪
易用性:GUI组件 ,框架▪
效率:可重复使用的组件▪
及时性:建模,重用▪
经济:重用▪
功能:可扩展性

  • 软件构造的阶段划分、各阶段的构造活动
    SDLC
     Software Development Life Cycle

软件开发模型
– Waterfall (Linear, non-iterative) 瀑布模型
利于使用,应对变化代价高
– Incremental (non-iterative) 增量模型
将整个产 品分成不同的增量,逐一完成.以增量的方式实施瀑布模型
– V-Model (for verification and validation) V模型
瀑布模型的扩展,强化测试
– Prototyping (iterative) 原型法
实现系统的原型 ,原型模拟最终产品的几个方面,甚至 完全不同 。Details can typically be ignored,在项目早期可以获得 用户的反馈 ,用户判断软件是否符合 规格说明 , 对软件进行估算。
– Spiral (iterative) 螺旋模型
一种风险驱动的过程模型。基于给定项目的独特风险模式,螺旋模型指导团队采用一个或多个过程模型的元素,例如增量,瀑布或原型。

  • 软件配置管理SCM与版本控制系统VCS
    SCM的任务是追踪与控制软件中的变化 ,SCM实际任务是版本控制和建立基线。
    Software Configuration Item (SCI): the fundamental structural unit of SCM.
    软件配置项是软件配置管理的基本单位,任何需要管理 的要素都时软件配置项(源代码、数据、文档、软硬件、环境等)
    A baseline is an agreed description of the attributes of a product, at a point in time, which serves as a basis for defining change.
    基线 是在某时间点上,通过评审和认可后的版本,作为后续变化的基点。
    在这里插入图片描述

使用CMDB (Configuration Management Database) 配置管理数据库来管理SCI
版本是给软件的某个状态的唯一的标识。使用版本控制可以便于审计,便于并行开发,便于合作。
local VCS
在这里插入图片描述
Centralized VCS(e.g., CVS,SVN)
在这里插入图片描述
Distributed VCS(e.g., Git)
分布式
一些术语
在这里插入图片描述

  • Git/GitHub
    一些常用git命令的作用
    在这里插入图片描述
    实际上是一个图数据库
    不重复保存各版本 中没有发生变化的文件 ,相反,Git对象图存储一个单独文件的每个版本,并允许多个提交共享一个副本。 每个文 件的每个版本只保存一次,多个提交可共享副本
    在这里插入图片描述
    分支是在版本控制下对对象的复制,以便修 改可以沿两个分支平行进行
    在这里插入图片描述
    在这里插入图片描述
    合作
    在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43351085/article/details/92789904