软件开发项目规划时,SA、SD与SE的区别与重要性 【转】

先简单介绍一下PM、PL、PG、PT:

最顶层是项目负责人,接下来项目会落实到PM(项目经理PM),项目经理将任务分成若干个子项目,每个项目由一个PL(项目组长)负责。在每个子项目中,由SE(系统工程师)带领PG(程序员)共同完成。同时在测试阶段由PT(测试工程师)进行测试。

标题: 软件开发项目规划时,SA、SD与SE的区别与重要性。

主题分类: 系统与程序设计

原文章出处: 知识工作者
做软件开发项目规划时,常会碰到助理问我一个问题,SA、SD和SE的差别在那里?

这个问题我以前也有过还颇为困扰系统分析和系统设计及系统工程到底有什么差别 ? SASD的工作又有何不同 这两者的养成教育又有何差异 ?在过去, SA,SDSE的确很难区分甚至这些角色常常会透过软件工程师来混合发展。随着IT领域的发展, SA,SDSE渐渐的成为了大型项目必需要的专业分工这三者间是有相当的差异的不管是养成过程甚或是未来的发展都大相径庭而要成为一名称职的PM, 是要能区分出这三者的差异才能妥善的安排工作的。

 

[SA System Analysis,系统分析师]

SA是 System Analysis 的缩写一般称为系统分析主要的工作就是透过一系列的分析工作把客户想要的结果产生方式以各种文件表达出来让开发团队可以根据这些文件实作出这个结果。这样的解释比较文绉绉一点用个通俗一点的方式比喻就像是要做出一道宫保鸡丁时就会有食谱一样里面会介绍需要的材料及做菜的顺序然后里面也会强调要以怎样手法才能产生出某种效果以促进色香味。

 

这样的过程里, SA是较为偏重于在工作流程和处理逻辑的透过SA, 开发团队才可以理出整个系统的架构一种做事的脉络以及系统和工作间的关连性最重要的是这些结果都会被SA呈现在文件中而非放在少数人的脑袋里。

SA不仅止是要针对计算机里的东西去运作及规划还包括了现实世界里的实体流程及组织。在很多的情况下配合新系统的组织及流程是要由SA来执行的。总结起来在一个开发案里, SA执行以下的工作:

1.藉由系统需求书使用者的现有标准作业流程来建立出符合期望的新作业流程及搭配流程的系统功能及模块规划

 

2.依据功能及模块规划案定出初步的数据库内容及系统与使用者间的权限搭配规范

 

3.定出各个软件零件的规范如对象函数库, ...等等

 

4.设计新的标准作业流程并把系统功能或模块绑入这些流程中

 

5.S.A依据客户的环境及需求寻找合适的SD来搭配

 

SA也有以下的特色:

1. 对于系统在怎样的环境及用什么开发工具并不十分在意良好的S.A产生出来的文件使用不同的开发工具都应该可以完成产生相同的结果但那一种最合适SD决定

2. SA偏重于流程及执行逻辑的表达

3.SA着重于软件逻辑对开发工具的学习并不是十分重要所以会一种语言即可主要是以该语言工具来实践逻辑观。

4.SA一定要有全局观也就是不能拘泥于一个角度或是一个局部去思考问题这一点是寻找优秀SA时最困难的。因为在规划模块及功能时一定要同时考虑到所有直接相关及间接相关的程序及逻辑问题因此要有全局观。

 

相较于SD, SA更侧重在逻辑及工作顺序搭配的表达, SA并不需要去关切使用什么操作系统或是什么开发工具如前特色所述好的SA文件可以用任何一种开发工具来实现。当然, SA不受限于IT技术但却会有专业领域的限制。

很少有SA同时专精于数个领域的熟悉汽车业运作规范的SA, 在金融业的开发案里就很难讨好反之亦然。但SD没有这种限制基本上SD可以和任何行业的项目开发团队配合运作。

会如此的原因是SA是偏重于流程及管理分析及重新再造工作的。而作业流程除了少数领域里共通性高在核心流程上是需要长期钻研的。前面提及的汽车及金融业就是一例。

所以一个SA必需具备以下的能力,资历及专业训练:

1. 至少熟悉一种程序开发语言

2. 熟悉软件工程对于开发工具的元素及特色熟悉

3. 对管理制度或作业流程设计熟悉

4. 熟悉UML或类似的系统描述工具

5. 逻辑能力良好

6. 良好的沟通能力主要作为了解需求之用

7. 相关的业界熟悉度

 

在三者之中, SA是最接近PM所以SA在做生涯规划时不妨以PM做为下一个发展的专业目标。

[SD Systems Designer, 系统设计师]

一般来说, SD在生涯规划里并不是SA或是PM。当然一定要硬来一次也没有什么不可以但要走这条路就要趁早转职因为SD毕竟是较为幕后的工作在与客户的沟通协调上并不会有太高的要求也较不需要公司管理层面的全局观。

 

表面上看起来, SD没有SA那么多的工作要求但实际上SD是最需要天赋的工作不管是画面的构成操作的手顺及调整甚至于组件的定义及对象的规范全都需要一些天赋。很多软件功能很强但怎么看怎么不顺眼或者怎么用就怎么憋扭功能带来的效益全都被这些毛病给遮盖掉了这就是SD的问题。

另外, SD也扮演了系统最佳化的推手。SA所规划出来的要求及布置都只是逻辑上的构思在不同的工具上可能有更好的方法可以表现也可能会难以展示这都需要藉由SD对使用环境及开发工具的了解来进行调整和规划。

举例来说同样是一套财务软件WINDOWS XP, MAC, X WINDOWS就会有很不一样的展现模式和技巧。如果再搭配上不同的开发工具C++, JAVA, .NET, PHP, ...那差异更多。对SA而言这些东西他都不用去考虑SD就不同了这些不同的地方并不仅仅只是如此而已有时还会包括了开发成本及时间问题, SD的重要度由此可知。

在一个客制化项目里, SD的工作内容如下:

1.设计画面元素规范

2.设计页面结构及规则

3.设计系统操作画面并编定字段规范及防呆处理

4.设计权限管理与系统操作机制撰写使用手册

5.调整DB之各项定义使其符合画面字段规范及操作搭配

6. 配合SA撰写系统开发文件供程序员CODING之用

7.撰写UI(使用者接口)测试计划书

 

而做为一名称职的SD, 以下的条件是必要的:

1. 至少对一个操作系统极为熟悉对于这个操作系统的各个组件特性及API, 有充分的了解

2. 熟悉2种以上的开发工具而项目所需的工具必需是其擅长的之一其熟悉度包含了标准安装里的各个函数库系统常数对象定义语法主要的辅助工具开发厂商及重要的工具使用方法

3. 具一定的美学感

4. 至少能使用一种绘图工具软件

5. 曾经担任职业软件工程师三年以上

 

可以这样说, SA给了系统灵魂和神经系统, SD则是给了系统躯体和外观两者的结合才能产生出正确美观又好用的系统。如果你觉得自己是个不太爱和太多人打交道的IT又对使用者接口有那么点执着及天赋那么, SD绝对是适合你的好选择。

[SE Systems Engineer, 系统工程师]

就某种角度来看, SEPM而言算是万金油只要做IT项目那就一定用得上差别只是要选那一个专业的SE而已。系统建置安装要SE, 使用者环境要SE, 甚至到硬件选择及布建都要用到SE, 有什么IT项目跟这个没有关系呢 

 

当然虽然SE是到处都吃得开但相对的也是项目里面最沉默及少有声音的一群。他们的工作基本上就是建构出一个可以执行系统的环境系统要如何展现, SE可以给SASD一些建议但建议时机通常都是在系统运行出了些非系统可以掌握的问题后。

系统工程师基本条件上SD最为接近但有一点不同就是不需要有很好的软件开发经验也就是不太需要会写程序。但要对操作系统服务器系统网络运用环境有相当程度的了解。

SE通常是三者中最为博学一员好的SE虽然不一定要程序写的呱呱叫但却不能对编程一无所知对操作系统及开发工具也要有一定的熟悉度甚至部份网管有关的工作也要有所涉猎所以算得上是项目里的万金油。

在项目里, SE所要执行的工作如下:

 

1. 规划及建置系统执行环境

2.安装及设定使用者端环境

3.SERVER安装及设定

4.提供环境设置竟见给SAPM

5.最佳化系统可靠度及效度

6.撰写可靠度及效能测试计划书

7.对计算机及相关外围设备有一定熟悉度

 

而一名SE则有下列基本要求:

 

1. 至少熟悉一种操作系统尤其是让系统的设定及微调等相关技术

2. 至少熟悉一种网络服务器操作系统对如何设定及最佳化熟悉

3. 曾任软件工程师职务一年以上或熟悉一种开发工具

4. 对网络环境有一定的认识尤其是一些通讯设置

5. 熟悉可靠度及效能的评估方法并了解与系统环境相关之设定

 

基本上如果拥有了像SD一样的技术背景及个性但在美学上实在令人不敢恭维那么SE算是极佳的选择了。一般而言, SE的下一个生涯规划会比较偏重于技术性兵种像是DBA或是网管对于IT产品比较有狂热或爱好的人, SE是极佳的出路。

[在项目中的运用时机]

 

基本上SE是万金油只要是IT的案子里就一定要塞一个SE进去因为没有IT项目不需要使用工程技术的差别只在使用何种工程技术而已。在软件包的导入项目里, SE负责处理软件使用环境解决非系统性问题安置及调整数据库和网络环境然后安装启动。所有系统运行所需要的条件都要由SE来解决和处理但这些工作全都不会出现在众人的面前但却又重要无比算得上是幕后的英雄。

 

会同时运用到SA,SDSE的项目还是以客制化开发为主的。

在开发型项目里, SA团队要负责初期的需求调查及整体架构的规划将所有的系统开发工作内容转化成井井有条的文件并且适度的分割及派送并确保未来这些被分割的开发结果能够在未来可以正确运作。

SD则在SA的文件中去寻求系统呈现的一致性易用性及保证开发工具可以正确无误的展现SA的要求结果。所以SD要负责操作界面的外观设计订定一致的展现规范设计系统操作画面及操作手顺同时配合SA完成系统开发文件。基本上开发文件中是包含系统使用手册初稿的。

SD在设计时必需与SA充分配合以确保设计的系统符合需求及运作要求。

除了上述的工作内容外这三者都要撰写测试计划, SA着重在于数据的流动符合原先规划的顺序及结果测试, SD则着重在操作画面中的防呆测试及操作接口的正确性SE则在系统可靠度上进行规划。

 

原文地址:https://www.cnblogs.com/angelfeeling/p/3630168.html