软件工程 第一章 软件和软件工程

软件的定义

  • computer:有硬件与软件组成
  • 硬件:看得见摸得着的电子机械设备块
  • 软件:依附在硬件上面的程序,数据和文件的结合,是指挥计算机工作的神经中枢.

第一阶段:软件:=程序(弹道计算) input:纸带 output:纸带
第二阶段:软件:=程序+数据
第三阶段:软件:=程序+数据+文档
第四阶段:软件:=程序+数据+文档+人工智能

越早开始写代码的人,就是越迟写代码的人

文档的作用

文档=用户文档+开发文档+测试文档

文档:起到桥梁作用

  • 用户文档
    • 用户手册
    • 操作手册
    • 维护修改建议报告
    • 软件需求规格说明书
  • 开发文档
    • 软件需求规格说明书
    • 数据说明数
    • 详细设计说明书
    • 可行性研究报告
    • 项目开发计划
  • 管理文档
    • 项目开发计划
    • 测试计划
    • 测试报告

软件的特性:

  • 软件是设计开发的,不是传统意义上生产制造的.
  • 软件不会磨损.
  • 大多数软件根据实际顾客需求定制.


软件交互周期:5~10年
环境,场景->变更

软件的应用领域

  • 系统软件
  • 应用软件
  • 工程/科学软件(数值水池)
  • 嵌入式软件
  • 产品线软件
  • web/移动app
  • 人工智能软件

软件变更的原因:

  • 软件需要进行适应性调整
  • 软件必须升级以实现新的商业需求
  • 软件必须扩展以具有与OS,DB协同工作的能力
  • 软件体系结构必须进行改建以使之使用不断演化的计算环境

webApps的特性:

  • 网络密集型
  • 并发性
  • 无法预知的负载量
  • 性能:能够快速响应
  • 可用性:全天候访问
  • 数据驱动
  • 内容敏感性
  • 持续演化
  • 即时性
  • 安全性
  • 美观性

软件工程的由来

软件危机:计算机软件的开发和维护过程所遇到的一系列严重问题.

软件危机的主要表现:

  • 开发成本超出预算
  • 用户对系统不满意
  • 软件产品指令较差
  • 软件的可维护成都非常之低
  • 软件通常没有适当的文档资料
  • 软件的成本不断提高
  • 软件开发生产率的提高赶不上硬件的发展

软件系统的复杂性不断增长,复杂性成为系统设计和开发最大的障碍.

软件工程定义的提出:

  • 种子定义(Fritz Bauer)
  • IEEE定义

将工程化(系统化,规范化,可量化)的方法全过程(开发,运行,维护)地应用于软件.

软件工程三要素:过程层(process),方法层(method),工具层(tool),[质量关注点(a quality focus)]

软件过程:工作产品构建时所执行的一系列活动,动作和任务的集合.

活动(activity):主要实现宽泛的目标.
动作(action):包括主要产品生产过程的一系列任务.
任务(task):关注小而明确的目标,能够产生实际产品.

过程框架(process framework):

  • 工作任务
  • 工作产品
  • 里程碑和可交付成果
  • QA检查点

普适性活动(umbrella activity)

框架包含的活动:

  • 沟通:与利益相关者沟通需求.
  • 策划:创建软件项目计划,进行可行性分析.
  • 建模:横跨软件需求与设计.为需求与设计提供相关的模型.
    • 需求分析
    • 设计:举例功能流程图,业务流程(文字与模型).
  • 构建:对所做设计进行设计,包括编码与测试.
    • 代码生成
    • 测试
  • 部署:根据实际生产情景进行部署.

Polya的建议:

  • 理解问题(沟通和分析)
    • 谁从问题的解决中获益?
    • 什么是未知的?
    • 问题可以划分吗?
    • 问题可以图形化描述吗?
  • 计划解决方案(建模和软件设计)
    • 以前曾经见过类似问题吗?
    • 类似问题是否解决过?
    • 可以定义子问题吗?
    • 能用一种可以很快实现的方式来表达解决方案吗?
  • 实施计划(代码生成)
    • 解决方案与计划一致吗?
    • 解决方案的每个组成部分是否可以证明正确?
  • 检查结果的准确性(测试和质量保证)
    • 能否测试解决方案的每个部分?
    • 解决方案是否产生了与所要求数据,功能和特性一致的结果?

Hooker的原则:

  • 存在价值
  • 保持简洁
  • 保持愿景
  • 关注使用者
  • 面向未来
  • 提前计划复用
  • 认真思考

NumericalTank

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。