软件工程实践
摘要: Model-View-Controller简称为MVC,这是图形界面(GUI)应用程序的一种架构形式。Model是业务领域层,比如我们在前面两篇里面提到的Account、Entry、Bill、Invoice之类的对象,这些类构成了一个电信账务系统的业务领域层;View就是用户界面;Controller是指用户界面和业务对象之间的控制器,控制器的作用是从业务对象中获取数据显示到用户界面上,并且从界面...
阅读全文
摘要: 在上一篇里面,我们初步了解了OO设计,OO设计的最独特之处在于他看待需求的方式。用这样的方式,我们不需要急于确定软件需要实现哪些流程、设计哪些功能点、制作哪些画面,而是要关注需求中一些更加基本的概念。首先根据这些概念开发出一些零件,然后把这些零件组装起来实现需要的功能。用这样的方式,我们不需要一开始就去知道所有的业务需求,只需要知道一些比较重要的需求,就可以开始开发了。这样开发出来的程序不仅可以实...
阅读全文
摘要: 我使用OO技术第一次设计软件的时候,犯了一个设计者所能犯的所有错误。那是一个来自国外的外包项目,外方负责功能设计,我们公司负责程序设计、编码和测试。 第一个重要的错误是,我没有认真的把设计说明书看明白。功能点设计确实有一些问题,按照他们的设计,一个重要的流程是无法实现的。于是我在没有与投资方沟通的情况下,擅自改动了设计,把一个原本在Linux系统上开发的模块改到了Windows系统上。结果流程确实...
阅读全文
摘要: 中学的时候,学校里开设了电脑课。当时的电脑还是一种比较希罕的东西,学校里的电脑一共就十几台,还专门找了一个大厅摆放这些机器。厅里面铺着厚厚的地毯,整天都拉着重重的窗帘。每次上课前一天,我们需要沐浴更衣,剪好指甲。上课时大家都穿上鞋套,排好队伍,列队进入机房。然后各位同学坐在座位上,在老师的指挥下,拿出一张五英寸的软磁盘,磁盘里安装着DOS操作系统,插入电脑的A驱动器。然后依次打开显示器、主机电源,...
阅读全文
摘要: 没有一个项目不是重视需求调查的。从第一天开始,开发人员就拿着一个笔记本,把用户都拉到会议室,询问他们的业务流程是什么样的。知道了业务流程,开发者剩下的工作就明确了,一条一条的去实现他们,系统就OK了。但是,业务流程可以代替需求吗?实际上,在业务流程的背后,有一个更加根本的因素——商业需求。商业需求才是真正的需求,业务流程只是一种实现手段而已。开发者询问用户:“你们的业务流程是什么样的?...
阅读全文
摘要: 看了一篇讨论:http://www.cnblogs.com/yimlin/archive/2006/11/30/578333.html有些感想:并不是所有的行为都必须属于某个对象,有的行为似乎放在任何一个对象中都不合适,那就单独放在那里好了,没必要非要造出一个对象来,更不能把它硬安在某个对象上。按照oop的方法,软件的逻辑架构可以分成下面几个层次:1:基础设施层——这个层次解决的是物理问题,比如d...
阅读全文
摘要: 先说一个小笑话。有一个生产队队长,他对专家说:“现在我们生产队的地越来越多,牛越来越忙不过来了。我想要这么一种牛,他吃的草和普通牛一样多,但是干的活是普通牛的十倍。”专家说:“这种牛是可以造出来的,现在有基因工程。”队长说:“好吧,你给这造几头这样的牛。”于是专家找到了生物实验室,让生物实验室的人搞一个基因工程,把牛造出来。于...
阅读全文
摘要: 程序维护的时候经常遇到两个困难:1、不知道这段代码是实现什么功能的(code —— function);2、不知道这个功能是实现什么需求的(function —— business)。解决第一个问题是比较容易的,大家都是搞技术的,一头扎进代码里去,看上几十分钟,通常就能明白:原来这段代码是从数据库里面找到前三个月一直处于停机状态的号码,然后把这些号码放到一个叫做QUIT_USER的数据表里面去。第...
阅读全文
摘要: NGOSS(Next Generation Operational Support Systems)是由TMF(Tele Management Forum)提出的,他用于电信领域,是构建下一代OSS/BSS系统的框架。TMF提供了技术中立构架(TNA)作为NGOSS解决方案的技术构架,这样就把NGOSS建立成了一种标准,这个标准与实现他的技术相互独立。TMF还提供了一组测试方法,用于验证解决方案是...
阅读全文
摘要: IT系统是根据需求建设的,而需求是从哪里来的呢?为什么这个世界需要一个这样的系统,为什么系统需要做成这样,不多做一些事情,也不少做一些事情,恰好就要做这么多事情?这些问题难道不是问题吗,难道需求是理所应当的吗,需求是从哪里来的呢,用户为什么有需求,需求为什么是这样?下面我做了这么一件事,把一个家庭的活动整理了一下,有下面一些内容:一个家庭的活动有这几个内容:工作、娱乐、购物、文化教育、医疗保健、人...
阅读全文
摘要: 灵活的软件,可以更好的适应用户的需求。什么样的软件才是灵活的?一旦用户提出灵活性方面的需求,设计者经常想到的一个对策是:增加配置。在不同的业务环节上增加功能配置,哪里需要灵活性,就把配置写到哪里。配置为软件系统提供了无数个可能——这就是灵活性。但是配置经常复杂无比,失去控制。很多配置项目已经失去了业务意义,完全成为一种数学意义上的排列组合。按照一些配置的路线,业务无法形成闭环流程,走进死胡同。这样...
阅读全文
摘要: 我的第一个工作是在一家软件公司写程序,主要的客户是一家省级电力公司。工作主要是以项目的形式,项目签下来了,忙几个月,从需求调研到设计,编码,测试,然后现场调试,现场维护。做完了以后通常有一个空闲时间,然后进入下一个项目。每个项目的需求都有一定的差异,但是都是在同一家电力公司里,尽管具体的客户不同,解决的问题也不同,但是都属于同一个大的商业范围。现在已经离开这家公司近一年了。有时候思考以前的经历,更...
阅读全文
摘要: 一个7×24的帐务系统,一个每天都要开门营业的营业厅,运行了好几年了,小改小闹几乎天天不断,大的升级隔半年到一年就要有一次。外界还有新的系统要接在上面,不断的开拓新的接口,功能不断扩充……系统最近一次大的升级,就在今年的3月。当时开发公司来了几十个人,平时人烟稀少的机房里面挤满了人。升级前一天的晚上,项目经理召集广大人民群众,发表升级前的最后一次讲话:“...
阅读全文
摘要: 软件设计首先要整理用户的业务模型,然后以此为参照,结合环境条件,建立软件系统模型。在这个过程中,很重要的一点是:要剔除软件模型中多余的概念。哪些是“多余的概念”呢?如果一个概念是从用户的业务模型中无法直接观察到的,而是设计者推想出来的,那么这个概念就是多余的概念。我们想象一个铁路公司,经营着ABCD四个城市之间的路线。这几个城市的位置如下:铁路公司的老板想做一个售票系统,他...
阅读全文