软件工程笔记整理

软件的生命周期:软件从孕育、诞生、成长、衰亡的生存过程,就是软件的生存周期。

(是指软件产品或者软件系统从生产、投入使用到被淘汰的全过程)

软件生存周期大致分为六个过程:计算机系统工程,需求分析,设计,编码,测试,运行和维护。

 

计算机系统工程:确定待开发的软件的总体要求和范围,以及该软件与其他计算机系统元素之间的关系,并进行软件可行性分析,并提出解决方案。

需求分析:解决软件要做什么的问题,确定软件的功能,性能,数据,界面等要求,生成软件需求规约。

设计:解决软件怎么做的问题。分为系统设计以及详细设计,系统设计是指设计系统的体系结构,详细设计是指实设计各个组成部分的实现细节。

编码:用某种合适的编程语言进行编码实现。

测试:发现并纠正软甲中的错误以及缺陷。单元测试,集成测试,确认测试以及系统测试。

运行与维护:完成测试后交使用,在软件运行期间惊醒维护,发现潜在的错误或者增加新的功能,使得软件使用外籍需求环境的变化。

 

 

模块化设计原则所遵循的设计原则:

(抽象与逐步求精,模块化,信息隐藏等原则)

抽象与逐步求精、信息隐藏、模块化、高内聚低耦合。 

按照模块化设计原则,相应的启发式设计策略:

(1)改造程序结构图,降低耦合度,提高内聚度 

(2)避免高扇出,并随着深度的增加,力求高扇入 

(3)模块的影响范围应限制在该模块的控制范围内 

(4)降低模块接口的复杂程度和冗余程度,提高一致性 

(5)模块的功能应是可预测的,避免对模块施加过多的限制 

(6)尽可能设计单入口和单出口的模块

 

 

 

:具有同种属性的对象称为类,是个抽象的概念。比如说:汽车、人、狗、神;
对象:日常生活中的所有东西都是对象,是类的实例化。比如说:推土车是汽车的实例化;姚明是人的实例化;小白(狗的名字)是狗的实例化;二郎神是神的实例化;
属性:用来描述具体某个对象的特征的是属性,是静态的。比如:姚明身高2.6米多;小白的毛发是棕色的;二郎神额头上有只眼睛;
方法:每个对象有它们自己的行为或者是使用它们的方法,比如说一只狗会跑会叫等,我们把这些行为称之为方法,是动态的,可以使用这些方法来操作一个对象;
类的成员:属性和方法称为这个对象的成员,因为它们是构成一个对象的主要部分,没有了这两样东西,那么对象也没什么存在意义了。

 

 

 

 

继承:

在C++中,所谓“继承”就是在一个已存在的类的基础上建立一个新的类。已存在的类称为“基类(base class)”或“父类(father class)”,新建的类称为“派生类(derived class)”或“子类(son class )”。

一个新类从已有的类那里获得其已有特性,这种现象称为类的继承。通过继承,一个新建子类从已有的父类那里获得父类的特性。从另一角度说,从已有的类(父类)产生一个新的子类,称为类的派生。

 

 

c++中什么是多态! 

多态(Polymorphism)按字面的意思就是“多种状态”。在面向对象语言中,接口的多种不同的实现方式即为多态。
在C++中也是如此。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。在运行时,可以通过指向基类的指针,来调用实现派生类中的方法。
C++中,实现多态有以下方法:虚函数,抽象类,覆盖,模板(注意:重载和多态无关)。

 

测试:单元测试集成测试系统测试验收测试
对应开发:编码,详细设计,概要设计,需求分析。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

V模型:

 

 

软件需求规约是分析任务的最终产物,通过建立完整的信息描述、详细的功能和行为描述、性能需求和设计约束的说明、合适的验收标准,给出对目标软件的各种需求。

 

 

模块:把软件按照规定的原则,或分为一个个较小的,相互独立的组但又相互关联的部件(其实就是系统分解与抽象的过程)

模块的独立性:在软件工程中,模块是数据说名,可执行语句等程序对象的集合,是单独命名的,并且是可以通过名字来访问的。

 

模块的独立性:功能独立是指模块的独立性,也就是说,在设计程序模块时候,使得模块实现独立的功能并且与其他模块的接口简单,符合信息隐蔽,模块间关联和依赖程度尽可能的小。

 

黑盒测试:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

 

 

 

从理论上讲,黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但可能的输入进行测试。这样看来,完全测试是不可能的,所以我们要进行有针对性的测试,通过制定测试案例指导测试的实施,保证软件测试有组织、按步骤,以及有计划地进行。黑盒测试行为必须能够加以量化,才能真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一。具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法等。

等价类划分的办法是把程序的输入域划分成若干部分(子集),然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。该方法是一种重要的,常用的黑盒测试用例设计方法。

 

 

白盒测试:白盒测试[1]  又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。

 

 

白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。

白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖判定覆盖条件覆盖、判定/条件覆盖、条件组合覆盖路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化:

1.语句覆盖每条语句至少执行一次。

2.判定覆盖每个判定的每个分支至少执行一次。

3.条件覆盖每个判定的每个条件应取到各种可能的值。

4.判定/条件覆盖同时满足判定覆盖条件覆盖。

5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。

6.路径覆盖使程序中每一条可能的路径至少执行一次。

 

 

 

多态:1,方法重载,2,运行时候多态(不同的类的对象对同一消息做出响应)

 

动态绑定:

 

I是指在执行期间判定所引用的对象的实际类型,根据其实际的类型调用相应的方法。

作用是消除类型之间的耦合关系。

 

数据流图的基本元素:数据源,数据池,加工,文件。

 

根据数据流的类型,结构化设计方法有两中策略:变换型设计以及事物设计分析。

 

变换型设计 :变换型结构由三部分组成:输入、数据加工(中心变换)和输出。在变换型结构中,信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后再沿输出通路变换成外部形式离开软件系统。变换型结构的数据流图呈一种线性状态,如图7—5所示。(呈现线性,链状,是对信息的加工处理)

 

 

 

 

事物型设计:事务型结构由3层组成:事务层、操作层和细节层,功能是对接收的事务按其类型选择某类事务处理,即数据沿输入通路到达一个处理,这个处理根据输人数据的类型在若干个动作序列中选出一个来执行。事务型结构的数据流图则呈束状。如图7-5所示,即一束数据流平行流入或流出,可能同时有几个事务要求处理。(类似神经网络的分类模型)

 

 

两种典型的结构分别可以通过“变换分析”和“事务分析”技术,导出相应的初始模块结构图。变换分析和事务分析技术的思想是首先设计出顶层模块,然后自顶向下、逐步求精,最后得到一个满足数据流图所表示的系统模块初始结构图,即系统的物理模型。

 

 

对于事务型分析技术而言,其方法和步骤与变换分析方法类似,都是按自顶向下,逐步求精的原则进行。但是事务型结构由事务层、操作层和细节层组成,功能是对接收的事务按其类型选择某一类事务处理,因此它们之间的主要差别在于数据流图到模块结构的映射方式不同,其步骤如下:

1)以事务为中心来确定系统结构,找出事务中心和事务来源,并按功能对事务进行划分,将功能相同的事务归为同一类,建立事务模块。

2)为每个事务处理模块建立操作层模块,其方法与变换分析方法类似,但事务处理模块可以共享某些操作模块。

3)若必要,则为操作层模块定义响应的细节模块,并尽可能使细节模块被多个操作模块共享。

可行性分析:技术可行性,经济可行性,法律可行性。

 

软件的可移植性:就是计算上的软件移植到其他环境中。

 

软件生命周期:计算机系统工程,需求分析,设计,编码,运行,维护

 

Uml图:统一建模语言,软件开发过程中对软件系分析的图形化语言,为软件的所有开发阶段提供模型化与可视化的支持。

 

Uml包括:用例图,静态图,行为图,交互图,实型图。

 

自顶向下的渐增测试:深度优先策略以及广度优先策略

 

衡量模块独立性:耦合度,内聚性

 

软件维护种类:纠错性维护,适应性维护,改善性维护,预防性维护。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值