软件开发的概述

软件概述

软件的定义:
​ 操作系统 ‘简称OS ’ 是管理和控制计算机硬件与软件资源的计算机程序,是直接运行在 “裸机”上的最基本的系统软件,任何其他软件都必须在操作系统的支持下才能运行。

一般来讲软件被划分为系统软件、应用软件和介于这两者之间的中间件

软件就是一系列按照特定顺序组织额计算机数据和指令的集合。

软件开发模式:
(1). 瀑布模型:也称为生命周期,是结构化方法中最常用的开发模型,它把软件开发的过程分为软件计 划、 需求分析、软件设计、程序编码、软件测试和运行维护6个阶段

定义阶段:软件计划、需求分析
开发阶段:软件设计、程序编码、软件测试
维护阶段:运行和维护
优点:
为项目提供了按阶段划分的检查点
当前一个阶段完成后,只需要取关注后续的阶段
他提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在这个模板下有一个共同的指导
缺点:
各个阶段之间产生大量的文档,极大的增加了工作量
由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发结果,增加了开发的风险。
不适当用户需求的变化,并且会在需求分析的阶段不可能完全获取
在软件开发前期未发现的错误传到后面的开发工作中时,可能会扩散,进而可能会导致整个软件项目开发失败。
所以,瀑布模型适用于需求明确很少变更的项目。
(2).快速原型模型:快速原型模型是利用原型辅助开发的一种新思想,经过简单的快速分析,快速搭建一 - 个可运行的软件原型,以便理解和澄清问题,使开发人软与用户达成共识,最终在确定的用户需求基- - 础上开发客户满意的产品。

原型模型可分为三类:
探索型模型:主要用于需求分析阶段,目的是要弄清楚用户的需求,探索各种方案的可行性。他主要是针对开发目标模糊,用户与开发人员对项目都缺乏经验的情况,通过对原型的开发来说明用户的需求
实验型原型:主要用于设计阶段,考核实现方案是否合适,是否能实现,对于大型的系统,若对设计方案心中没有把握时,可通过这种原型开证明设计方案的正确性。
演化型原型:主要用于及早的香用户提交一个原型系统,该原型系统或者包含系统的框架,或者包含系统的主要功能,在得到用户的认可性后,将原型系统不断演变为最终的软件系统
(3). 螺旋模型:将瀑布模型和演化模型相结合,综合了两者的优点,并增加了风险分析,他是以原型为基 - 础,沿着螺线自内向外旋转,每旋转一圈都要经过制定计划,、风险分析、实施工程及客户评价等工- - 作,并开发原型的一个新版本,经过若干次螺旋上升的过程,得到最终的系统。

螺旋模型的优点:
设计上灵活,可以在项目的各个阶段进行变更。
一小的分段来构建大型系统,使成本计算变得简单容易
客户始终参与每个阶段的开发,保证了项目不偏离正确方向
随着项目的推进,客户始终掌握项目的最新信息,从而能够和管理层有效的交互。
螺旋模型的缺点:
需要具有相当丰富的风险评估经验和专门知识,如果未能够及时标识风险,势必造成重大损失
过多的迭代次数会增加开发成本,延迟提交的时间。
(4). 迭代模型:也被称为迭代增量式开发或者迭代进化式开发,是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。

​ 在迭代开发方法中,整个开发工作被组织为一系列的短小的、固定长度(3周期)的小项目,被称为一系列的迭代,每一次迭代都包括了需求分析、设计、实现与测试,采用这种方法,开发工作可以在需求被完成的确定之前启动,并在一次迭代中完成系统的一部分功能活业务逻辑的开发工作。在通过客户的反馈来细化需求,并开始新一轮的迭代。

​ 教学中,对迭代和版本的区别,可理解如下: 迭代一般指某版本的生产过程,包括从需求分析到测试完成; 版本一般指某阶段软件开发的结果,一个可交付使用的产品。

与传统的瀑布模型相比较,迭代过程具有以下优点:

1)降低了在一个增量上的开支风险。如果开发人员重复某个迭代,那么损失只是这一个开发有误的迭代的花费。

2)降低了产品无法按照既定进度进入市场的风险。通过在开发早期就确定风险,可以尽早来解决而不至于在开发后期匆匆忙忙。

3)加快了整个开发工作的进度。因为开发人员清楚问题的焦点所在,他们的工作会更有效率。

4)由于用户的需求并不能在一开始就作出完全的界定,它们通常是在后续阶段中不断细化的。因此,迭代过程这种模式使适应需求的变化会更容易些。因此复用性更高

(5). 增量模型:增量模型也称渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来 设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能

​ 使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能

​ 把软件产品分解成增量构件时,唯一必须遵守的约束条件是,当把新构件集成到现有构件中时,所形 成的产品必须是可测试的

增量模型的特点:

优点:

能在较短的时间内向用户提交可完成部分工作的产品

将待开发的软件系统模块化,可以分批次地提交软件产品,使用户可以及时了解软件项目的进展

以组件为单位进行开发降低了软件开发的风险。一个开发周期内的错误不会影响到整个软件系统

开发顺序灵活。开发人员可以对组件的实现顺序进行优先级排序,先完成需求稳定的核心组件。当组件的优先级发生变化时,还能及时地对实现顺序进行调整

(6). 敏捷开发模型:敏捷开发(Aglie)是一种以人为核心、迭代、循序渐进的开发方法,在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征,简单的来说,敏捷开发并不追求前期完美的设计、完美编码、而是力求在很短的周期内开发出产品的核心功能,尽早发布出可用的版本,然后在后续的生产周期内,按照新需求不断迭代升级,完善产品。

核心:
开发团队及在开发团队内部进行最快速、有效的传递信息的方法是面对面交谈。
在整个项目开发期间,业务人员和开发人员必须朝夕工作在一起。
提倡可持续发展,出资人、开发人员及使用这应该共同维持稳定的开发速度。
为了增强敏捷能力,应持续关注技术上的杰出成果和良好的设计。
3.软件质量概述:
软件质量体现在三个方面:

软件质量符合需求才算合格,就是无论你软件做的多好,只要你没有按照需求就是不合格;

软件开发中有些隐含的需求没有提出来,你也要在开发中把这个需求加上去,如软件要有良好的维护性

开发软件是必须按照开发准则来;

总结:一句话来说就是必须按照客户的要求来,客户提出什么要求你就要做到什么结果,度量软件属性可知道软件质量的优劣

3.1软件质量模型
软件质量模型有6大特性、27个自特性组成。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Aog7tkA-1632231012060)(C:\Users\Administrator\Desktop\测试知识点\模型实例.png)]

功能性:满足用户明确的隐含的需求功能。

易用性:软件在指定的条件下,维护规定的性能级别的能力。

可靠性有 “三规” 指定的环境,规定的时间,规定的性能。

可靠性指标:平均无故障时间(MTTF),平均恢复时间(MTTR),平均失效间隔时间(MTBR)

​ MTTR:越小,说明故障修复时间越短,故障响应速度越快。

​ MTBR:越大,说明故障率低,系统可靠性较高

效率性:在规定条件下,相对于所有资源的数量,软件可提供适当性能的能力。

可移植性:从一种环境移到另一种环境中能力

3.2影响软件质量的因素
​ 随着计算机技术的发展,建立起来一个应用系统并不困难,困难的是如何让应用系统真正产生效益,很多信息虽然运转起来,但是利用率很低,这其中可能有众多原因,导致信息系统运行的效果,未能达到前期设计的目标,其中以下是影响软件质量的几个因素:

(1). 设计时需求不明确

​ 应用去求不明确,影响数据完整性和准确度,在系统开发之初,管理者说不清楚应用需求,设计目标男明确,系统开发中,不断冒出新需求,计划赶不上变化,系统开发完后,为了适应众口难调状况,修改、完善周期拖的很长,

(2). 开发方式落后

​ 原始数据时由业务干部掌握的,相关性也是他们最清楚,但是他们不懂计算机程序,而编程人员大多数不熟悉业务,对相关性也难以理解,很难编写出业务人员使用方便、适用面宽、有很灵活的口径调整工具,长期以来两类人员不易沟通,数据口径调整就成了老大难问题。

(3). 对数据准备认识不足

​ 一些单位对于档案数据的重要性缺乏认识,以为计算机时万能的机器,数据质量差些不要紧,也有的单位仅仅是 赶时髦 才盲目购买机器,对数据工作的难度、工作量缺乏思想准备,还有的单位是为了应付评比检查,并没有真正吧自动化检索提到议事日程。

4. 软件分类
4.1 根据应用场景分类
​ 工具类软件,游戏型软件,媒体型软件,电商类软件等等…

4.2 根据软甲架构分类
​ 单机版软件, 分布式软件 等等

​ 单机版软件:office,红警等等,word

​ 分布式软件:C/S架构(客户端需要安装专门软件 qq 微信一系列)

​ B/S架构(客户端为浏览器,百度 1234…)

4.3 软件开发系统生态
​ 软件开发生态系统 目前是最流行 常见的由 app,微信小程序,公众号,前段和后台等

4.4 前端
前端是什么?
前端就是web前端,是指web网站的前台页面,在我们打开死一个网站所见到网页界面的内容以及交互体验,一般都是由前端工程师进行开发设计的页面,该内容属于前端部分。

前端能做什么?
前端主要负责用户可见的界面,比如网站网页设计,App界面展示与交互程序设计,游戏前端界面窗口模块及其他交互动效的展示等,通过利用 html/css/JavaScript等各种web技术进行产品的界面开发,将美工设计的效果图,设计成浏览器可以运行的网页。

前端需要学校那些技术?
基础:html-css-JavaScript,html5-css3,

进阶:各种框架,bootstrap,jquery,vue,angular

其他:http,一门后端语言,网站优化等

4.5 后端
​ 后端开发主要是让服务器、应用、数据库能够彼此交互,需要考虑如何功能实现、数据的存取,平台的稳定性与性能,

​ 简单而言,后端的主要工作及时根据产品功能点的需求文档,交互原型和前端配合,指定最有效且精简的方案,把产品功能点实现出来

a

ular

其他:http,一门后端语言,网站优化等

4.5 后端
​ 后端开发主要是让服务器、应用、数据库能够彼此交互,需要考虑如何功能实现、数据的存取,平台的稳定性与性能,

​ 简单而言,后端的主要工作及时根据产品功能点的需求文档,交互原型和前端配合,指定最有效且精简的方案,把产品功能点实现出来

a
————————————————
版权声明:本文为CSDN博主「m0_52891848」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_52891848/article/details/120405770

你可能感兴趣的:(软件开发)