目录
🍊一、软件存周期
🍊二、软件生存周期模型
🍊三、软件开发方法
🍊四、需求分析
🍊五、内聚和耦合
🍉模块内的独立性--内聚性
🍉模块间的独立性--耦合性
🍊六、软件测试
🍉黑盒测试
🍉白盒测试
🍊七、V模型
🍊八、软件维护
🍊九、软件质量模型
一、软件存周期
问题定义:要解决的问题是什么。
可行性分析:研究问题的范围,是否值得去解,是否有可行的解决办法。
需求分析:确定软件系统必须做什么,确定功能、性能、数据和界面要求,确定逻辑模型。
总体设计:概括地说,如何解决这个问题?制定推荐系统的详细计划并设计软件的结构。
详细设计:怎样具体实现这个系统?对模块完成的功能进行具体描述。
编码和单元测试:写成某种特定程序设计语言表示的源程序清单及测试每一个模块。
综合测试:通过各类型的测试是软件达到预定的要求。
维护:通过各种必要的维护活动使系统持久满足用户的需要。
二、软件生存周期模型
瀑布模型:软件生存周期各个活动规定为依线性顺序连接起来的若干阶段的模型。适合需求明确的模型,但缺乏灵活性,客户需完整表示需求。
演化模型:适合对需求缺乏准确认识的情况,根据用户使用过程中提出的意见和建议对原型不断重复改进。
缺点是要对用户要求加以控制
增量模型:每一个线性序列产生软件的可发布的“增量”,但需对变更进行规划,否则会造成后来增量的不稳定,部分增量可能需重新开放。
螺旋模型:结合瀑布模型和演化模型的特点,并加入了风险分析,适合用户需求的动态变化,适合庞大、复杂并且具有高风险的系统。
喷泉模型:用户需求为基础,适合面向对象开发,开发过程具有迭代性和无间隙性,开发要重复多次,且开发活动不存在明显边界。
三、软件开发方法
结构化方法:自顶而下、逐层分解。原则是分解与抽象,开发周期长,不适用于大规模、复杂的项目以及变化的需求。
原型化方法:适合用户需求不清晰、业务理论不确定、且需求经常变化的情况。适合小规模的项目
面向对象开发方法:包括面向对象分析、设计与实现,适合比较复杂的项目模型。
四、需求分析
需求的任务:系统综合要求、系统数据要求、系统逻辑模型、项目开发计划。
需求的过程:问题识别、分析与综合、编制需求分析文档、需求分析与评审。
需求的分类:功能需求、非功能需求、设计约束。
应用的工具:数据流图(DFD)、数据字典(DD)、判定表、判定树。
五、内聚和耦合
模块内的独立性--内聚性
功能内聚:完成一个单一功能,各个部分协同工作,缺一不可,是最佳的内聚类型。
顺序内聚:处理元素相关,而且必须顺序执行。
通信内聚:所有处理元素集中在一个数据结构的上操作。
过程内聚:处理元素相关,而且必须按特定的次序执行。
瞬时内聚(时间内聚):所包含的任务必须在同一时间间隔内执行。
逻辑内聚:完成逻辑上相关的一组任务。
偶然内聚(巧合内聚):完成一组没有关系或松散关系的任务。
模块间的独立性--耦合性
非直接耦合:两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。
数据耦合:一个模块访问另一个模块时,彼此之间是通过简单数据参数来交换输入、输出信息的。
标记耦合:一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,而不是简单变量。其实传递的是这个数据结构的地址;
控制耦合:如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。
公共耦合:若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。
内容耦合:如果发生下列情形,两个模块之间就发生了内容耦合。
(1)一个模块直接访问另一个模块的内部数据;
(2)一个模块不通过正常入口转到另一模块内部;
(3)两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
(4)一个模块有多个入口。
六、软件测试
黑盒测试
等价类划分、边界值分析、错误推断和因果图。
白盒测试
(1)语句覆盖。被测程序的每个语句至少执行一次。是一种很弱的覆盖标准。
(2)判定覆盖。也称为分支覆盖,判定表达式至少获得一次“真”、“假”值。判定覆盖比语句覆盖强。
(3)条件覆盖。每个逻辑条件的各种可能的值都满足一次。
(4)路径覆盖。覆盖所有可能的路径。
(5)判定/条件覆盖。每个条件所以可能的值(真/假)至少出现一次。
(6)条件组合覆盖。每个条件的各种可能值的组合都至少出现一次。
白盒测试也称为结构测试,测试的是程序内部结构和逻辑过程,所以用在功能模块的单元测试中,多个模块可以同时进行。集成测试是把功能模块组合起来进行测试,测试的是各个模块集成起来后有没有达到预期的功能。确认测试是指进一步检查软件的接口、功能和性能是否与用户要求一样。系统测试是指软件与网络、外部设备等其他因素结合部署工作的情况。
七、V模型
V模型大体可以划分为以下几个不同的阶段步骤:需求分析、概要设计、详细设计、软件编码、单元测试、集成测试、系统测试、验收测试。
软件测试过程的V模型指出,左边从上到下依次是软件开发过程的各个阶段,以用户需求为基础,进行需求分析一系统设计一详细设计一编码,而右边从下到上分别对应单元测试-集成测试一系统测试一验收测试。即使单元测试发现的问题归根到底也是不符合用户需求的问题。同样,所有测试发现的问题都可以追溯到用户需求。
验收测试计划应在需求分析阶段来做,系统测试计划和系统测试设计应在系统设计阶段完成,集成测试和单元测试的计划和测试方案设计应在详细设计阶段完成。编码完成后,就要按有关计划逐步实施这些测试。
八、软件维护
正确性维护:是指改正在系统开发阶段己发生而系统测试阶段尚未发现的错误;
(17%~21%)
适应性维护:是指使应用软件适应新技术变化和管理需求变化而进行的修改;(18%~25%)
完善性维护:是指为扩充功能和改善性能而进行的修改,主要是指对已有的软件系统增加一些在系统分析和设计阶段中没有规定的功能与性能特征:(50%~60%)
预防性维护:是指为了改进应用软件的可靠性和可维护性,为了适应未来的软硬件环境的变化,主动增加预防性的功能,以使应用系统适应各类变化而不被淘汰。(4%)
九、软件质量模型
功能性(适合性、准确性、互操作性、保密安全性、功能性的依从性)
可靠性(成熟性、容错性、易恢复性、可靠性的依从性)
易用性(易理解性、易学性、易操作性、吸引性、易用性的依从性)
效率性(时间特性、资源利用性、效率依从性)
软件维护性(易分析性、易改变性、稳定性、易测试性、维护性的依从性)
软件可移植性(适应性、易安装性、共存性、易替换性、可移植性的依从性)