作业系统开发的设计流程和工具流程

以前听软件开发的老师讲的软件开发流程,也不是不以为然,只是觉得常规套路没太往心里去。

最近开始考虑开发的问题才意识到,学了这么多技术,de了这么久的bug最后拿到一个issue手还很生。

为什么要功能分析技术分析?为什么要把工序分出先后?这是我拿到一个看起来很简单的网站时才意识到的问题。

----------   --------------------   ------------  --------------  --------------  ---------------------
| 功能分析 |->|  技术分析与功能设计  |->| 数据库设计 |->| 文件系统设计 |->| 页面功能实现 |->|  页面修饰与性能修饰  |
----------   --------------------   ------------  --------------  --------------  ---------------------

决定一个项目的质量和开发周期的往往是最开始的功能设计和技术架构设计。

1. 文件系统的规划

  这一阶段容易埋下的问题往往不是技术上的问题,而是不必要或者规划错误导致延长开发周期,使得debug方法繁琐

  1. 使用Java还是PHP开发?这是根据项目的规模和功能结构决定的,JSP相对稳定,能够应对规模比较大的系统,开源程度高,通用性强;而PHP对轻量开发和大规模开发都有很好的适应。语法简单部署快捷,网上的资源和经验也比较多。
  2. Java开发系统中的DAO模式和Service模式,在调用DAO和ServiceImpl的时候对Entity的设计就比较重要。一般第一步是部署文件系统和Classpath等配置,对可能要用到的包进行部署后,节约后期大量的调试和维护成本。由于Java系统比PHP系统复杂,配置相对困难,前期的设定对开发周期和维护运营来说起着决定性的作用。
  3. PHP系统自由度更大,是否使用Laravel等框架是根据项目的规模和开发成本决定的,客户一般希望在开发和运营两个方面压缩成本,规模较大的项目借助框架以提升开发效率和维护成本,如果没有使用框架的必要强行上了框架,不仅会延长开发周期还会增加额外的开销。
  4. 以Ruby on rails为代表的新型Web系统,语法和效能无疑都是最先进的。但是要考虑的问题就是,相比于两大传统系统网上的资料不多,遇到开发和部署问题往往难以求助。同时采用新的系统和语言客户是否满意?会不会对以后的运维带来障碍?服务器开销好预测吗?不仅自己要对自己的技术足够自信,确定之后还要征求客户的意见。毕竟开发系统是满足客户的需求不是自己的需求。
  5. 采用什么数据库?一般来说自己做就是MySQL,团队做那就公司用什么你用什么咯。一般来说数据库这种类似于操作系统,如果没有相当可怕的壁垒和层出不穷的bug那就是先入为主,因为大家的功能都大同小异。即便先入为主的那个有点难用。非要说那个系统更优越?其实各有千秋。在保持各种功能都打通的前提下,选取最擅长的,在性能,成本,开发能力之间拿捏一个平衡,因为往往自己就是整个开发中最懂技术的人(相对而言),这些平衡其实最终影响到的还是自己.

2. 功能分析与技术分析

  分析什么?这个阶段往往是在各种选取都定好了之后,环境都打通了,开始着手做具体的事情。影响到的主要是代码阶段

  1. 数据库、文件操作与视图之间的关系是首先要思考的,数据库设计网上最多的话题是效能。数据库设计阶段对代码的影响也是很大的,譬如Java的BaseDAO模块,PHP中require Conn_DB,用哪些函数?引用的方法是一次还是多次?哪些引用数据库接口可以合并并减小开销?其实合并功能化简功能的过程就是简化代码开发的过程,简化代码结构就简化了系统代码的复杂度,我看到别人的代码,有的时候就觉得自己坐井观天了,稍微用点优化的结构就觉得自己很了不起,看见别人一气呵成简单明了的过程,才发现很多问题是可以避免的,根本不需要解决。
  2. 在合并功能的过程中很重要的一点就是原则,原则往往是自己定的,比如,Qt中,头文件的成员都是指针,为什么?这在大公司的开发规范里也可见一斑,C++中把变量写得到处都是构造和析构将会难以控制,为什么使用service+impl的方案?这是隐式定义方法的一种技巧,调用都是Interface,实现都在Impl,他们之间的关系?交给Java自己去完成。原则还有一点价值在于,当你看到一个问题的时候:“我知道我不会这样写”,“这种情况按照我的习惯是不会发生的”,debug时自动砍掉了一些原则以外的范围。

3. 前后端分离开发方法

  分离前后端不仅仅是让软件和系统结构化,还可以在开发的时候就简化各种功能的实现方法。

  1. 先实现功能,后美化。这是常规的软件开发套路。但是遇到的很多问题,比如前后端如何分离,一个函数又调用前端又调用后端,如何分离?这就是设计模式的功劳了。常见的模型其实老练的程序员也很难起出具体的名字,但是上手时就很敏感的觉得,应该这样写。我这方面理解的还不是很透彻,用Java还可以照猫画虎的写几个样板,换个场景可能就会开始糊涂。背下来只是第一步,开发过程中的实践,主要靠自己的感觉。
  2. 前后端是相对而言的,网站系统中,用户看得见的是前端,看不见的是后端,又说,数据库是后端,php接口是前端,再说,用户是前端,管理员是后端。因为前后端分离是功能单元划分的原则之一,在大的方向上进行隔离并拉出有限的接口,对该层次功能设计能够进行良好的控制。
时间: 2024-08-05 19:35:47

作业系统开发的设计流程和工具流程的相关文章

百鸟商城系统开发模式设计详解

百鸟商城系统开发(李想.185.6504.8478)鸟类通常是带羽.卵生的动物,有极高的新陈代谢速率,长骨多是中空的,所以大部分的鸟类都可以飞.鸟类由爬行动物进化而来,世界上现存的鸟类共有9000多种,它们都有翅膀和羽毛,就连那些已经失去飞行能力的鸟类(如鸵鸟.企鹅等)也不例外.最早的鸟类出现在1.5亿年前.身体呈纺锤形.前肢特化为翼,体表有羽毛,体温恒定,肌胸发达,骨骼愈合.薄.中空,脑比较发达.有气囊可以进行双重呼吸,没有膀胱则可以减少身体质量.这些身体特征都很适应飞翔.鸟类没有牙齿,却长有

系统设计与架构笔记:ETL工具开发和设计的建议

最近项目组里想做一个ETL数据抽取工具,这是一个研发项目,但是感觉公司并不是特别重视,不重视不是代表它不重要,而是可能不会对这个项目要求太高,能满足我们公司的小需求就行,想从这个项目里衍生出更多的东西估计难.昨天领导让我写写自己的见解,今天写了点,不过说见解还真不敢,所以取了个名字叫建议了,今天把这个文档贴到自己博客里和大伙分享分享. 贴文档之前,我想很多朋友估计并不熟悉ETL,如果接粗过数据挖掘一定对ETL很熟悉了,ETL是数据挖掘里非常重要的一环,具体什么是ETL,大家看下面这段文字: ET

20个可以帮你简化iOS app开发流程的工具

这里推荐20个可以帮你简化iOS app开发流程的工具.很多开发者都使用过这些工具,涉及原型和设计.编程.测试以及最后的营销,基本上涵盖了整个开发过程. 原型和设计 有了一个很好的创意后,你要做的不是立刻编程,而是设计UI和创建原型,这样你才能知道app如何运行,根据用户体验需要做哪些调整. App Cooker AppCooker 不仅是一个创建原型的优秀工具,它提供的许多功能还可以帮助你将程序发布到App store中.它集成了Dropbox,Box.net和photo roll,你可以直接

设计师整理的系统开发流程-简洁又有重点

软件系统,要求在收集用户需求后,开始原型设计,再执行架构设计和模块设计工作,最后才是开发测试. 某设计师整理的系统开发流程如下图: 原型设计可以规避一些业务理解偏差.用户变更导致的返工,因此做好原型设计师项目执行阶段的重要工作. (1)项目调研与原型设计之间,最好有个UE调研,也即用户体验调研.而项目管理与产品设计是有区别的,UE做到何种程度,完全由项目乙方拿捏,一 般而言,UE只做到一些主要的层面就可以了,因为在之后的用户验证测试过程中,可能还有一些地方需要修改的,如果前期的UE你做得很完善,

iOS开发之工具篇-20个可以帮你简化移动app开发流程的工具

本文转载至 http://www.cocoachina.com/ios/20130402/5926.html 如果想进入移动app开发这个领域,你总能从别的开发者或者网上或者书上找到各种各样的方法和工具,对于新手来说,还没有摸清门路就已经陷入迷茫了.这里推荐20个可以帮你简化app开发流程的工具.很多开发者都使用过这些工具,涉及原型和设计.编程.测试以及最后的营销,基本上涵盖了整个开发过程. 原型和设计 有了一个很好的创意后,你要做的不是立刻编程,而是设计UI和创建原型,这样你才能知道app如何

流程管理与流程快速开发平台设计思路

1.前言 企业管理可能存在如下困惑: (1)无论如何进行分工方案的调整,依旧应对不了业务的变化,应对机制死板被动: (2)市场动态更新太快.形势复杂多变,管理漏洞百出,资源调配不合理,上下级沟通不畅影响效率: (3)流程反应速度太慢,满足不了客户需要,企业利润难以实现,流程重组乏力: (4)信息化系统烟囱林立,无法突破垂直管理壁垒: (5)没有一套适用的流程方案,难以建立优化体系,无法用有限的人力物力和时间达到最优利用 -- 咨询公司给出的方案: 企业在现代化发展中由于业务流程不合理,造成了多方

关于java' web杂谈(其实是课后作业1)1 网站系统开发需要掌握的技术

1 网站系统开发需要掌握的技术:(借鉴度娘)https://zhidao.baidu.com/question/1701850648247880220.html 需要掌握的有:Java(JavaEE)工程师 .NET软件工程师 外包开发工程师 网站设计和开发工程师 数据库工程师ERP/CRM/OA/B2C开发应用工程师 系统分析设计工程师 文档工程师相关知识,很多人软件专业方向性很强,很抽象,其实也不是这样的,还是由好多知识是集合着的,所以胜任的岗位,就可以说明你要掌握知识的覆盖面,我建议你还是

EAM系统开发流程

EAM系统开发流程主要包括三个阶段: EAM系统分析 主要是通过规范EAM系统内的信息,进一步把它们整合成一个完整的EAM原型.具体的工作是定义EAM系统中的词汇和建立一组用来生成具有可重用和可配置的概念模型的规范.这些对实施具体系统有指导作用,并且是其基础,类似施工手册.例如,对于资产可以定义为一个能跟踪.修复后可重复使用的.唯一具有独立名称的实体.  EAM系统设计 主要是开发一个高度灵活的通用架构,并且提供一个生产规范.软件构架为组件或对象的重组和配置提供了技术保证,为实现系统的灵活通用提

嵌入式系统开发流程

嵌入式系统开发与通用系统的开发有很大的区别.嵌入式系统的开发主要分为系统总体开发.嵌入式硬件开发和嵌入式软件开发3大部分. 在总体开发中,由于嵌入式系统与硬件依赖非常紧密,往往某些需求只能通过特定的硬件才能实现,因此需要进行处理器的选型,以更好地满足产品的需求.另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出抉择.往往通过硬件实现会增加产品的成本,但是大大提高产品的性能和可靠性. 再次,开发环境的选择对于嵌入式系统的开发也有很大的影响.开发环境包括嵌入式操作系统的选择以及开发工