论坛: 原创软件 标题: 共享软件的开发的一些建议 复制本贴地址    
作者: flashsky [flashsky]    论坛用户   登录
   20cn想开始做共享软件的开发,这是个好的开始,不过对于共享软件的合作需要注意很多的事情,下面是我的一些建议,当然这些建议是针对严格开发一个比较大的软件的,希望对你们有所帮益。

1. 总体的控制和设计
无论什么软件,分析与设计都是非常重要的,虽然对于安全工具而言,分析少一些,但是整体体系结构的设计却非常重要,考虑到未来的扩充和需要多人的协作,而这种平台下实现共享式开发,就需要一个非常有效率的总体控制。企业开发中由专门的项目经理负责进度和人员控制,分析人员进行分析与设计,他们之间进行交流,而对于分布式共享开发,则分析与控制人员的沟通也很困难,更接近于控制与整体的框架设计由一个单个的人来处理,就是如大的操作系统类型的软件linux的开发方式也是如此。因此选择一个总体控制和设计体系结构的人在分布式共享软件的开发中非常重要。
2. 开发人员的开发过程和组织问题
由于采用共享软件的开发,参与人员的素质,水平,习惯和使用开发工具的不一致性会对软件的开发进度和质量产生关键性影响,如何组织他们的开发和进行过程控制也是一个关键点:
建议的过程和组织方式如下:
1. 首先开发方向和确定的范围的人员,确定技术的难点和重点
2. 由负责总体控制的人书写初步的整体设计说明书,确定模块的划分,接口定义和功能概述,分派各技术人员的技术研究点,其他人员加紧对技术的难点和重点进行研究和处理。
3. 初步的整体设计说明书的递交给每个技术人员阅读,有不明白和疑义的地方负责总体控制的人进行解释和修改,最后定稿,而界面设计人员阅读此文档后同步进行界面设计。
4. 技术人员分派每个模块的开发,按模块定义开发的进度,对于技术上原因不能加入的人员,定义成测试小组,测试小组由一专门的测试小组组长负责,进行测试任务的定义和测试任务分派,并提交测试计划说给负责总控人员。
5. 在开发中出现的问题与负责总体控制的人的人进行交流,进行一些接口修改。如果存在技术困难,这需要负责总体控制的人加入和分派其他的人员参与解决。
6. 负责总体控制的人的负责督促进度,每天获取各模块的代码,进行联编,递交给测试小组进行测试。测试组组长负责分派测试任务,并负责汇总测试结果报告提交给负责总体控制的人。
7. 负责总体控制的人研究测试报告结果,调整资源分配,并提交改正意见给各个开发人。
8. 所有模块开发完毕和通过测试以后,进行使用和综合测试,小范围内发布,收集意见进行修改
9. 最后发布
3. 人员的选择和规模
总体负责人:1人
职责:负责设计整个框架,形成文档,要求设计文档到模块划分,接口定义,模块关系描述完备的文档,涉及到使用数据库的,还需要做出数据库的概念模式设计。定义开发语言和开发工具。负责督促各人员的开发进度,调整人员任务和资源分配,负责源代码管理和编译,测试程序发放,负责阅读测试报告,提交修改意见给程序员。
要求:懂得基本的项目管理内容,精通软件的体系结构设计
界面设计人员:1人
职责:专业的软件也需要有专业的界面设计,负责界面设计用用户交互行为的定义,提交界面设计文档:包括界面元素,统一的对用户的操作行为定义,界面流程等。
要求:精通用户界面的设计,能够理解整个框架的内在逻辑,并能理解成用户使用的流程,精通平面设计更好。(注意此界面设计人员更注重对行为定义和根据内在逻辑定义用户操作流程的人员,不仅仅是美工人员)
测试辅助开发人员

测试组组长:1人
职责:根据整个框架设计文档,编写测试计划文档,需要包含主要的测试功能点,测试方法,各测试模型定义,测试任务的分派。负责督促测试人员完成测试,并收集测试报告提交给总体负责人,负责测试报告模板的定义。
要求:了解测试的基本过程,有过测试组织和测试的经验。能够理解整个框架的内在逻辑,并转化为测试的功能点和需要的测试方法,测试模型,并能负责设计测试用例。

测试基、桩模块编写人员:1人
职责:由于测试过程中整体模块还没开发完毕,完成编写一些基、桩模块模拟对模块的调用,提供输入数据和接收输入数据。
要求:能够理解整个框架设计的内在调用和输入输出逻辑,精通编程。

开发人员:若干
职责:前期负责对相关技术难点进行研究,中期按照整个框架设计进行对应模块的代码编写,并按改正意见进行修改。在存在技术困难的时候负责向总负责人进行资源申请。
要求:能够理解整个框架设计的逻辑流程,精通编程,了解相关实现需要的技术。

测试人员:若干
职责:根据测试计划中的任务和测试用例,进行测试,提交测试报告。
要求:能够理解整个框架设计的功能需求,能理解测试计划中的任务,测试方法和测试用例并进行测试,了解测试需要返回的结果,并书写测试报告。

4. 类型策略选择
目前看来还是以做安全工具为主,而不是入侵工具。不仅仅是符合道德准则和法律(入侵工具需要附带连带责任的),也符合你们的初宗,另外,用于入侵的技术一样可以拿来作成安全的工具,如漏洞扫描,远程操作等等。也就是说,作为工具性质和名称而言,因是安全类型的,不进行对自身行为的掩盖,如日志删除和如木马一样的隐藏等。
另外做就应该做长远的东西,同时考虑未来的升级和扩展,因此体系结构的设计非常重要。不过当前你们当中技术人员我认为还是非常匮乏的,这是一个致命的困难。

5. 版权,代码管理,版本维护和提升
软件是共享的,代码和文档是大家一起开发的,但不代表源代码和文档就是公开的,大家集体的成果也不是就允许侵犯的。建议注册专用的版权归之于组织自身,源代码和发布给所有人下载使用的人进行研究和修改用于自己或发布源代码的工具,但是不允许是拥有版权和商业软件,但是设计文档应该不发布,同时可以自己修改不拥有版权,同时还需要进行版本的管理和未来的修改和扩充,这些目前看来主要还是由总体负责人进行维护,但是需要把完整的代码和文档提交一起存档。


地主 发表时间: 08/02 13:45

回复: ricky [ricky]   版主   登录
但愿1年后可以到这个规模


B1层 发表时间: 08/02 14:31

回复: Muddy [muddy]   论坛用户   登录
还是知道一点软件工程的内容比较好~

B2层 发表时间: 08/03 21:35

回复: baicaigeng [baicaigeng]   论坛用户   登录
很对, 需要补充的是:
每一个人的程序至少要有两个人review过

B3层 发表时间: 08/03 22:21

回复: tmxk [tmxk]   论坛用户   登录
数量不是问题,恐怕组织和联系会成为问题,交流很难作到足够顺畅。

再有总设计师的水平低了或者经验不足恐怕是面临的最大的问题。

如果只是身边儿熟悉的几个朋友作,就没必要搞的这么夸张,也不用开什么会了。

为互相不熟悉,风格不一样的开发人员建立可以互相协作开发的模式和平台,如果能够作成的话,那就是这次会议及后续工作的最大的收获了。

B4层 发表时间: 08/05 08:40

回复: flashsky [flashsky]   论坛用户   登录
是的,为互相不熟悉,风格不一样的开发人员建立可以互相协作开发的模式和平台是共享式软件松散协作开发最大的困难,因此,一个优秀的总体负责的人员是必不可少的,否则一切免谈,做不好总体技术和软件质量,进度控制松散协作开发就等于是空,还不如每个人自己做。正因为松散协作开发的相互之间的交流与沟通比较困难,所以对于总体的设计文档更需要重视,只有这样才能把分散的交流线汇总在对总体负责的人员身上,减少了交流的层次和复杂性,和理解可能出现的二义性(这些都是在松散式开发中发现的比较慢的问题,在时实开发中可能就会能及早发现和处理),但同时也提升了对总体负责的人员的整体素质的要求。
另外也要求加入的程序员本身具备一个比较优秀的程序员的素质才行,如达到软件工程的PSP的要求,个人对个人的代码实现编程规范的要求,提供详细的注释和接口说明,并能保证一定的正确性的基础之上进行提交,一个有效率的松散协作开发才有可能。
因此人员的素质是最重要的,因此20CN当前的问题不是急于做一个东西,而是划定核心技术人员的问题,对一个技术组织而言,应至少分为2层:核心技术层主要负责技术研究和软件开发,对外围层则主要是技术普及和问题解答,适当参与提供建议一些思路和建议这些方面。划定核心技术层,了解大致人员技能与水平之后,能有效利用这些资源之后再来讨论开发方面的,否则很难做成一件事情。


B5层 发表时间: 08/05 08:55

回复: ricky [ricky]   版主   登录
你说的很对,但是由于互相之间的不了解,可能需要一段时间来熟悉,这样才能建立一个相对稳定合拍的开发班子,你觉得如何

B6层 发表时间: 08/05 10:51

论坛: 原创软件

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号