软件工程
重点!重点!
软件过程模型也叫软件开发模型
软件过程模型
-
瀑布模型
-
V模型
-
原型模型
-
螺旋模型【原型+瀑布】
-
构件组装模型/基于构件的开发方法
-
快速应用开发RAD【瀑布+构件组装】
-
统一过程/统一开发方法
-
敏捷开发方法
瀑布模型
特点
-
严格区分阶段,每个阶段因果关系紧密相连</span
-
只适需求明确的项目
缺点
-
软件需求完整性、正确性难确定
-
严格串行化,很长时间才能看到结果
-
瀑布模型要求每个阶段一次性完全解决该阶段工作,这不现实
原型模型
原型开发应对需求不明确情况,用在需求阶段 原型模型两个阶段:
-
原型开发阶段
-
目标软件开发阶段
原型会是很多模型的基础
螺旋模型
把整个软件开发流程分成多个阶段,每一个阶段都由目标设定、风险分析、开发和有效性验证以及评审构成。 其中,风险分析是螺旋模型的标志
V模型
测试贯穿于始终
测试分阶段,测试计划提前
统一过程
UP也叫RUP
统一过程开发方法分初始、细化、构建和移交四个阶段
其中,细化阶段的核心任务是完成系统架构
敏捷方法
极限编程 xp
4大价值观
沟通【加强面对面沟通】
简单【不过度设计】
反馈【及时反馈】
勇气【接受变更的勇气】
12条过程实践规则
-
简单设计
-
测试驱动
-
代码重构
-
结对编程:一人写代码另一个人看着检查代码
-
持续集成
-
现场客户
-
发行版本小型化
-
系统隐喻
-
代码集体所有制
-
规划策略
-
规范代码
-
40小时工作机制
SCRUM
通过抽取总的工程一部分任务,作为下个阶段的任务量来进行代码进度控制,侧重项目管理。
水晶方法
提倡“机动性”的方法,不同类型的水晶,白水晶,黄水晶,拥有对不同类型项目非常有效的敏捷过程
特征驱动开发方法fdd
开发需要3要素【人、过程、技术】
定义了6种关键的项目角色:项目经理、首席架构设计师、开发经理、主程序员、程序员和领域专家。开放式源码
程序开发人员在地域上分布很广【其他方法强调集中办公】
ASD方法
核心是三个非线性的、重叠的开发阶段:猜测、合作与学习。
动态系统开发方法(DSDM)
倡导以业务为核心
逆向工程
-
实现级:包括程序的抽象语法树/符号表/过程的设计表示
-
结构级:包括反映程序分量之间相互依赖关系的信息,例如调用图、结构图、程序和数据结构
-
功能级:包括反映程序段功能及程序段之间关系的信息,例如数据和控制流模型
-
领域级:包括反映程序分量或程序诸实体与应用领域概念之间对应关系的信息,例如实体关系模型 层级的顺序,自下而上:1->4
与逆向工程相关的概念(熟读)净室软件工程
-
受控污染级别的环境
-
数学模型转换成可以运行的程序,强调将正确性验证,而不是测试
【技术手段】 -
控制迭代
-
函数的规范和设计:盒子结构
黑盒->状态盒->明盒 -
正确性验证:净室工程的核心
-
统计测试和软件认证:总体太大,采用抽样方法
需求工程
需求开发和需求管理
【需求开发】 -
需求获取
-
需求分析
-
形成需求规格【形成SRS】
-
需求确认与验证【形成需求基线(经过评审的SRS)】 【需求管理】对需求基线进行管理 【变更控制、版本控制、需求跟踪、需求状态跟踪】
需求获取
分层
-
业务需求(整体全局)
-
用户需求(用户视角)
-
系统需求(计算机化)
QFD(项目管理维度)
-
基本需求
-
期望需求
-
兴奋需求
方法
-
用户面谈:成本高,要有领域知识支撑
-
JRP:联合需求计划,群体会议,消除分歧,交互好,成本高
-
问卷调查:用户多,成本低
-
现场观察:复杂的流程和操作
-
原型化方法:早期需求不确定问题
-
头脑风暴法:发散思维
需求分析
结构化需求分析
-
功能模型-数据流图
-
行为模型-状态转换图
-
数据模型-ER图
-
数据字典
面向对象需求分析
UML:用例图,对象图,通信图,顺序图,活动图
需求变更
需求变更由ccb来决策
结构化设计
模块四要素
-
输入和输出
-
处理功能
-
内部数据
-
程序代码
面向对象设计
类的分类
-
边界类 【机器接口/人机交互】显示屏、窗体、打印机接口、通信协议、对话框、菜单、购物车、报表、二维码
-
控制类 【应用逻辑/业务逻辑/数据访问逻辑】身份验证器
-
实体类 【数据】学员类/课程类
-
-
「真诚赞赏,手留余香」
真诚赞赏,手留余香
使用微信扫描二维码完成支付
