打印
[项目外包]

外包经验分享:我是如何成功拿下第一个项目的?

[复制链接]
13267|42
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
价格:0 元
ic, AC
本帖最后由 zhanzr21 于 2017-6-15 16:08 编辑

尽管已经过去了一年多了,但那次外包项目给我留下了比较深刻的**.这里应21ic项目外包编辑的邀请,将此外包项目的开发经历写一写,算一次分享,也算一次回顾与总结。

21ic外包平台的认识与了解
一个月黑风高的夜晚,我知道了21ic外包平台,2015年时就知道有这平台.但是刚开始上面项目不多,同时自己也忙于各种工作和私事,并未对之有很多关注.2015年下半年,于自己开始试着做产品的原因,一来关注的角度开始广了一些,二来时间上也更自由了一些,也时常上外包平台上逛逛.那时候外包平台上项目开始多了起来,自己有时也对某些感兴趣的项目进行了揭标操作.不过这些项目并没有非常感兴趣的,也有些因为种种条款没有谈下来.


相关帖子

沙发
zhanzr21|  楼主 | 2017-6-15 15:05 | 只看该作者
本帖最后由 zhanzr21 于 2017-6-15 15:11 编辑

心仪的项目来了-认真做计划拿到发包

不过有一天有个项目突然抓住了我的眼球.一下子认为这项目非常符合我的技能,想接下来做一做.这个项目是某公司为了推广产品开发平台而要求做的一个应用展示.虽说资金不是很多,但是项目周期也不紧张,而且我自己正好也在研究该平台(发包方提供项目所用的主要硬件供开发).于是花了几个小时研究项目需求,非常仔细的写了项目实施计划与进度估计.投标之后,第二天第三天还特意去看,可惜一直没有发包方的回复.当时也有点泄气,以为是发包方来搞呼悠,套别人的方案的吧.后来就没有关注了.
但是二十多天后接到一个电话,通知我决定发包给我.原因呢,我想是因为我的项目实施计划非常详尽,进度计划也很合理吧.这可是我花了几个小时非常细心做的计划呢.接到项目发包当时觉得很开心,搞技术的人嘛,自已的计划能得到别人认可都是这样的.一种成就感吧.

使用特权

评论回复
板凳
zhanzr21|  楼主 | 2017-6-15 15:33 | 只看该作者
本帖最后由 zhanzr21 于 2017-6-16 10:04 编辑

项目需求与第一个挫折
当时项目的需求大致如下:
1.在嵌入式Linux平台下做个GUI应用,界面用什么开发不限.
2.能利用触摸屏幕做控制
3.能连网络,支持Email的收发
4.有本地数据库,支持在离线时写信收信,到有网络连接时能够将草稿发送出去
5.能开机自动运行,也能当普通的应用一样能开能关闭
这需求其实也不复杂,如果在桌面版本的Linux下开发此软件简直一两天就能搞定.但在嵌入式Linux下开发还是受很多限制的.首先跑系统,自己编译就是一大堆的工夫.
拿到板子后,第一时间进行研究.要自己搞系统也可以,得搭建Yocto环境.下载必须的库文件啊,源代码啊,得40G以上.最要命的有些文件要到google的reposity去下载.当时google code还没有停业,有一些软件项目在那上面做版本管理.可怜的我到是有***,但是流量一个月加起来也没有40G阿.想了很多办法,最终放弃了自己编译整个系统的想法.记得那天忙到转钟三点半,疲惫的我去Freescale的官方网站上又翻了一遍,发现他们有编译好的Image可以提供.于是最终选择了使用官方的Image.使用官方的Image有个不便之处就是再要加驱动就难上加难了.虽然也有方法,但是思考再三还是没有去做这一步.自己的开发工作中也经常会遇到这种情形,最完美的方案无法达到则需要灵活处理一下子,求个折中. 搞这个Yocto花了几天的时间.虽然当时没有选择这条路,但是后来我自己项目中解决了这个问题,也得益于我当时深夜研究这个的苦功没有白下.当然这是后话.
图 官方烧写Image的工具
至于开发工具链,我选择了poky的现成的工具包.经过helloword测试通过还验证了一下子上面所带的软件库函数.

使用特权

评论回复
地板
zhanzr21|  楼主 | 2017-6-15 15:34 | 只看该作者
本帖最后由 zhanzr21 于 2017-6-19 09:30 编辑

跑上了系统-用脚本验证网络通信原理



既然用了官方的Image,所有外设就不能随意改变了.于是原本打算使用自己项目中的屏幕的计划放弃,研究了一下子官方的显示驱动,买了一款同驱动片的显示屏幕.因为线序不对,还做了一块PCB转接信号.
这时我把项目分为三大部分:
1. 验证Email网络协议
2. GUI设计
3. 数据库设计
其中Email网络协议我之前没有研究过,GUI,数据库我之前都还有些心得.于是先研究Email的通信协议.我的方法是先找Email相关的RFC来读一读.再在桌面的Linux下用脚本跑一跑协议的整个流程.
不找不知道,一找吓一跳,原来Email相关的RFC如此之多,快要将我淹没:

RFC 821 - Simple Mail Transfer Protocol 簡單郵件傳輸協議(SMTP)
RFC 822 - Standard For The Format Of ARPA Internet Text Messages ARPA 互聯網文本資訊格式(信頭格式) Obsoleted by RFC 2822
RFC 974 - Mail Routing And The Domain System 郵件路由和域系統(MX路由)
RFC 976 - UUCP Mail Interchange Format Standard UUCP郵件交換格式  
RFC 1123 - Requirements for Internet Hosts -- Application and Support 互聯網主機需求
RFC 1321 - The MD5 Message-Digest Algorithm
RFC 1344 - MIME對互聯網郵件閘道的意義
RFC 1413 - 鑒別協議(ident)
RFC 1652 - SMTP Service Extension for 8bit-MIMEtransport 8比特-MIME-SMTP服務擴展
RFC 1842 - ASCII Printable Characters-Based Chinese Character Encoding
RFC 1869 - SMTP Service Extensions SMTP服務擴展(ESMTP規格)
RFC 1870 - 資訊大小通報的SMTP服務擴展
RFC 1891 - 發送狀態通知的SMTP服務擴展
RFC 1892 - The Multipart/Report Content Type for the Reporting of Mail System 用於報告郵件系統管理資訊的多部分/報告內容類型
RFC 1893 - Enhanced Mail System Status Codes 增強型郵件系統狀態碼。
RFC 1894 - An Extensible Message Format for Delivery Status Notifications 發送狀態通知的可擴展資訊格式
RFC 1939 - Post Office Protocol - Version 3 郵件協定-版本3(POP3) Updated by RFC 2449
RFC 1957 - Some Observations on Implementations of the Post Office Protocol (POP3)
RFC 1985 - 遠端資訊列隊啟動SMTP服務擴展
RFC 2033 - 本地郵件傳輸協定(LMTP)
RFC 2034 - smtp的增強錯誤碼
RFC 2045 - MIME Part One: Format of Internet Message Bodies 多用途互聯網郵件擴展(MIME)第一部分:互聯網資訊正文格式 Updated by RFC 2231
RFC 2046 - MIME Part Two: Media Types     MIME 第二部分:媒介類型
RFC 2047 - MIME Part Three: Message Header Extensions for Non-ASCII Text MIME 第三部分:非ASCII文本資訊頭擴展 Updated by RFC 2231
RFC 2048 - MIME 第四部分:註冊過程
RFC 2049 - 一致性標準和示例
RFC 2060 - 互聯網資訊訪問協定-版本4修訂本(IMAPrev1)
RFC 2066 - IMAP4 ACL 擴展
RFC 2067 - IMAP4 配置擴展
RFC 2068 - IMAP4 非同步字(LITERAL+)
RFC 2095 - IMAP/POP簡單挑戰/回應認證擴展(CRAM+MD5)
RFC 2183 - The Content-Disposition Header Field     Updated by RFC 2231
RFC 2195 - IMAP/POP AUTHorize Extension for Simple Challenge/Response
RFC 2197 - SMTP Service Extension for Command Pipelining
RFC 2202 - Test Cases for HMAC-MD5 and HMAC-SHA-1
RFC 2111 - Content-ID and Message-ID Uniform Resource Locators     
RFC 2222 - Simple Authentication and Security Layer (SASL) 簡單認證和安全層(SASL)
RFC 2231 - MIME Parameter Value and Encoded Word Extensions: Character Sets,...
RFC 2246 - TLS POP
RFC 2251 - 輕量目錄訪問協定(LDAP)版本3
RFC 2342 - IMAP4 命名空間
RFC 2359 - IMAP4 UIDPLUS擴展
RFC 2387 - The MIME Multipart/Related Content-type
RFC 2449 - POP3 Extension Mechanism  POP3擴展機制
RFC 2476 - 資訊提交代理(MSA)
RFC 2487 - TLS上安全SMTPSMTP服務擴展
RFC 2505 - SMTP MTAs垃圾資訊建議
RFC 2553 - 用於IPv6的基本套介面擴展
RFC 2554 - SMTP Service Extension for Authentication
RFC 2632 - S/MIME Version 3 Certificate Handling     
RFC 2633 - S/MIME Version 3 Message Specification
RFC 2821 - Simple Mail Transfer Protocol         
RFC 2822 - Internet Message Format     
RFC 2831 - Using Digest Authentication as a SASL Mechanism
RFC 3462 - The MIME Multipart/Report Content-type
RFC 3463 -  Enhanced Mail System Status Codes
RFC 4406 - Sender ID: Authenticating E-Mail
RFC 4408 - Sender Policy Framework (SPF) for Authorizing Use of
RFC 4408 - Domain-Based Email Authentication Using Public Keys Advertised in the DNS (DomainKeys)
RFC 4871 - DomainKeys Identified Mail (DKIM) Signatures   
RFC 5617 - DKIM Author Domain Signing Practices (ADSP)

使用特权

评论回复
5
zhanzr21|  楼主 | 2017-6-15 15:35 | 只看该作者
本帖最后由 zhanzr21 于 2017-6-20 10:01 编辑

跑上了系统-用脚本验证网络通信原理(二)


所幸的是这些RFC不用全部读完,我只挑了IMAP,POP3,SMTP,还有MIME等最直接要用到的精读了一下子.其余的扫了一眼不是特别相关就没有细看了.在实际工作中也是这样,经常会有海洋潮水般的信息迎面扑来.你得在潮水中找几块贝壳,这也是一种能力.
找到我想要的信息后,开始写脚本验证.收发邮件都用脚本验证过了:


发邮件脚本测试


收邮件脚本测试

另外为了测试,专门注册了一个outlook邮箱分配给此开发板.脚本测试过程相对较顺利,因为是在PC上实现的.PC上很多工具啊软件包啊在嵌入式系统上没有的,不过好歹我通过这测试明晓了整个协议的过程.

使用特权

评论回复
6
zhanzr21|  楼主 | 2017-6-15 15:41 | 只看该作者
本帖最后由 zhanzr21 于 2017-6-21 10:22 编辑

使用特权

评论回复
7
zhanzr21|  楼主 | 2017-6-15 15:42 | 只看该作者
本帖最后由 zhanzr21 于 2017-6-23 11:10 编辑

做GUI-工程师的老大难


已更新~~

使用特权

评论回复
8
zhanzr21|  楼主 | 2017-6-15 15:43 | 只看该作者
本帖最后由 zhanzr21 于 2017-6-23 13:17 编辑

数据库-最简单的部分

直接使用sqlite3,我也不管他原来有没有sqlite3的软件支持.直接用官方的发布版本了.这里见到sqlite3的好了,一个c文件,几个h文件,就可满世界荡.
数据库的表格设计如下

使用特权

评论回复
9
zhanzr21|  楼主 | 2017-6-15 15:44 | 只看该作者
本帖最后由 zhanzr21 于 2017-6-23 13:19 编辑

最终的硬件架构,软件架构,流程

硬件架构


软件架构


流程图

使用特权

评论回复
10
zhanzr21|  楼主 | 2017-6-15 15:45 | 只看该作者
本帖最后由 zhanzr21 于 2017-6-26 14:02 编辑

验收通过

其他还有一些技术上的细节,因为太琐碎就不提了.
最终到了验收项目的时候,我把整个硬件寄给发包方,当然还包括我写的代码,文档,测试脚本与验证说明.过几天就收到了验收通过的电话通知.后来还给我发了邮件夸我的文档写的好,也不知道是不是说我代码水平一般般.再后来还听说他们把我做的结果拿给他们客户展示过,也取得了展示的效果.

我写的测试指引中的插图


使用特权

评论回复
11
zhanzr21|  楼主 | 2017-6-15 15:45 | 只看该作者
本帖最后由 zhanzr21 于 2017-6-26 14:06 编辑

总结

总结一下子,这次外包项目开发,遇到了不少的困难,但是都克服了.有些是艰苦卓绝的技术活,有些得动点心思想workaround.总之这次项目外包给我留下了深刻的印象.

使用特权

评论回复
12
DT天若有情| | 2017-6-15 16:12 | 只看该作者
厉害呀

使用特权

评论回复
13
fengjumeng| | 2017-6-15 16:23 | 只看该作者

使用特权

评论回复
14
dirtwillfly| | 2017-6-15 17:33 | 只看该作者
21ic放出的那个项目吧

使用特权

评论回复
15
zhangmangui| | 2017-6-15 22:09 | 只看该作者
大牛啊  

使用特权

评论回复
16
528618581| | 2017-6-16 09:10 | 只看该作者
膜拜啊

使用特权

评论回复
17
songchenping| | 2017-6-16 09:24 | 只看该作者
感觉有的项目纯粹就是来忽悠的,骗设计方案的

使用特权

评论回复
18
zhanzr21|  楼主 | 2017-6-16 10:02 | 只看该作者
songchenping 发表于 2017-6-16 09:24
感觉有的项目纯粹就是来忽悠的,骗设计方案的

嗯,所以需要小心谨慎啊,网上外包就是有风险

使用特权

评论回复
19
zhanzr21|  楼主 | 2017-6-16 10:05 | 只看该作者
dirtwillfly 发表于 2017-6-15 17:33
21ic放出的那个项目吧

是的,就是nxp和21IC做的那个项目

使用特权

评论回复
20
天之骄子LJJ| | 2017-6-16 10:17 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:每天都進步

91

主题

1013

帖子

34

粉丝