记录软件工程的一些东西,比如说模型啊文档啊,开发流程管理这种,梦回大三
1.增量模型等(后面补充瀑布模型啊这类的)
增量模型是把待开发的软件系统模块化,将每个模块作为一个增量组件,从而分批次地分析、设计、编码和测试这些增量组件。
瀑布模型将开发阶段描述为从一个阶段瀑布般地转换到另一个阶段,顾名思义,流水瀑布
原型模型,开发人员迅速地构造整个系统或者系统的一部分来理解澄清问题(规模小而且不复杂的,结构化开发适用于数据领域的不复杂需求变化也不大的软件开发)
喷泉模型是以用户需求为动力,以对象为动力,适合于面向对象开发
螺旋模型结合了瀑布模型和快速模型,并加入了风险分析的,适合复杂的大型设计开发
2.软件工程的一些技术啥的
软件工程是一种层次化的技术,从底层上分别为质量,过程,方法和工具。软件工程的基础是过程。质量是关键,其余是为质量打基础,提供方法的。
软件设计分为两部分概要设计和详细设计,结构化设计中,概要设计主要是进行体系结构的设计,数据设计和接口设计,详细设计进行详细的算法设计;面向对象设计中,概要设计进行结构设计和初步的类设计,详细设计进行构件设计
结构化分析与设计
结构化设计主要包括体系结构设计:定义主要的结构元素和关系
数据设计:基于实体联系图确定软件涉及的的文件结构和数据库的表结构
接口设计:设计外部接口和内部接口
过程设计:确定各个组成部分的算法和内部的数据结构,选择某种过程的表达形式来描述算法
3.软件工具的分类
软件工具分为六类:模拟工具、开发工具、测试和评估工具、运行和维护工具、性能质量工具和程序设计支持工具。
4.软件开发项目管理
转换成图网络结构,转换到数据结构那块,根据这个最早开始时间和最早完成时间求解这个项目工期时间
AOE图中的最早时间和最迟时间
整个活动的完成时间是从开始到结束的最长路径的长度
最早发生时间:从前往后,前驱结点到当前结点的时间,选择最大的
最迟发生事件:从后往前,后继结点的最迟发生时间-边权值,取最小的
关键路径:最早发生时间等于最迟发生时间的结点组成的路径
最早开始时间:当前边的起始结点的最早发生事件
最晚开始时间:当前边的指向结点的最迟发生事件-边权
这一段做起来好烦哦,本来就是抽出来做大题,你现在做选择,真的好烦哦
松弛时间:不影响完工前提下可能被推迟完成的最大时间
=最晚开始时间-最早开始时间
=关键路径的总时间-包含该任务的关键路径花的时间
5.工作量估算模型
简单来说就是开发一个项目会花费的时间,人力,资源和金钱等
分为直接估算和间接估算
直接估算基于WBS直接估算人天工作量
间接估算就是先估算出软件的规模再估算人天工作量(包括基于代码的估算和基于功能点的估算)
WBS就是按照历史的相似项目进行拆解然后进行拆解预估,再和这个历史的相似项目进行比较
代码行估计是从开发者角度估量,顾名思义进行每天的代码拆解进行估计天数,使用模型将代码行数转换人天工作量
常见模型有Putnam(公式)以及COCOMOⅡ(指数关系,有16个驱动因子),IBM
COCOMOⅡ三种估算信息选择,对象点,功能点和代码行
基于功能点(FP)的工作量估算,是从用户的角度来度量软件。进行工作量估算时,先估计出软件项目的功能点数,然后将功能点数(FP)转换为人天数。转成人天数有两种,生产效率和经验模型
6.风险分析
根据风险的优先级来确定风险控制的策略,优先级是通过风险暴露来确定的,风险暴露是一种量化风险影响的指标,等于风险影响x风险概率,其中风险影响是当风险发生时造成的损失
7.ISO 9126质量模型
6个特性和7个子特性
按照这个图进行一个理解,字面意思的理解。
8.McCabe度量法计算环路复杂度
McCabe环路复杂度是一种用于评估软件代码复杂度的方法,也称为循环复杂度。 其原理是通过计算代码中的分支节点(条件语句)和循环节点(循环语句)的数量来确定代码的复杂度,即决策点的数量。 决策点的数量指的是程序中需要做出决策的地方,例如if语句、for循环、while循环等。
1.流图中的区域数等于复杂度
2.流图G的环形复杂度V(G)=E-N+2,其中,E是流图中边的条数,N是结点数
3.流图G的环形复杂度V(G)=P+1,其中,P是流图中判定结点的数目
强联通图的有向图:E-N+2p
9.DFD和ERD
ERD 是实体关系图,是数据库设计的图形表示方法。 ERD 可以用来展示数据库中实体、实体之间的关系和实体的属性。 DFD 是数据流图,是一种用于描述系统的数据流和处理的图形表示方法。 DFD 可以用来展示系统内数据如何从一个实体流向另一个实体,以及数据如何被处理。
耦合与内聚
数据耦合:一个模块访问另一个模块,彼此之间通过简单的数据参数来交换输入输出信息
公共耦合:一组模块都访问同一个公共数据环境,那么他们之间的耦合称为公共耦合。公共数据环境可以称为全局数据结构,共享的通信区,内存的公共覆盖区
外部耦合:一组模块都访问同一个全局简单变量而不是同一个全局数据结构,不是通过参数表传递该全局变量的信息,称为外部耦合
标记耦合:一组模块通过参数表传递记录信息,就是标记耦合。这个记录是某一数据结构的子结构,不是简单变量。
时间内聚:需要同时执行的动作组合在一起的模块
过程内聚:一个模块完成多个任务,这些任务必须按照指定的过程执行
信息内聚:模块内所有元素都在同一个数据结构上操作,或者各处理使用相同的输入或者产生相同的输出
功能内聚:模块内所以得元素共同作用完成功能,缺一不可