1:软件的定义
是一系列按照特定顺序组织的计算机数据和指令的集合
2:软件开发模式
软件开发有6中模型
1.瀑布模型
定义:将软件生命周期的各项活动规定为按固定顺序而链接的若干阶段工作,形如瀑布流水,最终得到软件产品的项目
优点:1.为项目提供了按阶段划分的检查点
2.当前一阶段完成后,只需要去关注后续阶段。
缺点:1.各个阶段的划分玩全固定,阶段之间产生大量的文档,极大的增加了工作量。
2.由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。
3.通过过多的强制完成日期和里程碑来跟踪各个项目阶段。
4.瀑布模型的突出缺点是不适应
2.快速原型模型
快速原型模型的第一步是建造一个快速原型,实现客户或未来的用户与系统的交互,用户或客户对原型进行评价,进一部细化待开发软件的需求。通过逐步调整原型使其满足客户的要求,开发人员可以确定客户的真正需求是什么;第二步则在第一步的基础上开发客户满意的软件产品。
快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。
3.螺旋模型
1988年,巴利.玻姆正式发表了软件系统开发的“螺旋模型”,它将瀑布模型和快速原型模型结合起来,强调了其他模型所忽视的风险分析,特别适合于大型复杂的系统。
螺旋模型沿着螺线进行若干次迭代,图中的四个象限代表了以下活动:
1:指定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件;
2.风险分析:分析评估所选方案,考虑如何识别和消除风险;
3.实施工程:实施软件开发和验证;
4.客户评估:评价开发工作,提出修正建议,指定下一步计划。
螺旋模型由风险驱动,强调可选方案和约束条件从而支持软件的重用,有助于将软件质量作为特殊目标融入产品开发之中。但是,螺旋模型也有一定的限制条件,具体如下:
1.螺旋模型强调风险分析,但要求许多客户接受和相信这种分析,并作出相关反应是不容易的,因此,这种模型往往适应于内部的大规模软件开发。
2.如果执行风险分析将大大影响项目的利润,那么进行风险分析毫无意义,因此,螺旋模型只适合于大规模软件项目。
3.软件开发人员应该擅长寻找可能的风险,准确地分析风险,否则将会带来更大的风险
4.迭代模型
迭代模型(也被称作迭代增量式开发或迭代进化式开发)是一种与传统的瀑布式开发相反的软件开发过程,它弥补了传统开发方式中的一些弱点,具有更高的成功率和生产率。
在迭代式开发方法中,整个开发工作被组织为一系列的短小的、固定长度(如3周)的小项目,被称为一系列的迭代。每一次迭代都包括了需求分析、设计、实现与测试。采用这种方法,开发工作可以在需求被完整地确定之前启动,并再一次迭代中完成系统的一部分功能或业务逻辑的开发工作。再通过客户的反馈来细化需求,并开始新一轮的迭代。
与传统的瀑布模型相比较,得带工程具有以下优点:
1.降低了再一个增量上的开支风险如果开发人员重复某个迭代,那么损失只是这一个开发有无的迭代的花费。
5.增量模型
6.敏捷开发模式
3.软件开发的特性
1.功能性
1.适应性
2.准确性
3.互操作性
4.安全性
5.功能合归性
2.可靠性
1.成熟性
2.容错性
3.易恢复性
4.可靠合规性
3.可使用性
1.易理解性
2.易学习性
3.易操作性
4.用户黏性
5.易用合规性
4.效率
1.时间特性
2.资源利用率
3.效率合规性
5.可维护性
1.易分析性
2.稳定性
3.易变更性
4.易测试性
5.可维护合规性
6.可移植性
1.适应性
2.易安装性
3.共存性
4.易替换性
5.可移植合规性
4:影响软件质量的因素
现代社会处处离不开软件,为保证人们生活工作正常有序地进行,就要严格控制好软件的质量。由于软件自 身的特点和目前的软件开发模式使得隐藏在软件内部的质量缺陷无法完全根除,因此每一款软件都会存在 一些质量问题。影响软件质量的因素有很多,下面介绍几种比较常见的影响因素。
1. 需求模糊 在软件开发之前,确定软件需求是一项非常重要的工作,它是后面软件设计与软件开发的基础,也是最后软 件验收的标准。但是软件需求是不可视的,往往也说不清楚,导致产品设计、开发人员与客户存在一定的理 解误差,开发人员对软件的真正需求不明确,结果开发出的产品与实际需求不符,这势必会影响软件的质量。 除此之外,在开发过程中客户往往会一而再再而三地变更需求,导致开发人员频繁地修改代码,这可能会导 致软件在设计时期存在不能调和的误差,最终影响软件的质量。
2.软件开发缺乏规范性文件指导 现代软件开发,大多数团队都将精力放在开发成本与开发周期上,而不太重视团队成员的工作规范,导致团 队成员开发“随意性”比较大,这也会影响软件质量,而且一旦最后软件出现质量问题,也很难定责,导致后期 维护困难。
3.软件开发人员问题 软件是由人开发出来的,因此个人的意识对产品的影响非常大。除了个人技术水平限制,开发人员问题还包 括人员流动,新来的成员可能会继承上一任的产品接着开发下去,两个人的思维意识、技术水平等都会不 同,导致软件开发前后不一致,进而影响软件质量。
4.缺乏软件质量控制管理 在软件开发行业,并没有一个量化的指标去度量一款软件的质量,软件开发的管理人员更关注开发成本和进 度,毕竟这是显而易见的,并且是可以度量的。但软件质量则不同,软件质量无法用具体的量化指标去度量, 而且软件开发的质量并没有落实到具体的责任人,因此很少有人关心软件最终的质量。
5:软件分类
1.根据应用场景分类:
工具类软件、游戏型软件、媒体型软件、电商型软件等
2.根据软件架构分类:
单机版软件、分布式软件
3.单机版软件:
office、红警等
4.分布式软件:
C/S架构软件 客户端需安装专门软件,如QQ 微信等 B/S架构软件 客户端为浏览器 ,如百度、hao123等