目录
软件过程模型
瀑布模型
软件的生存周期中的各个活动规定为依线性顺序连接的若干阶段的模型,包括需求分析,设计,编码,测试,运行与维护。
增量模型 :
融合来瀑布模型的基本成分和原型实现的迭代特征,他假设可以将需求分段为一系列增量产品,每一增量可以分别开发。
🍀增量模型作为瀑布模型的一个变体,具有瀑布模型的所有优点。此外,它还具有以下优点:第一个可交付版本所需要的成本和时间很少;开发由增量表示的小系统所承担的风险不大由于很快发布了第一个版本,因此可以减少用户需求的变更:运行增量投资,即在项目开始时,可以仅对一个或两个增量进行投资。
💥增量模型有以下不足之处:如果没有对用户变更的要求进行规划,那么产生的初始量可能会造成后来增量的不稳定;如果需求不像早期思考的那样稳定和完整,那么一些增量就可能需要重新开发,重新发布;管理发生的成本、进度和配置的复杂性可能会超出组织的能力。
演化模型:
演化模型是迭代的过程模型,使得软件开发人员能够逐渐开发出完整的软件版本。
喷泉模型
喷泉模型是一种以用户需求为动力,以对象作为驱动的模型,适用于面向对象的开发方法。
敏捷开发
敏捷开发的总体目标是通过“尽可能早地,持续地对有价值的软件的交付”使客户满意。
极限编程(XP)
极限编程是一种轻量级(敏捷),高效,低风险,柔性,可预测的,科学的软件开发方式。
水晶法(Crystal)
🌀在每一个不同地系统都需要一套不同地策略、约定和方法论是属于敏捷方法
并列争求法(Scrum)
自适应软件开发(ASD)
敏捷统一过程(AUP)
🌀敏捷统一过程(AUP)采用“在大型上连续”以及在“小型上迭代”的原理来构建软件系统。采用经典的UP阶段性活动(初始、精化、构建和转换),提供了一系列活动,能够使团队为软件项目构想出一个全面的过程流。在每个活动里,一个团队迭代了使用敏捷,并将有意义的软件增量尽可能快地交付给最终用户。
需求分析
信息系统的文档
🍀可行性研究报告:可行性研究报告是从事一种经济活动(投资)之前,双方要从经济、技术、生产、供销直到社会各种环境、 法律等各种因素进行具体调查、研究、分析,确定有利和不利的因素、项目是否可行,估计成功率大小、经济效益和社会效果程度,为决策者和主管机关审批的上报文件。是需求分析和客户人员之间交流所使用或参考的文档。
🍀总体规划报告:至少市场/客户、新产品、人(引进、培养)、设备、成本等方面包括,也是需求分析和客户人员之间交流所使用或参考的文档。
🍀项目开发计划:是指通过使用项目其他专项计划过程所生成的结果(即项目的各种专项计划),运用整合和综合平衡的方法,制定出用于指导项目实施和管理的整合性、综合性、全局性、协调统一的整合计划文件。是对需求分析和客户人员交流所必要的文档。
系统设计
概要设计
概要设计的内容可以包含系统架构,模块划分,系统接口,数据设计。
系统测试
软件工程测试
🍅系统测试和验收测试是针对于需求分析
🍅集成测试针对于概要设计
🍅单元测试针对于详细设计
🍅软件实现应该是针对于编码部分
调试
调试的任务就是根据测试时所发现的错误,找出原因和具体的位置,进行改正,调试主要由程序开发人员来进行,谁开发的程序就由谁来进行调试。
调试方法
常用的调试方法有试探法、回溯法、对分查找法、归纳法和演绎法。
1,试探法
调试人员分析错误的症状,猜测问题所在的位置,利用在程序中设置输出语句,分析寄存器、存储器的内容等手段获得错误的线索,一步步地试探和分析出错误所在。这种方法效率很低,适合于结构比较简单的程序。
2,回溯法
调试人员从发现错误症状的位置开始,人工沿着程序的控制流程往回跟踪代码,直到找出错误根源为止。这种方法适合于小型程序,对于大规模程序,由于其需要回溯的路径太多而变得不可操作。
3,对分查找法
这种方法主要用来缩小错误的范围,如果已经知道程序中的变量在若干位置的正确取值,可以在这些位置上给这些变量以正确值,观察程序运行的输出结果,如果没有发现问题,则说明从赋予变量一个正确值开始到输出结果之间的程序没有错误,问题可能在除此之外的程序中。
4,归纳法
从测试所暴露的问题出发,收集所有正确或不正确的数据,分析它们之间的关系,提出假想的错误原因,用这些数据来证明或反驳,从而查出错误所在。
5,演绎法
根据测试结果,列出所有可能的错误原因;分析已有的数据,排除不可能和彼此矛盾的原因;对其余的原因,选择可能性最大的,利用已有的数据完善该假设,使假设更具体。
软件项目管理
项目估算
COCOMOH 模型(软件估算模型)
最初的COCOMO模型是得到产业界最广泛应用和讨论的软件成本估算模型之一,现在它 已经演化成更全面的估算模型,称为COCOMOII和其前身一样,COCOMOII也是一种层次 结构的估算模型,被分为3个阶段性模型。
🍀(1)应用组装模型。在软件工程的前期阶段使用,这时用户界面的原型开发、对软件和系 统交互的考虑、性能的评估以及技术成熟度的评价是最重要的。
🍀(2)早期设计阶段模型。在需求已经稳定并且基本的软件体系结构已经建立时使用。
🍀(3)体系结构阶段模型。在软件的构造过程中使用。
和所有的软件估算模型一样,COCOMOII模型也需要使用规模估算信息,在模型层次结构 中有3种不同的规模估算选择:==对象点、功能点和代码行。==应用组装模型使用的是对象点;早期设计阶段模型使用的是功能点,功能点可以转换为代码行。
对象点也是一种间接的软件测量。计算对象点时使用如下的计数值:(用户界面的)屏幕 书;报表数;构造应用系统可能需要的构件数。
8,软件质量
软件成熟模型(CMM)
CMM是一种评价软件承接放软件能力的方法,同时它可帮助软件组织改进其软件过程。CMM分为五个等级:初始级,可重复级,已定义级,已管理级,优化级。1级(初始级)为最低级,5级(优化级)为最高级。
软件质量模型
功能性:是指当软件在指定条件下使用,软件产品满足明确和隐含要求功能的能力。
适合性:是指软件产品与指定的任务和用户目标提供一组合适的功能的能力。
准确性:是指软件产品具有所需精确度的正确或相符的结果及效果的能力。
互用性:是指软件产品与一个或多个规定系统进行交互的能力。
依从性:是指软件产品依附与同功能性相关的标准、约定或法规以及类似规定的能力。
安全性:是指软件产品保护信息和数据的能力,以使未授权的人员或系统不能阅读或修改这些信息和数据,但不拒绝授权人员或系统对其的访问。
可靠性:在指定条件下使用时,软件产品维持规定的性能级别的能力。
成熟性:是指软件产品避免因软件中错误发生而导致失效的能力。
容错性:是指在软件发生故障或违反指定接口的情况下,软件产品维持规定的性能级别的能力。
易恢复性:是指在失效发生的情况下,软件产品重建规定的性能级别并恢复受直接影响的数据的能力。
易用性:是指在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。
易理解性:是指软件产品使用户能理解软件产品是否合适以及如何能将软件用于特定的任务和使用环境的能力。
易学性:是指软件产品使用户能学习它的能力。
易操作性:是指软件产品使用户能操作和控制它的能力。
效率:是指在规定条件下,相对于所用资源的数量,软件产品可提供适当的性能的能力。
时间特性:是指在规定条件下,软件产品执行其功能时,提供适当的响应时间和处理时间以及吞吐率的能力。
资源利用性:是指在规定条件下,软件产品执行其功能时,提供合适的数量和类型的资源的能力。
可维护性:是指软件产品可被修改的能力,修改可能包括修正,改进或软件适应环境、需求和功能规格说明中的变化。
易分析性:是指软件产品诊断软件中的缺陷或失效原因,以及判定待修改的部分的能力。
易改变性:是指软件产品使指定的修改可以被实现的能力。
稳定性:是指软件产品避免由于软件修改而造成意外结果的能力。
易测试性:是指软件产品使已修改软件能被确认的能力。
可移植性:是指软件产品从一种环境迁移到另一种环境的能力
适应性:是指软件产品无需采用有别于为考虑该软件的目的而准备的活动或手段,就可能适应不同的指定环境的能力。
易安装性:是指软件产品在指定环境中被安装的能力。
一致性:是指软件产品在公共环境中同与其分享公共资源的其他独立软件共存的能力。
易替换性:是指软件产品在环境相同、目的相同的情况下替代另一个指定软件产品的能力。
9,软件度量
Macabe环路复杂度
1,流程中区域数的等于环形复杂度。
2,流程G的环形复杂度V(G)=E-N+2,其中,E是流程图中边的条数,N是结点数。
3,流程中G的环形复杂度V(G)=P+1,其中,P是流程图判定结点的数目。
10,软件工具与软件开发环境
软件维护工具
软件维护工具辅助维护人员对软件代码及其文档进行各种维护的工具,软件维护工具主要有:版本控制工具,文档分析工具,开发信息库工具,逆向工程工具,再工程工具。