软工读书笔记(0)

  Chap 1-2:软件工程介绍

Posted by Xiaoran on February 6, 2018

本文参考自 Software Engineering : A Practitioner’s Approach — 8th edition by Roger S. Pressman

1.1 软件的特性

  • 软件决定了现代信息化社会的发展
  • 以往个体的程序员正在被软件开发团队取代
    • 团队个体间有序分工
  • 控制开发成本
    • 时间,预算
    • debug
    • 更新、修复 现有的软件系统
    • 评测开发/维护进度

软件不会老化

硬件 软件

但是,软件会折旧

  • 软件会面临来自各方的改进建议
    • 时间:上线前 - 运行很久之后
      • 每次更改会带来高失败率
      • 没等到完全稳定,新的更改又来
      • 最终更改太多,软件“折旧”了
  • 软件出bug一般意味着更深层的问题,因此也更复杂

1.1.2 七类软件

  • 系统软件
  • 商业软件
  • 工程软件
  • 嵌入式软件
  • 消费级软件
  • Web/手机软件
  • 人工智能软件

1.1.3 老软件

  • 历史遗留软件很多
    • 核心,不可替代
    • 难以适应新环境、新需求
  • 怎么办?Do nothing.
    • 直到“不得不”改进

1.2 四种流行的新软件

  • WebApps
  • 手机App
  • 云计算
  • product line software???

2.2.1 process包含的5个阶段

  • communication
    • project启动
    • 收集用户需求信息
  • planning
    • cost/benefit估计
    • 时间安排
    • 资源投入
  • modeling
    • 打草稿
    • 分析+设计
  • construction
    • 写代码
    • 测试
  • deployment
    • 部署,交付给用户
    • 技术支持
    • 用户反馈+评分

2.2.2 Umbrella Activities

执行上述阶段时要注意的方面:

  • Software project tracking and control
    • 帮助大家了解项目进行到哪个阶段
  • Risk management
  • Software quality assurance
  • Technical reviews
    • 同行代码审阅
  • Measurement
  • Software configuration management
    • 控制“更改代码的影响”
  • Reusability management
  • Documentation

Maintenance 的种类

  • Corrective
    • Fix defects
  • Adaptive
    • Accommodate environment changes
  • Perfective
    • Add functionality
  • Preventive
    • Attempt to avoid future problems

什么是Software Life Cycle

The period of time that begins when a software product is conceived and ends when the software is no longer available for use

通常包含这些阶段:构思,需求,设计,写码,测试,安装部署,操作维护