`
liyiye
  • 浏览: 415699 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

大项目与小项目区别

阅读更多

在工作之前接触的大多是小项目,而工作之后接触的都是十几万行以上的大中型项目。有了一定经验之后,对于不同规模项目的设计过程也有了一点自己的想法。

    首先,项目的大小不是由代码规模决定的,项目的目标、受众的期望与数量、能产生的经济效益、管理层的重视程度、市场前景等才是项目规模评估的主要依据。然后进行人力、时间、预期目标的平衡。

    在这里我不想谈软件工程方面的问题,而是想说一说对不同规模软件采取怎样的设计思路。

    小型项目讲求的是快速开发,可以由最简单的,能满足用户最低需求的原型开始,然后经过一次或两次迭代(代码重构和功能添加)以完成目标系统。为了避免重构与代码复用的困难,在设计的初期,要尽量采取松散的架构,模块划分的粒度要尽量细一点。由于这种项目大多人员少、工期短,因此在原型阶段可以不做设计,让原型能够跑起来才是重点,而在迭代过程开始的时候,就需要做一些设计工作了,首先将原型的大体结构还原出来,这时可以进行几次项目组内的讨论,调整设计与讨论新功能以及有可能的新需求如何能够低成本的添加到原型中去,可能会加入几个中间层(或叫代理层),分离开功能与界面。这将产生一份初步的设计文档,包含系统架构、业务逻辑、静态结构(模块划分、模块关系、类图等)。在迭代的过程中补充详细设计文档,整理功能测试用例提交给测试人员(如果有的话),直到迭代完成,进行第一次系统测试。

    大中型项目则要在立项初期就要对项目的总体架构进行设计与评估,虽然仍然可以采用原型法,但原型的设计必须依照总体架构进行,这时的原型可能就已经是个庞然大物。系统的总体架构受很多因素的影响。例如用户数量达到一定规模,一些面向少量用户的框架和技术就必须抛弃;数据量达到一定规模,则要考虑数据存储与检索的策略;性能要求苛刻的平台上,则要将设计更加合理的数据结构和算法作为重点;若系统需要跨平台,那么就要考虑如何将操作系统和GUI抽象出来(这里不考虑使用跨平台GUI库的情况)。这样一来系统难免变得繁杂,因此,必须有一个大体的框架图以及若干个越来越细化的框架图,并在系统的设计过程中不断的修正。这个框架必须是优秀的,容易扩展的。在设计的过程中可以通过一些测试代码来验证设计,同时修正设计。在没有可借鉴的设计的情况下,设计迭代是必要的,但一定要在系统的整体框架内进行调整,不然就说明前期的总体框架有问题,项目的风险极大。在良好的、松散的设计框架下,编码的初期会异常的顺利,代码量激增,这时就要考虑系统集成时的风险。系统集成困难往往是模块间接口与通讯方式的设计不足造成的,这需要很多的经验,因此一定不要忽视例如通信协议、线程间通信、数据共享、硬件接口等等问题。大型项目的人员多工期长,大多情况是每人都进行自己模块的设计与编码,由于设计的松散,每人的模块都十分独立,这时定期的设计交流是必要的,在交流的过程中,检查自己的设计,站在整体的角度,在脑海中形成系统运行的大体流程,理解自己模块在其中扮演的角色非常重要,这能在更早的时候发现设计缺陷,并进行及时的修正。

    不管是大型项目还是小型项目,其实都需要投入相当的设计时间,对于程序员来说,对其的重视程度也应当是相当的,不然软件质量很难得到保证。

分享到:
评论

相关推荐

    软件项目管理在小软件项目中的应用

    信息技术的飞速发展已是无需争论的事实,软件产业的创造的价值也在逐年增加,在某些国家...但从另一个角度来看,项目的大与小并没有本质的区别,很多方法是共通的。本文的目的是从作者的经验来谈谈小项目开发的管理。

    信息系统项目管理师 论文 信息系统项目管理师范文

    浅谈项目建议书、可行性研究、项目评估、项目后评价的作用及其区别 206 项目评估 208 项目前期管理的一种科学方法——可行性研究工作 209 软件项目过程管理保证软质量 213 项目管理过程之质量管理 214 项目经理如何...

    CMMI项目实施可交付文档(项目各阶段详细设计)

    基于目前发展广泛,作为项目管理里比较重要的一个认证体系,与ISO认证的区别,相信没有接触过的小伙伴,是“丈二和尚摸不着头脑”,既然它存在一定有他的道理。这里分享的是CMMI 项目实施可交付的文档。包括内容:...

    创业项目排行榜前十名(2021小本创业好项目)

    生日年年有,每次都有蛋糕,只是每次的蛋糕的样式或者口感差别不是很大,缺的就是一份创意和心意。如果在节日或者家人朋友的生日之际,自己能亲手制作一个蛋糕,那么含义是不一样的。所以,现在的DIY蛋糕店,已经...

    大数据平台项目建议书.docx

    1、大中型基本建设项目、限额以上更新改造项目 委托有资格的工程咨询、设计单位初评后,经省、自治区、直辖市、计划单列市发改委及行业归口主管部门初审后,报国家发改委审批,其中特大型项目(总投资4亿元以上的...

    IT项目管理那些事儿

    1.5.1 大中小型项目管理的区别 1.5.2 系统架构 1.5.3 风险管理 1.5.4 沟通管理 1.5.5 时间、成本、范围和质量的平衡艺术 1.5.6 项目经理自身学习的加强 1.5.7 政治问题 1.6 民营企业IT项目管理之路 1.6.1 完善企业...

    2018年信息系统项目管理师新旧版教程对比(整理)

    2017年下半年起软考高级项目 信息系统项目管理师 出了新大纲,与此同时,考试指定用书《信息系统项目管理师第三版》横空出世,对于已经购买了第二版教材的小伙伴们该如何复习呢。以下两个部分是鄙人搜集而来的信息供...

    软件项目管理师大全(大纲+论文格式+经典案例)

    浅谈项目建议书、可行性研究、项目评估、项目后评价的作用及其区别 206 项目评估 208 项目前期管理的一种科学方法——可行性研究工作 209 软件项目过程管理保证软质量 213 项目管理过程之质量管理 214 项目经理如何...

    项目管理-人月神话

    在很多方面,管理一个大型的计算机编程项目和其它行业的大型工程很相似——比大 多数程序员所认为的还要相似;在很多另外的方面,它又有差别——比大多数职业经理所认 为的差别还要大。 这个领域的知识在累积。现在...

    基于uCosII gui的TSC项目

    基于uCOS2 gui项目开发源码和相关例程源码 技术资料 界面开发工具等全部资料

    SSM项目整合

    能够运行的SSM框架整合项目,结合了spring、springmvc、mybatis。希望对学习三大框架的小伙伴们能有帮助!!!!!!!!!!!

    人月神话电子版是一本不错的项目管理和软件工程方面的书籍

    在很多另外的方面,它又有差别——比大多数职业经理所认为的差别还要大。 这个领域的知识在累积。现在AFIPS(美国信息处理学会联合会)已经有了一些讨论和会议,也出版了一些书籍和论文,但是还没有成型的方法来系统...

    浅谈java项目与javaweb项目导入jar包的区别

    下面小编就为大家分享一篇浅谈java项目与javaweb项目导入jar包的区别,具有很好的参考价值。希望对大家有所帮助。一起跟随小编过来看看吧

    基于python开发的一个魔塔小游戏源码+项目说明.zip

    基于python开发的一个魔塔小游戏源码+项目说明.zip 本游戏采用源码发送,需要自主安装Python,如果想直接下载二进制文件,可以去release里下。 以下是从源码直接构建游戏说明: 1. Python版本要求:3.10+,进入...

    专为面馆打造的小程序,本项目是纯原生开发的小程序项目.zip

    小程序、H5、APP的区别: ▍为什么做小程序 截止2021上半年,全网小程序数量超过700万,其中: 微信小程序日活4.1亿+,月活9亿+,数量430万+,预计年底GMV破3万亿; 小程序经济圈进一步爆发,微信电商未来三年...

    win7小工具_清除右键新建菜单项目

    win7实用小工具、小软件_清除右键新建菜单项目,美化系统。

    samll-project:平时创建的小项目

    small-project平时创建的小项目,项目名称【samll-project】创建错误,不做修改Github上指定项目的下载点击 或者输入下载的地址例如:输入: 下载DistributedSession项目MoreLanguage这是一个ASP.NET Core Web多语言...

    基于golang的直播平台项目源码+项目说明.zip

    当然也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或者热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载,沟通交流,互相学习,共同进步!

    基于WebRTC实现的多人语音聊天的项目源码+项目说明.zip

    3.项目具有丰富的拓展空间,不仅可作为入门进阶,也可直接作为毕设、课程设计、大作业、初期项目立项演示等用途。 4.当然也鼓励大家基于此进行二次开发。在使用过程中,如有问题或建议,请及时沟通。 5.期待你能在...

    人工智能项目: python网络热点监测与舆情分析系统 NLP情感分析项目

    人工智能项目: python网络热点监测与舆情分析系统 NLP情感分析项目 技术框架 python语言 + flask 框架 + mysql数据库 前端 html + css + jquery 来制作界面 后端 flask框架 + python 语言+ mysql数据库 + ...

Global site tag (gtag.js) - Google Analytics