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 ...
随机推荐
- Android学习笔记_14_对JSON格式数据的处理
public class ParseJsonTest extends AndroidTestCase{ public void testJson() throws Exception { String ...
- 数据库优先生成EF CRUD演示
①准备我们的数据库: Northwind ②新建 实体数据模型,由数据库优先创建 ③创建控制器,这里我们只针对了Customers这张表做演示,实际会复杂的多 注:你可以把上面两步合成一步来写,创建控 ...
- papers-06-07
A simple neural network module for relational reasoning Visual Interaction Networks 今天被这两篇文章的工作刷屏,说实 ...
- JavaScript的原型(prototype、__proto__、constructor)
构造函数:function Foo() {}; 实例对象: let f1 = new Foo; let o1 = new Foo; 一般函数都有prototype属性,除了window.Math和Fu ...
- 伪造Http请求IP地址
注意:伪造Http请求IP地址一般为非推荐使用手段 一般使用:简单投票网站重复投票,黑别人网站 在项目开发中(web项目),我负责的系统(简称PC),需要调其它系统接口,并且该系统需要获取客户端(浏览 ...
- PG进程结构和内存结构
本文主要介绍PostgreSQL数据库(后文简称PG)进程结构和内存结构,物理结构将在后续继续整理分享. 上图描述了PG进程结构.内存结构和部分物理结构的内容.图中的内容包含了两个部分: PG ...
- flex布局入门总结——语法篇
前几天看了阮一峰的Flex布局教程,讲的很不错,总结一下,有兴趣的可以去看原文http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html 一 F ...
- 发送post请求几种常见content-type类型
application/x-www-form-urlencoded 这应该是最常见的 POST 提交数据的方式了.浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 app ...
- 微信小程序-通知公告滚动提示
wxml如下: <view class='scroll_view_border'> <view class="srcoll_view" bindtap=" ...
- MySQL学习路线图