如何设置与未知的未来修改和功能的应用程序?

背景

我没有新的节目,但我当它涉及到处理客户和他们的需求。 这里是我的历史我目前的客户:我继承了PHP应用程序与它是2/3完成后,继续使之100%完成,直到客户想(主要)功能,导致应用程序和数据库需要重写。 我花了两个星期起草如何在新的应用程序将与新的变化工作,以及其他需要的功能和批准后,我开始构建应用程序,再次。 我现在被要求补充说,新的建设 - 又一次之前没有讨论新的功能,他们是非常重大的。 此外,整个应用程序是活的有超过300个用户 - 使它更难。

忽略客户端请求不最初讨论的特征事实。 如何让我的应用我建立功能的证据 ? 在知府的世界中,客户端就会知道到底是什么功能的应用程序应该有,这将使它更加容易做我的工作。 但是,这并非如此,这些主要功能我说的是那些在起草该应用程序,而不是当应用程序在线 - 尽管这个问题一般为今后的任何修改或功能,应用程序应该被包括在内。

我不喜欢告诉我的客户端的功能或改变他的要求是如此之大,我不得不重写整个应用程序(再次)。 但是,在写这篇它发生,我认为它可能不是我的错,该功能不能没有重新开始增加。 但是,这似乎几乎是任何新功能,他希望,因为有些东西已经被硬编码的应用程序,并正在改变他们的一项新功能,只是不会工作。

任何个人的经验,这种情况会great-我希望我不是唯一一个处理这个问题,因为它可以是非常令人沮丧。 谢谢!

--------------解决方案-------------

放心,这是一个老问题。 大多数程序员不得不处理一些管理者或决策者谁拥有的每一天的应用程序的新构想。 他们似乎不明白,它需要大量的工作实现自动化的东西比它需要在一个较高的水平来形容了。 他们好像也并不了解,它需要对工人的士气通行费被告知要拆你只是努力的东西。

这是一个很难的问题,试图预测所有的方式之一,可以要求重新设计软件。 有人建议挂钩,让您可以在工作流中的任何给定步骤添加新的功能,而无需撕开的应用程序。 但你应该添加的挂钩? 而如果工作流本身需要改变?

许多软件开发人员使用像敏捷软件开发和极限编程或其他迭代方法的方法。

一个迭代开发的共同想法是,你不应该试图预测未来所有的变化。 你们有些人预期会发生过程中的变化,但它只是为可能很多人都不会,所以你把工作的预期可能出现的变化是无用功。

所以,你应该只写今天所需要的软件。 你将不得不重写它的一些作为事情的变化,但这是正常的,不可避免的。 而且很可能是大部分不会改变,因此简单的设计比较好。 的假设是,通过集中只是在目前的需求,可以减少整体做工足以使这是一个净赢。

当然,他们也说,你应该回应摆好改变时,它确实发生,并通过与客户(或经理)经常沟通减少时间损失。 实体模型和原型是在这种情况下非常有用的工具。 也不要害怕告诉你的经理是如实多久要带你重新设计软件,以满足其描述。 您可以通过提出一些妥协帮助。 例如,通常是一个单一的功能,他要求的是你需要重新构建的原因,否则的变化将是更多的未成年人。 因此,公开谈论这一点,有一个对话,看看是否有另一种方式来解决,同样需要没有这么多的工作。 这应该是他的兴趣也一样,如果他能得到这种需要更快速,成本更低满足。

但是,最终你可能会面临一个经理谁是完全懵了。 谈判或改进方法再多,都无法帮助在这种情况下。 不要为别人谁是坚持不尊重你和你的时间,你的工作在产品工作。 而让不把它们踩过去,你或者有罪游到你工作时间长。

同时阅读这幽默片,这可能反映了自己的情况:如果建筑师必须工作就像程序员。

挂钩。

使一些可扩展性最好的办法就是让它有许多明确记载的插入点额外的代码。 少原程序必须进行修改,以适应新的功能,效果更佳。 这种想法的背后是“扩展”,“附加组件”,“模块”,不管是谁 - 让这个人可以提高你的程序,而无需触摸它的源代码。

由于PHP支持OOP和我的求学已经OOP从一开始,我建议你学习面向对象的设计模式,喜欢你的手背。 此外,认为“代码接口”了许多。 该架构是建立在首位的方式有很多事情要做有问题的代码的可维护性。 您可以离开应用程序单独和重新设计从地上爬起来,然后交换系统的全部内容。 这使得处理300用户比一次更新小零件容易。

设计模式:http://en.wikipedia.org/wiki/Design_pattern

根据需要,可以使用一“插件”应用模型。

你永远不能做的东西完全面向未来。 功能拉出一个理由...以便它们可以得到遵守。 虽然我会说,如果客户愿意支付的钱为主要版本,这是他们的特权。

尽量提前可能在以后增加的功能规划,并使用可以包含这些功能没有完全重新编写设计。 有明显的初始复杂性,并能够轻松地在以后添加的东西,虽然能力之间的权衡。

使事情变得模块化,松耦合也有帮助。 如果你有一个部件一个相当明确定义的API,可以很容易地完全取代它的实现不接触多,是一个使用它的代码或任何。

Anticicoding主要的新功能几乎是不可能的。 然而,有几个景点,其中计划的灵活性,始终是一个好主意。 最重要的是有意义的保持数据库接口抽象和表字段扩展。 它常与活动记录或表数据网关或类似计划,有时一个简单的$字段名[$表] = [A,B,C]就足够了方便。

其次当然,尝试建立在挂钩或插件核心应用。 虽然,一次只能帮助进行功能扩展,没有大的变化。

如果您有现有用户和返工活的系统,它可以帮助实现数据库的意见(甚至版本?),保留旧的应用程序,并建立新的版本的扩展存储方案。 不过说真的,这是很难以评估在一个通用的描述。

两个概念来我的脑海里:“你是不是要去需要它”和“保持简单,愚蠢”。 也就是说,编码为未来的功能,以我的经验,是创建可怕的代码陷阱,那么未来来自不同的反正。 但也许这只是我。

分类:php 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.239 (s). 10 q(s)