软件工程 第一章 软件和软件工程
软件的定义
- 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
标签:需求,解决方案,第一章,软件工程,文档,设计,软件 From: https://www.cnblogs.com/mesonoxian/p/18071807