一、软件工程概述(1.1计算机软件&1.2软件工程)

一、计算机软件

软件:是计算机系统中与硬件相互依存的另一部分。包括程序、数据及其相关文档的完整集合。

        即软件=程序及数据+文档        

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)软件维护:通过各种必要的维护活动使系 统持久地满足用户的需要。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值