一、计算机软件
软件:是计算机系统中与硬件相互依存的另一部分。包括程序、数据及其相关文档的完整集合。
即软件=程序及数据+文档
1. 软件的发展
1946-1956(程序设计):从计算机问世到实用的高级程序语言出现前。
1956-1968(程序系统): 从实用的高级语言出现到出现软件工程前。
1968-至今(软件工程):从软件工程出现到现在。
1990-至今(现代软件工程):软件产业化的时代。
软件危机:
软件危机是指落后的软件生产方式无法满足迅速增长的计算机需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
(1)发生原因:
①用户需求不明确
②缺乏正确的理论指导
③开发规模越来越大
④开发复杂度越来越高
⑤缺乏合理的维护手段
(2)表现:
①开发进度难以估测
②开发成本难以控制
③用户对产品功能难以满足
④软件产品质量无法保证
⑤软件产品难以维护
⑥缺少合适的文档资料
(3)解决途径:
1. 彻底消除“软件就是程序”的错误观念。
2. 充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目。
3. 推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技 术和方法。
4. 开发和使用更好的软件工具。
2. 软件的特点
表现形式 :
软件是一种逻辑实体,而不是具体的物理实体。因而它具有抽象性。
生产方式 :
软件的生产与硬件不同,在它的开发过程中没有明显的制造过程,大多数软件仍是定制的。
维护 :
在软件的运行和使用期间,没有硬件那样的机械磨损,老化问题。
要求:
软件产品不允许误差。
其他特点:
软件的开发和运行对计算机系统有着不同程度的依赖性。
软件的开发至今尚未完全摆脱手工艺的开发方式 。
软件本身是复杂的......
3. 软件的分类
①按软件的规模进行划分
按开发软件所需的人力、时间以及完成的源代码行数。
②按软件的功能进行划分
系统软件:操作系统、编译程序 、设备驱动程序 、通信处理程序
支撑软件:数据库管理系统 、软件开发环境 、网络软件 、软件工具
应用软件:Web应用软件 、嵌入式软件 、人工智能软件等
③按软件开发划分
软件项目开发和软件产品开发。
④按软件的工作方式进行划分
⑤按软件服务对象的范围进行划分
.......
4. 软件语言
需求定义语言 功能性语言 设计性语言 实现性语言(即程序设计语言) 文档语言
二、软件工程
1. 软件工程的定义
软件工程是一类求解软件的工程,它应用计算机科学、数学(用于构造模型和算法)和管理 科学(用于计划、资源、质量和成本等的管理) 等原理,借鉴传统工程(用于制定规范、设计范型、评估成本、权衡结果)的原则和方法, 创建软件以达到提高质量、降低成本的目的。
软件工程三要素:工具、过程、方法
2. 软件工程的原理
(1)用分阶段的生命周期计划严格管理
(2)坚持进行阶段评审
(3)实行严格的产品控制
(4)采用现代程序设计技术
(5)清楚审查
(6)人少而精
(7)不断改进
3. 软件生命周期
软件生命周期由软件定义、软件开发、运行维护(软件维护)三个时期组成。
软件定义:
任务:确定总目标;确定可行性;导出采用的策略以及系统功能;估计成本,制定时间表。
分为三时期:问题定义、可行性研究和需求分析。
软件开发:
分为两个阶段四个时期:
系统设计:总体设计、详细设计。
系统实现:编码和单元测试、综合测试。
软件维护:
主要任务是使软件持久的满足用户的需求。
通常有4类维护活动:
改正性维护; 适应性维护;完善性维护;预防性维 护。
软件生命周期具体八阶段:
(1)问题定义:回答要解决的问题是什么。
(2)可行性研究:对于上一个阶段确定的问题有行得通的解决办法吗。
(3)需求分析:确定目标系统必须具备哪些功能、性能。
(4)总体设计:概括地说应该怎样实现目标系统。
(5)详细设计:怎样具体实现系统。
(6)编码和单元测试:写出正确的容易理解、容易维护的程序模块。
(7)综合测试:通过各种类型的测试使软件达到预定的要求。
(8)软件维护:通过各种必要的维护活动使系 统持久地满足用户的需要。