一、软件/软件工程/软件开发模型概述

一、软件

1.软件的定义

软件不仅仅是程序,而是程序数据、以及开发使用和维护程序所需要的所有文档的集合

程序:程序是为了解决某些特定问题而用程序设计语言编写的适合计算机处理的语句序列,由开发人员进行设计和编码

文档:文档是软件开发活动的记录,主要供人们阅读。 文档既可以用于开发人员和用户之间的沟通和交流,也可以用于软件开发过程的管理和运行阶段的维护

2.软件的分类

从计算机系统角度来看可分为俩大类:系统软件和应用软件
从计算机软件用途角度来看可分为三大类:服务类、维护类、操作管理类
在这里插入图片描述

3.软件危机

3.1软件危机的主要问题

一、如何开发以满足多软件日益增长的需求
二、如何维护数量不断增长的已有软件

3.2软件危机产生原因(6点)

(1) 软件是计算机系统的逻辑部件,往往规模庞大,结构复杂
(2) 软件的开发费用不断增加,维护费用急速上升
(3) 软件开发的管理困难
(4) 软件开发技术落后
(5) 生产方式落后
(6) 开发工具落后,生产效率缓慢

简记:软件本来就复杂,现在又需要更多的钱,即使有钱了开发过程管理也是很难找到合适人选。有钱也有人之后还有客观阻难三件套(生产技术、生产方式、生产工具落后)


二、软件工程

1.软件工程定义

软件工程是指导计算机软件开发维护的一门工程学科,采用工程的概念、原理、技术和方法开发和维护软件

2、软件工程目标(6点)

(1) 降低软件开发成本
(2) 满足客户的所有软件功能需求
(3) 打造出符合客户要求,令用户满意的软件性能
(4) 具有较好的易用性、重用性和可移植性
(5) 较低的维护成本,较高的可靠性
(6) 按照合同要求完成开发任务,在规定期间内交付客户使用

可以幻想为运营一家软件设计公司,你是老板。
开公司,你首先把价格降下来才会有人询问,询问的时候答应用户要求的全部软件功能要求,这里假设客户要求为制作游戏。
做出来后不能太卡吧,性能必须上去。卡到是不卡啦,但是用户想要在多平台上线这款游戏,易用性、重用性和可移植性必须不错吧,在各个平台上线后总不能每个平台都有一队维护人员吧,需要有较高的可靠性,最后呢按照合同要求完成开发,在合同规定期间内交付使用(不然违约要赔钱)

3.软件工程研究的内容

软件开发技术上主要研究软件开发方法、软件开发过程、软件开发工具和技术
软件开发过程管理上主要研究软件管理学软件工程经济学
在这里插入图片描述

4.软件工程基本原理(7点)

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

基本原理可以理解为简要设计过程
首先建个团队(人少且精最好),然后使用现代程序设计技术(一般比较成熟嘛)
接下来按照生存周期的分阶段严格控制,分段,逐个击破。 每个阶段写完后都要审查,并且进行严格的产品控制,最终审查的结果应该清晰可见,最后呢我们要保持一颗承认软件软件工程需要不断进行实践改进的必要性,虚心点,有更好的技术就换,不要过于死板

软件工程发展史(了解)

程序设计时代 (1946~1956) / /十年
程序系统时代 (1956~1968) / /十二年
软件工程时代 (1968~至今)

5.软件生存周期

含义:指从某一个软件项目从被提出来并着手实现开始知道该软件停止使用或报废为止

划分软件生存周期: 把生存周期分为若干个阶段,赋予每个阶段相对独立(生存周期划分原则)的任务,每个阶段都有技术复审和管理复审,从技术和管理两方面对这个阶段的开发成果进行检验

软件生存周期一般分为软件计划、软件开发、软件运行三个时期

在这里插入图片描述

6.软件开发模型

瀑布模型:也称生存周期模型线性顺序模型,这种模型是将软件生存周期的各个活动规定为依线性顺序连接的若干阶段的模型,包括问题定义、可行性研究、需求分析、概要设计、详细设计、编码、测试和维护,到目前为为止仍然是应用的最广泛的过程模型,以文档为驱动、适合需求很明确的软件开发项目开发的模型

`
瀑布模型特点:

  • 阶段的顺序性和依赖性:必须等前一阶段的工作完成后再开始后一阶段的工作,其次前一段时间的输出文档就是后一阶段的输入文档
  • 推迟实现的特点:准备充分后再编码实现,逻辑设计和物理设计分开
  • 质量保证的观点:①每一个阶段都必须完成所规定的相关文档 ②每一个阶段结束之前都必须对已完成的文档进行评审
  • 存在的问题:是一种理想的线性开发模式,缺乏灵活性,特别是无法解决软件需求不明确或者不准确的问题

快速原型模型:首先快速建立一个能够反映用户主要需求的原型系统,让用户在计算机上试用,通过实践让用户了解未来目标系统的概貌,以判断哪些功能是符合需要的,那些方面需要改进,开发人员按照用户的意见快速地修改原型系统,然后再次请用户试用,这样反复改进,最终建立完全符合用户需求的新系统

增量模型:也称为渐增模型,软件在模型中是“逐渐”开发出来的,把软件产品作为一系列的增量构件来设计、编码、组装和测试,是一种非整体开发的模型。每个构件由多个相互作用的模型组成,并且能够完成一些特定的功能
特点:开发一部分,向用户展示一部分,可以及时让用户早看到部分软件,及早发现问题

螺旋模型:加入前两种模型都忽略的了风险分析,弥补了两种模型的不足,他是一种风险驱动的模型

喷泉模型:是一种比较典型的面向对象软件开发模型,以用户的需求为动力,以对象作为驱动的模型,适合面向对象的开发方法

各个模型对比:

瀑布模型 经典、适合需求变化不大的项目
快速原型模型 快速获取用户的需求
增量模型 灵活、允许软件变化
螺旋模型 加入风险
喷泉模型 典型面向对象开发模型
基于构件的的开发模型 提高软件的重用性和可用性
统一过程模型 基于UML的oo过程模型
基于形式化的模型 确保严格、无措

传统软件工程和面向对象软件工程的对比

传统软件工程以结构化设计语言为基础

何为面向对象软件工程,简述他和传统软件工程的练习
含义:以面象对象的程序设计为基础的软件工程
·
区别:传统软件是以结构化程序设计为基础,而面向对象的软件工程是以面向对象程序设计为基础。与面向过程的软件工程的开发思想相比,面向对象的开发方法不再是以功能划分为导向,而是以对象作为整个问题分析的中心,面对对象展开系统的分析和设计工作。
·
联系:在开发过程方面,面对对象软件工程和传统软件工程一样是把软件开发划分为分析、设计、编码和测试等几个阶段,但是各个阶段的具体工作不同。传统的软件开发过程包括需求分析、总体设计、详细设计、面向过程的编码和测试;而面向对象的软件工程开发过程包括需求分析和对象抽取、对象详细设计、面向对象的编码和测试

猜你喜欢

转载自blog.csdn.net/xiaobai729/article/details/127659332