abs项目 - 战线拉的太长
abs项目 - 战线拉的太长
“从项目中来,到项目中去”。
坑是踩不完的,尽量做到不要踩重复的坑就好。
最近的这个项目,从2016的8月份左右开始立项,一直做到2017的2月份,还是有很多的问题在继续排查。其中暴露出来不少的问题。
现在回头来看,总体来讲整个框架其实并不复杂,只是牵扯的模块太多:
其中模块B,C,D是集成在一个进程中的,A单独跑一个进程。其中的数据流顺序如图所示,逻辑上是一个顺序线性依赖的关系,但实际上,软件的需求是最终的“7”对用户来讲要实时流畅,这就要求最终的运行其实是一个并行流水作业。
从2016开始的点追溯,有下面几个方面没有处理好:
用户需求没有转化为开发需求
项目开始之处,没有将用户需求进行量化,将其转换为真实可见的开发需求和性能需求,也就是,对其中的设计指标是不清楚的,这就导致后面一系列的开发决策是非常盲目且相当然的;
流水线
对并行的流水线设计原理不了解,导致时间片的设计和计算出错。这个问题属于知识盲点,后面单独针对总结。
数据到底走多快?
开始总是觉得这次是对硬件性能估计不足,但仔细分析这其实是个表面问题。
处于核心模块C开发时,对于依赖的A,B,D模块,都没有考虑依赖模块的处理性能(这个地方的性能可能是硬件原因造成的,也可能是软件原因造成的)。设计中只是考虑了“数据流向和时序”,但是没有考虑“各个步骤上数据到底能走多快”,导致了结合点的缓冲读写机制设计有问题;
集成经验不足
项目中牵扯对一个三方的算法库进行集成,“同名符号冲突”和一些库的缺陷直到后面要提交系统测试才发现。冲突的问题已经通过开发自检脚本来解决了,倒是“对三方集成库的单元测试”是个大问题。(后来通过readelf等命令解析编译后的段符号,比对重名,可以在集成前做重名函数检出)
要想办法将一个大功能完全可以先对其进行拆分,拆分到一定粒度的子模块后,在接合处编写DEMO对其验证,可以先把跟集成的库相关的代码实现,入口处进行DEMO测试后再集成到系统,不用等到整个系统完成了,把所有东西跑起来再去验证库。
可调试性是躲不过的
什么叫可调式性,就是这部分的数据流向对开发人员来说可以透明。
形式可以多样,或者是打印,或者是输出到文本。重要的是,存在不透明的数据,就会存在难以调试的缺陷,不要抱有侥幸的心理,调试的设计和开发逃不掉的。
沟通
拿不准的方案,要催着别人一起看。
涉及很多人就及时开会,面对面效率高。
联调时,用原理和数据沟通。
abs项目 - 战线拉的太长的更多相关文章
- layui的select下拉框太长被遮挡了的解决办法
layui的select下拉框太长采用滚动条的形式出现,可以给select的dl加一个最大高度,具体的效果如下图 .layui-form-select dl { max-height:160px; }
- Mac下关于——你不能拷贝项目“”,因为它的名称太长或包括的字符在目的宗卷上无效。文件的删除
内容是google的,测试有效,因为用revel打包的东西删除以后有这个循环bug Mac下关于——你不能拷贝项目“”,因为它的名称太长或包括的字符在目的宗卷上无效.文件的删除 关于这个问题我找到的一 ...
- JavaScript解决select下拉框中的内容太长显示不全的问题
JavaScript解决select下拉框中的内容太长显示不全的问题 1.说明 有些情况下,select下拉框的内容过长,导致部分看不见: 现在通过鼠标事件,让下拉框中的内容显示完全 2.实现源码 & ...
- 与项目欧拉速度比较:C vs Python与Erlang vs Haskell
我从问题#12 ProjectEuler作为编程练习,并比较我在C,Python,Erlang和Haskell中的实现(当然不是最优)实现.为了获得更高的执行时间,我搜索了第一个有1000个以上因子的 ...
- vs调试windows mobile程序时布署时间太长的解决办法
vs调试windows mobile程序时布署时间太长的解决办法 1.VS平台上,选工具-选项-项目和解决方案-MS BUILD项目生成输出详细信息中选择“诊断”,目的是在调试窗口中看出哪个过程编译的 ...
- p2p项目,自己期望太高了。
在项目的进行中,主要牵扯到了一些安全方面的考虑,跟money相关的嘛,如果安全不考虑,你就惨了,一期呢,为了防止数据被篡改,主要对数据用dsa进行了签名,二期呢,考虑到das产生的字符串有可能太长,修 ...
- 用反射或委托优化switch太长的方法
在代码进行优化的时候,发现了switch case太长,有的竟然长达30个远远超过一屏这样在代码的可读性来说很差.特别在我们看代码的时候要拉下拉框我个人觉得这是不合理的.但是我不建议有switch就进 ...
- “sgen.exe”未能运行。文件名或扩展名太长
问题 创建项目后无法运行 严重性 代码 说明 项目 文件 行 禁止显示状态 错误 MSB6003 指定的任务可执行文件"sgen.exe"未能运行.System.Component ...
- 总结解决 Android-Studio 编译耗时(好久、太长)问题
首先通过搜索有关Android-Studio 编译耗时(好久.太长)问题的博客,速度确实有所改善. 一.暂时解决 Android-Studio 编译耗时(好久.太长)问题 本文链接:https://b ...
随机推荐
- andorid 网络通信最简单demo
要和后台进行通信 一开始发现接不到数据 后来发生了线程错误 在网上查到:在一些高版本中,与网络通信的操作因为要花费比较大的时间,所以应该放在单独的线程中去做. 但为什么一些网上demo没有放在单独的线 ...
- HDU 1254 推箱子(BFS加优先队列)
传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1254 推箱子 Time Limit: 2000/1000 MS (Java/Others) Me ...
- 网页静态化技术Freemarker
1.为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类的频道. 对于电商网站的商品详细页来说,至少几百万个商品,每个商品又有大量的信息 ...
- AngularJS 控制器属性
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- 'version' contains an expression but should be a constant. @ line 13, column 11问题的解决
<modelVersion>4.0.0</modelVersion> <groupId>cy.nad.cyg</groupId> <artifac ...
- 一站式学习Redis 从入门到高可用分布式实践(慕课)第六章 Redis开发运维常见问题
fork操作 1.同步操作 2.与内存量息息相关:内存越大,耗时越长(与机器类型有关) 3.info:latest_fork_usec 进程外开销 AOF追加阻塞 不知道哪个命令??? 单机多实例部署 ...
- 增删改查 报异常org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readO
可能是Spring配置文件 事务通知里面的方法 与实际方法不匹配 <tx:advice id="advice" transaction-manager="tran ...
- Lintcode算法
题目: 给出一组非负整数,重新排列他们的顺序把他们组成一个最大的整数. 样例 给出 [1, 20, 23, 4, 8],返回组合最大的整数应为8423201. 思路:直接交换两个数,然后判断交换之后的 ...
- C#判断系统是64位还是32位 支持.net4.0以前的版本
C#判断系统是64位还是32位的时候引用了一串代码,这个代码是从园子里面其他博文中转载过来的,引入自己的项目中发现无法使用,在引用了相应的命名空间之后还是提示: "未能找到类型或命名空间名称 ...
- IDEA中使用插件添加更多可选择的主题,使代码高亮,缓解视觉疲劳
1.点击 File-->settings(或Ctrl+Shift+S)打开IDE设置面板 点击plugins-->右侧选择Marketplace-->搜索框中输入Material-- ...