第一章---软件工程概述

发布于:2025-06-24 ⋅ 阅读:(16) ⋅ 点赞:(0)

仅供参考


一、软件及软件开发的特点是什么

1、抽象性:逻辑实体,而非具体的物理实体,无明显制造过程
2、无磨损性:不会老化
3、对硬件的依赖性:开发和运行受计算机系统限制
4、软件的手工开发方式本身的复杂性:实际问题的复杂性,程序逻辑结构的复杂性
5、高成本:相当多的软件工作涉及到社会因素

在这里插入图片描述


二、软件危机

1、什么是软件危机:计算机软件在开发和维护过程中所遇到的一系列严重问题

2、软件危机的本质是:软件开发的高成本,低质量,低效率

3、软件危机的表现:对软件开发成本和进度的估算很不准确、用户很不满意、质量很不可靠、没有适当的文档、软件成本比重上升、供不应求:软件开发生产率跟不上计算机应用迅速深入的趋势

4、具体表现
(1)对软件开发成本和进度的估计常常很不准确;
(2)用户对“已完成的”软件系统不满意的现象经常发生;
(3)软件产品的质量往往靠不住;
(4)软件常常是不可维护的;
(5)软件通常没有适当的文档资料;
(6)软件成本在计算机系统总成本中所占的比例逐年上升;
(7)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。生产力较低,跟不上用户对软件的需求

5、产生的原因

在这里插入图片描述
在这里插入图片描述

三、软件工程的定义

1、概念的提出:1968年由NATO ( 北大西洋公约组织 )在德国Garmish召开的学术会议上,Feitz Bauer首先提出了“软件工程”概念。

2、软件工程是运用工程的、数学的、计算机等科学的概念、方法和原理来指导软件开发和维护的一门学科,或者说是研究如何开发软件的一门学科

3、现代软件工程定义
(1)Boehm:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必需的相关文件资料
(2)IEEE:软件工程是开发、运行、维护和修复软件的系统方法
(3)Fritz Bauer:建立并使用完善的工程化原则,以较经济的手段获得能在实际机器上有效运行的可靠软件的一系列方法

四、软件包含些什么

1、程序:是按事先设计的功能和性能要求执行的指令序列

2、数据:是使程序能正常操纵信息的数据结构

3、文档:是与程序开发,维护和使用有关的图文材料

五、软件工程三要素

1、过程(Process):开发一个软件产品所需的步骤、需完成的各项活动和任务以及对这些任务和活动的组织和管理,它贯穿于软件开发的各个环节:包括需求分析、软件设计、人员组织、成本估算、质量保证等等。

2、方法(Methods):完成软件工程项目的技术手段。它支持软件工程项目的计划和估算,软件需求分析、设计、编码、测试和维护等等;例如结构化开发方法、面向对象的开发方法等等。

3、工具(Tools):自动或半自动地支持软件的开发和管理、文档的生成。

在这里插入图片描述

六、软件的生命周期

1、什么是软件生命周期:软件生命周期是指从提出软件产品的开发开始,经过开发、使用和维护,及至该软件产品被最终淘汰的全过程

2、分为哪几个时期:
(1)软件定义:确定软件系统的需求

(2)软件开发:软件开发人员确定如何完成并实现软件系统

(3)软件使用与维护:软件提交给用户之后,还需经历使用、维护及至最终退役的过程

3、哪几个阶段?每一个阶段的任务和阶段性成果分别是什么?
(1)问题定义:任务—确切的定义需要解决的问题;阶段性成果—经过客户确认的关于问题性质、工程目标和工程规模的报告

(2)可行性研究:任务—了解用户需求和现实环境,从技术、经济等方面研究并论证开发该软件系统的可行性;阶段性成果—可行性论证报告、初步的项目开发计划

(3)需求分析:任务—确定用户对待开发软件系统的需求,包括功能、性能、运行环境约束;阶段性成果—软件需求规格说明书(SRS: Software Requirement Specification)

(4)总体设计:任务—根据SRS建立目标软件系统的总体结构(模块、模块的功能和接口、模块之间的相互控制关系)、设计全局数据库或数据结构,规定设计约束,制定组装测试计划等;阶段性成果—概要设计规格说明书,数据库或数据结构说明书,组装测试计划

(5)详细设计:任务—逐步细化总体设计所生成的各个模块,详细描述程序模块的内部细节(数据结构、工作流程等等),形成可编程的程序模块,制订单元测试计划;阶段性成果—详细设计规格说明书

(6)编码和单元测试:任务—基于某种程序设计语言,根据详细设计规格说明书编写程序,并对程序进行调试和单元测试,验证程序与详细设计文档的一致性;阶段性成果—源程序代码

(7)综合测试:任务—通过各种类型的测试及相应的调试,使软件达到预定的要求(集成测试、验收测试)

(8)使用与维护:改正性维护—修正使用过程中发现的错误;完善性维护—增加新的功能;适应性维护—修改软件适应工作环境的变化;预防性维护—为以后的维护做预先准备
在这里插入图片描述

七、软件工程的七条基本原理

(1)用分阶段的生命周期计划严格管理
(2)坚持进行阶段评审
(3)实行严格的产品控制
(4)采用现代程序设计技术
(5)结果应能清楚的审查
(6)开发小组的人员应该少而精
(7)承认不断改进软件工程实践的必要性

八、瀑布模型和快速原型模型的思想

1、瀑布模型的思想:

(1)软件开发过程与软件生命周期是一致的(推迟实现的观点)
(2)相邻二阶段之间存在线性因果关系,上一个阶段的输出是下一个阶段的输入(阶段间具有顺序性和依赖性)
(3)为了保障软件开发活动的正确性,在每一个活动完成之前,必须对该阶段的阶段性产品进行评审,正确之后才能进入下一阶段的工作。(质量保证的观点)

2、快速原型模型的思想:

在这里插入图片描述
在这里插入图片描述

九、CASE的概念

CASE(计算机辅助软件工程Computer-Aided Software Engineering):在软件工程活动中,软件开发人员按照软件工程的方法和原则,借助于计算机及其软件工具的帮助来开发、维护和管理软件产品的过程

目前已有大量的CASE工具:
项目管理工具:估算项目成本和工作量制定项目规划
分析和设计工具:用于系统建模
程序设计工具:编译器,调试器等
测试工具:测试用例的生成,程序动态的跟踪工具


网站公告

今日签到

点亮在社区的每一天
去签到