2009年10月30日星期五
2009年10月29日星期四
虽然非常仔细,但是还有遗漏
- 是否支持ORACLE数据库。因为有可能需要在客户现场的系统都是用统一的数据库系统。目前采购的软件如果需要部署在ORACLE上面的话,有可能需要价格在DOUBLE。
- 能够提供什么样的接口与其他的系统进行集成。因为有可能本系统需要与客户方若干已有的系统进行集成,可能会仔细的安排各个系统各自的职责等等。
- 是否能够提供可供二次开发的接口。这个也非常重要。
2009年10月28日星期三
Firefox插件的选择
| FEBE | Sxipper | Xmarks | Lastpass | |
| Configurations | o | |||
| Extensions | o | |||
| Bookmarks | o | o | ||
| Password | o | o | o | o |
| Auto Form | o | o | ||
| Online | box.net (GFW) | Xmarks (GFW) / Self Server | o | |
| Offline | o | manual backup | o | |
| Sync | On Time | Auto |
2009年10月26日星期一
这是一个哲学论断
2009年10月24日星期六
2009年10月12日星期一
取消使用instiki,完全转向redmine。正在看activeCollab和ProjectPier
2009年10月2日星期五
决定退回到redmine+instiki了
- 参考jira,利用插件,多建立一些项目的图表。
- 看看是否可以开发一个风险管理的插件。
- 看看issue的过滤器能够多灵活?
2009年9月29日星期二
准备再研究一下JIRA+CONFLUENCE
项目管理软件选择陷入僵局!
| Jira+Confluence | dotProject+PmWiki | Redmine+instiki | |
| 优势 | 灵活的ISSUE管理和自定义的过滤器 | 管理领域全面 | 功能适中 |
| 基于登录的WIKI和完善的权限控制 | 内置讨论区 | 分项目的WIKI | |
| 插件丰富 | 条目分类清楚(任务,时间,问题,风险,机构,部门,联系人) | 插件丰富 | |
| 劣势 | 没有分项目的WIKI | 没有分项目的WIKI | instiki功能简单 |
| 商业版,目前可以破解 | 缺乏自定义过滤器 | 任务分层必须使用插件实现,但是插件安装失败 | |
| 没有事件管理 | 插件少,缺少图表 | 插件安装困难,版本混乱 |
2009年9月28日星期一
2009年9月27日星期日
准备放弃redmine了
2009年9月25日星期五
新公司的工作内容
- 工程部门和软件部门的项目现状的调研,其中包括多次参加各个项目的诊断会议,然后给出诊断报告。
- 制定一个初步的软件开发项目管理过程指导书,同时给出相应的各种文档模板。
- 制定项目办未来大约两年的工作内容规划,在规划中给出项目办的工作职责以及8个阶段的工作内容和预期效果。
- 制定公司级别的项目管理团队绩效考核办法。
- 另外的一个重要的任务,是老板吩咐了需要在公司建立项目管理信息系统。
关于PMIS (Project Management Information System)的选择,目前决定使用版本控制软件+项目管理系统+维基(作为门户)的组合。
- 版本控制软件选择了''Subversion''而不是目前公司通用的Visual Sourcesafe。
- 主要是考虑到为了以后能够更方便的配合项目管理系统。因为多数流行的低费用的项目管理系统都能够对Subversion或者CVS进行集成,而支持VSS的很少。
- 项目管理系统选择了''Redmine''而不是Jira或者dotProject。
- dotProject虽然功能非常强大,基于PHP部署方便,但是其定制能力有限,而且想要扩展的话也是源代码级别的。考虑到可能的功能的灵活性的要求,只能放弃了。(使用过程中发现~PHP5.3下面有无法解决的问题,总是显示错误提示,之后换用~PHP5.2.X,一切正常。好在基于WAMP进行试用,切换PHP的版本非常方便。)
- Jira其实是非常适合的产品。系统稳定,功能强大。可定制能力非常强!而且功能扩展也非常方便,有现成的N多插件可以选择,足以满足需要。而且可以和Confluence进行集成也很诱人。缺点是商业软件,破解繁琐。基于JAVA平台,因此试用时部署非常方便,但是在生产环境下的部署却比较麻烦。
- Redmine基于~RoR平台,部署非常方便。有插件机制因此也可以方便的进行扩展。Open Source所以实在不行也可以自己编写扩展。功能还算灵活,相比Jira配置简单,内置了WIKI和新闻发布。目前的问题是:功能不够复杂(呵呵,给老板看的时候需要更像一个庞大的系统),缺乏企业级的管理功能,不过通过插件应该可以弥补。性能如何目前还不肯定。
- 维基系统选择了''instiki''而不是~PmWIKI或者Confluence.
- Confluence应该是最适合企业应用的WIKI软件,况且能够和Jira完美配合。无奈是商业产品,破解困难。另外基于JAVA,生产环境下和Jira一同部署也比较麻烦。
- ~PmWIKI基于PHP系统,部署非常方便。另外自身功能也很不错,权限控制也比较灵活,能够应付企业应用。有非常丰富的插件可以选择,可扩展能力很强!
- instiki功能简洁,勉强满足需求。不过它也是基于~RoR平台的,因此在和Redmine同时部署的时候比较方便。
2009年9月1日星期二
何时应该使用用例进行建模
- 系统有功能性需求所主导。
- 系统具有很多类型的用户,系统对他们提供不同的功能(有很多参与者)。
- 系统具有很多接口(有很多参与者)。(我的理解:如果针对业务应用系统而言,意味着有很多操作界面。)
- 系统由非功能性需求所主导。
- 系统具有很少的用户。
- 系统具有很少的接口。(例如嵌入式系统或者算法复杂但接口很少的系统)
- 用例建模的基本原则是保持捕获到得信息量是必要的、最小的。这意味着,很多次要场景可能根本就没有说明——用例中的一行有关它们的描述可能让人足以理解系统的功能。
2009年7月10日星期五
月盈则亏,水满则溢
2009年7月7日星期二
今天下午的测试培训会议
看见一个口齿不太清楚的人正在演示ppt。听了听内容,基本事实幼儿园级别的入门培训。从测试的一些基本概念到测试管理,简单讲了讲td的使用等等。
老板和测试人员们正在很崇拜的请教。
(下周就要进行UAT测试了,现在临时抱佛脚。)
中间讲到了目前应该怎么测试流程,专家建议仅仅找一个最主要的流程走通。(专家把物流系统当作简单的网上购物了。)
讲到目前测试人员太少,只有两个。专家说50多个开发人员起码需要有五六个测试人员嘛。现在需要将开发人员调入参与测试执行。(目前项目的状况,开发人员还都在满负荷地进行开发呢……五六个测试人员就够了吗?)
讲到测试人员目前介入得太晚了,不了解需求。专家说:这说明项目经理一开始就没有重视这件事情。现在需求人员应该没有什么事情了吧,也需要参与测试。(现在需求人员已经忙得不可开交了,天天在应对客户方面的各种各样的要求。项目刚刚立项的时候我就正式的和老板要求了:一定要在需求期间测试人员参与,一定要保证测试人员的数量和质量。结果呢?先后进入项目的6个测试人员迅速离职或者辞退了。然后老板说不要指望测试人员测试了,开发人员自己来吧。然后真正需要有经验的测试人员出具测试方案了,老板指派项目管理中心的专职SQA人员进行负责。)
讲到目前还有需求变更的情况出现,专家说项目经理对需求变更没有很好的进行控制。(专家知不知道项目组面对的是什么样的客户?)
可以看出,老板还是对测试一点概念也没有,进而发现老板对项目管理的内容实在是理解得太初级了。所以现在对这个山寨专家非常崇拜。
我私下问了问这个专家什么来历?据说:这位姓束的专家是IBM的高级项目管理顾问。原来也是联创的员工,是老板的老同事。而且据称也是位天才级人物。原来如彼。
总之,我晕!
2009年6月17日星期三
面向对象设计背后的数据库设计(摘自"The Object Primer")
- 把对象映射到关系数据库
首先,类的属性将会映射成关系数据库中的0列或多列(最好使用相似的命名规范)。
对象的有些属性本身就是对象,它真实地反映了两个类之间的关联。
并非所有的属性都是持久的,有一些被用来进行临时计算。
- 影子信息
影子信息(shadow information)是除了普通领域数据之外,对象需要维护的任何用于将它们自己持久化的数据。
一般如主键信息,特别是没有业务含义的代理主键。并发控制标记、时间戳、增量计数器。
- 映射继承结构
将继承映射进关系数据库中,有3种主要的方法:
- 把整个类层次映射到单张表中。
- 把每个具体类映射成自己的表。
- 把每个类映射成自己的表。
3种技术的对比
| 技术 | 优点 | 缺点 |
| 单表 |
|
|
| 每个具体类一张表 |
|
|
| 每个类一张表 |
|
|
- 映射关系
对象模式中的关系是通过对象引用和操作的组合来实现的。而在RDB中,他们通过外键来维护。
映射关系的方式依赖于他的多重性:
- 一对一关系
如果每个类都有一张表对应,那么这两张表之一需要实现一个外键。
第二种策略是简单的在单张表中存储两个类的数据。
- 一对多关系
它的实现方式是在关系中多的那方面使用Hashset等集合,在一的这方面使用对象引用。
在数据库中,他是在关系中多的一方通过外键来实现。
- 多对多关系
两个类之间的多对多的关系被映射成数据库内的关联表。
- 迭代关系
也称为自反关系,它是指关系的两侧都是相同的实体。
我们可以使用非迭代关系相同的方式来映射它们。
功能驱动与用例驱动(关于用例、用户故事和特征的解释)
软件开发过程中,描述并分析需求会同时采用不同的角度和方式。例如功能分析和场景分析。
其中功能分析是指描述系统所应该具有的功能。场景分析是指在特定场景中用户的操作步骤以及系统给出的相应的反应。
功能分析文档所列出的清单一般会叫做“软件需求”或者“系统特征”。
场景分析文档所列出的内容一般就是“用例文档”
由此可见,RUP中所使用的用例驱动开发,XP中所使用的用户故事驱动开发以及特征驱动开发,表面上看起来是以其分割粒度的不同进行排列下来的。其实我们可以看出,用户故事和特征都是从功能分析的角度对系统的需求进行的描述。其与RUP所说的用例驱动完全使用了不同的分析方法。
这样我们就可以更好的理解XX驱动开发之间的区别在那里。
下面是功能驱动与用例驱动之间的对比表格:
| 功能驱动 | 用例驱动 |
|
|
在实际需求分析的过程中,两种分析方式相辅相成,都有其独到的贡献,最好能够结合使用。
我理解,互联网类型的项目更适合功能驱动开发,而企业业务系统类型的项目更适合用例驱动的开发。
2009年5月18日星期一
芜湖项目现场需求调研阶段总结
芜湖项目现场需求调研阶段,工作效率高,工作成果的质量也很好,现在总结如下:
- 需求分析团队人员要尽量少,减少沟通成本。尽量只允许业务核心人员参与,这样能够以最快速度对业务流程进行确认。
反观现在大平台的项目,需求分析阶段有30多个人参加,包括了国家局的人员和各省市的人员。分成了6个分析小组。诸多问题无法现场进行确认,因为参加的人多,因此大家都不作结论,只能会后通过EMAIL来回来去。由于分组很多,因此涉及到很多跨小组的问题进一步增加了沟通成本。 - 需求讨论会议现场形成文档,由于文档形式上是共同创作完成,因此可以省略客户确认文档的过程。
反观现在大平台的项目,会议之后,需求分析人员晚上加班形成需求访谈报告,需要客户确认,然后再形成需求规格说明书,再要求客户确认,这样效率非常差。 - 关于需求分析的团队构成,建议如下:
- 客户业务人员
- 客户IT人员
- 主力业务分析人员:主要负责需求分析工作,引导大家使用正确的方式和正确的方向进行需求分析工作。
- 业务分析助理:主要使用合适的工具,现场进行文档撰写工作。也可以提出自己的建议。因此该人员也需要有一定的需求分析能力和文档撰写经验。
- 项目助理:负责对会议中的各种未定事项以及决议进行跟踪,并且进行其他的一些辅助性工作。
- 解决方案顾问团队:辅助角色,可以离线支持。主要对相关业务领域或者IT技术领域进行咨询工作。
- 开发组组长以及主要设计人员
- 系统实施负责人 - 使用的工具建议如下:
- 业务流程分析工具,以便团队成员能够在早期对业务流程有全貌的认识,如BPMN, EPC图等等
- 快速互动原型工具,以便快速形成可以进行互动的动态系统原型,给客户良好的感受。推荐serena prototype composer或者axure rp等。
- Sparx Enterprise architect,全面的项目模型管理,在此阶段主要使用到:用例分析,领域模型,需求条目管理等等。(在用例中需要填写senario条目,并且需要与需求条目进行关联)
- Balsamiq Mockups,对操作页面进行设计。 - 对目前的大平台,现在能想到的建议如下:
- 分组尽量少,1~2各组,人员尽量少,减少沟通成本。
- 现场形成文档。
- 在早期需要有总体业务流程分析过程,然后在进入细节系统需求分析过程。
- 使用上述的工具
- 使用上述的团队组织结构
综上,发现上述经验并不太符合敏捷过程,反而与《人月神话》中的理论非常相似。起码,可以总结出来两点:1.架构(需求分析)是贵族专有的工作内容。2.需要组成外科手术型的团队结构。
2009年5月17日星期日
芜湖出差,巡回取货项目的一些心得
出差两周,其中需求调研工作大约占用了6个工作日的时间。另外有2个工作日大约是各种各样的汇报。
工作进行的比较顺利。体验也很好,主要是可以按照自己比较推荐的方法来进行项目工作,大家都比较轻松,工作效率也很高。客户方也反映工作效率很高,工作很有成效。
开始的几天,使用serena prototype composer工具,项目组成员在同一个会议室中,主要讨论工作流程(与系统无关)。然后同样使用这个工具,讨论大致的系统操作流程,同时画出初步的系统界面。这个阶段成果效果非常好:大家对系统的总体概念已经形成,基本确认了系统范围。并且形成了可以进行互动的系统界面原型。
然后开始使用EA和Balsamiq Mockups配合进行用例分析与界面设计。在EA中复制了serena prototype composer中的工作流程,然后进行用例分析,在用例中进行场景senario步骤描述。针对每一个用例,至少使用Mockups软件绘制一张界面设计图。另外在EA中进行领域模型的设计。
综上,提供出一份真正对开发有帮助的需求文档。
经估算,这两周的需求分析工作定义出的系统需求大约需要5人团队开发3个月的时间的工作量。开起来也非常符合比例。当然这仅仅是估算的合理值,估计和客户方面进行协商之后,时间上又会变得非常不合理。
客户非常高兴的从我这里拿到了上述的三款设计工具。不过,真正重要的是需要会使用这些工具啊。
在出差期间,抽时间学习“Head First OOAD”,有如下收获:
终于对需求和用例明确的区分开了。需求大约总是以“系统应该可以xxx”这样的格式描述,主要描述系统所具有的功能和能力。用例侧重于描述某某场景senario下面的操作步骤。因此大约会是包括正常路径/可选路径/替代路径等等。
不过,在出差期间,本计划使用类似极限编程方式的增量开发,结果未遂。最终变成了类似ICONIX方式的过程。
另外,意外的发现,原公司上班时,结识的MOTO客户,现在正在作为甲方折磨着现在我的客户。现在我的客户天天折磨我们,同时他们也在被MOTO客户折磨着。……