方案阶段该做的事情

一 、方案阶段
     在方案阶段首先从两个阶段分析项目的风险:1、公司是否对本项目所处的行业很熟悉或者对本项目的业务很熟悉以及是否做过类似的项目;2、本项目客户的业务是否规范,也就是客户的业务流程是否规范话。如果有其中的任意一条,那么风险之大可想而知,更不用说两天皆有了。那么我们怎么克服防止这些风险呢?如果是第一条公司在组建团队的时候就该考虑招聘熟悉相关业务的人员了;如果是第二条,我认为这时候公司的管理人员和客户接触时就该给客户打预防针了,再就是在合同中下点功夫了。
二、合同阶段
       在合同阶段主要注意的是以下几点:1、项目的功能模块范围;2、客户需求的变动;3、 对项目中某些功能模块做特殊的说明;4、开发进度和成本。
三、调研阶段
四、团队建设阶段
五、分析设计阶段
六、开发测试阶段
七、实施维护阶段
既然.Net总能够被人破解, 那么我们只好把重要的计算和功能放在server上通过webservice提供了,但是客户端的代码总还得混淆一下,否则别人反编译一下不是全部知道底细了,所以我只使用code protect tools的混淆功能而不是加密,毕竟再怎么加密也是可以破解掉的。

以XENOCODE为例(其实我只使用了这个,毕竟相信老牌软件,心里有底些),它的select pattern相当不错,经过一段时间的摸索,找到一些需要注意的地方:

1、Enumeration一定不要重命名:毕竟我们还有很多地方会使用Enum.Parse(string)以及直接tostring得到名称
2、Reference和Interface最好不要重命名
3、public, protect的不能重命名:因为public会被外部使用,而且有些还是virtual override或是implicitly implement, 而protect的会被其它的继承类使用
4、需要反射的最好单独一个assembly,不要去混淆:毕竟这个风险太大,很难去一个个选取哪些要哪些不要重命名,比如说有的ORM中需要反射属性和字段的实体类定义
5、资源类Properties.Resources修改为public(这样可以批量设置public的不要重命名)
 因为这段代码
 global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("XXX.Properties.Resources", typeof(Resources).Assembly);
 resourceMan = temp;
否则的话就会出现:
 Could not find any resources appropriate for the specified culture or the neutral culture.

其它:
字符串加密这个不会出错,只是有些性能损失而已
流程混淆xenocode还是很安全的,我一般使用1~2级就可以了,毕竟有时候出错了我还得打开混淆后的代码查找位置
其它的防止反编译的选项我也没有设置,因为我自己还得用reflector呢。
注:转自一往情深。唉,要是我能写出这么漂亮的文章,也不枉此四五年了。)

posted on 2008-08-18 00:20  Sanle  阅读(450)  评论(0编辑  收藏  举报

导航