笔记 | 软件工程03:软件过程和软件开发方法

软件过程

1 何为软件过程模型

1.1 软件开发的特点

1.2 软件过程

1.3 软件过程模型

1.3.1 软件过程模型产生的背景

软件工程产生之前的软件开发------作坊式的个人创作:聚焦于编写代码;依靠个体技能,缺乏合作;关注时空利用,精雕细琢;程序规模小且功能单一;无系统性方法和标准流程

1.3.2 典型的软件过程模型
1.3.2.1 瀑布模型

瀑布模型的局限性

软件需求具有易变多变的特点,而瀑布模型需求确定,过于理想化,缺乏变通,难应对变化;软件开发处于动荡之中;需等到所有功能实现后,才能得到可运行软件

瀑布模型的适用场景

瀑布模型的各个过程介绍

  1. 需求分析
  2. 概要设计
  3. 详细设计
  4. 编程实现
  5. 集成测试
  6. 确认测试

改进的瀑布模型:带反馈和回溯

1.3.2.2 增量模型

增量模型的局限性


增量模型应用举例:(理解:每个增量对应一个新的软件功能)

增量模型的适用范围

1.3.2.3 迭代模型

迭代模型的特点


迭代模型的局限性

  • 迭代多少次不确定
  • 管理较为复杂
  • 高素质管理者和开发
1.3.2.4 原型模型(Prototyping Model)

原型模型的特点:(理解:感觉相比瀑布模型,就是事先多了一个样品可供客户参考)


原型模型的优缺点

1.3.2.5 螺旋模型(Spiral Model)
1.3.2.6 不同软件过程模型的特点总结

螺旋模型不仅是针对需求难以确定的应用,同时也是重点关注了开发的风险

2 如何来选择软件过程模型

2.1 软件过程模型选择应该考虑的因素

2.2 软件过程模型的选择建议

具有原型特性的模型有:原型模型、迭代模型、螺旋模型

2.3 传统软件过程模型的特点和不足

传统软件过程模型指哪些:以文档为中心的重型软件开发方法,非常笨重

1 软件开发方法

1 软件开发方法概述

1.1 软件开发方法的发展

1.2 软件开发方法

1.2.1 Parnas方法出发点&策略&特点
1.2.2 结构化方法出发点&策略&特点
1.2.3 面向对象的方法出发点&策略&特点
1.2.4 基于构件的开发方法出发点&策略&特点
1.2.5 敏捷开发方法
1.2.5.1 什么是敏捷开发方法

敏捷开发方法产生的背景

  1. 历史背景
  2. 为适应如今互联网时代的软件开发特点:
    1. 快鱼吃慢鱼
    2. 版本发布成本很低
    3. 追求创新
    4. 需要快速响应用户的变化
    5. 需求不确定性高
    6. 关注用户行为

敏捷开发方法的特点:适应而非预测

敏捷开发方法的定义

敏捷开发方法的基本观点

敏捷开发方法体现的思想

敏捷准则

对敏捷的常见误解

敏捷软件开发对技术提出的要求

1.2.5.2 支持敏捷软件开发的技术
1.2.5.2.1 极限编程


12条核心准则:



  • 如何理解重构
    传统软件工程的一个基本原则是应该在设计中考虑未来的变更,因为这会减少未来变化带来的成本。极限编程(XP)摒弃这一原则,认为无法可靠地预测变化,XP主张持续的代码改进(重构)以使得变化更容易实现
  • 什么是重构?
    重构是对软件内部结构的一种调整,目的是在不改变外部行为的前提下,提高其可理解性,降低其修改成本。
  • 重构技巧
    • 重新组织你的函数
    • 在对象之间搬移特性
    • 重新组织数据
    • 简化条件表达式
    • 简化函数调用
    • 处理概括关系
  • 何时重构?
    • 添加新功能时一并重构:为了增加一个新的功能,程序员需要首先读懂现有的代码。
    • 修补错误时一并重构:为了修复一个Bug, 程序员需要读懂现有的代码。
    • 代码评审时一并重构
  • 何时不该重构?
    • 代码太混乱,设计完全错误。与其重构,不如重写。
    • 明天是DeadLine:永远不要做 Last-Minute-Change
    • 重构的工作量显著影响最后期限:推迟重构,作为新任务或下次迭代中完成
1.2.5.2.2 测试驱动开发

测试是XP的核心,XP 测试的特性:

  • 测试驱动的开发
  • 基于场景的增量测试开发
  • 用户参与测试开发和确认
  • 使用自动化测试框架

基本思想:先编写测试,再进行开发

过程

特点

1.2.5.2.3 Scrum方法

基本思想

流程

Scrum方法的组成

  1. Scrum团队角色
  2. Scrum制品

    1)产品订单
  3. Scrum活动




1.2.5.3 敏捷方法的特点
1.2.6 群体化软件开发方法
1.2.6.1 软件开发是创作和生产的过程

理解:个人智慧+工程管理

基于团队软件开发方法的特点:(理解:这个应该不属于群体化开发方法,是与群体化开发方法对立的)

1.2.6.2 什么是群体化开发方法

支持群体化开发的互联网平台:Github(国际)和Gitee(国内)

互联网平台提供的群体化开发支持:提出需求创意、发现软件缺陷、提交程序代码、标注开发任务、讨论软件需求、评审代码质量等等

群体化软件开发方法的特点

1.2.6.3 群体化软件开发方法的支撑关键技术
  1. 基于社区的群体化软件项目组织:包括了核心开发人员和外围开发人员

  2. 基于Issue的任务管理
  3. 分布式版本管理思想
  4. 基于Pull/Request(P/R)的分布式协同开发

  5. 基于群体的知识分享

1.3 传统重型软件开发方法的特点和不足

有哪些是轻量级的软件开发方法:敏捷开发方法

相关推荐
天若有情6739 小时前
01_软件卓越之道:功能性与需求满足
c++·软件工程·软件
加密狗复制模拟10 小时前
坚石ET ARM加密狗复制模拟介绍
安全·软件工程·个人开发
2501_9165894514 小时前
Excel 批量处理BatchXLS批量替换一键更新,告别逐个修改
电脑·软件工程·开源软件
2501_916589451 天前
棱光 PDF 工具箱:水印管理 + 格式转换 + 批量处理提升效率
电脑·软件工程·开源软件
文哥工具箱22 天前
免费文件管理 智能转换GC-Prevue:PDF 转 Word 多种格式 一键完成
电脑·软件工程·开源软件
张较瘦_2 天前
[论文阅读] 人工智能 + 软件工程 | 软件架构中自然问题主动辅助研究:从挑战到解决方案
论文阅读·人工智能·软件工程
世冠科技2 天前
第2期汽车模型数字工程沙龙,世冠科技分享汽车控制系统开发国产应用
科技·汽车·软件工程·工业软件·仿真系统
雾江流2 天前
LinkAndroid 0.6.0 | 支持多部手机同时连接的全能手机投屏工具
智能手机·软件工程
Clair-Sean2 天前
【软件工程】软件复刻项目的完整流程指南
软件工程
一只鹿鹿鹿2 天前
信息化项目验收,软件工程评审和检查表单
大数据·人工智能·后端·智慧城市·软件工程