首页 > 其他分享 >软考-软件工程笔记

软考-软件工程笔记

时间:2023-02-10 19:01:22浏览次数:41  
标签:需求 -- 模型 软考 笔记 软件工程 模式 测试 设计

1、软件开发方法

2、软件开发模型

3、逆向工程

4、需求工程

5、软件系统建模

6、系统设计

7、测试与评审

8、系统运行与软件维护

 

一、软件开发方法

1、结构化法 传统的开发方法(预设的,以开发过程为本,整体分阶段)

自顶向下,逐步分解求精严格分阶,阶段产出标准化,应用能力差

2、面向对象方法

自底向上,阶段界限不明,更好应变,更好应用,符合人们的思维习惯

3、面向服务方法

粗粒度松耦合,标准化和构件化抽象级别:操作低-》服务中-》业务流程高

4、原型法(需求阶段)

针对需求不明,按功能分:水品原型(界面)、垂直原型(复杂算法)按最终结果分:抛弃型原型、演化原型

其他软件开发方法

形式化方法:数学模型化,所有东西均可验证,而不是测试

统一过程方法

敏捷方法   适应性的,以人为本,增量迭代,小步快跑,适合小型项目

四大价值观

沟通(加强面对面沟通)

简单(不过度设计)

反馈(及时反馈)

勇气(接受变更)

12条过程实践规则

简单设计

测试驱动

代码重构

结对编程

持续集成

现场客户

发行版本小型化·

系统隐喻

代码集成所有制

规划策略

规范代码

40小时工作制

敏捷开发模型的特点

极限编程XP:一些对费用控制严格的公司中使用,非常有效。

水晶方法:搜索了用最少纪律约束而仍能成功的方法,从而在产出效率与易运作上传达一种平衡。

开放式源码:程序开发人员在地域上分布很广(其他方法强调集中办公)

SCRUM:明确定义了的可重复的方法过程,小项目交付

功用去顶开发方法FDD:编程开发人员分成两类:首席程序员和“类”程序员。

ASD方法:其核心是三个非线性的,重叠的开发阶段:猜测,合作与学习。

基于架构的开发方法ABSD

二:软件开发模型:

SDLC瀑布模型   风险高

演化模型

增量模型  

螺旋模型  原型+瀑布,风险评估

原型模型

喷泉模型

v模型  重视测试

CBSD构件组装模型   速度快,成本低,可靠性高

快速应用开发模型RAD  SDLC+CBSD --数据建模,业务建模,过程建模,应用生成,测试与交付

UP统一过程(用力驱动,以架构为中心迭代和增量)

初始(定义视图和业务)---细化(设计及确认系统架构)---构建(构造产品演进直至提交)---交付(产品交给用户)

三、逆向工程

现有工程--再工程--新系统

逆向工程是设计的恢复过程

实现级:包括抽象的语法树,符号表,过程的设计表示

结构级:包括反映程序分量之间相互依赖的信息,例如调用图,结构图,程序和数据结构

功能级:包括程序段功能及程序段之间关系的信息,例如数据和控制流模型

领域级:包括程序分量与诸多实体与应用领域之间对应的关系的信息,例如实体关系模型

四、需求工程

软件需求是指用户对系统在功能、行为、性能、设计约束等方面的期望

需求开发:需求获取、需求分析、需求定义(SRS:软件需求规格书)、需求验证

需求基线:经过评审的SRS

需求管理:变更控制,版本控制,需求跟踪,需求状态跟踪

需求获取

获取方法:收集资料,联合讨论会,用户访谈,书面调查,现场观摩,参加业务实践,阅读历史文档,抽样调查。

分类:业务需求(整体全局),用户需求(用户视角),系统需求(计算机化):功能需求,性能需求,设计约束

QFD:基本需求(明示,常规需求)期望需求(隐含)兴奋需求(多余)

需求分析

功能模型:数据流图DFD:数据流,加工,数据存储,外部实体

行为模型:状态装换图:状态(初态,终态)事件

数据模型:ER图 实体,联系

数据字典:数据元素,数据结构,数据流,数据存储,加工逻辑,外部实体

面向对象OOA

实体类:映射需求中的每个实体

控制类:用于控制用例工作的类

边界类:用于封装用例内,外流动信息或数据流。

UML

构造块:事务(结构事物,行为事物,分组事物,注释事物),关系,图

规则:范围,可见性,完整性,执行

公共机制:规格说明,修饰,公共分类,扩展机制

静态图(结构图)

类图,对象图,构建图,部署图(软硬件),制品图,包图,组合结构图

动态图(行为图)

用例图:系统与外部参与者的交互

顺序图:强调按时间顺序

通信图(协作图)

状态图:状态转换变迁

活动图:类似程序流程图,并行行为

定时图:强调实际时间

交互概览图

4+1视图

逻辑视图(系统分析,设计人员,类与对象)系统功能

实现视图(程序员,物理代码文件和组件)源代码结构

进程视图(系统集成人员,线程,进程,并发)

部署视图(系统和网络工程师,软件到硬件的映射)

最终用户用例视图(需求分析模型)

面向对象的分析

用例模型:识别参与者,合并需求获得用例,细化用例描述,优化调整

分析模型:定义概念类,识别类之间的关系,添加类的职责,建立交互图

需求定义:

严格定义发:

所有需求都能够被预先定义,开发人员与用户之间能够准确而清晰地交流,采用图形文字可以充分体现最终系统

原型法:并非所有的需求都能在开发前被准确的说明,项目参与者之间通常存在交流困难,需要实际可供参考的系统模型,有合法的系统开发环境,需求确定后要准寻严格方法

需求验证:

需求评审:正式评审,非正式评审

需求测试

用户签字确认,验收标准之一

需求状态变迁

需求跟踪:正向跟踪,反向跟踪

用户原始需求

软件需求

下游工作产品

需求变更管理:

问提分析和变更描述--变更分析和成本计算(CCB变更控制委员会)--变更实现

五、软件系统建模

现有系统--(模型化)--物理模型(软件设计)--(抽象化)--逻辑模型(需求分析)--(调整优化)--逻辑模型--(实例化)--物理模型--(具体化)--物理系统

六、系统设计

人机界面设计

黄金三法则

置于用户控制之下

减少用户的记忆负担

保持界面的一致性

软件设计:

软件设计包括体系结构设计、接口设计、数据设计和过程设计

结构设计:软件各主要部件之间的关系

数据设计:将模型转换成数据结构定义。好的数据设计将改善程序结构和模块划分,降低过程复杂度

接口设计(人机界面设计):软件与用户的交互

过程设计:系统结构部件之间转换成软件的过程描述

结构化设计:

概要设计(外部设计)功能需求分配给软件模块,确定每个模块功能和调用关系,形成模块结构图

详细设计(内部设计):为每个具体的任务选择适当的技术手段和处理方法

结构化设计原则:

模块独立(高内聚,低耦合)

保持模块的大小适中

多扇入,少扇出

深度和宽度均不宜过高

模块的四要素

输入输出

处理功能

内部数据

程序代码

面向对象的设计

单一职责原则:设计目标单一的类

开放-封闭原则:对扩展开放,对修改封闭

里氏替换原则:子类可以替换父类

依赖倒置原则:要依赖于抽象,而不是具体实现;针对接口编程,不要针对实现变成

接口隔离原则:使用多个专门的接口比使用单一的总接口要好

组合重用原则:要尽量使用组合,而不是继承关系达到重用的目的

迪米特原则(最少知识原则):一个对象应当对其他对象有尽可能少的了解

设计模式

架构模式:软件设计中的高层决策

设计模式:主要关注软件系统的设计,与具体语言无关

惯用法:层次最低,更语言相关

设计模式三种类型的定位

1、创建型模式:创建对象

工厂方法模式(动态创建对象),抽象工厂模式(生成系列对象),原型模式(克隆对象),单例模式(单实例),构建器模式(复杂对象创建)

2、结构型模式:更大的结构

适配器模式(转换接口),桥接模式(继承树拆分),组合模式(树形目录结构),装饰模式(动态附加值能),外观模式(对外统一接口),享元模式(汉字编码),代理模式(快捷方式)

3、行为型模式:交互及职责分配。

备忘录模式(游戏存档),观察者模式(订阅,广播,联动),状态模式(状态变成类),策略模式(多方案切换),模板方法模式(框架),访问者模式(数据与操作分离)

职责链模式(传递职责),命令模式(日志记录,可撤销),解释器模式(虚拟机的机制),迭代器模式(数据集),中介模式(不直接引用)

七、软件测试

尽早、不断的进行测试

程序员避免自己测试设计的程序

既要选择有效的合理的,也要选择不合理的数据

修改后进行回归测试

尚未发现的数量和已发现的错误数量成正比

动态测试(计算机运行):黑盒测试,白盒测试,灰盒测试

静态测试(纯人工):桌前检查,代码审查,代码走查

黑盒测试(功能测试,范围广):等价类划分,边界值分析,错误推测,因果图

白盒测试:基本路径测试,循环覆盖测试,逻辑覆盖测试

测试阶段

v模型

需求分析--验收测试,系统测试

概要设计--集成测试

详细设计--单元测试

单元测试:测试模块,模块功能,性能,接口等

集成测试:模块间的接口(一次性组装风险高,增量组装测试全面),自顶向下(需要桩模块)自底向上(需要驱动模块)混合式(都需要)

系统测试:真实环境下,验证软件配置能否和系统正确连接。:功能测试,性能测试(负载测试(各种工作负载),压力测试(瓶颈,不能接受的性能点),强度测试(资源特别低),容量测试(并发量),可靠性测试(MTTF)),健壮性测试,用户界面测试,安全性测试,安全与反安装测试

确认测试:验收软件与需求的一致性。内部确认测试,Alpha测试,Beta测试,验收测试

回归测试:测试软件变更之后,变更部分的正确性对变更的需求符合性

面向对象的测试:

算法层(单元测试)

类层(模块测试)

模板层/类树层(集成测试)

系统层(系统测试)

软件调试方法:

蛮力法:主要通过计算机找错,低效,耗时

回溯法:从出错处人工沿控制流程往回追踪,直至发现出错的根源。不适于复杂程序

原因排除法:主要是演绎和归纳,用二分法

软件测试:

目的是找出存在的错误,有预知结果,可以实现设计

软件调试:定位错误并修改程序已修正错误,条件未知,不可预计,调试不能描述过程或持续时间

遗留系统演化策略:

低水平低价值:淘汰

高水平高价值:针对息孤岛,集成

高水平高价值:改造,改造系统的功能模型和数据模型

低水平低价值:继承,需要完全遗留系统的功能模型和数据模型

新旧系统的转换策略:

直接转换:成本低,风险高

并行转换策略:成本高,风险低

分段转换策略:成本低,风险低。停掉一部分子系统。

数据转换与迁移:旧数据库(抽取)--转换(通过工具迁移,手工录入,新系统生成)--(装载)新数据库

系统运行与维护

正确性维护(改正性维护):改正测试未发现的错误

适应性维护:值应用软件适应环境变化(外部环境,数据环境)而进行的修改

完善性维护:扩充功能和改善性能而进行的修改

预防性维护:为了适应未来软硬件环境的变化。

 

标签:需求,--,模型,软考,笔记,软件工程,模式,测试,设计
From: https://www.cnblogs.com/15078480385zyc/p/17110055.html

相关文章