软件工程的学习之详细绪论

ops/2024/10/23 16:39:26/

软件的定义

软件是程序和所有使程序正确运行所需要的相关文档和配置信息。

Software = Program + Data + Document

一、软件危机

软件开发和维护过程中遇到的一系列严重问题。

二、具体表现

1、产品不符合用户的实际需要;

2、软件开发生产率不高,不能满足客观需要;

3、软件产品质量差;

4、对软件开发成本和进度的估计不准确;

5、可维护性差;

6、软件的文档资料不完整和不合格;

7、软件成本逐年上升。

三、产生原因:

1、宏观

(1)缺乏总体考虑,没有软件工程学概念或系统工程思想。——软件

(2)对业务了解支离破碎,需求分析不准。——软件

(3)企业依赖激情指挥,企业管理标准化、规范化、科学化程度不高,导致不能成功地应用“死板”的软件,它依赖于业务的“科学化”、“条理化”、“程序化” ——企业

(4)企业信息化程度和计算机应用水平低,导致无法准确描述需求。——企业

(5)一把手对信息管理的重视程度不够。——企业

(6)缺乏相互沟通,业务描述的详尽程度不能达到具备生活常识的人能够轻易理解。—— 企业、软件

2、微观

(1)软件的规模比较庞大,其开发和维护相当困难;

(2)开发人员虽然有经验,但还存在着不少错误观点,没有实行工程化的方法;

(3)不能与用户及时沟通,不能了解用户的实际需要;

(4)没有统一的软件质量管理规范;

(5)不能根据环境的变化而随时对产品进行改正。

软件工程学的范畴

•   软件开发方法

    为软件开发提供了 “如何做” 的技术

    个性化方法 --〉结构化方法 --〉面向对象方法 --〉软件复用

•   软件工具

     为软件开发提供了自动的或半自动的软件支撑环境

     单个工具 --〉工具箱、集成工具 --〉环境

•  软件工程管理

 目的:为了按进度及预算完成软件计划

 内容:成本估算、进度安排、人员组织、质量保证等

软件工程是一门交叉学科,软件工程的主要研究内容

   软件开发技术:

  • 软件开发方法学
  • 软件开发过程
  • 软件工具和软件工程环境

      软件工程管理:

  • 软件管理学
  •  软件经济学
  •  软件心理学

软件工程方法学:

把在软件生命周期全过程中使用的一整套技术方法的集合称为方法学。

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

软件工程的发展

  三种编程范型

  过程式编程范型

          程序由一组被动数据和一组能动过程组成

          程序=数据结构+算法

          着眼于程序的过程和基本控制结构,粒度最小

  面向对象编程范型

           数据及其操作被封装在对象中

           程序=对象+消息

           着眼于程序中的对象,粒度比较大

   基于构件技术的编程范型

          构件是通用的、可复用的标准化对象类

          程序=构件+架构

         着眼于适合整个领域的类对象,粒度更大

传统方法学(生命周期方法学)

仍然是使用十分广泛的软件工程方法学。

采用结构化技术来完成软件开发的各项任务,并使用适当的软件工具或软件工程环境来支持结构化技术的运用。

从上而下,顺序地完成软件开发的各阶段任务。

面向对象的方法学

把对象作为融合了数据及在数据上的操作行为的统一软件构件;

把所有对象都划分成类;

按照父类与子类的关系,把若干个相关类组成一个层次结构的系统;

对象彼此间仅能通过发送消息互相联系。

面向对象的方法学的特点

出发点和基本原则是尽量模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类认识实践解决问题的方法与过程,从而使描述问题的问题空间与实现解法的解空间在结构上尽可能一致。

三种编程范型对应的三代软件工程

传统软件工程

•   结构化分析 →结构化设计 → 面向过程的编码 → 软件测试

面向对象软件工程

•   OO分析与对象抽取 → 对象详细设计 → 面向对象的编码 和测试

 基于构件的软件工程

•   领域分析和测试计划定制 → 领域设计 → 建立可复用构件库 → 查找并集成构件

 软件工程的应用

软件工程指导中小型软件

 软件工程指导大型软件

软件工程的成就

解决软件开发中的部分问题(非本质)

软件生产率稳步增长

软件工程发展的展望

开发伴随软件复用,开发为了软件复用

软件就是服务

思考:

1.什么是软件危机?为什么会产生软件危机?

2. 什么是软件生产工程化?工程化生产方法与早期的程序设计方法主要差别在哪里?


 


http://www.ppmy.cn/ops/127868.html

相关文章

鸿蒙ArkTS中的资源管理详解

在鸿蒙应用开发中,资源管理是一个非常重要的话题。ArkTS作为鸿蒙原生开发语言,提供了强大的资源管理功能。本文将深入探讨ArkTS中的资源管理,特别是$r语法的使用注意事项,以及其他实用的资源管理技巧。 1. $r语法简介 在ArkTS中,$r是一个用于引用资源的特殊语法。它允许开发者…

后台管理员登录实现--系统篇

我的小系统后台原来就有一个上传图片的功能还夹带个删除图片的功能,还嵌到了一个菜单里面。之前效果如下 那么现在为了加大安全力度,想增加一个登录页面。通过登录再到这个页面。看着貌似很简单,但是听我细细说来,要新增些什么东西…

visio图片三维旋转后导出,格式错乱怎么解决?

visio图片三维旋转后导出,格式错乱怎么解决? 我尝试了将你要保存的图复制到新的空白模板中,保存整个新文档,然后导出pdf,选择全部。 不妨可以尝试一下。

HarmonyOS Next应用开发——图像PixelMap压缩保存

【高心星出品】 图片编码保存 图片编码指将PixelMap编码成不同格式的存档图片,当前支持打包为JPEG、WebP、png和 HEIF(不同硬件设备支持情况不同) 格式,用于后续处理,如保存、传输等。图片编码是图片解码-图片处理-图片保存的最后环节&…

el-table在某些条件下禁止选中

el-table在某些条件下禁止选中 废话不多说直接上代码 HTML部分 <el-table v-loading"loading" :data"wmsShipmentOrderList" ref"multipleTable" select"handleSelect" selection-change"handleSelectionChange">&…

去中心化衍生品入门:模型、挑战与机遇

在传统金融和加密世界中&#xff0c;衍生品市场的规模远超现货市场。根据最新数据&#xff0c;比特币的日现货市场交易量约为40亿美元&#xff0c;而其衍生品市场的交易量高达538.9亿美元。这一趋势在过去几年内加速增长&#xff0c;尤其是在2021年初&#xff0c;去中心化金融&…

游戏服务端架构演进

文章目录 前言初出茅庐粗通皮毛略有小成炉火纯青内劲深厚最后 前言 对于网络游戏&#xff0c;一般分为客户端和服务端&#xff0c;客户端主要负责界面图像的渲染与一些交互操作&#xff0c;服务端主要负责数据的业务处理与存储还有与客户端之间的信息交互 比如玩家聊天、广播…

探索 Python Web 开发:从框架到爬虫

Python 是 Web 开发中广泛使用的编程语言&#xff0c;因其简单、灵活和强大的生态系统&#xff0c;适合构建各种类型的 Web 应用和 API。在本篇博客中&#xff0c;我们将讨论 Web 开发的几个重要主题&#xff0c;包括 Flask 和 Django 框架、API 开发、HTTP 请求处理以及网页爬…