2015上半年软件设计师考点,难点2
敏捷开发
特点:以人为核心、循环迭代、响应变化……
目的:高质量地快速交付客户满意的工作软件。适应变化,提高开发效率
要求:
1.敏捷对人员的素质要求比较高
2.组织文化必须支持谈判
3.人少但是精干
4.开发人员所做的觉得得到认可
5.环境设施满足成员间快速沟通之需要
6.适用于较小的队伍
核心价值观:
1.个体、交互胜过过程、工具
2.可以工作的软件胜过面面俱到的软件
3.客户合作胜过客户谈判
4.响应变化胜过遵循变化
基本原则:
1.尽早、持续交付有价值的中间软件
2.响应变化,创作竞争优势
3.业务人员与开发人员一起工作
4.团队内部面对面的沟通
5.根据完成了的功能调整工作进度
6.重构代码,保持代码健壮性
7.尽快完成目前已知的需求
方法:
1.极限编程:XP,Extreme Programming。
价值:沟通、简单、反馈、勇气。
原则:快速反馈、假设简单、增量变化、包容变化
完整团队、计划游戏、客户测试、简单设计、结对编程、测试驱动开发、改进设计、持续集成、集体代码所有权、编码标准、隐喻、可持续的速度
强调可适应性,不是可预测性。
重协作、快速和早期软件创建以及有技巧的开发实践。
是一门针对业务和软件开发的规则,他的作用在于将两者的力量集中在共同的、可以达到的目标上。他是以符合客户需要的软件为目标而产生的一种方法论,XP使开发者能够更有效的响应客户的需求变化,哪怕是在软件生命周期的后期。它强调,软件开发是人与人合作进行的过程,因此成功的软件开发过程应该充分利用人的优势,而弱化人的缺点,突出人在软件开发过程中的作用。极限编程属于轻量级的方法,认为文档、架构不如直接编程来的直接。
经常交付;反思改进;渗透式交流;个人安全;焦点;与专家用户建立方便的联系;配有自动测试、配置管理、经常继承功能的技术环境;
注重频繁交付、密切沟通和深思熟虑的改进
目的是发展一种提倡“机动性的”方法,包含具有共性的核心元素,每个都含有独特的角色、过程模式、工作产品和实践。Crystal家族实际上是一组经过证明、对不同类型项目非常有效的敏捷过程,他的发明使得敏捷团队可以根据其项目和环境选择最合适的Crystal家族成员。
3.动态系统开发方法:DSDM,Dynamic Systems Development Methodology
用于构建和维护系统的控件框架,该框架满足紧急时间限制的要求,而且是成功进行可重复快速应用程序开发 (RAD) 的一剂药方
4.特征驱动的软件开发:FDD,Feature Driven Development
5.自使用软件开发:ASD
6.SCRUM方法
对自我指导团队、每日团队评估和避免说明性流程进行了极大的提升
软件配置管理:SCM,Software Configuration Management
本质:变更的管理
目标:标识变更、控制变更、确保变更、报告变更;
主要内容:制定配置管理计划;配置识别、建立基线;建立配置管理系统;版本控制;变更控制;配置状态报告;配置审计;
任务:
应用:版本控制、以开发者为中心、过程驱动
配置标识:标识软件系统的结构,标识独立部件(工作产品),并使它们是可访问的。
目的:在整个生命周期中标识系统各部件并提供对软件过程及其软件产品的跟踪能力
配置变更控制:控制软件产品的发布和变更,
目的:确保软件产品质量
配置状态统计:记录和报告变更过程
目的:不间断记录所有基线项的状态和历史,并进行维护
配置审计:验证软件产品的构造是否符合需求、标准、或合同的要求
目的:验证所有的软件产品已经产生并有正确标识和描述,所有阶段的工作产品都一致并满足系统的需求,并且所有的变更需求都已解决。
配置管理计划:
1.管理活动的职责分配;2.管理的资源;3.识别配置项;4.配置项的控制级别(数据项、受控项、基线项);5.配置项的标识与控制;6.基线计划;7.审计计划;8.管理计划
配置管理的主要活动:
1.状态报告;2.基线变更流程;3.审计(物理审计、功能审计);4.管理活动的QA审查;
模块间耦合、内聚
1.耦合
非直接耦合:主模块的控制、调用
数据耦合:简单数据参数(不是控制参数、公共数据结构、外部变量)来交换输入、输出信息的
标记耦合:参数表传递记录信息(某一数据的子结构,非简单变量)
控制耦合:传输开关、标志、名字……控制信息
外部耦合:访问同一全局简单变量(非全局数据结构,非参数表传递全局变量信息)
公共耦合:访问同一个公共数据环境(全局数据结构、共享的通信区、内存的公共覆盖区……)
内容耦合:直接访问另一模块的内部数据;不能通过正常入口转入另一模块内部;两个模块部分代码重叠;一个模块多个入口
模块内聚
功能内聚:为了完成一项具体功能
信息内聚:模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有唯一的入口点,根据不同需求决定执行那个功能
通信内聚:使用了相同的输入数据,或产生了相同的数据输出。多用数据流图表示
过程内聚:处理元素是相关的,以特定的次序执行
时间内聚:经典内聚。功能的执行与时间有关(初始化,多种功能在同一时间段完成)
逻辑内聚:相关、相似的功能组合在一起,每次调用时根据参数确定执行哪一种功能。单入口多功能
偶然内聚:巧合内聚。没有联系;或即使有联系,联系也很松散
评审技术
作用:早期查错最有效的机制,“过滤器”;质量控制
目标:发现软件中的错误
步骤:计划、准备、组织会议、记录错误、进行修改、验证修改是否恰当
输出:发现问题、或错误清单;表示工作产品的技术状态
正式技术评审:
主要目标:软件过程中发现错误,以使它们不会在软件交付之后变成缺陷
优点:早些发现错误,防止将错误传递到软件的后续阶段
正式度:
1.确定职责;2.计划、准备;3.机构清晰;4.后续跟踪
非正式评审:简单桌面检查、临时会议、结对编程评审
正式技术评审:
目标:1.发现错误;2.验证需求;3.符合标准;4.开发方式统一;5.易于管理
包括:走查、审查
形式:会议
评审问题清单:
作用:1.标识问题区域;2.指导改正
指导原则:
集成测试策略
组装测试、联合测试、子系统测试、部件测试
在单元测试的基础上,将所有函数按照概要设计要求组装成为子系统或系统所进行的测试
和单元测试所关注的范围是不同的,因此,它们在发现问题的集合上包含有不相交的区域,不能使用集成测试来替代单元测试,反之亦然。
关注点:模块间的接口、集成后的功能
驱动程序/驱动模块:模拟被测模块的上级模块。接受测试数据,并传送给被测模块。
桩程序/桩模块:存根程序。模拟被测模块所调用的模块。检测被测模块与其下级的接口。
层次:
主要模式:
1.大爆炸集成:非渐增式继承。模块分别进行单元测试,所有组合在一起测试
缺点:一次成功可能性小;问题定位、修改困难;很多错误无法发现;
适用范围:维护性项目;功能增强型项目;规模小,每个函数经过充分的单元测试
2.自顶向下集成:顶层-》低层。深度优先、广度优先
优点:较早的验证了主要的控制和判断点;深度优先,首先验证一个完整的功能;可行性较早得到证实;驱动器费用少;故障隔离
缺点:桩的开发和维护成本高;底层组件的验证被推迟;底层测试不充分;保证加入模块,进行回归测试
适用范围:结构清晰、稳定;高层变化小;低层未定义、经常修改;控制组件风险大;尽早看到功能
3.自底向上集成
优点:早期验证;并行集成;桩工作量少;故障隔离
缺点:驱动工作量大;高层验证推迟,设计错误发现晚
适用范围:低层稳定、变动小;高层变化频繁;低层较早完成
4.三明治继承:系统分为三层,中间目标层上面的:由顶向下的集成策略;目标层下面的:自底向上的集成策略;最后测试在目标层会合
优点:自顶向下+自底向上;桩模块、驱动模块开发小
缺点:中间层测试不充分;问题定位困难
适用范围:大部分软件开发项目
5.干集成策略:系统划分:内核部分(基干部分)和外围部分,被不同的项目组并行开发
步骤:
a.识别外围的应用子系统部分、控制子系统部分,基干部分;
b.对基干中所有的组件进行大爆炸集成,形成基干子系统,并使用一个驱动检查经过大爆炸的基干;
c.对控制子系统进行自顶向下的集成;
d.对各应用子系统进行自底向上的集成;
e.对基干子系统,控制子系统和各应用子系统进行大爆炸集成形成整个系统。
优点:三明治
缺点:结构、依存关系需仔细分析;驱动、桩开发量大;局部大爆炸策略,测试不充分;
适用范围:大型复杂项目
6.分层集成:增量式集成验证稳定性、可互操作性
步骤:
a.划分系统的层次;
b.确定每个层次内部的集成策略,该策略可以使用大爆炸集成,自顶向下集成,自底向上集成和三明治集成中的任何一种策略;
c.确定层次间的集成策略,该策略可以使用大爆炸集成,自顶向下集成,自底向上集成和三明治集成中的任何一种策略;
适用于:明显层次关系的系统;子系统间有线性层次关系;子系统内部耦合性高
7.基于功能的集成:按照功能的关键程度对组件的集成顺序进行排序,尽早验证关键功能。
优点:系统快速稳定
缺点:风险分析需清晰
阶段:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· 没有源码,如何修改代码逻辑?
· NetPad:一个.NET开源、跨平台的C#编辑器
· 面试官:你是如何进行SQL调优的?