不知不觉本系列已经写了一个月,编码前的各项工作到此也终于结束了。回头看看这一个月走过来,白天上班晚上码字查资料,写写改改,挺不容易的。很多时候有些知识会用,知道是怎么回事,但并不等于能写出来。错别字、表达不清、言不达意这些就很常见了。虽然有了这么多年的工作积累,真正写后才感觉到自己还远远不足。在这个期间查看了很多博客、相关的书籍,在写博的过程中明显感到自己提升了,所以还未写博的朋友也赶紧尝试一下吧。

  在写本系列的过程中,没有想到多次得到了编辑推荐,同时也得到了众多网友的支持,让我非常激动,在此表示万分感谢,同时也希望大家不要光看贴不评论,好的坏的都发表一下,大家多多交流。

  另外,本文主要针对的是初学者和中小型项目,所以使用的技术、文档和工具会更偏向个性化,对此一些朋友给了不少建议,我个人觉得,无论是白猫黑猫,抓得到老鼠的就是好猫,所以最主要的是要合适和好用,而不必在乎它是什么。无论什么软件都有它自身的优缺点,我们只要利用得好就可以了。当然我本人未曾在大公司呆过,对很多工具与一些规范性的东西都是一知半解,所以也就不可能用那些高大上的东西在本系列中应用了。不过对于快捷简单的开发一个中小型项目来说已经足够了,希望初学者们也不要一下子定位太高,我们从中小型项目做起,至于那些更好的工具,我也在学习当中,大家空闲时间从逛逛那些大神的博客努力学习就可以了。

  对于很多初学者来说,项目经验不是很足,在实际开发过程中很难把控好项目的进度,项目延期和加班加点那是家常便饭了,当然有一部分的原因可能是需求方的变动,而更多的是初学者们制定的开发计划不合理,预计时间不准确有关。

  为什么会出现预计的开发时间不准确呢?

  据我了解,主要有这几种情况:

  1、对项目需求、功能不太了解,不清楚项目涉及的业务逻辑与将要使用的算法,以及功能之间联动产生的影响;

  2、对开发框架或代码不够熟悉,不知道开发一个具体功能要调用到那些模块,需要花多长时间才能完成;

  3、预计的时间只是自己的代码编写完成时间,没有考虑错误修复与自测时间;

  4、在需求方、相关部门或上级领导的压力下(项目完成时间压力),挤压自己的休息时间,将工作以外的加班时间添加到实际开发时间中;

  5、开发经验不足或项目需要的技术不了解,解决问题与Debug占用太多时间;

  6、项目前期规划不好,存在结构性问题,导致代码量大增;

  7、需求方不断变动,未考虑需求变化对项目进度的影响;

  8、UI设计或其他同事开发进度影响;

  9、个人有事请假或其他外因影响,占用了大量开发时间;

  ......

  如何预计开发时间和控制项目进度呢?

  首先要做的就是前面章节的各项准备工作,了解需求、画出原型,然后设计各界面详细功能,绘制出相关流程图,再了解框架代码和项目中所需要使用的技术细节,做完这些细节一个项目到底要开发多少个界面,使用什么算法,花多时间基本上就心理有数了。

  当然这些都是影响预计开发时间的内在因素,除了这些以外,还有很多外在的不可控因素存在,会对项目进度造成更直接的影响。所以初学者在预估开发时间时,还需要注意下面几点:(由于时间关系对于每一点就不再举例说明了,大家自行理解)

  1、在设计项目时,考虑好扩展性,方便需求变动时容易添加新功能;

  2、评估时间须包括自测时间与Bug修复时间;

  3、对于功能开发,不要随意加入自己的创意,除非必要功能(需要与需求方确认),多余的功能一律不给予实现;(这一点在很多新人身上都会发生,他们大多思路活跃,喜欢在项目中加入自己觉得很不错的小功能或想法,这样的话就会令项目变得不可控了,多余的功能会占用开发时间,又会令项目产生更多的Bug)

  4、需求变更或增加时,必须通过项目经理或负责人统一规划安排,非必须项一律放到二期以后开发,新增需求必须重新评估开发时间;

  5、开发进度必须严格遵守实施计划的安排,可以提前完成,但不能延期;

  6、与需求方、项目经理、设计师以及部门同事做好充分的沟通工作,有问题主动请教别人,不耻下问;

  7、多请教部门中的前辈和技术部负责人;

  除了上面这些外,还有很多其他工作也是需要注意的,如项目更改后原型与文档的同步更新工作(对后期维护与二次开发会产生影响)、测试用例(设计得合理可以提高开发效率,不明白这些的人自测基本上都不会到位的,写出的代码会被测试人员反复的一虐再虐)、项目性能与安全优化(这个就更不用说了,经验不够的就算完成基本代码编写,但后面花费在这上面的时间将更长)、后期的项目部署等等,都会对进度产生一定的影响,这里就不再一一细说了。初学者不可能一开始开发时间就预估得很准,这需要开发经验的不断学习与积累。

  本项目开发进度安排(只列出一部分,具体请下载附件查看)

  

  

  

  本项目开发甘特图

  

 下载地址:项目实施计划与甘特图.rar

 (实施计划与甘特图在下载文件的《数据字典》中,另附上《项目开发计划》与《开发进度月报》模板)

 版权声明:

  本文由AllEmpty原创并发布于博客园,欢迎转载,未经本人同意必须保留此段声明,且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利。如有问题,可以通过1654937@qq.com 联系我,非常感谢。

  发表本编内容,只要主为了和大家共同学习共同进步,有兴趣的朋友可以加加Q群:327360708 ,大家一起探讨。

  更多内容,敬请观注博客:http://www.cnblogs.com/EmptyFS/

从零开始编写自己的C#框架(10)——项目实施计划与甘特图的更多相关文章

  1. 从零开始编写自己的C#框架(1)——前言

    记得十五年前自学编程时,拿着C语言厚厚的书,想要上机都不知道要用什么编译器来执行书中的例子.十二年前在大学自学ASP时,由于身边没有一位同学和朋友学习这种语言,也只能整天混在图收馆里拼命的啃书.而再后 ...

  2. 从零开始编写自己的C#框架(2)——开发前准备工作

    没想到写了个前言就受到很多朋友的支持,大家的推荐就是我最大的动力(推荐得我热血沸腾,大家就用推荐来猛砸我吧O^-^O),谢谢大家支持. 其实框架开发大家都知道,不过要想写得通俗点,我个人觉得还是挺吃力 ...

  3. 从零开始编写自己的C#框架(8)——后台管理系统功能设计

    还是老规矩先吐下槽,在规范的开发过程中,这个时候应该是编写总体设计(概要设计)的时候,不过对于中小型项目来说,过于规范的遵守软件工程,编写太多文档也会拉长进度,一般会将它与详细设计合并到一起来处理,所 ...

  4. 从零开始编写自己的C#框架(9)——数据库设计与创建

    对于千万级与百万级数据库设计是有所区别的,由于本项目是基于中小型软件开发框架来设计,记录量相对会比较少,所以数据库设计时考虑的角度是:与开发相结合:空间换性能:空间换开发效率:减少null异常.... ...

  5. 从零开始编写自己的C#框架 ---- 系列文章

    目录: 从零开始编写自己的C#框架(1)——前言从零开始编写自己的C#框架(2)——开发前的准备工作从零开始编写自己的C#框架(3)——开发规范从零开始编写自己的C#框架(4)——文档编写说明从零开始 ...

  6. 从零开始编写自己的C#框架(25)——网站部署

    导航 1.关掉访问保护 2.发布网站 3.复制网站到服务器 4.添加新网站 5.设置网站访问权限 6.设置文件夹访问权限 7.控制可更新文件夹执行权限 8.设置“应用程序池”.net版本与模式 9.附 ...

  7. 从零开始编写自己的C#框架(17)——Web层后端首页

    后端首页是管理员登陆后进入的第一个页面,主要是显示当前登陆用户信息.在线人数.菜单树列表.相关功能按键和系统介绍.让管理员能更方便的找到息想要的内容. 根据不同系统的需要,首页会显示不同的内容,比如显 ...

  8. 从零开始编写自己的C#框架(25)——网站部署 【转】

    服务器安全部署文档 目录1.     前言.. 3 2.     部署环境.. 3 2.1         服务器环境信息.. 3 3.     磁盘阵列配置.. 4 4.     安装操作系统.. ...

  9. 从零开始编写自己的C#框架(26)——小结

    一直想写个总结,不过实在太忙了,所以一直拖啊拖啊,拖到现在,不过也好,有了这段时间的沉淀,发现自己又有了小小的进步.哈哈...... 原想框架开发的相关开发步骤.文档.代码.功能.部署等都简单的讲过了 ...

随机推荐

  1. printf的特殊用法

    printf的特殊用法:对于m.n的格式可以用如下方法表示 前边的 *   定义的是总的宽度,后边的 * 定义的是输出的个数.分别对应外面的参数m和n .这种方法的好处是可以在语句之外对参数m和n赋值 ...

  2. 基础3.Jquery操作Dom

                  1 内部插入节点 <body> <ul id="city"> <li id="bj" name=&qu ...

  3. linux install mysql

    sudo apt-get install mysql-server #此处会输入root的密码,设置的密码要记住 sudo apt-get install mysql-client sudo apt- ...

  4. @dynamic 模拟NSManagedObject类的内部实现,AFN的非常规用法

    @property和@synthesize复习 @property生成setter和getter的声明,同时生成属性对应的成员变量,并且前面加一个下划线_.如果将getter和setter的实现同时重 ...

  5. Codeforces Round #361 (Div. 2) A

    A - Mike and Cellphone Description While swimming at the beach, Mike has accidentally dropped his ce ...

  6. 抓包工具Wireshark过滤器

    抓包工具WireShark分为两种过滤器: 捕捉过滤器(CaptureFilters) 显示过滤器(DisplayFilters) 捕捉过虑器语法: Protocol  Direction  Host ...

  7. spring注解配置实例

    在spring中使用注解配置前需要先在配置文件指定需要扫描的包. 通过注解的方式依赖注入,可以不用创建set方法,也不用在xml文件中申明注入关系. 实例结构如下: 整个流程是: 先创建好数据库的表对 ...

  8. centos7安装mysql5.7

    http://jingyan.baidu.com/album/93f9803f010d8fe0e56f555e.html?picindex=15

  9. iPhone Safari下iframe不显示滚动条无法滚动的解决方法

    在iframe外层包一层div,添加如下样式:style="-webkit-overflow-scrolling:touch;overflow:auto;" @media only ...

  10. Unity3D 与android交互流程步骤

    1.Android端代码可以在Eclipse中开发(AndroidStudio没有试,应该也可以) 2.Unity3D端代码要在Unity中开发 3.Android和Unity3D端,两边都需要加入一 ...