软件工程&架构 (2)

上传人:m**** 文档编号:251965282 上传时间:2024-11-11 格式:PPT 页数:18 大小:223.50KB
返回 下载 相关 举报
软件工程&架构 (2)_第1页
第1页 / 共18页
软件工程&架构 (2)_第2页
第2页 / 共18页
软件工程&架构 (2)_第3页
第3页 / 共18页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,软件工程&架构,许式伟,20,10,-,9,-,25,自我介绍,许式伟,目前任职于盛大创新院。致力于改善国内的创业环境。前金山技术总监,WPS Office 2005首席架构师,开源爱好者,发布有Boost Memory、StdExt、TPL、WinxGui、DocX 等开源项目。技术关注领域:分布式存储、网络操作系统、Erlang风格编程与最佳服务端编程实践、搜索引擎等。,话题缘起,软件质量保障,重要性,从本质上说,专业、高质量的产品和服务,才是企业真正意义上的生命线。,源头:开发者本身的素质,代码的设计与实现,外部保障:公司成熟度的标志,工程管理,专业的平台成就专业的产品,Agenda,代码学(设计与实现),KISS,Keep it simple,stupid,Modularity,Testable,Orthogonal Decomposition,工程学(项目管理),代码管理,跟踪变化(任务,/,缺陷管理),自动化测试,单元测试,日构建,代码的设计与实现,开发阶段仅占代码生命,周期,的极少时间。,但这阶段的每一分每一秒都至关重要。影响维护阶段所需的投入。,维护阶段的,投入,占多大比重?,代码的生命周期,代码首次完成,维护代码直至消亡,开发阶段,维护阶段,KISS,:简单比复杂好,不要增加无谓的复杂性,除非有人为复杂性买单,正确理解系统的需求之后才进行设计,易实施性,让模块容易实现,比复杂的优化更重要,避免惊异,让你的代码(包括接口)符合惯例,Modularity,:模块比框架更重要,框架是易变的,框架都将经历不断发展演化的过程,逐步得到完善,框架是业务流,可复用性相对更低。,不让模块为框架买单,模块设计时应忽略框架的存在,认真审视模块的接口,发现,“,过度的(或多余的)约束,”,Testable,:保证可测试性,设计应该以可测试性为第一目标,一个模块可以很方便地进行测试,那么就可以说它是一个设计优良的模块。,坚持进行单元测试可提高设计能力。,可测试性,=,低耦合,环境模拟(依赖的模块、数据输入),及时发现模块构架调整的潜在问题,通常模块在架构调整期(代码重构)最容易引入,Bug,。,只有在模块开发中就不断积累经典数据、以案例的形式固化已知,Bug,,才可能在架构调整等最容易引发问题的情形下获得最佳效果。,Orthogonal Decomposition,:正交分解,架构就是不断地对系统进行正交分解的过程,优先考虑组合,而不是继承,做乘法而不是做加法,eg.抽取一个url中的outlinks,outlinks(in:url)-out:unique_outlinks,curl url 2/dev/null|hrefs|sort-u,通用组件,curl(in:url)-out:file_content/html_text,hrefs,(in:html_text)-out:outlinks,regex(text/html_text,pattern)-matches/outlinks,sort-u(in:records/outlinks)-out:unique_records/unique_outlinks,专业的平台成就专业的产品,代码管理:,CVS vs.SVN vs.GIT,CVS,:,“,单文件,”,的版本管理,不管理目录,无法跟踪工程结构的变化,本地无版本管理功能,SVN,:,“,项目,”,的版本管理,全局的版本号,代表了系统的一个镜像状态,本地可管理单一的历史版本(基版本),在,CVS,基础上,易用性有很大加强,钩子:定制工作流,GIT,:,“,项目群,”,的版本管理,分布式的版本管理系统,可管理任意复杂的巨型项目(如,Linux,),分布的、松散的项目管理,适合大型开源项目,无需联网,本地就有完整的版本管理能力,跟踪变化:任务,/,缺陷管理,Trac(Ticket Tracker),是一个任务,/,缺陷管理工具,可和,SVN,配合,可以看到某个,Bug,的修复修改了哪些代码,可以看到某一次,Check In,是为了什么,自动化测试,自动化测试的必要性,常规测试的缺陷,一般是基于手工的,不具备,可回归性,。因此测试的效率不高。,由于缺乏效率,往往导致测试仅仅针对典型数据,,覆盖率,往往也很低。,自动化单元测试的重要特征,自动化、可回归性,Quiet,:没有错误,就不说话,案例的执行安全受控,某个案例的失败,不会影响其他案例的运行。,单元测试的重要性,测试成本最低,单元(模块)是最容易,也是最应该采用自动化测试的。而,集成测试、系统测试虽然也有自动化的方法和支持工具,但需要更高额的代价。,减少问题发现的周期,单元测试,将问题的发现周期缩短,降低,bug,修复成本,。,如果问题在集成测试、系统测试期被发现,那么同样一个问题需要花几倍甚至几十倍的时间进行定位、修复。,理解单元测试,推广单元测试其实是规范单元测试方法和认识,实际上单元测试大家都会去做,我们提倡单元测试,更大程度上是要达到:,规范单元测试的编写(方法),固化已经发现的,Bug,,最大程度保留下来我们的测试案例(认识),-,重视测试代码:,测试代码也是开发成果,理应获得和模块同等重要的地位,理应被保留下来。,日构建(,Daily Build,),项目质量保障的最后一道关卡,每天你都可以通过它获得一个当前系统健康状况的报告。,做什么?,检出代码(,Check out,),编译工程(,Build,),代码自动检查(,Check,),运行自动化测试案例(,Test,),报告结果(,Report,),如:,Build,、,Check,和,Test,的失败案例,怎么做?,工具:,Ant/Shell script,Q&A,交流:,谢谢!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 生活常识


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!