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

我所认识的软件开发原则:权衡

阅读更多
        当年还在学校时,有段时间校园内到处张贴着李开复的演讲通告,题目是《选择的艺术》。我还算比较纠结了,选择就选择,有什么艺术性可言。正所谓站的高度不一样,看待问题的角度也就不一样。当某天对生活有所感悟时,回头想想光这个演讲的题目就是至理之道呀。网上流传着一句话,人生好似一道永远做不完的选择题,每时每刻都在上演。每天敲代码的我们当然逃脱不了选择的命运。

         尽管至今都不清楚李的演讲内容,但我猜测关于选择他也可能会提到两点:分析和权衡。在系统开发中基本没有单选题,我们能做的就是分析需求,不断权衡来选择最合适的技术,最合适的人,最合适的实现。分析是基础,基于分析的权衡之策才是选择的真正内涵。分析方法有很多,好似眼花缭乱的武功架式,权衡就是那最基础最高深的内功。

        系统或模块的设计,是在可选择的实现中找到适当的一种方式。说起来简单,但往往事与愿违,从我的杯具经历中找条例子来说说吧。一个维护了近两年的系统中有个很重要的模块,用来确定销售可看到的最大可销售数据。我是中途加入,最初怎样设计我不清楚,但对于这种数据可变的预测模型来说,不专业的我一个人搞不定呀,老是周末救火,自己都快烧着了。有次被当时主导这个设计方案的经理追问的火大,就反问他当初为什么这样设计。他想了半天说好像是觉着给销售显示每天一模一样的数据看起来不专业。我勒个去,给数据加个随机数都可以解决的问题用得着两年多来以数据挖掘的眼光去维护么,我是隔三差五的被这个破模块给调教着。当然这里的问题源于设计的决策,历史问题呀。在这里可以总结出一点,系统设计中民主决策至关重要!

        系统在不断变更的需求中逐渐复杂起来,直到某天收拢不住的时候再慢慢地简化回归,循环往复。理想状态下,在设计之初对这些细节的实现做分析权衡,就不会有我和其它很多人的杯具发生,那应当是一个适度、有效的系统。但这也只是存在于理想状态中,为什么追求一个相对简单系统这么难呢?来试着分析下。一是与系统属性有关,本来就需求复杂的系统想简单太不容易。二是与系统设计的决策者有关,对系统的理解、自身知识和视野的限制等等都会有影响实现方式的选择。江湖传言道:好的架构师会让实现轻松很多。第三就不太好说,如果有个人觉着不复杂就不足以显示出系统和设计者的重要性,那么……。

        能把复杂事情做简单是能力的体现,在决策上也适用。从系统设计到具体实现中遇到的每步选择,能根据基础性的分析做合适的决策(当然合适的未必是最简单的)。这就牵涉到自身的知识,对目标的理解,可用的技术选择、可预见性问题等等方面的考虑。如果未来的每天数据是建立在对过去数据的趋势分析上,那么用数据挖掘来解决就很必要,如果仅仅是让数据看起来正常些,那还得考虑我能不能扛起这把牛刀呀。

        构想中这篇文章的名字应该是中庸之道,但仔细想来权衡这个词可能更容易被大家接受。中庸是主旨,运于不断权衡之中。Tradeoff – Tradeoff。



后记:本系列到此为至,连篇累牍以我的小经历和浅显的经验来总结下我所认识的几个原则,未及深层,可能让诸位失望。其实只需把这个系列各篇文章的题目挑出来,然后想想,就不用再往下看了,经验之谈,呵呵。

  


我所认识的软件开发原则:封装
我所认识的软件开发原则:简单表述
我所认识的软件开发原则:二八原则
我所认识的软件开发原则:减少等待时间


0
0
分享到:
评论

相关推荐

    软件开发最佳方案

    在软件开发过程中,找到最佳的人力资源计划方案至关重要,...综上所述,优化软件开发的最佳方案需综合考虑人力分配、团队建设、项目管理、沟通协作等多个方面,通过科学的方法和策略,确保软件开发过程的高效和优质。

    对软件工程认识论文.doc

    软件工程的原则是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。软件工程的原则有以下四项软件工程师基本原则: 1)选取适宜开发范型该原则与系统设计有关。在系统设计中,软件需求、硬件...

    内存受限系统软件开发-UserInvolvement(英文)

    综上所述,《内存受限系统软件开发—UserInvolvement》这篇论文为我们提供了一种在内存受限环境下进行有效UI设计的新视角。“思考小型化”方法论强调了在设计之初就考虑到系统的内存限制,并采取一系列措施来优化...

    对软件工程的认识.pdf

    软件工程实践中,有四条基本原则指导着开发过程:首先,选择合适的开发范型,以应对需求变化和权衡各种因素;其次,采用适当的设计方法,如模块化、抽象、信息隐藏和一致性,以实现良好的软件结构;再次,提供高质量...

    谈谈对软件工程的认识

    软件工程的定义是应用计算机科学、数学及管理科学等原理,开发软件的工程。软件工程借鉴传统工程的原则、方法,以提高质量、降低成本为目的。在软件工程中,计算机科学、数学用于构造模型与算法,工程科学用于制定...

    医院HIS系统基本需求分析

    2. **软件开发**:设计、编码和测试软件,以确保其符合规格说明。 3. **软件确认**:验证软件是否满足用户的需求和期望。 4. **软件演进**:根据用户反馈和技术进步持续改进和升级软件。 此外,软件生存期涵盖了从...

    Secure Programming for Linux and Unix HOWTO

    1. **最小权限原则**:每个程序应该仅具有完成其任务所需的最小权限。 2. **假设攻击**:在设计程序时,应始终假设系统可能遭到攻击,并据此采取措施保护系统。 3. **防御性编程**:编写能够处理意外情况的代码,...

    绿色软件--绿色软件知识大全

    这类软件遵循特定的设计原则,不修改系统关键区域,如注册表,不写入非自身目录的文件,因此在删除时只需移除程序所在的目录及快捷方式,即可实现干净卸载,不留任何痕迹。这使得绿色软件对用户友好,尤其适合对电脑...

    并行计算机体系结构-硬件-软件方法.pdf

    另一些人专注于特定的项目,但没有认识到可用于替代方法的原则。 该领域的研究报告提供了大量的经验数据,但还没有提炼成一个连贯的画面。 我们希望通过集中注意技术融合背景下的突出问题,而不是使我们走到这...

    The Architecture Tradeoff Analysis Method

    ### 架构权衡分析方法 (ATAM):软件系统质量属性的核心考量 #### 概述 《架构权衡分析方法》...这一方法不仅适用于软件开发初期的设计阶段,同样可以在项目的生命周期内持续应用,以应对不断变化的需求和技术环境。

    OWASP软件保证成熟度模型v1.0-中文(带标签目录).pdf

    SAMM框架的基础建立在软件开发的各个核心业务职能之上,包括业务功能、监管、构造、验证、部署等,每个职能都配备相应的安全实践,这些职能共同构成了软件开发的全面视角。每个职能下的安全实践都可按照成熟度等级...

    Brad Abrams-Framework Design Guidelines(PPT)

    4. 项目成本模型:根据Gartner的报告,软件开发中的大部分成本(79%)来自于人力劳动,硬件成本占11%,其余10%为其他项目成本。这突显出设计良好框架的重要性,因为它可以提高开发效率,降低后期维护成本。 5. 框架...

    架构驱动建模和分析

    架构驱动建模是一种以软件架构为核心的设计过程,它强调通过对软件架构的深入理解和支持,来优化整个软件开发流程。这种建模方法的关键在于利用形式化的手段来定义、分析和验证软件架构。 架构驱动建模的意义主要...

    Week1 学习心得1

    在Week1的学习中,我深入地接触了软件开发的基础——数据结构和算法,并使用Python语言进行实践。在数据结构方面,我重点学习了数组、链表、队列和栈这四种基本类型。数组是最基础的存储结构,它可以提供随机访问但...

    一文搞懂各种架构业务架构应用架构数据架构.docx

    架构是经过系统性地思考、权衡利弊之后在现有资源约束下的最合理决策,最终明确的系统骨架:包括子系统、模块、组件以及它们之间的协作关系、约束规范、指导原则。并由它来指导团队中的每个人思维层面的统一。 架构...

    2021-2025年中国铁路信息化行业新市场开拓策略研究报告.pdf

    首先,报告开篇介绍了研究的基本原则与方法,强调了研究企业新市场开拓策略的重要性及意义。接着,报告详细介绍了铁路信息化的行业概念、监管体制、法律法规、政策影响、行业周期性特征以及进入行业的主要障碍。铁路...

    2021-2025年中国医疗信息化行业新市场开拓策略研究报告.pdf

    通过对浪潮软件、上海宝信软件等重点企业的分析,让读者对行业内企业的发展现状有了更清晰的认识。 报告还深入探讨了2021-2025年我国医疗信息化行业的发展前景和总体趋势。在这一部分中,重点提到了大数据技术的...

Global site tag (gtag.js) - Google Analytics