`
ggokind
  • 浏览: 8035 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

“设计”和“开发”的界限

阅读更多

说实话,这是一个敏感的话题。

“设计”这个词比较害人,基本涵盖了软件从需求到最终交付前的所有阶段:需求分析、系统功能设计、架构设计、模块设计、代码设计、代码实现、测试设计……

 

最害怕的就是一种说法:xx能力是设计出来的(这个XX可以代表任意功能或者质量属性)。

这句话说的不无道理,但要看怎么解读,但是很多管理者将此当做借口,软件出现任何问题就是设计的问题。从而主动丧失了对于软件产品的控制力。

 

矛盾的根源是, 不少团队中,有专职的“设计人员”,在“设计”这个概念没有明确确定时,“设计人员”和“开发人员”经常会产生矛盾,即设计得是否充分了。

 

从我的理解来看,“设计”决策,涵盖范围很广,不能用一个专职的“设计人员”或者独立的“设计阶段”解决所有“设计问题”。从经验来看,软件产品的60%~70%的技术决策应该提前完成,剩下的30%~40%只能通过“开发人员”和“设计人员”在后期的探索和分析才能妥善解决。

 

矛盾的解决根本不在于 硬生生的在“设计”和“开发”之间划出一条线,分辨出哪些是你的,哪些是我的。这是有灰度的,需要人来沟通协调。解决的源头是, 大家确定基本原则,对于交界处的设计工作可以统一处理,协同作战。只有默契协作,才是解决问题的根本。

 

我的处理经验是:

  1. 在设计阶段,带领开发骨干一同完成“设计”工作
  2. 让开发骨干将设计思路、设计理念、设计要点带入到开发过程中,这样通过他们的传播,有利于让开发团队更好的把握设计目标,抓住需求要点。而通过传统的文档传递,效果还是有限的,毕竟信息存在丢失,开发团队也不容易记住
  3. 对于开发过程中遇到的“设计问题”,开发骨干、开发团队、设计人员要一起讨论解决,不要一遇到问题就相互扯皮
  4. 将开发过程中的“设计决策”权利,适当的交给开发人员,至少绝大多数的设计提案应该有开发人员提出,不要搞“设计垄断”,开发团队的能力要充分发掘出来,要帮助开发团队培养技术决策的能力,否则累死设计人员,也无法做完所有的设计决策
  5. 问题解决后,在阶段点需要带领设计人员、开发骨干、开发团队一起进行总结和反思,看看前期设计阶段如何改进,提前识别后期风险

当我看到开发人员和设计人员相互抱怨和指责的时候,我都比较痛心,软件开发没有多少时间,更为主要的还是尽快解决问题,平时相互促进、共同提高。

如果“开发”和“设计”被划分成两个不同的阶级,将是一种灾难。

软件开发不是盖楼,编码也不是搬砖砌墙,设计也很难完成所有规格参数的制定。(日本的软件设计除外,这是他们的追求,在这里就不做评价了)

 

0
0
分享到:
评论

相关推荐

    领域驱动设计和开发实战.pdf

    领域驱动设计(DDD)是一种软件开发方法论,强调将业务领域概念映射到软件系统中,并以此为核心构建软件的架构和设计。DDD来源于Eric Evans的经典著作《领域驱动设计》,旨在从实践角度探讨如何建立领域模型并将其...

    地铁限界CAD系统设计及开发研究.pdf

    限界指的是在设计地铁工程时,为了确保安全和功能,对车辆、隧道、车站以及其他建筑结构尺寸和布局所设置的界限。地铁限界直接影响到车辆运行的安全性、土建工程的规模以及建设成本。因此,限界的设计是一个复杂而...

    程序设计模式教案基于各种开发环境

    总之,“程序设计模式教案基于各种开发环境”是一份宝贵的教育资源,它将帮助开发者跨越语言和环境的界限,掌握并运用设计模式,以实现更高效、可扩展的软件解决方案。通过深入学习和实践,开发者可以提升自己的编程...

    电子商务系统 开发 课程设计题签

    《电子商务系统开发》课程设计是一项旨在培养学生实践能力和创新思维的重要教学环节。在课程设计中,学生需要综合运用所学理论知识,设计并实现一个电子商务系统,从而加深对电子商务系统开发全过程的理解。 首先,...

    单片机bsp、kernel/驱动、应用分层设计开发

    总结来说,"单片机bsp、kernel/驱动、应用分层设计开发"这一主题涵盖了硬件抽象、操作系统核心功能和应用程序的开发流程。通过合理的分层,可以提高代码质量、降低维护成本,并有利于团队协作。了解并熟练掌握这些...

    手机应用软件设计和开发的方法探讨

    ### 手机应用软件设计和开发的方法探讨 #### 1. 手机应用软件的特点分析 当前市场上手机主要分为两大类:功能手机(Feature Phone)和智能手机(Smart Phone)。尽管两者之间的界限并不十分清晰,但无论是哪一类...

    设计开发文档 (2).docx

    以上内容构成了一个完整的软件或产品设计开发流程,从项目启动、设计、评审、验证、输出确认到变更管理,每个环节都是保证产品质量和项目成功的关键步骤。在互联网行业中,这种严谨的设计和开发流程是保证项目高效、...

    嵌入式系统设计开发大全.docx

    《嵌入式系统设计开发大全》的文档涵盖了嵌入式系统设计的重要发展历程和技术变革,主要集中在以下几个关键知识点: 1. **嵌入式系统设计的驱动力**:嵌入式系统设计的变化主要是由应用需求和信息技术的推动。微...

    基于CS的SPC系统的设计与开发.doc

    5. **进度计划**:设计工作分为资料收集、理论分析、系统开发和论文撰写四个阶段,从2月到6月答辩日,逐步推进,包括开题报告、系统开发、论文修改直至最后的答辩准备。 6. **参考文献**:涵盖了质量管理、数据库...

    鸿蒙os开发教程+白皮书

    首先,鸿蒙OS的设计目标是打破设备间的界限,实现不同硬件之间的无缝协同。它采用了微内核设计,以提高系统的安全性和效率。微内核仅包含最基本的服务,如内存管理、进程通信等,而其他服务则运行在用户态,降低了...

    数据驱动游戏开发ppt介绍

    数据驱动游戏开发是一种以数据为核心,强调游戏设计和游戏内容的灵活性和...因此,数据驱动游戏开发不仅是一种编程技术,更是一种理念,它挑战了传统游戏开发中工程师和设计师之间的界限,鼓励更灵活的设计和开发流程。

    综合行业:建筑设计研究——房地产开发投资放缓背景下,建筑设计行业前景如何?.zip

    在当前房地产开发投资放缓的大环境下,建筑设计行业的未来发展趋势和挑战成为了业界关注的焦点。这篇文章将深入探讨这一主题,分析行业现状、潜在机遇以及应对策略。 首先,房地产开发投资的放缓直接影响到建筑设计...

    动态规划法、分支界限法

    通过分析和实现这些源代码,我们可以更好地理解动态规划和分支界限法的工作机制,提高问题解决能力,这对于软件开发、数据分析、人工智能等领域都具有重要意义。同时,这也是一种锻炼编程技巧和逻辑思维的好方法。在...

    计算机软件开发规范_GB_8566-88

    - **特点**:面向对象开发的一种方法,活动之间没有明显的界限。 - **适用类型**:面向对象的软件项目。 - **优点**:支持迭代和渐进式开发,有助于深入理解需求。 - **缺点**:缺乏明确的阶段划分,可能导致...

    基于Android计算器的开发及测试.doc

    本文主要介绍了基于Android计算器的开发和测试,整个项目的流程可以分为三个部分:需求分析、系统设计和测试。需求分析部分主要介绍了计算器的基本功能和按键设置。系统设计部分主要介绍了计算器的总体设计和详细...

    AltiumDesigner开发FPGA教程 fpga开发.pdf

    IP资源复用(IP Reuse)是指在集成电路设计过程中,通过继承、共享或购买所需的智慧产权内核,然后再利用EDA工具进行设计、综合和验证,从而加速流程设计过程,降低开发风险。 (3)在工程的设计和调试阶段都支持...

    DB2数据库设计和最高性能原则

    在讨论性能原则和方法学时,强调了在应用程序和数据库设计初期就应考虑性能特征,以便在开发过程中做出正确的设计决策。关注点应集中在关键的DB2数据和程序上,特别是那些处理大量数据、有高响应时间需求、复杂逻辑...

    房地产经营管理和管理 房地产开发项目的规划设计及其评价PPT学习教案.pptx

    房地产开发商必须遵循城市规划进行项目设计,规划管理确保了房地产开发的合规性和经济效益。 4. **房地产开发经济效益的影响因素**:城市规划通过规定开发程序、土地使用性质、配套设施等,影响房地产项目的经济...

    基于Vue.js-Node.js-Mongodb 的本人本科毕业设计.zip

    本设计选择了Vue.js、Node.js和MongoDB,构建了一个完整的Web应用程序,涵盖了前端用户界面、后端服务以及数据库管理,这是一次对全栈开发技能的综合实践。 综上所述,这个本科毕业设计项目利用Vue.js创建了用户...

Global site tag (gtag.js) - Google Analytics