惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - sdxd.bgl

将SQL Server中的数据显示到SharePoint中 - sdxd.bgl 拓展训练总结 在PowerShell中,如何获取SharePoint的默认数据库服务器 在SharePoint页面中如何显示来自其他网站的List 恢复导出XSLT List View WebPart - sdxd.bgl 实战部署FAST Search Server 2010 for SharePoint Sharepoint开发中代码运行权限级别 在InfoPath中如何获取当前用户的信息(Profile) 晒晒我的家乡 小心委托 利用System.Linq.Expressions实现四则运算计算器(三) 利用System.Linq.Expressions实现四则运算计算器(二) 利用System.Linq.Expressions实现四则运算计算器(一) 初识System.Linq.Expressions 请拆招:将两个已排序集合分解成两个独立部分的集合和一个共有部分的集合? 如何实现Windows服务 用javascript实现下拉列表的自动筛选功能 - sdxd.bgl - 博客园 我的生活 电脑是个神奇的东西!
关于模式的思考
sdxd.bgl · 2007-11-01 · via 博客园 - sdxd.bgl

关于模式的思考

本文讨论软件开发模式。

世界上唯一不变的是变化。

中国实行改革开放几十年来的事实证明,应对变化的最好方法就是改革,改变自己,适应环境。

首先分析下我们的“国情”——现状分析。

当前公司开发的软件,技术含量不是很高,80%以上的开发工作都是在做CRUD(增删改查)的工作。很多人比喻CRUD为四轮马车,那么,驾驶这辆四轮马车的人——开发人员被比作马车夫。这种比喻可能会激怒开发人员。开发人员做的是创造性的工作,怎么能比作马车夫呢?!请平静下来,细想下我们的日常工作,是否在做增删改查的工作?我们软件里面,那个功能不是这样实现的?很少!在开发人员看来,实现我们软件的功能,就是把用户输入转变为数据库记录存储,再对这些数据进行各种各样的维护,没多少创造性可言。

有少量的架构设计。可能剩下20%的有创造性的工作就是设计方面的工作了,特别是架构设计,具有很强的挑战性。当前我们的软件,架构设计好以后,功能的实现都是非常简单的事情,即CRUD的工作。拿盖高楼大厦作比喻最最恰当不过了。一幢高楼设计好后,首先搭建的是高楼的框架结构,这个事情有架构师完成;接下来就是在这个框架结构的基础上,砌砖、装修等。架构的搭建是非常重要的,搭建的不好,可能导致整栋楼房坍塌,搭建好了,能够低档几十年的风吹雨打。

外科手术VS盖高楼——模式探索。

外科手术——主刀医生是手术团队的核心,所有重要的工作都是由主刀医生完成,其他团队成员只是帮助主刀医生,帮助拿刀、线等。这种模式是因为其他团队成员没有能力完成主刀医生的工作,另外,手术不是工作量大的工作,而是工作复杂、需要很多知识技能才能做的事情,所以别人也帮不上忙。

盖高楼——首先要有个完善的设计图纸,而后就是组建建设队伍。建设队中,有个总指挥,负责团队的建设和协调、编排计划。有专门负责框架结构的施工队伍,也有专门砌砖的队伍。在这个模式中,设计图纸是至关重要的,它是用于指导施工队伍施工的方案。在建筑队中,有个重要的角色,监理。严格说,建筑监理不属于建筑队,而是对立的一个组织。监理的工作是负责监督施工队伍,看是否按设计图纸进行施工,他有权要求施工队重做某些不符合的工作。在建筑队中,分工是明确的。总指挥不负责搬砖头,设计师不负责搅混泥土,监理不负责指挥。

我们该采用那种模式?

从前面的现状分析看,可能各位都知道答案了。我们大部分工作都不是核心工作、高难度工作,盖高楼的模式可能更加适合我们。

首先要有个远景——盖什么样的高楼,多少层,预算是多少,时间范围等。对我们来说,就是开发什么软件,有那些主要功能,预算是多少,大概的时间范围的确定,投入多少人力、物力,软件的客户是谁等问题。就是把项目的范围明确下来。

成立项目组——有了远景,就要开始实施了。人力在项目中是非常重要的因子。在确定范围后,就要确定人员。

项目经理——首先要有个总指挥,负责总体把握项目。项目组成员对项目经理负责。

需要需求工程师——负责软件需求的获取和整理。

需要设计师——项目组中需要有设计师的角色,设计师将远景描述的更加清晰,有利于项目的实施和考量。

需要架构师——软件的架构需要由架构师把控。

需要开发工程师——负责各个功能的实现。

需要测试工程师——他们验证软件是否符合设计要求。

需要质量保障工程师——负责监督项目实施过程。

计划——项目范围、人员确定好后,就要考量实施计划。制定计划需要将项目相关的方方面面的事情考虑进去。这样才能少走弯路。