热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

日生读孙子[1]:软件工程

孙子曰:兵者,国之大事,死生之地,存亡之道,不可不察也。日生曰:软件者,利润所驱

孙子曰:兵者,国之大事,死生之地,存亡之道,不可不察也。

日生曰:软件者,利润所驱也。时竞争激烈,欲确保得利,则不可不谋划也。

五事

五事者,一曰道,二曰天,三曰地,四曰将,五曰法。道者,令民于上同意,可与之死,可与之生,而不危也;天者,阴阳、寒暑、时制也;地者,远近、险易、广狭、死生也;将者,智、信、仁、勇、严也;法者,曲制、官道、主用也。

我们的软件也是如此。做软件,做好软件,必须了解软件的“道、天、地、将、法”。这些也正是软件工程中所需要关注的方方面面。下面是从软件工程角度理解的五事。欢迎指点。

道者,为双赢也。如此,软件才可做。软件只为骗取钱财的日子,已经过去。客户需要真正能给他们解决问题的软件。真正了解业务,那就了解到道的含意了,如此才能上下同心。讲道,就是要我们充分了解业务,理解业务。在此基础上,上下才可以在共同的平台进行沟通。这也可以解释为领域模型。不管如何,做软件,整清楚业务必不可少。

天者,国之令也。做软件,必须了解相关法律法规。否则,软件做好了,却很可能因为违法了,遭受不同方面的阻力。微软在这方面非常有经验。经常有公司用各种法律条文对他们进行起诉。

地者,阻力也。竞争对手也许是我们软件工程中需要注意的。他们可能引起翻天覆地的变化。另外,就是那些看似一马平川的陆地下的暗流沟渠,要小心他们是否有可能影响项目进度。很可能客户内部有不同的意见,最好导致软件的反复变更。看清楚客户内部的地形很重要。

将者,才也。一个项目,缺少得力的助手难以想象。技术能手、业务专家、沟通行家都是必不可少的。

法者,规矩也。做软件,不可不注意做软件的客观规律。盲目的加人或者夸大工作效率都是非常危险的。只有了解了客观规律,才能够更好地利用这些规律,从而顺利完成软件开发。

兵者,诡道也

 

夫未战而庙算胜者,得算多也;未战而庙算不胜者,得算少也。多算胜少算。

做软件,做的是明白的业务,应对的却是未知的风险。

正如孙子所说,多算胜于少算。对于项目,必须有一份清晰的里程碑式的计划清单。计划的越是准确,工作越是可以进行地顺利。这些也正说明了软件工程存在的必要性。

另外,成熟的项目经理都会为项目设立非常完整的风险列表。并且,这份计划会随时地进行更新。充分估算到项目中可能遇到的真正风险(不是简单罗列),并且谋划出行之有效的策略。这是计划中最最重要的部分。风险的策略解决为上策,不能解决,避开为中策,不能解决且不能避免则为下策,不能解决且不能预知为下下策。我们至少要预知到风险的发生,否则项目进度无从控制。

软件开发过程正如我们的敌人。孙子曰:兵者,诡道也。我们要充分认识清楚那些隐藏在乐观情绪后面的危机,亦或是发现悲观情绪后面的可能。这些才是真正谋划需要关注的。若无变化,庸人即可成事。正是因为有了变化,才可以充分发挥出杰才的能力!

后话

此为孙子兵法第一篇:始计第一。我以为用软件工程的概念解释非常到位。这只是一个简单尝试,也属于个人爱好。希望能将一些实用的理论,带入到软件开发中来。

同时,欢迎大家继续关注。另外,有任何指教,欢迎提出。

注:


韩小明 字 日生


体宽人壮心气高
美女美钞都想要
聊以博客会朋友
只待他朝回头笑


转自:http://blog.csdn.net/xiammy/archive/2007/01/09/1478567.aspx

推荐阅读
  • 本文详细介绍如何使用arm-eabi-gdb调试Android平台上的C/C++程序。通过具体步骤和实用技巧,帮助开发者更高效地进行调试工作。 ... [详细]
  • PHP 5.2.5 安装与配置指南
    本文详细介绍了 PHP 5.2.5 的安装和配置步骤,帮助开发者解决常见的环境配置问题,特别是上传图片时遇到的错误。通过本教程,您可以顺利搭建并优化 PHP 运行环境。 ... [详细]
  • 在Ubuntu 16.04 LTS上配置Qt Creator开发环境
    本文详细介绍了如何在Ubuntu 16.04 LTS系统中安装和配置Qt Creator,涵盖了从下载到安装的全过程,并提供了常见问题的解决方案。 ... [详细]
  • 本文详细介绍了如何使用ActionScript 3.0 (AS3) 连接并操作MySQL数据库。通过具体的代码示例和步骤说明,帮助开发者理解并实现这一过程。 ... [详细]
  • 使用Python在SAE上开发新浪微博应用的初步探索
    最近重新审视了新浪云平台(SAE)提供的服务,发现其已支持Python开发。本文将详细介绍如何利用Django框架构建一个简单的新浪微博应用,并分享开发过程中的关键步骤。 ... [详细]
  • 本文详细介绍了美国最具影响力的十大财团,包括洛克菲勒、摩根、花旗银行等。这些财团在历史发展过程中逐渐形成,并对美国的经济、政治和社会产生深远影响。 ... [详细]
  • Hadoop入门与核心组件详解
    本文详细介绍了Hadoop的基础知识及其核心组件,包括HDFS、MapReduce和YARN。通过本文,读者可以全面了解Hadoop的生态系统及应用场景。 ... [详细]
  • 基于KVM的SRIOV直通配置及性能测试
    SRIOV介绍、VF直通配置,以及包转发率性能测试小慢哥的原创文章,欢迎转载目录?1.SRIOV介绍?2.环境说明?3.开启SRIOV?4.生成VF?5.VF ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本题通过将每个矩形视为一个节点,根据其相对位置构建拓扑图,并利用深度优先搜索(DFS)或状态压缩动态规划(DP)求解最小涂色次数。本文详细解析了该问题的建模思路与算法实现。 ... [详细]
  • 本题探讨如何通过最大流算法解决农场排水系统的设计问题。题目要求计算从水源点到汇合点的最大水流速率,使用经典的EK(Edmonds-Karp)和Dinic算法进行求解。 ... [详细]
  • 本题探讨了在一个有向图中,如何根据特定规则将城市划分为若干个区域,使得每个区域内的城市之间能够相互到达,并且划分的区域数量最少。题目提供了时间限制和内存限制,要求在给定的城市和道路信息下,计算出最少需要划分的区域数量。 ... [详细]
  • 构建基于BERT的中文NL2SQL模型:一个简明的基准
    本文探讨了将自然语言转换为SQL语句(NL2SQL)的任务,这是人工智能领域中一项非常实用的研究方向。文章介绍了笔者在公司举办的首届中文NL2SQL挑战赛中的实践,该比赛提供了金融和通用领域的表格数据,并标注了对应的自然语言与SQL语句对,旨在训练准确的NL2SQL模型。 ... [详细]
  • 解决JAX-WS动态客户端工厂弃用问题并迁移到XFire
    在处理Java项目中的JAR包冲突时,我们遇到了JaxWsDynamicClientFactory被弃用的问题,并成功将其迁移到org.codehaus.xfire.client。本文详细介绍了这一过程及解决方案。 ... [详细]
  • 本文介绍了一种根据用户选择动态切换屏幕界面的方法,通过定义不同的选择块(Selection Block),实现灵活的用户交互体验。 ... [详细]
author-avatar
okkkokkokkkokka
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有