计算机导论10-软件与软件工程

文章目录

  • 软件
    • 软件的概念
      • 软件的定义
      • 软件的特征
    • 软件的保护与授权
      • 软件的法律保护
      • 软件许可
  • 软件工程
    • 软件危机
      • 软件危机的概念
      • 产生软件危机的原因
    • 软件工程的概念
      • 软件工程的定义
      • 软件工程基本原理
      • 软件工程框架
      • 软件工程三要素
    • 软件工程方法学
      • 软件工程方法
      • 软件工程工具
      • 软件工程过程
  • 软件生命周期
    • 软件生命周期概念
    • 软件生命周期模型
      • 瀑布模型
      • 演化模型
      • 增量模型
      • 螺旋模型
      • 喷泉模型
    • 微软公司软件开发周期
  • 补充题

软件

软件的概念

  • 软件(software)是信息的载体,并且提供了对信息的处理能力,软件来反映用户特定的信息处理逻辑,从而由对信息增值来取得用户自身效益增值。
  • 软件运行在硬件之上,是硬件实施计算、控制等功能的工作步骤、流程及相关说明;硬件是软件运行的物质基础,硬件系统的协同工作完成用户通过软件定义的特定数据处理任务

软件的定义

  • 计算机软件是指与计算机系统操作有关的程序、规程、规则及任何与之有关的数据和文档资料。
    • 指令、程序和数据(硬件系统可以执行);
    • 文档、资料(软件开发、运行、维护、使用、培训等活动相关,硬件系统无法执行)

软件的特征

特征表现
软件是无形产品表现为程序及文档,电子化的脑力劳动的结果,非有形可见的物质产品
软件生产无明显制造过程设计-开发过程的结果,没有物质产品的制造过程,可以大量复制
软件不会“磨损”仪器、设备等物质产品在使用过程中会产生磨损、损耗-折旧,软件不会损耗,但可能需要“维护”以保持稳定性,“修改”以满足硬件系统的变化、或者实现新的功能
大多数软件是定制的专用软件:面向特定的专业领域、完成指定范围、类型的数据处理任务-如图像处理软件,
通用软件:通用性不是绝对的,如操作系统、office
对计算机硬件依赖性软件根植于硬件系统之上,并需操作系统支持才能运行
软件的复杂性与软件设计、开发相关的人的因素、物的因素变化多端

软件的保护与授权

软件的法律保护

  • 根据《计算机软件保护条例》的规定,计算机软件著作权归属软件开发者。
  • 计算机软件作为一种知识产品,要获得法律保护,必须具备原创性、可感知性、可再现性。

软件许可

  • 专属软件
  • 自由软件
  • 共享软件
  • 免费软件
  • 公共软件

软件工程

软件危机

软件危机的概念

  • 软件危机(software crisis) 是指在计算机软件开发、使用与维护过程中遇到的一系列严重问题。
  • 软件危机主要表现在
    • 对软件开发成本和进度的估计不准确;
    • 软件产品不能完全满足用户的需求;
    • 没有确保软件质量的体系和措施,开发的软件可靠性差;
    • 软件可维护性差;
    • 开发过程无完整、规范的文档资料;
    • 软件开发速度,落后于计算机应用的普及和发展速度;
    • 软件成本在计算机系统总成本中所占比例逐年上升。

产生软件危机的原因

  • 需求难以明确且频繁变更。
  • 软件开发的管理困难。
  • 软件开发独有特点造成开发困难。
  • 软件开发技术落后。
  • 文档的重要性往往被忽视。
  • 软件需求快速发展。

软件工程的概念

软件工程的定义

  • 软件工程是应用工程学、计算机科学、数学及管理科学等原理开发软件的工程。软件工程以提高质量,降低成本为目的,借鉴传统工程学的原则、方法完成软件设计、开发、制造的全过程。其中,计算机科学、数学用于构造模型和设计算法,工程科学用于制定规范、设计范型(paradigm)、评估成本及权衡时间,管理科学用于计划、资源、质量、成本等管理。

软件工程基本原理

(1)用分阶段的生命周期计划严格管理开发过程
(2)坚持进行阶段评审
(3)实行严格的产品控制
(4)采用现代程序设计技术
(5)应能清楚地审查结果
(6)合理安排软件开发小组的人员
(7)必须灵活不断地改进软件工程实践

软件工程框架

  • 软件工程的框架可概括为目标、过程和原则。
条目说明
软件工程目标生产具有正确性、可用性和成本合宜的产品。
软件工程过程指生产一个最终满足需求且达到工程目标的软件产品所需要的步骤。
软件工程原则包括围绕工程设计、工程支持和工程管理所提出的基本规范。

1)采用合适的设计方法
2)选取适宜的开发模型
3)提供高质量的工程支撑
4)重视软件工程的管理

软件工程三要素

  • 软件工程的三要素包括 过程,方法,工具

软件工程方法学

软件工程方法

结构化方法

  • 其基本思想是:把一个复杂问题的求解过程分阶段进行,而且这种分解是自顶向下,逐层分解,使得每个阶段处理的问题都控制在人们容易理解和处理的范围内。
方面表现
问题的规模上由大到小
问题的复杂程度上由繁到简
解决问题的策略方面分而治之
数学模型大问题划分为若干性质相同的小问题,由若干相同或类似的小问题的解决方案形成原始大问题的解决方案,小问题的解决方案由若干功能独立的模块构成
  • 结构化方法将软件生命周期的全过程依次划分为若干个阶段,采用结构化技术来完成每个阶段的任务。其特点是强调自顶向下顺序地完成软件开发的各阶段任务。

面向对象方法

  • 面向对象方法在概念和表示方法上的一致性,保证了各项开发活动之间的平滑过渡。
  • 面向对象开发方法主要有Booch方法、Coad方法、OMT方法以及UML等。

形式化方法

  • 形式化方法以数学为基础,其目标是建立精确的、无二义性的语义,对系统开发的各个阶段进行有效的描述,使系统的结构具有先天的合理性、正确性和良好的维护性,能较好地满足用户需求。

软件工程工具

  • 软件工程工具为软件工程方法提供了自动的或半自动的软件支撑环境。软件设计与开发的不同阶段对应不同的工具,包括需求分析工具、设计工具、实现工具、测试工具、维护工具、配置工具等。软件工具的功能是在软件开发各个阶段帮助开发者控制开发中的复杂性,提高工作质量和效率。

软件工程过程

  • 软件工程过程是指开发软件产品的一组活动及其结果,即人们用于开发和维护软件及其相关过程的一系列活动,包括软件工程活动和软件管理活动。

软件生命周期

软件生命周期概念

  • 软件生命周期指的是从软件思想萌芽到软件产品消亡的整个时间阶段;软件产品从形成概念开始,经过开发、运行和维护,直到最终被废弃的全过程,称为软件生命周期(Software-Life-Cycle,SLC)。

软件定义阶段

  • 软件定义阶段的任务是**确定软件开发工程必须完成的总目标,确定工程的可行性,导出实现工程目标应该采用的策略方案及系统必须完成的功能,估计完成该项工程需要的资源和成本,并且制定工程进度表。**这个阶段的工作通常由系统分析员和用户共同完成。
  • 软件定义阶段集中于解决“做什么”,通常包括三个步骤,即问题定义、可行性研究和需求分析。

(用户提出软件需求,系统分析人员根据用户需求归纳出若干问题-建模,模型求解方案)

软件开发阶段

  • 软件开发阶段集中于“如何做”,通常包括四个步骤:
    1. 概要设计
    2. 详细设计
    3. 软件实现
    4. 软件测试(软件开发是按照需求分析的要求,由抽象到具体,逐步生成软件的过程。

软件支持阶段

  • 软件支持阶段关注于“变化”(用户需求变化,软件随之变化),其主要任务是使软件持久地满足用户的需要。具体地说,当软件在运行过程中发现错误时应该加以改正;当环境改变时应该修改软件以适应新的环境;当用户有新要求时应该及时改进软件以满足用户的新需要。软件支持阶段通常包括软件运行、软件维护。

软件生命周期模型

瀑布模型

  • 瀑布模型(waterfall model)是一种线性顺序模型,也称为“传统生命周期”

在这里插入图片描述

特点说明
阶段间具有顺序性和依赖性每阶段都有明确的前驱及后继,顺序不可颠倒,前驱阶段的输出直接影响后继阶段的输入,而后继阶段的工作依赖于前驱阶段的成果
推迟实现的观点高度重视编码之前各阶段的工作质量,在时间允许的情况下尽可能推迟软件实现阶段的工作,否则可能会因前期工作遗留问题导致大量的返工性重复劳动
质量保证的观点各阶段相对独立,阶段性成果责任明确,质量可控

演化模型

  • 演化模型(evolutionary model)又称原型模型,主要针对事先不能完整定义需求的软件项目开发。(具有明显的周期性迭代特征)

在这里插入图片描述

增量模型

  • 增量模型(incremental model)融合了瀑布模型的基本成分(重复应用)和原型实现的迭代特征,该模型采用随着日程时间的进展而交错的线性序列,每一个线性序列产生软件的一个可发布的“增量”。

螺旋模型

  • 螺旋模型(spiral model)是瀑布模型与演化模型相结合,并增加两者所忽略的风险分析而产生的一种模型。螺旋模型将开发划分为制定计划、风险计划、实施开发和客户评估四类活动。

在这里插入图片描述

喷泉模型

  • 喷泉模型(fountain model)是一种以用户需求为动力、以对象为驱动的模型,主要用于描述面向对象的软件开发过程。

微软公司软件开发周期

阶段工作
规划阶段在产品的规划阶段要做三件事:拟定基于客户数据的目标描述、基于目标描述的规格/特性说明和基于规格说明和特性优先级制定的进度表
设计阶段在设计阶段,程序经理根据产品远景目标,完成产品的功能特性的规格说明书的设计,并确定产品开发的主要进度表。
开发阶段在产品开发阶段,开发人员负责根据产品功能特性规格说明书的要求,完成产品的开发工作。
开发阶段的主要工作是完成产品中所有组件的开发工作(包括代码和文档),此外还包括审核设计文档、安装并配置开发环境、代码检入工作、每日产品生成以及管理Bug(漏洞))数据库等。
稳定阶段稳定阶段也称为测试阶段,或QA阶段。
发布阶段项目组发布产品或解决方案,稳定发布过程,并将项目移交到运营和支持人员手中,以获得最终用户对项目的认可。

补充题

  • 软件工程的出现主要是由于( 软件危机的出现
  • 软件工程的提出起源于软件危机,而其目的应该是最终解决软件的( 生产工程化 ) 问题
  • 在软件研制过程中,CASE是指( 计算机辅助软件工程
  • 在结构化方法中,软件功能分解属于软件开发中的( 总体设计
  • 结构化分析方法就是面向( 数据流 ) 的自顶向下逐步求精进行需求分析的方法,其基本思想是软件功能的分解和抽象
  • 软件开发的结构化分析方法,常用的描述软件功能需求的工具是(数据流图、数据字典
  • 在软件生命周期中,耗费时间最长的是(维护阶段
  • 软件工程经验证明软件开发中要掌握40-20-40规则,它强调了软件开发中( 分析、设计和测试 )的比重
  • 概要设计的结果是提供一份( ** 模块说明书**)
  • 螺旋模型是在瀑布模型和演化模型的基础上增加了风险分析活动
  • 软件的生产经历了程序设计、程序系统和 (软件工程) 3个阶段
  • 软件文档是软件工程实施中的重要成分,它不仅是软件开发的各阶段的重要依据,而且也影响软件的 (可维护性) 。
  • 若网络中很多用户都需要安装使用同一软件时,则应购买该软件的(许可证
  • 软件工程的目的是成功地建造大型的软件系统,主要内容是软件开发技术和 (软件工程管理) 两方面
  • 软件开发方法学的主要目的是克服软件手工生产,使软件开发能进入工程化和(规范化) 的环境
  • (问题定义)阶段的任务是确定软件系统所要解决的问题
  • 软件概要设计的成果是(软件设计说明书
  • 详细设计)阶段主要完成的任务是确定每个模块的具体执行过程
  • 基本的软件测试包括单元测试、(集成测试) 和验收测试。
  • 软件设计包括 (概要设计) 和详细设计两个阶段
  • 在演化模型中,通常把第一次试验性开发出的软件称为(原型
  • 增量模型与原型实现不一样的是其 (可操作性) ,强调每一个增量均发布一个产品
  • 常见的软件开发模型中, (喷泉) 模型主要用来描述面向对象的软件开发过程
  • UML是 (统一建模语言
  • CMM模型是指(软件能力成熟度模型
  • CMM模型提供了5个级别,分别是 (初始级,可重复级,确定级,管理级,优化级
  • 为了保护软件开发者的权益,我国已制定了一些与计算机软件相关的法律,目前计算机软件的法律保护手段主要有3种,其中包括(专利法 著作权法 商业秘密法

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

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

相关文章

【RPC】网络通信:哪种网络IO模型最适合RPC框架?

一、背景 RPC是解决进程间通信的一种方式。一次RPC调用,本质就是服务消费者与服务提供者间的一次网络信息交换的过程。服务调用者通过网络IO发送一条请求消息,服务提供者接收并解析,处理完相关的业务逻辑之后,再发送一条响应消息…

AttributeError: module ‘openai‘ has no attribute ‘error‘解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

Flink实战之运行架构

本文章:重点是分析清楚运行架构以及并行度与slot的分配 1、JobManager和TaskManager Flink中的节点可以分为JobManager和TaskManager。 JobManager处理器也称为Master,用于协调分布式任务执行。他们用来调度task进行具体的任务。TaskManager处理器也称…

海思SD3403,SS928/926,hi3519dv500,hi3516dv500移植yolov7,yolov8(9)

上一节yolov8的训练已经完成了,现在要开始做模型的转换了,这里和yolov7方式相似,但是有一些差异,尤其是yolov7的不带NMS部分的输出顺序和yolov8的输出顺序与格式是有差异的。 首先还是要自己手动加入rpn_op,这里包含了filter,sort,nms部分。 我们一个一个看,首先filter.py…

从零开始的源码搭建:详解连锁餐饮行业中的点餐小程序开发

时下,点餐小程序成为了许多餐饮企业引入的一种创新工具,不仅方便了顾客的用餐体验,同时也提高了餐厅的运营效率。本文将详细探讨如何从零开始搭建一个源码,并深入解析连锁餐饮行业中的点餐小程序开发过程。 一、需求分析与规划 在…

运维工具之tmux命令

tmux终端复用器的使用 1.tmux的概念 ​ tmux,“Terminal MultipleXer”,意思是"终端复用器"。是一个可以让人们通过一个窗口操作多个会话的工具,对于经常操作Linux系统的运维人员来说,绝对是一款提高工作效率的利器。 2.tmux能帮…

计算机网络 应用层

文章目录 应用层域名系统 DNS域名系统概述互联网的域名结构域名服务器 文件传送协议FTP 概述FTP 的基本工作原理简单文件传送协议 TFTP 远程终端协议 TELNET万维网 WWW统一资源定位符 URL超文本传送协议 HTTP万维网的信息检索系统 电子邮件电子邮件概述简单邮件传送协议 SMTP邮…

微服务基础设施怎么建设,如何选择微服务框架

微服务基础设施架构全貌 微服务 vs SOA 微服务基础设施优先级 微服务框架核心 模式1-嵌入式SDK式 【优点】 1. 架构简单,天然支持高性能、高可用; 2. 维护简单,无需维护独立的 Proxy 节点。 【缺点】 1. 应用侵入,需要集成 SD…

Leetcode2645. 构造有效字符串的最少插入数

Every day a Leetcode 题目来源:2645. 构造有效字符串的最少插入数 解法1:枚举 数学 word 仅由字母 “a”、“b” 和 “c” 组成。 因此我们只需要每次统计相邻字符之间的编号差再减去 1(并进行一定修正),就可以得…

CAN 节点状态转换

CAN节点 按照错误严重程度可分为三种不同的状态 主动错误状态(Error Active) 被动错误状态(Error Passive) 总线关闭状态(Bus Off) 存在两种错误计数器 发送错误计数值 TEC : Transmit Error Counter …

Js-web APIs(一)

目录 Web API 基本认知 • 作用和分类 • 什么是DOM • DOM树 • DOM对象(重要) 获取DOM对象 • 根据CSS选择器来获取DOM元素 (重点) 1.选择匹配的第一个元素 2.选择匹配的多个元素 • 其他获取DOM元素方法(了解) 操作元素内容 • 对象.innerT…

WPF应用程序生存期以及相关事件

WPF 应用程序的生存期会通过 Application 引发的几个事件来加以标记,相关事件对应着应用程序何时启动、激活、停用和关闭。 应用程序生存期事件 • 独立应用程序(传统风格的 Windows 应用程序,这些应用程序作为要安装到客户端计算机并从客户端计算机运…

数据结构与算法教程,数据结构C语言版教程!(第四部分、字符串,数据结构中的串存储结构)三

第四部分、字符串,数据结构中的串存储结构 串存储结构,也就是存储字符串的数据结构。 很明显,字符串之间的逻辑关系也是“一对一”,用线性表的思维不难想出,串存储结构也有顺序存储和链式存储。 提到字符串&#xff…

力扣刷MySQL-第二弹(详细解析)

🎉欢迎您来到我的MySQL基础复习专栏 ☆* o(≧▽≦)o *☆哈喽~我是小小恶斯法克🍹 ✨博客主页:小小恶斯法克的博客 🎈该系列文章专栏:力扣刷题讲解-MySQL 🍹文章作者技术和水平很有限,如果文中出…

IP定位技术在网络安全行业的探索

随着互联网的普及和深入生活,网络安全问题日益受到人们的关注。作为网络安全领域的重要技术,IP定位技术正逐渐成为行业研究的热点。本文将深入探讨IP定位技术在网络安全行业的应用和探索。 一、IP定位技术的概述 IP定位技术是通过IP地址来确定设备地理位…

FRE123|开源! 普通人如何快速免费搭建个性化导航网站

FRE123 - Free Resource for Everyone:老胡信息周刊的衍生项目,核心目的是用技术打破信息差,为每个人提供免费优质资源。 老胡的信息周刊在第三个年头,希望这个系列也能持续更新下去: 01.FRE123|老胡周刊免费资源之启动…

什么是防火墙?

目录 什么是防火墙,为什么需要防火墙?防火墙与交换机、路由器对比防火墙和路由器实现安全控制的区别防火墙的发展史1989年至1994年1995年至2004年2005年至今 什么是防火墙,为什么需要防火墙? “防火墙”一词起源于建筑领域&#x…

backtrader策略库:强化学习一: 梯度提升( Gradient Ascent)

本文来自博客文章,文末含源码链接。 In the next few posts, I will be going over a strategy that uses Machine Learning to determine what trades to execute. Before we start going over the strategy, we will go over one of the algorithms it uses: Gra…

软件研发过程中,项目管理工具应该如何选择?

本文作者:极狐GitLab 资深解决方案架构师 尹学峰 许多企业依旧在用老旧的方式,如Excel离线表格进行项目管理。表格无法简介的呈现出项目的任务分解、完成进度、任务类别等多种项目管理过程中必备的要求,更无法实现与企业员工的日常即时通信系…

一、ArcGIS Pro SDK for Microsoft .NET 开发环境配置

ArcGIS Pro二次开发需要的工具: 1.Visual Studio 2.ArcGIS Pro SDK 一、Visual Studio安装 经过查阅资料,ArcGIS Pro3.0版本需要安装Visual Studio2022版,因为只有22版的才会有有ArcGIS Pro3.0以上版对应ArcGIS Pro SDK,因此&…