软件工程之软件概述

一、 软件特点

无形性(抽象性),比如人的大脑为硬件,软件则是大脑产生的思想。

 

二、 软件分类

 

  1.功能划分

(1)系统软件:系统软件是计算机系统的必要成分,它跟计算机硬件紧密配合,以使计算 机系统的各个部分协调、高效地工作。例如操作系统、数据库管理系统等。

 

 

 

(3)应用软件:用于为最终用户提供数据服务、事务管理或工程计算的软件。例如商业数 据处理软件、工程设计制图软件、办公管理自动化软件、多媒体教学软件等。

 

  2. 按软件工作方式划分

(1)实时处理软件:能够及时进行数据采集、反馈和迅速处理数据的软件。其主要用于特 殊设备的监控,例如,自动流水线监控程序、飞机自动导航程序。

(2)分时处理软件:能够把计算机 CPU 工作时间轮流分配给多项数据处理任务的软件。例 如,多任务操作系统。

(3)交互式软件:能够实现人机对话的软件。这类软件往往通过一定的操作界面接收用户 给出的信息,并由此进行数据操作;其在时间上没有严格的限定,但在操作上给予了用户很大 的灵活性。例如,商业数据处理软件系统中的客户端程序。

(4)批处理软件:能够把一组作业按照作业输入顺序或作业优先级别进行排队处理,并以 成批加工方式处理作业中数据。例如,汇总 表打印程序。

 

 

3.软件规模划分

(1)微型软件:一个人几天内即可完成的源程序在 500 行语句以内的软件。这种软件主要 供个人临时性使用,软件任务单一,操作简单。一般没有必要建立系统文档。

 

(2)小型软件:一个人半年之内即可完成的 2 000 行以内的程序。这种软件通常没有与其 他软件的数据接口,主要用于用户企业内部专项任务,大多由最终用户自主开发,软件使用周 期短,但软件运行过程中产生的数据则可能在今后系统扩充中有一定的价值。考虑到系统今后 有扩充的可能性,软件创建过程中应该提供必要的系统文档支持。

 

(3)中型软件:由一个项目小组在一年时间内完成的 5 万行源程序以内的软件系统。中型 软件在项目实施过程中有了软件人员之间、软件人员与用户之间的通信,软件开发过程中需要 进行资源调配。因此,软件开发过程中已需要系统地采用软件工程方法,例如,项目计划、技 术手册、用户手册等文档资源,以及技术审查制度等,都需要比较严格地建立起来。

 

(4)大型软件:由一个至几个项目小组在两年时间内完成的 5 万行源程序以上的软件系统。 当有多个项目小组共同参入软件开发时,需要对参加软件开发的软件工程人员实施二级管理, 一般将项目按功能子系统分配到各个项目小组,然后再在项目小组内将具体任务分配到个人。 由于项目周期较长,在项目任务完成过程中,人员调整往往不可避免,并会出现对新手的培训 和逐步熟悉工作环境的问题。对于这样大规模的软件,采用统一的标准,实行严格的审查是绝 对必要的。由于软件的规模庞大以及问题的复杂性,往往在开发的过程中会出现一些事先难以 预料的不测事件,对此需要有一定的思想与工作准备。

 

4.按服务对象进行划分

(1)通用软件:由软件开发机构开发出来的直接提供给市场的软件。例如通用财务软件、 通用字处理软件,杀毒软件等。这类软件通常由软件开发机构自主进行市场调查与市场定位, 并由此确定软件规格,大多通过一定的商业渠道进行软件销售。

(2)定制软件:受某个或少数几个特定客户的委托,由一个或多个软件开发机构在合同的 约束下开发出来的软件。例如,某专门设备的控制系统、某特定企业的业务管理系统、某智能大厦的监控与管理系统、某城市的交通监管系统。这类软件通常由用户进行软件描述,并以此 为基本依据确定软件规格。作为软件开发机构,则必须按照用户要求进行开发。

 

5.软件发展历程

(1)程序设计时代

(2)程序系统时代

    个人创作 软件作坊 用户意图忽略

(3)软件工程时代

  工程原理、技术、方法

 

 

 

三、 软件危机

1.危机现场

 

软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。例如,软件的 开发成本、进度,软件质量,等等。这些问题绝不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。

(1)      软件开发成本、进度的估计很不准确;

(2)      软件产品常常与用户的要求不一致;

(3)      软件产品质量可靠性差;

(4)      软件文档不完整、不一致

(5)      软件产品可维护性差

(6)      软件生产率低

 

2.产生危机的原因

(1)      软件的不可见特性;

(2)      软件系统规模庞大;

(3)      软件生产工程化管理程度低;

(4)      对用户需求关心程度不够;

(5)      对软件维护重视程度不够;

(6)      软件开发工具自动化程度低;

 

 

四、 软件工程

1.软件工程概念

软件工程是一门关于软件开发与维护的工程学科,它涉及软件生产的各个方面,包括:工 程过程、工程原则、技术方法与工具,以及工程项目管理等,能够为经济、高效地开发高质量 的软件产品提供最有效的支持。 实际上,我们可以从多个不同的角度来认识软件工程。 1983 年国际权威机构 IEEE 给软件工程下的定义是:软件工程是开发、运行、维护和修复 软件的系统方法。其中的“软件”被定义为:计算机程序、方法、规则、相关的文档资料,以 及计算机程序运行时所需要的数据。 Fairly 给出的定义是:软件工程学是为了在成本限额以内按时完成开发和修改软件产品 时,所需要的系统生产和维护技术及管理学科。 FritZ Baner 则给出了下述定义:软件工程是为了经济地获得可靠的且能在实际机器上有 效运行的软件,而建立和使用的完善的工程化原则。

 

2.软件工程技术

软件工程技术是指软件工程所具有的技术要素。作为软件开发与维护的工程方法学,软件工程具有三个方面的技术要素,即软件工程方法、软件工具和软件工程过程。

 

软件工程方法 软件工程方法是指完成软件开发与维护任务时,应该“如何做”的技术方法。它所涉及的 任务贯穿于软件开发、维护的整个过程之中,包括:软件需求分析、软件结构设计、程序算法 设计等诸多任务;而其方法则体现在使用图形或某种特殊语言的方式来表现这些任务中需要建 立的软件系统模型,如:数据流模型、软件结构模型、对象模型、组件模型等。主要的软件工 程方法有:结构化方法、JSD 方法和面向对象方法。

 

(1)结构化方法 结构化方法是传统的基于软件生命周期的软件工程方法,自 20 世纪 70 年代产生以来,获 得了极有成效的软件项目应用。结构化方法是以软件功能为目标来进行软件构建的,包括:结 构化分析、结构化设计、结构化实现和结构化维护等内容,能够很好地适应结构化编程工具, 例如:C、Pascal 语言等。它主要使用数据流模型来描述软件的数据加工过程,并可以通过数 据流模型,由对软件的分析顺利过渡到对软件的结构设计。

(2)JSD 方法 JSD 方法主要用在软件设计上,1983 年由法国科学家 Jackson 提出。它以软件中的数据结 构为基本依据来进行软件结构与程序算法设计,是对结构化软件设计方法的有效补充。在以数 据处理为主要内容的信息系统开发中,JSD 方法具有比较突出的设计建模优势。

(3)面向对象方法 面向对象方法是以软件问题域中的对象为基本依据来构造软件系统模型的,包括:面向对 象分析、面向对象设计、面向对象实现和面向对象维护等内容。确定问题域中的对象成分及其 关系,建立软件系统对象模型,是面向对象分析与设计过程中的核心内容。自 20 世纪 80 年代 以来,人们提出了许多有关面向对象的方法,其中,由 Booch、Rumbaugh、Jacobson 等人提出 的一系列面向对象方法成为了主流方法,并被结合为统一建模语言(UML),成为了面向对象方 法中的公认标准。面向对象方法能够最有效地适应面向对象编程工具,例如:C++、Java 等, 并特别适用于面向用户的交互式系统的开发。

 

 

 

  1. 软件工具

 

小结:

1.软件特点

软件是计算机系统中的逻辑成分,具有无形性。其主要内容包括:程序、配置文件、系统 文档、用户文档等。

2.软件分类

(1)按功能划分:系统软件、支撑软件、应用软件。

(2)按工作方式划分:实时处理软件、分时处理软件、交互式软件、批处理软件。

(3)按规模划分:微型软件、小型软件、中型软件、大型软件。

(4)按服务对象划分:通用软件、定制软件。

3.软件发展阶段

(1)程序设计时代(20 世纪 50 年代)。

(2)程序系统时代(20 世纪 60 年代)。

(3)软件工程时代(20 世纪 70 年代起)。

4.软件危机

(1)危机现象:开发成本与进度估计不准确,产品与用户要求不一致,产品质量可靠性差, 文档不完整不一致,产品可维护性差,生产率低。

(2)危机原因:软件的不可见性,系统规模庞大,生产工程化程度低,对用户需求关心不 够,对维护不够重视,开发工具自动化程度低。

5.软件工程 软件工程是一门关于软件开发与维护的工程学科,它涉及软件生产的各个方面,能够为经 济、高效地开发高质量的软件产品提供最有效的支持。

 (1)工程方法:结构化方法、JSD 方法、面向对象方法。

(2)软件工具:具有自动化特征的软件开发集成支撑环境。

(3)工程过程:在软件工具支持下的一系列工程活动,基本活动是软件定义、软件开发、 软件验证、软件维护。

(4)工程管理:项目规划,项目资源调配,软件产品控制。

(5)工程原则:分阶段生命周期计划,阶段评审制度,严格的产品控制,采用先进的技术, 成果能清楚地审查,开发队伍精练,不断改进工程实践。

(6)工程目标:开发成本较低,软件功能能满足用户需求,软件性能较好,软件可靠性高, 软件易于使用、维护与移植,能按时完成开发任务并及时交付使用。

(7)工程文化:包括工程价值、工程思想和工程行为三个方面的内容。

 

文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览93565 人正在系统学习中 相关资源:djs-economy:Discord.js机器人的经济软件包-其它代码类资源-CSDN…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年7月14日
下一篇 2018年7月14日

相关推荐