接上回,继续分享.NET开发中关于工具的使用经验
15 报表工具。数据的导入导出是系统的一项基本功能,我们让用户辛苦的输入那么多数据,现在是让用户享受成果的时候,你的程序要能用各种方法分析用户的input,甚至你也要帮忙用户分析performance.
常用的报表Weekly report,Monthly report,Efficiency report by group/by employee,WIP report都要熟练掌握。
以前的一个项目选用Crystal report,SQL Server 2005发布后,我们又多了一种选择:Reporting Services. 微软的工具一向简单好用,入门容易,尽管如此,你还是要熟练掌握给报表传参数,设计报表公式,区分RDLC和RDL(本地模式和服务器模式),还有动态调用报表。
报表还支持调用自定义程序集。以前做的一个项目,在报表里面实现多语言版本,所有的label的Text属性都是调用DLL的类中的属性,做得相当漂亮。
截一个图,分享一下
参数选择区域
报表结果
报表中的Logo和公司相关的内容已经被我去除)
最好还做一个报表管理器,集中管理所有的报表。
16 任务记划,Bug追踪。
这个内容在之前我已经分享过,请看这里
软件错误报告与反馈
17 需要熟练掌握SQL脚本书写,最好有大量的SQL代码供你参考。SQL Server本身自带的联机从书就是很好的SQL代码库,你的电脑中最好有SQL Server 2000,SQL Server 2005,SQL Server 2008三个版本的联机从书,查找SQL代码才会轻松自如。另外,经常看的书的随书源码也要保存好,必要的时候都可以参考
《SQL Server精华.chm》这本电子书也最好要用,关于SQL的问题,总结的很全面。
如果你做过报表项目,你对SQL的理解应该是超过一般人的。写程序的时候,SQL不好写的,可以放到程序中去实现,比如字符串处理(权限字符串的分解与判断),计算处理(decimal的精度计算)。
但是,在做报表的时候,你没有办法这么做,你必需老老实实的在SQL脚本中考虑好所有问题的处理方法,然后用T-SQL写好,于是,痛苦过后是对SQL脱胎换骨的理解。
报表开发商注意到这个问题,现在Reporting Services支持调用程序员自己开发的Assembly,非常方便,报表的开发商为程序员打开一座后门,你可以从那里逃走,不必在冰天雪地,360度空翻,裸求SQL的写法,呵呵。
18 需要了解一些常见的生产业务系统的动作流程。
做了几年的程序,我们程序最了解的系统应该是系统管理(System Administration),一些常见的部门用户角色权限之类的系统,这样还不够,你还需要了解一些业务系统。
以行业来分,做哪一行,对该行业的生产运作流程,大概应该有个了解,
以通用性来分,生产管理(operation managment),项目管理(project management),品质管理(QC management),人力资源管理(HR management), 采购管理(purchase management),你都应该有所了解。
看书是一种学习的方法;有机会到他们的工厂去参观一下,也是一种方法,而且印象更深刻;
把人家的产品文档,用户手册下载下来,对照软件和用户手册一起看,一边操作,也是一种办法;
以我的理解,每个细分的领域,还是有很多项目可做。通常人家不愿意花银子做,请不起开发人员;想做软件的人(user)没有决定权,有决定权的人(boss)没有做软件的想法;或是找不到信任的人,宁愿不做,还是用EXCEL的版本,春去冬来,年复一年。
19 需要大量的例子程序,编程的时候想都不用想,代码拷贝过去程序就做完了。
这里面需要积累,不是一朝一夕能完成的。做过的项目,好好整理一下,实在认为惨不忍睹(项目被改的面目全非,完全不是当初规划的样子,设计和编程完全脱节),把技术要点整理一下,下次做新的项目好用;还有,微软定期公布的demo,training kit, 你也要下载下来,保存好。
我记得.NET 1.1发布的时候,101 sample code, 一个MSI文件,6MB左右,被我拷贝了很多份。每学一次,就按照自己的理解去改动一下它的例子,看看能不能运行,结果是否是预期的。
最近微软又在大肆宣传它的Visual Studio 2010和.NET 4.0,现在还是beta 2,预计下个月就RTM。
你可以视而不见,当做没有这回事。也可以像我一样,把你电脑里的美女帅哥图片删除一些,留点空间给这些demo,sample code,training kit存放。跟着微软混,这些东东迟早是要的。
20 需要一个合理的流程。boss开过很多次会,都提到过这个流程,分享给大家
讨论需求-->设计,开发-->调整,培训,推广-->反馈,跟进,完善—> 再讨论,演化
你可以把软件工程书里的那个流程那拿来和这个流程比较,以此评判我们公司的水平有限,我的水平有限。以公司的角度,
按时按质的完成任务,是职业化员工的必备技能。
每到一个公司,都有他自己的文化,你会发现书中所说的都是理想的状态。这种文化有时候是好的,是做事的一种默契,有时候也有弊端,他会抗拒变化,因为承担不起变化的责任而拒绝变化,抗拒改变。
做一个项目要老老实实的分析需求,设计,开发;实施一个项目要有一些为人处事的伎俩和手段;在我手里,也有失败的项目,不是程序不好,
程序可以持续改进,可以做CIP,从demo—>trial—> trial run,至始至终,向上得不到支持,向下面对一大群EXCEL终实用户的反抗,那个项目真是累死人,
我只好give up.
21 业务开发平台。这个东东,可能是管理软件开发的终极解决方案,像工厂一样,生产企业管理软件。
平时我们见到的factory,是生产产品,现在可以生产企业管理软件的factory诞生了。
以我的理解,需要这四个东东
1) 业务实体设计器,可以生成业务实体,同时导出为SQL代码和C#程序代码
2) 窗体设计器,可以生成用户界面
这是《俊先企业管理软件开发平台》中的例子,一个完整的窗全设计器,可以生成窗体代码,在运行时用反射技术,加载窗体,执行。
我自己私下里也折腾过这个东东
用XML文件来表示窗体,运行时动态解析窗体文件。XML文件可以放到硬盘里,也可以放到数据库中。
CREATE TABLE [dbo].[Form](
[GUID] [uniqueidentifier] NOT NULL,
[Name] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[Text] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[Definition] [xml] NULL,
[DataTable] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[LastUpdateTime] [datetime] NULL,
[Workflow] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
CONSTRAINT [PK_Form] PRIMARY KEY CLUSTERED
(
[GUID] ASC
)WITH (PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
3) 流程设计器 直接用工作流本身的流程设计器,自己提前先设计好接口加再进去,否则那些外部方法和事件可能会找不到接口而不能编译通过
有些工具是自己折腾的,有些东东是别人的作品,我只是拿来用,有些工具是在别人基础上,进过我的重新规划设计;这些东东只是自己的私房工具,没事的时候瞎折腾,并没有在公司的产品中应用,我敢截图出来与大家分享。不要向我索取,很多东东你都用不上,你只是好奇,真的,相信我。
22 需要一个门户站点,来管理任务,问题,项目。
推荐你用SharePoint Services,这东东70MB多,如果买了Windows Server 2003的License,这个工具包是免费的,好用,稳定,可扩展。
下一个版本我打算把公司的WCF服务器驻留在这里,把报表服务器也驻留在这里,成为公司内部的team site。
美观大气,可扩展性好。
写到这里,也写的差不多了,还有几个条目,没想好具体内容,暂且不表。
应该说,不是这些工具重要,而是人更重要,人对了,软件和项目就对了,整个世界就对了。
如果你错过了前面的内容,这里还有两篇,与大家分享,
做一个项目,平时都用到哪些工具提高效率(中)
做一个项目,平时都用到哪些工具提高效率(上)
欢迎拍砖头。