计算机导论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种,其中包括(专利法 著作权法 商业秘密法

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

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

相关文章

Mysql 编译安装部署

Mysql 编译安装部署 环境: 172.20.26.198(Centos7.6) 源码安装Mysql-5.7 大概步骤如下: 1、上传mysql-5.7.28.tar.gz 、boost_1_59_0.tar 到/usr/src 目录下 2、安装依赖 3、cmake 4、make && make install 5、…

(上) C语言中的语句分类及分支语句:if语句、switch语句介绍

目录 前言 一、语句的分类 1. 空语句 2. 表达式语句 3. 函数调用语句 4. 复合语句 5. 控制语句 二、分支语句 1. if语句 (1) if的使用 (2) else的使用 (3) 分支中包含多条语句 (4) 嵌套if (5) 悬空else问题 2. switch语句 (1) if语句和switch语句的对比 (2) s…

触摸屏监控双速电动机-确定地址分配

I/O地址分配 当选择了PLC之后,首先需要确定的是系统中各I/O点的绝对地址。在某些PLC 中1/O绝对地址的分配方式共有固定地址型、自动分配型、用户定义型3种。实际所使用的方式取决于所采用的PLC的CPU型号、编程软件、软件版本、编程人员的选择等因素。 本任务输入信…

鸿蒙 HarmonyOS ArkTS ArkUI 动画 中心缩放、顶部缩放、纵向缩放

EntryComponentstruct Index {State widthA: number 200State heightA: number 200onPageShow():void{animateTo ( {duration: 2000,iterations: -1,curve:Curve.Linear}, () > {this.widthA 0this.heightA 0} )}build() {Column() {// 中心缩放Column(){}.width(this.wi…

QT+opencv源码编译

时间记录:2024/1/20 一、版本介绍 QT5.12.7cmake3.22.0opencv4.5.4 二、编译步骤 (1)下载opencv源码,然后安装,opencv的安装即对源码的解压过程,解压后的文件目录如下 (2)openc…

全开源多城市同城信息小程序源码(Laravel 框架),同城分类信息发布便民小程序系统【非DZ】

同城生活分类信息小程序,人才招聘、房产二手 多城市地区同城分类信息发布,商家入驻等功能 小程序前后端代码开源无加密,可进行二次开发 【源码运行要求】 1、需要已认证的微信小程序 2、已备案的域名及服务器空间 推荐使用宝塔面板LinuxPHP…

热血江湖服务端服务器架设教程

热血江湖服务端服务器架设教程 大家好,我是艾西今天简单的说下热血江湖架设需要哪些东西然后怎么操作,不管你是自己玩还是对外开放,这对于有兴趣的小伙伴总的都是一件好事。技多不压身就是这么个道理,当你需要用上时还希望能记起…

Addressables(1) 从安装到加载单个/多个资源

不想再配改那些狗屎路径,准备研究一下Adressable,据说可以用key加载指定的资源 刚安装下来,随便搞了个资源勾选了一下addressable的框框,多了好多东西啊 概念铺天盖地而来,ok 没事的 慢慢来! 前置知识 P…

欧科云链与《警察技术》联合发布技术专题.pdf

欧科云链受《警察技术》邀请,于第201期期刊正式刊登“区块链生态安全与虚拟货币犯罪治理”技术专题。欧科云链作为该技术专题主要作者,直接参与本次期刊2篇文章撰写,同时为多篇文章提供欧科云链的最新数据和研究成果。 《警察技术》期刊创办于…

Python seaborn库的安装与图像的背景风格(Seaborn篇-01)

Python seaborn库的安装与图像的背景风格(Seaborn篇-01)         🍹博主 侯小啾 感谢您的支持与信赖。☀️ 🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ🌹꧔ꦿ�…

使用docker配置semantic slam

一.Docker环境配置 1.拉取Docker镜像 sudo docker pull ubuntu:16.04拉取的为ununtu16版本镜像&#xff0c;环境十分干净&#xff0c;可以通过以下命令查看容器列表 sudo docker images 如果想删除多余的docker image&#xff0c;可以使用指令 sudo docker rmi -f <id&g…

linux 使用笔记

1.查看运行内存 a.Free 快速查看内存的方法&#xff0c;也是经常使用的命令&#xff0c; -h 更人性化的显示内存的单元 -m 以M的形式显示 b.Top Top命令提供了实时性的运行中的程序的资源使用统计。可以根据内存的使用和大小来进行排序。 如上所示&#xff0c;top命令可以看…

伊恩·斯图尔特《改变世界的17个方程》波动方程笔记

主要是课堂的补充&#xff08;yysy&#xff0c;我觉得课堂的教育模式真有够无聊的&#xff0c;PPT、写作业、考试&#xff0c;感受不到知识的魅力。 它告诉我们什么&#xff1f; 小提琴琴弦上某个小段的加速度&#xff0c;与相邻段相对于该段的平均位移成正比。 为什么重要&…

“GPC爬虫池有用吗?

作为光算科技的独有技术&#xff0c;在深入研究谷歌爬虫推出的一种吸引谷歌爬虫的手段 要知道GPC爬虫池是否有用&#xff0c;就要知道谷歌爬虫这一概念&#xff0c;谷歌作为一个搜索引擎&#xff0c;里面有成百上千亿个网站&#xff0c;对于里面的网站内容&#xff0c;自然不可…

c语言算法——大数相加

C数据类型 类型与描述1基本数据类型 它们是算术类型&#xff0c;包括整型&#xff08;int&#xff09;、字符型&#xff08;char&#xff09;、浮点型&#xff08;float&#xff09;和双精度浮点型&#xff08;double&#xff09;。2枚举类型&#xff1a; 它们也是算术类型&am…

R语言的ggplot2绘制分组折线图?

R绘制分组折线图.R 首先看数据情况&#xff1a;group有3组。Time有3组&#xff0c;数据意思是在3组3个时间点测量了某指标&#xff0c;现在要绘制组1、组2、组3某指标y按时间的变化趋势 数据情况&#xff1a; 看看最终的效果图如下&#xff1a; 下面是本次使用的代码 .libPat…

OpenHarmony 应用开发入门 (二、应用程序包结构理解及Ability的跳转,与Android的对比)

在进行应用开发前&#xff0c;对程序的目录及包结构的理解是有必要的。如果之前有过android开发经验的&#xff0c;会发现OpenHarmony的应用开发也很简单&#xff0c;有很多概念是相似的。下面对比android分析总结下鸿蒙的应用程序包结构&#xff0c;以及鸿蒙对比android的诸多…

Spring第七天(AOP)

简介 AOP(Aspect Oriented Programing)面向切面编程&#xff0c;一种编程范式&#xff0c;指导开发者如何组织程序结构 作用 在不惊动原始设计的基础上为其进行功能增强 Spring理念&#xff1a;无入侵式/无侵入式 基本概念 连接点(JoinPoint) : 程序执行过程中的任意位置&a…

ros2学习笔记-CLI工具,记录命令对应操作。

目录 环境变量turtlesim和rqt以初始状态打开rqt node启动节点查看节点列表查看节点更多信息命令行参数 --ros-args topic话题列表话题类型话题列表&#xff0c;附加话题类型根据类型查找话题名查看话题发布的数据查看话题的详细信息查看类型的详细信息给话题发布消息&#xff0…

Bit.Store 加密卡集成主流 BRC20通证,助力 BTC 生态流动性

“Bit.Store 首创性的将包括 ORDI、SATS、以及 RATS 在内的主流 BRC20 资产集成到其加密卡支付中&#xff0c;通过以其推出的加密银行卡为媒介&#xff0c;助力 BTC 生态 Token 的流动性与消费。” 比特币网络在被设计之初&#xff0c;就是以一种去中心化、点对点的现金系统为定…