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

软件的定义

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

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.rhkb.cn/news/454405.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Sigrity 共模电感的S-parameter仿真数据导入

下载S4P参数 https://ds.murata.co.jp/simsurfing/cmcc.html?partnumbers%5B%22DLW32MH101XT2%22%5D&oripartnumbers%5B%22DLW32MH101XT2L%22%5D&rgearjomoqke&rgearinfocom&md51729525489334# 下载S4P参数; DLW32MH101XT2.s4p Sigrity 使用-dif…

Mac电脑:资源库Library里找不到WebServer问题的解决

今天看到一本书里写到Windows电脑自带IIS Web服务器,好奇了一下下,mac电脑自带的又是什么服务器呢?经查询,原来是Apache服务器,这个名字我很熟悉。只是如何设置呢?我从来没用过,于是试验了一番。…

如何看待AI技术的应用前景?

人工智能:引领未来的变革力量 在当今快速变化的科技时代,人工智能(AI)作为一项前沿技术,已然成为推动全球各行各业变革的核心驱动力。随着人工智能技术的不断发展,其广泛的应用前景和深远的影响力&#xf…

Lua环境安装

软考鸭微信小程序 学软考,来软考鸭! 提供软考免费软考讲解视频、题库、软考试题、软考模考、软考查分、软考咨询等服务 Lua是一种轻量级、小巧且易于嵌入应用程序的脚本语言,广泛用于游戏开发、Web开发、自动化脚本等领域。本文将详细介绍如何在不同操作系统上安装L…

深度学习 基本函数01

np.dot 是 NumPy 库中的一个函数,用于计算两个数组的点积(也称为内积或数量积)。点积是两个向量的对应元素乘积之和。 np.random.normal 是 NumPy 库中的一个函数,用于生成符合正态分布(也称为高斯分布)的…

vue3-高德地图天气小组件

效果图 使用方法 <weather-view type"rect-solid" :borderColor"[#7ACAEC, #068BBD]"></weather-view>天气图标文件夹 本来想全弄成svg动态图片的,但找了很久都没找到对应的图(只找到了几个),于是就暂时搁置了 组件全代码如下 注意getWeat…

缓存框架JetCache源码解析-缓存定时刷新

作为一个缓存框架&#xff0c;JetCache支持多级缓存&#xff0c;也就是本地缓存和远程缓存&#xff0c;但是不管是使用着两者中的哪一个或者两者都进行使用&#xff0c;缓存的实时性一直都是我们需要考虑的问题&#xff0c;通常我们为了尽可能地保证缓存的实时性&#xff0c;都…

酒吧收银系统解决方案——未来之窗行业应用跨平台架构

一、酒吧管理数字化 1. 提高效率&#xff1a;能够快速处理订单&#xff0c;减少顾客等待时间&#xff0c;提高服务效率&#xff0c;从而提升顾客满意度。 2. 精确计费&#xff1a;准确计算酒水、小吃等各类消费项目的费用&#xff0c;避免人工计算错误导致的经济损失。 3. 库存…

vue后台管理系统从0到1(5)

文章目录 vue后台管理系统从0到1&#xff08;5&#xff09;完善侧边栏修改bug渲染header导航栏 vue后台管理系统从0到1&#xff08;5&#xff09; 接上一期&#xff0c;我们需要完善我们的侧边狼 完善侧边栏 我们在 element 组件中可以看见&#xff0c;这一个侧边栏是符合我们…

windows下Qt的安装方法

Qt Creator是个人非常喜欢的一款开发工具&#xff0c;喜欢用其来开发C和CPC平台项目&#xff0c;当然也可以用其来开发Android和Auto平台项目&#xff0c;但其现在采用离线安装&#xff0c;限于网络问题&#xff0c;安装速度非常慢。 现在介绍一种可以完成快速的安装方法。 下…

群晖通过 Docker 安装 MySQL

1. 打开 Docker 应用&#xff0c;并在注册表搜索 MySQL 2. 下载 MySQL 镜像&#xff0c;并选择版本 3. 在 Docker 文件夹中创建 MySQL&#xff0c;并创建子文件夹 4. 设置权限 5. 选择 MySQL 映像运行&#xff0c;创建容器 6. 配置 MySQL 容器 6.1 使用高权限执行容器 6.2 启…

圆周率的估算

圆周率的估算有多种方案&#xff1a; 方案一&#xff1a;无穷级数4/1 - 4/3 4/5 - 4/7 ……的和是圆周率π&#xff0c;这一无穷级数前n项的和即可估算圆周率值。 方案二&#xff1a;利用求单位正方形与内接圆面积的比例关系来求的π的近似值。单位圆的1/4面积是一个扇形&am…

Java调用大模型 - Spring AI 初体验

Spring AI&#xff1a;为Java开发者提供高效的大模型应用框架 当前Java调用大模型时面临缺乏高效AI应用框架的问题。Spring作为资深的Java应用框架提供商&#xff0c;通过推出Spring AI来解决这一挑战。它借鉴了LangChain的核心理念&#xff0c;并结合了Java面向对象编程的优势…

Linux隐藏权限介绍

隐藏权限概览 在Linux系统中&#xff0c;有时即便是以root用户身份&#xff0c;你也可能遇到无法修改特定文件的情况。这种限制往往源自chattr命令的应用&#xff0c;该命令用于为文件或目录设置“隐藏权限”&#xff0c;即底层属性&#xff0c;以增强系统安全性。值得注意的是…

100个人物介绍字幕动画PR视频模板MOGRT

Premiere Pro 模板&#xff0c;5类100个人物介绍(用户)界面元素PR剪辑视频素材包。 不需要插件。 通用表达式。 模块化结构。 组织良好。 快速简单的定制。 https://prmuban.com/41688.html

华为原生鸿蒙操作系统正式发布,为开发者开启的全新机遇与挑战

华为原生鸿蒙操作系统正式发布&#xff1a;开启全场景智能生活新篇章 概述 2024年10月22日&#xff0c;华为在“原生鸿蒙之夜暨华为全场景新品发布会”上正式发布了我国首个国产移动操作系统——华为原生鸿蒙操作系统&#xff08;HarmonyOS NEXT&#xff09;。这标志着华为在…

AI大模型平台详解与AI创作示范

AI大模型平台详解与AI创作示范 在全球人工智能&#xff08;AI&#xff09;领域&#xff0c;中国的AI大模型平台取得了快速发展&#xff0c;涌现了多个具有代表性的平台&#xff0c;诸如百度的飞桨&#xff08;PaddlePaddle&#xff09;、阿里的达摩院M6、华为的MindSpore、腾讯…

JMeter详细介绍和相关概念

JMeter是一款开源的、强大的、用于进行性能测试和功能测试的Java应用程序。 本篇承接上一篇 JMeter快速入门示例 &#xff0c; 对该篇中出现的相关概念进行详细介绍。 JMeter测试计划 测试计划名称和注释&#xff1a;整个测试脚本保存的名称&#xff0c;以及对该测试计划的注…

【日志】Unity3D模型导入基本问题以及浅谈游戏框架

2024.10.22 真正的谦逊从来不是人与人面对时的谦卑&#xff0c;而是当你回头看那个曾经的自己时&#xff0c;依旧保持肯定与欣赏。 【力扣刷题】 暂无 【数据结构】 暂无 【Unity】 导入外部模型资源报错问题 在导入外部资源包的时候一般都会报错&#xff0c;不是这个资源模…