软件的概念和特点
概念
软件 = 程序 + 文档 + 数据
特点
- 软件是开发的
- 软件是简单的拷贝
- 软件测试非常困难
- 软件需要维护,维护易产生新的问题
- 软件开发时间和工作量难以估计
- 软件开发时间进度几乎没有客观衡量标准
- 软件不会磨损,但是会退化和废弃
软件危机的概念和成因
概念
在计算机软件开发和维护中碰到的一系列严重问题。
- 项目超出预算
- 项目超过计划完成时间
- 软件运行效率很低
- 软件质量差
- 软件通常不符合要求
- 项目难以管理并且代码难以维护
- 软件不能交付
成因
软件自身特点
- 软件是逻辑部件,缺乏可预见性
- 软件维护困难
- 软件越来越庞大复杂,需要分工协作
软件开发和维护方法不正确
- 需求分析不充分或者存在错误
- 开发过程不规范
- 不注重文档工作,软件难以维护
- 缺少软件评测手段
软件工程定义
- 应用系统的、规范的、可度量的方法来开发,运行和维护软件,即把工程应用到软件。
- 对 1 各种方法的研究
软件工程三要素
- 方法
- 工具
- 过程
软件工程发展过程
传统软件工程(late 60s - 70s): 将软件工程纳入工程化轨道
对象工程(80s - 90s):面向对象的分析与设计
过程工程(mid 80s):提高软件生产率,保证软件质量
构建工程(90s - ):复用构件
其他
软件工程的目标
在给定的时间和预算内,按照用户的需求,开发易修改、高效、可靠、可维护、适应力强、可移动、可重用的软件。 钱少,要求多
软件分类
- 系统软件
- 应用软件
- 工程/科学软件
- 嵌入式软件
- Web应用软件
- 产品线软件
- 人工智能
Wasserman 规范
- 抽象 Abstration
- 分析和设计方法以及表示方法 Analysis and design methods and notations
- 用户界面原型化 User interface prototyping
- 软件体系结构 Software architecture
- 软件过程 Software process
- 复用 Reuse
- 测度 Measurement
- 计算机辅助软件工程 CASE (Computer Aided Software Engineering)
软件工程七原则
- 使用阶段性生命周期计划的管理
- 阶段性审查
- 保证严格的产品控制
- 使用现代编程工具
Fuck Dev C++ - 保持清晰的责任分配,结果审查清楚
对摸鱼神器? - 开发小组人员少而精
- 不断改进软件工程实践