【学习笔记】软件工程概述

简介

程序是人们为了完成特定的功能编制的一组指令集,它由计算机的语言描述,并且能在计算机系统上执行。而软件不仅包括程序,还包括程序的处理对象——数据,以及与程序开发、维护和使用相关的图文资料。

软件有以下几个特点:
(1)软件是一种逻辑实体,而不是具体的物理实体,因而它具有抽象性。
(2)软件的生成与硬件不同,他没有明显的制造过程。要提高软件的智联个,必须在软件开发方面下功夫。
(3)在软件的运行和试用期间,不会出现硬件中出现的机械磨损、老化问题,然而它存在退化问题,必须对其进行多次的修改和维护,直至退役。
(4)计算机软件的开发与运行常常收到计算机系统的制约,它对计算机系统有着不同程度的依赖性。为了解决这种依赖性,在软件开发中提出了软件移植问题。
(5)软件开发至今尚未完全摆脱人工的开发方式。
(6)软件本身是复杂的。软件的复杂性可能来自它反映实际问题的复杂性,也可能来自程序逻辑结构的复杂性。
(7)软件的成本相当昂贵。
(8)相当多的软件工程设计社会因素。许多软件的开大和运行涉及机构、体制及管理方式等问题,它们直接决定项目的成败。

分类

按照功能的不同,软件可以分为系统软件、支撑软件和应用软件。基于规模的不同,软件可以划分为微型、小型、中型、大型和超大型软件。根据工作方式的不同,划分为实时软件、分时软件、交互式软件和批处理软件。

软件危机

软件危机是指人们在开发软件和维护软件过程中遇到的一系列问题。在20世纪60年代中期,随着软件规模的扩大,复杂性的增加,功能的增强,高质量的软件开发变得越来越困难。在软件开发的过程中,会经常出现不能按时完成任务、产品质量得不到保证、工作效率地下和开发经费严重超支等问题。
普遍出现的严重问题有:
(1)开发的软件产品不能满足用户的 需求,即产品的功能或特性与需求不符合。
(2)相比越来越廉价的硬件,软件代价过高。
(3)软件质量难以得到保证,且难易发挥硬件潜能。
(4)难易准确估计软件开发、维护的费用以及开发周期。
(5)软件产品修改维护困难,集成遗留系统更困难。

软件危机出现的原因

(1)忽视软件开发前期的需求分析。
(2)开发过程缺乏统一的、规范化的方法论指导。软件开发是一项复杂的工程,人们需要用科学的、工程化的思想来组织和指导软件开发的各个阶段。
(3)文档资料不齐全或不准确。
(4)忽视与用户之间、开发组成员之间的交流。
(5)忽视测试的重要性。
(6)不重视维护或由于上述原因造成维护工作困难。
(7)从事软件开发的专业人员对这个产业认识不充分,缺乏经验。
(8)没有完善的质量保证体系。

软件工程的知识体系

  1. 软件需求(Software Requirement)
  2. 软件设计(Software Design)
  3. 软件构建(Software Construction)
  4. 软件测试(Software Testing)
  5. 软件维护(Software Maintenance)
  6. 软件配置管理(Software Configuration Management)
  7. 软件工程管理(Software Engineering Management)
  8. 软件工程过程(Software Engineering Process)
  9. 软件工程模型和方法(Software Engineering Models and Methods)
  10. 软件质量(Software Quality)
  11. 软件工程职业实践(Software Engineering Professional Practice)
  12. 软件工程经济学(Software Engineering Economics)
  13. 计算基础(Computing Foundations)涉及解决问题的技巧、抽象、编程基础、编程语言的基础知识、调试工具和技术、数据结构和表示、算法和复杂度、系统的基本概念、计算机的组织结构、变异基础知识,操作系统基础知识、数据库基础知识和数据管理、网络通信基础知识、并行和分布式计算、基本的用户认为因素、基本的开发人员认为因素和安全的软件开发和维护等方面内容
  14. 数学基础(Mathematical Foundations)涉及集合、关系和函数,基本的逻辑、证明技巧、计算的基础知识、图和树、离散概率、有限状态机、语法,数值精度、准确性和错误,数论和代数结构等方面的内容。
  15. 工程基础(Engineering Foundations)涉及实现方法和实验技术、统计分析、度量、工程设计,建模、模拟和建立原型,标准和影响因素分析等方面内容。

软件开发方法

  1. 结构化方法
  2. 面向数据结构方法
  3. 面向对象方法
  4. 形式化方法

软件工程工具

(1)按照功能划分:功能是对软件进行分类最常用的标准,软件工程工具可以分为可视化建模工具、程序开发工具、自动化测试工具、文档编辑工具、配置管理工具、项目管理工具等。
(2)按照支持的过程划分:可分为设计工具、编程工具、维护工具等。
(3)按照支持的范围划分:窄支持、较宽支持和一般支持工具。窄支持工具支持软件过程中的特定任务,一般将其称之为工具;较宽支持工具支持特定的过程阶段,一般由多个工具集合而成,称之为工作台;一般支持工具支持覆盖软件过程的全部或大部分阶段,包含多个不同的工作台,称之为环境。

软件开发模型

瀑布模型
凯苏原型模型
增量模型
螺旋模型
喷泉模型
基于组件的开发模型
统一软件开发过程模型
敏捷过程与极限编程

软件结构化设计

  1. 数据库结构设计

  2. 用户界面设计
    (1)设计驱动开发
    (2)目标用户群体
    (3)间接与清晰
    (4)实现模型与心智模型
    (5)设计的规范性
    (6)设计的可用性和易用性
    (7)设计的一致性
    (8)设计的容错性

  3. 结构化设计和结构化分析

  4. 体系结构设计
    (1)表示软件结构的图形工具
    (2)面向数据流的设计方法
    (3)面向数据结构的设计方法

  5. 接口设计

  6. 数据设计

  7. 过程设计
    (1)程序流程图
    (2)N-S图
    (3)PAD图
    (4)过程设计语言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/609966.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【SpringBoot整合系列】SpringBoot整合RabbitMQ-基本使用

目录 SpringtBoot整合RabbitMQ1.依赖2.配置RabbitMQ的7种模式1.简单模式(Hello World)应用场景代码示例 2.工作队列模式(Work queues)应用场景代码示例手动 ack代码示例 3.订阅模式(Publish/Subscribe)应用…

超详细的胎教级Stable Diffusion使用教程(一)

这套课程分为五节课,会系统性的介绍sd的全部功能和实操案例,让你打下坚实牢靠的基础 一、为什么要学Stable Diffusion,它究竟有多强大? 二、三分钟教你装好Stable Diffusion 三、小白快速上手Stable Diffusion 四、Stable dif…

本安防爆手机在电力行业中的应用

在电力行业这一充满挑战与风险的领域中,安全始终是最为首要的考量。电力巡检、维修等作业往往涉及易燃、易爆环境,这就要求工作人员配备能够在极端条件下保障通讯和作业安全的专业设备。防爆手机应运而生,以其独特的设计和卓越的性能&#xf…

05、Kafka 操作命令

05、Kafka 操作命令 1、主题命令 (1)创建主题 kafka-topics.sh --create --bootstrap-server 192.168.135.132:9092,192.168.135.133:9092,192.168.135.134:9092 --topic test1 --partitions 4 --replication-factor 3–bootstrap-server:…

Istio 流量管理(请求路由、流量转移、请求重试、流量镜像、故障注入、熔断等)介绍及使用

一、Istio 流量管理 Istio是一个开源的服务网格,它为分布式微服务架构提供了网络层的抽象。它使得服务之间的通信变得更为可靠、安全,并且提供了细粒度的流量管理、监控和策略实施功能。Istio通过在服务之间插入一个透明的代理(Envoy&#x…

防静电段码屏驱动VK2C23适用于水电气表以及工控仪表类产品

VK2C23是一个点阵式存储映射的LCD驱动器,可支持最大224点(56SEGx4COM)或者最大416点(52SEGx8COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,也可通过指令进入省电模式。其高抗干扰&#xff…

Django实验(远程访问+图片显示)

众所周知,Python除了不能生孩子什么都会。Python也是可以做web服务的。 Python做web有一个重点优势是:做一个快速的AI Demo。 第一步:安装一个版本5.0以上django 第二步:构建咱们的Django工程,我取名为BBQ django-adm…

static静态成员变量和静态方法

当有new创建一个对象的,里面属性和方法,通过构造函数,能定义多个不同的对象,在我们做面向对象开发的时候,给一个场景,人在一个班级的时候,你的老师可能是固定的。 当我们用构造方法去构造的时候,每次都去传递一个固定的实参去定义个老师。 这样好会显得代码非常的…

Linux网络编程:TCP并发服务器实现

目录 1、前言 2、多进程代码实现 2.1 创建新的进程 2.2 客户端接收响应函数 2.3 僵尸进程处理 2.4 完整代码 2.5 代码测试 3、多线程代码实现 3.1 创建新的线程 3.2 线程函数定义 3.3 完整代码 3.4 代码测试 4、总结 1、前言 前面实现了基本的TCP编程&#xf…

理解机器学习中的类别不平衡问题

大家好,实际世界的数据集通常是杂乱的,当不同类别之间的样本分布不均匀时,就会出现类别不平衡。或者说,某些类别的样本比其他类别多得多。例如,考虑一个信用卡违约数据集,信用卡违约是一个相对较少发生的事件&#xff…

Java入门基础学习笔记2——JDK的选择下载安装

搭建Java的开发环境: Java的产品叫JDK(Java Development Kit: Java开发者工具包),必须安装JDK才能使用Java。 JDK的发展史: LTS:Long-term Support:长期支持版。指的Java会对这些版…

Sass语法介绍-变量介绍

02 【Sass语法介绍-变量】 sass有两种语法格式Sass(早期的缩进格式:Indented Sass)和SCSS(Sassy CSS) 目前最常用的是SCSS,任何css文件将后缀改为scss,都可以直接使用Sassy CSS语法编写。 所有有效的 CSS 也同样都是有效的 SCSS。 Sass语…

javaMail快速部署——发邮件喽~

目录 功能阐述 前序步骤 (1)到QQ邮箱中获取到授权码 代码实现 坑 今天在写一个修改密码的功能的时候要用到邮箱的发送,然后因为这个项目比较老旧了,采用的是javaWeb和jsp的配置,对于我只使用过springBoot整合的ja…

京东手势验证码-YOLO姿态识别+Bézier curve轨迹拟合

这次给老铁们带来的是京东手势验证码的识别。 目标网站:https://plogin.m.jd.com/mreg/index 验证码如下图: 当第一眼看到这个验证码的时候,就头大了,这玩意咋识别??? 静下心来细想后的一个方案&#xf…

JavaWeb中的Session和Cookie

前言 什么是会话跟踪技术 Cookie 1.什么是cookie 2.Cookie的应用 2.1 保持用户登录状态 2.2 记录用户名 3. Cookie的设置和获取 3.1 、通过HttpServletResponse.addCookie的方式设置Cookie 3.2、浏览器中查看cookie的内容 3.3、服务端获取客户端携带的cookie&#xf…

240+ Stylized Arctic Textures - Snow, Ice More

240+风格化的雪、冰、雪岩和其他雪纹理的集合,用于北极风格化/幻想/rpg风格的游戏环境。 在这个系列中,你会在风格化/幻想/rpg风格的游戏中找到大量适合北极和其他雪地环境的纹理——雪、冰、雪地岩石、雪地草、雪地砾石、雪地等等! 每个纹理都是可平铺/无缝的,并与各种不同…

C++语法|进程虚拟地址空间和函数调用栈

本文来自施磊老师的课程,老师讲的非常不错,我的笔记也是囫囵吞枣全部记下,但是我在这里推荐一本书,真的真的建议初学C或者想要进阶C的同学们看看:《CPU眼里的C/C》 文章目录 进程的虚拟地址空间和布局进程虚拟地址空间…

布隆过滤器和黑名单,解决Redis缓存穿透

目录 1.什么是布隆过滤器? 2.布隆过滤器的原理 3.空间计算 4.布隆过滤器的视线场景: 5.在Spring Boot中集成Redisson实现布隆过滤器 6、Redisson实现布隆过滤器 6.1导入依赖 6.2使用 布隆过滤器(Bloom Filter)是1970年由布…

邮件大附件系统如何进行安全、高效的大附件发送?

邮件大附件系统是一套解决传统电子邮件系统,在发送大文件时遇到限制的解决方案。由于传统电子邮件系统通常对附件大小有限制,这使得发送大文件变得困难。邮件大附件系统通过各种技术手段,允许用户发送超过传统限制的大文件,通常在…

修改latex中block中公式与block标题间隔过大的问题

修改block中公式与block间隔过大的问题 如图的block中公式出现了空白:代码见下方 \begin{proof}[证明]\begin{align*}&Z\alpha \beta _XX\beta _YY\varepsilon \rightarrow XZ\alpha X\beta _XX^2\beta _YXY\varepsilon X&\\&E\left( Z \right) \alpha \beta _XE\…
最新文章