Java程序构造©Day2

Java程序构造©Day2

March 5th, 2018
标签(空格分隔): Java程序构造



上接Day1内容

Internal quality factors

例如代码行数(LOC) 流程圈复杂度等等

Tradeoff between quality properties
  • 软件开发过程中的各个内部 外部的影响因素需要进行折中
    折中项
  • 在开发过程中需要将折中的设计决策和标准明确写下来
  • 正确性不能折中

软件结构中的过程和工具

2.1Software Lifecycle and Configuration Management

概论
  • 软件开发过程
  • 传统的软件开发过程模型
  • 敏捷开发
  • 软件配置管理
  • Git

阅读材料:MIT6.031 05 23

软件开发的生命周期

SDLC

版本管理

版本管理

传统软件开发模型

两种基本的类型

  • 线性过程
  • 迭代过程

目前常用的模型

  • 瀑布过程
  • 增量过程
  • V模型
  • 原型过程
  • 螺旋过程

选择类型的依据

  • 用户参与程序开发有多大
  • 开发效率 管理复杂度
  • 开发出的软件的质量
瀑布过程

几个特点

  • 线性推进
  • 阶段划分过程
  • 整体推进
  • 无迭代
  • 管理简单
  • 无法适应需求的改变
增量过程
  • 每次只开发一点点
  • 和瀑布模型相比
    • 开发过程被分割为几个小的功能
    • 需求可变

几个特点

  • 线性推进
  • 增量式(多个瀑布的串行)
  • 没有迭代
  • 比较容易适应需求的增加
V模型

软件生命周期

计划 需求 设计 构造 测试 部署 运营

  • 计划 需求:产品经理
  • 设计:架构师
  • 构造:程序员
  • 部署 运营:运维
原型过程

在原型上进行进行迭代 时刻发现用户需求
时间代价高 程序质量高

螺旋模型

复杂的开发过程

  • 多轮次迭代 基本符合瀑布
  • 每轮次迭代有明确目标 遵循原型过程 进行严格的风险控制 才可以进行下一轮次迭代
敏捷开发

敏捷开发:通过快速的迭代和效果的持续改进 以快速适应变化 类似于增量和原型的叠加

敏捷开发的特点

敏捷开发特点

  • 对用户需求反应及时
  • 流程短 开发灵活

敏捷开发过程

过程

特征

特点

  • 极致的用户参与
  • 极致的小步骤迭代
  • 极致的确认和验证

eXtreme Programming极限编程

SCM版本控制

SCM 软件配置管理:追踪和控制软件的变化

SCI and baseline

SCI 软件配置:程序文件

baseline:软件持续变化过程中相对稳定的版本

CMDB and check-in/out for Auditing

CMDB:配置管理数据库 存储软件各个配置项随时间发生变化的信息+baseline

Versioning版本控制

版本:为软件的任意时刻的形态指派一个ID

版本1
例如:
版本

进行版本控制的必要性

  • 随时回滚到上一个版本
  • 比较两个版本的差异
  • 备份软件版本历史
  • 获取备份
  • 合并分支
  • 在多个开发者之间进行共享和协作
  • 记录每个开发者的动作 便于审计

历史上版本控制演化

  • 本地版本控制
    • 仓库存储在本地机器
    • 无法共享协作
  • 集中式
    • 存储于独立服务器
    • 支持多开发者协作
  • 分布式
    • 存储在独立服务器+本地机器
    • 本地可以直接共享
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值