软件工程知识点

1、软件的危机(包括:如何开发软件,以满足对软件日益增长的需求;如何维护数量不断膨胀的已有软件)
 主要典型表现如下:
a)对软件开发成本和进度的估计常常很不准确
b)用户对“已完成的”软件系统不满意的现象经常发生
c)软件产品的质量往往靠不住
d)软件常常是不可维护的
e)软件通常没有适当的文档资料
f)软件成本在计算机总成本中所占的比例逐年上升
g)软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入地趋势
2、产生软件危机的原因
A)与软件本身的特点有关
B)也和软件开发与维护的方法不准确有关
3、消除软件危机的途经
A)必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好、管理严密、各类人员协同配合、共同完成的工程项目
B)应该推广使用在实践中总结出来的开发软件的成功的技术和方法,并且研究探索更好更有效的技术和方法
C)应该开发和使用更好的软件工具
总之,既要有技术措施(方法和工具),又要有必要的组织管理措施
4、软件生命周期
A)软件定义:问题定义、可行性研究、需求分析
B)软件开发:总体设计、详细设计(确定实现模块功能所需要的算法和数据结构)、编码和单元测试、综合测试(最基本的测试是集成测试和验收测试)
C)运行维护(主要任务是使软件持久地满足用户的需要)
5、软件过程
1)瀑布模型(编码之前设置了系统分析与系统设计的各个阶段)
A)特点:
a、阶段间具有顺序性和依赖性
b、推迟实现的观点
c、质量保证的观点
B)优点
a、可强迫开发人员采用规范的方法
b、严格地规定了每个阶段必须要提交的文档
c、要求每个阶段交出的所有产品都必须经过质量保证小组的仔细检查
  C)缺点:瀑布模型是由文档驱动的(总之,由于瀑布模型几乎完全依赖于书面的规格说明书,很可能导致最终开发的软件产品不能真正满足用户的需要)
2)快速原型模型:不带反馈环,软件产品的开发基本上是线性顺序进行的,本质是“快速”
  原因:原型系统已经通过与用户交互而得到验证,据此产生的规格说明文档正确地描述了用户的需求;开发人员通过建立原型系统已经学到了许多东西
3)增量模型(渐增模式)
A)优点:
a、能在较短时间内向用户提交可完成部分工作的产品
b、逐步增加产品功能可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给客户组织带来的冲击
B)困难:
a、在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏已经开发出的产品
b、必须把软件的体系结构设计得便于按这种方式进行扩充,向现有产品中加入新构件的过程必须简单、方便,也就是说,软件体系结构必须是开放的
4)螺旋模型  (基本思想是:使用原型及其他方法来尽量降低风险)主要适用于内部开发的大规模软件项目
A)优点:
a、对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标
b、减少过多测试或测试不足带来的风险
c、在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别
d、主要优势在于,它是风险驱动的,但是这也可能是一个弱点
5)喷泉模型:特性:迭代和无缝(求精),适用于面向对象范例
面向对象方法=对象+类+继承+用消息通信(简化了软件的开发和维护,提高了软件的可重用性)
5、数据流图
A)有四种基本符号:正方形(或立方体)表示数据的源点或终点、圆角矩形(或圆形)代表变换数据的处理、开口矩形(或两条平行横线)代表数据存储、箭头表示数据流,即特定数据的流动方向
B)数据存储和数据流都是数据,仅仅所处的状态不同。数据存储是处于静止状态的数据,数据流是处于运动中的数据。
7、可行性分析:技术可行性、经济可行性、操作可行性
8、需求规格说明书
   A)通常用自然语言完整、准确、具体地描述系统的数据要求、功能需求、性能需求、可靠性和可用性要求、出错处理需求、接口需求、约束、逆向需求以及将来可能提出的要求
   B)自然语言的规格说明具有容易书写、容易理解的特点,为大多数人所欢迎和采用
9、E-R图:实体、联系、属性
10、状态图:中定义的状态主要有:初态、终态、中间状态
   在一张状态图中只能有一个初态,而终态则可以有0至多个
11、过程设计的工具:程序流程图、盒图(功能域明确;不可能随意转移控制等)、PAD图(问题分析图)、判定表、判定树、过程设计语言PDL(伪码)
12、McCabe方法
A)流图
B)计算环形复杂度
  a)流图中线性无关的区域数等于环形复杂度
  b)环形复杂度V(G)=E-N+2;(E流图中边的条数,N结点数)
  C)V(G)=P+1:(P流图中判定结点的数目
C)环形复杂度的用法;程序的环形复杂度取决于程序控制流的复杂程度,即取决于程序结构的复杂程度。
13、对象模型为建立动态模型和功能模型,提出了实质性的框架
建模语言由记号和使用记号的规则组成
A)类图描述类与类之间的静态关系
 a)定义类:使用标准术语、使用具有确切含义的名词、必要时用名词短语作名字,总之名字应该是富于描述性的、简洁的而且无二义性的
 b)定义属性:ULM描述属性的语法格式如下: 可见性  属性名:类型名=初值{性质串}
B)类与类之间通常有关联、泛化(继承)、依赖和细化四种关系
关联:普通关联、关联的角色、限定关联、关联类
聚集:共享聚集、组合聚集
泛化;普通泛化、受限泛化
14、数据字典由数据流、数据元素、数据存储、处理
15、数据流图和数据字典共同构成系统的逻辑模型,没有数据字典,数据流图就不严格,然而没有数据流图,数据字典也难以发挥作用。
16、虽然应该尽量减少出现别名,但是不可能完全消除别名
17、由数据元素组成数据的方式只有三种基本类型:顺序、选择、重复、可选
18、虽然可以使用自然语言描述由数据元素组成数据的关系,但是为了更加清晰简洁,建议采用下列符号:
  = 意思是等价于(或定义为)
  + 意思是和(即连接两个分量)
  [] 意思是或,通常用“|”号隔开供选择的分量
  {} 意思是重复(即重复花括弧内的分量)
  () 意思是可选(即圆括弧里的分量可有可无)
19、耦合(是对一个软件结构内不同模块之间互连程度的度量)有
控制耦合(中度)、数据耦合、特征耦合、共享环境耦合、内容耦合(最高)
20、内聚标志着一个模块内各个元素彼此结合的紧密程度。
功能内聚、顺序内聚、通信内聚、过程内聚、时间内聚、逻辑内聚、偶然内聚
21、单元测试
22、测试重点
a)模块接口
b)局部数据结构
c)重要的执行通路
d)出错处理通路
e)边界条件
B)确认测试:目标验证软件的有效性
C)Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试,总之Alpha测试是在受控的环境中进行的。
D)Beta测试由软件的最终用户们在一个或多个客户场所进行,Beta测试是软件在开发者不能控制的环境中的“真实”应用。
E)白盒测试:逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、点覆盖、边覆盖、路径覆盖)、控制结构测试(基本路径测试、条件测试、循环测试)
F)黑盒测试:等价划分、边界值分析
22、维护的四种分类:预防性维护、改正性维护、适应性维护、其他维护

23、软件工程方法学:面向对象方法学、传统方法学

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值