公司培训需求分析包括哪些方面 要开发一个软件应该考虑哪些方面?

[更新]
·
·
分类:行业
4679 阅读

公司培训需求分析包括哪些方面

要开发一个软件应该考虑哪些方面?

要开发一个软件应该考虑哪些方面?

软件是一个系统工程,业界有软件工程一说。软件工程也是各校计算机系必修科目。开发一个软件应该考虑哪些方面,我们将引入软件工程中的一些概念和元素进行描述。
同时,作为企业,客户或者个人而言在进行软件开发时,除了要考虑软件工程外,还需要考虑到相关的资源。这里的资源包括人,预算,开销,时间等等。而这些包含进去,就涉及到项目管理的范畴。
接下来我就从 软件工程和项目管理的角度进行描述软件开发需要注意的方面。
从软件工程的角度看,软件开发包括了前期的需求分析,系统设计,详细设计,然后才到大家通常认为的编码实施阶段,接下来时测试培训,交付上线。最后还有一个不能忽略的阶段,那就是系统维护阶段。
需求分析阶段:通常采取访谈(interview),workshop,调查表等多种方式,由资深的应用/业务顾问 (Application Consultant/Business Consultant),向客户了解需求并进行确认。初始阶段的需求分析非常重要,稍有偏差,便有失之毫厘,谬以千里的风险。相信广大程序员朋友们都经历过变更,尤其是项目后期。当你的代码测试了一遍又一遍,自信满满确定几乎没有bug了,这时候leader告诉你不好意思,变更来了,你做的那一块要改成这样,改成那样 : ( 。当然项目前期需求收集,分析阶段不确定性比较大,所以我这里强调需要有自身的应用/业务顾问进行把关。当然有些变更是不可避免的。系统设计:需求分析好了,需要做Solution Design了,这时候Solution Architect进场(资深方案架构师)。要想后期编码实施轻松,系统设计阶段,如果有资深大牛把关后面的日子就会好过很多。包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等。有时候要用到新的技术,还需要进行快速的新技术调研。当今技术蓬勃发展的年代,有时候客户的需求必须使用到新的技术,也许是整个团队之前都没有接触过的,这时候就需要架构师总体把关了。通常会有技术天分的小组成员进行技术可行性调研。详细设计:大的框架结构,技术方向在系统设计阶段完成,确定了以后,对于各个模块而言进行详细设计。好的详细设计文档包含了模块内所有用例(use case)的逻辑处理,以及逻辑处理涉及到的算法。通常需要资深的程序员进行这部分文档的书写。好的文档写出来,后面coding的同学就会一身轻松。编码实施:如果前面详细设计做的好,到了这个阶段就相对轻松。但是对于程序员的基本功还是很有要求的。另外有一点就是自己的单元测试一定要做好。测试培训:这个阶段其实分两个小阶段。一个是测试,一个是对用户的培训。测试包括集合测试,压力测试等,最后是UAT(User Acceptance Test)。如果都没有问题,就择良辰吉日上线了。用户培训这个环节相当重要,千万不可忽视,直接关系到最终用户对整个系统的接受程度。一般会选取种子用户先进行功能培训,并和种子用户一起对所有用户进行整个软件的使用培训。交付上线:前面这么多的阶段都完成了,所有的测试也通过了,是不是上线就一帆风顺了。呵呵,根据笔者的经验,未必。上线的时候或多或少都有一些幺蛾子。新系统上线还算好,对于旧系统升级,如果系统相当庞大,国内一般也就只能是国庆/春节进行了。为啥,有7天假期,也就是说有7天的时间用户不使用系统,这7天过程中如果出现问题也不影响用户的操作。但是如果7天时间无法上线,不好意思,只能回退,等待下一个7天的假期。维护:上线了,该庆祝了,一般软件公司上线后都有庆功会。庆祝后,不要忘了还有软件系统的维护。首先,任何系统都无法保证不出bug。其次,对于实际的应用来讲,对于复杂的系统,每天产生的数据量巨大,对于性能方面,是需要有相关监控以及相应的。在用户使用了一段时间以后,会发现一些问题也会产生一些需求。所以,软件系统的维护也是相当重要的。
上面说了这么多,都是从软件工程的角度,也都是提到了资深架构师,资深顾问,好的详细设计等等。这些都是资源,都是需要争取的,如果争取不到,不好意思,项目经理就要多辛苦了。
接下来就从软件开发这个项目的角度出发,站在项目管理的角度上,有哪些需要注意的。项目管理方面我是用PMP的体系来进行描述,笔者之前通过PMP认证,觉得PMP的体系在整个项目管理过程中也是行之有效的。PMP中涉及到项目的范围管理,时间管理,成本管理,质量管理,人力资源管理,沟通管理,风险管理,采购管理,干系人管理等。对于软件开发尤为重要的几个环节,我这边会进行描述。
时间管理:做软件开发,一定会有schedule,什么时候开始,什么时候结束。那么这里的进度计划就显得尤为重要了。一定需要在规定的时间进行交付。成本管理:无论今天是一个公司,或者一个客户,或者一个独立的自然人所拥有的资源和时间都是有限的,能投入到软件开发中的资源也是有限的,如何能够在给定的资源中完成软件开发,是对项目经理一个要求。很有可能我上面提到的那些资深顾问,资深架构师项目经理根本要不到,或者公司也提供不了,这时候就要另想方法。风险管理:进行早期的风险识别,以及相应的定性,定量分析,来制定应对的计划,从而能够达到对风险的控制。实施整体变更控制:绝大部分项目都会有变更,软件开发也不会例外。笔者对此就很有体验。对于变更的管控,也是对项目经理而言很有挑战的一项任务。
上述的都考虑到,基本整个软件开发也不会有什么大问题了。
如需要进一步交流,欢迎留言或私信。

大数据主要涉及的内容有哪些?可以从事哪些岗位?

记得大学毕业的第一份工作,我们公司的业务就是做BI产品研发。哪时候互联网没有今天这样火热,也没有大数据、移动互联网的概念。记得有一次和同事去华师后门买书,同事买了一本javascript,我买了一个ajax。那时候,我们产品的客户端是用Delphi开发的,其实买书就是为了补充一点新知识,工作中基本用不到。在公司的第三年,公司要转做web的BI展示界面,我帮公司用svg做了两个展示组件,心里还是美滋滋的。
随着时间的推移、电商的发展,大数据、云计算似乎成了每个互联网公司对外宣传的标准说法。如果不讲点这些概念,似乎给人感觉缺少些逼格。记得10年在公司的一次培训上,有个同事问,云计算是不是你搞出来的,就因为我姓云。听到这个问题,我哭笑皆非。
大数据这个概念喊了这么多年了,很多人还是不清楚大数据指的是什么?为了回答好这个问题,我还去专门搜索了大数据的概念。老实说百科的解释,连我从事了这么多年互联网的人,也没看懂。
“大数据(big data),IT行业术语,是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。”
什么是大数据?
大数据说的直白点,就是运用一套技术手段,把数据变成信息和知识的过程。数据对我们来说是没有价值的东西,我们要把数据加工成信息或者知识,才能被人类理解。举个例子:公司一天的考勤数据是意义不大的东西,但是我们通过一月考勤数据的分析和比较,我们发现张三这个员工老是迟到。那么,张三老是迟到这个信息就对公司的管理有帮助了,领导需要去了解下,是不是张三家有什么事?或者张三最近出现别的状况?
大数据的“大”又如何理解呢?所谓“大”,一层含义指数据的体量大,在数据库时代数据以GB为单位,但在互联网时代以TB为单位,数据的体量升了一个数量级。另一层含义指数据形式的多样化。在传统BI应用中,数据大多是存储在关系型数据库中,但在互联网时代,数据的形式变得多样化了,例如:文本、视频及数据库。明白了大数据的概念,我们下来看,大数据包含哪些内容。
大数据的内涵
大数据从技术的角度去看,包含两大分支:数据分析和数据挖掘。数据分析是对历史数据的分析,为管理提供辅助决策信息。数据挖掘是研究趋势和未来的问题,主要应用在预测方面。从业务的时效性要求去看,分为:实时在线分析系统和离线分析系统。例如:网站的实时用户区域分佈狀況就是实时分析應用;2019年全國各省GDP排名分析就是離綫分析應用。
从大数据项目的过程看,大数据包含:数据采集、数据收集、数据转化与存储、数据建模分析、上层应用展示等。大数据的难点,在于海量数据的分析,这又涉及到海量数据存储及分析架构等问题。
按照Hadoop的技术体系来讲,flume用来收集和转化存储在服务器各处的日志及数据,存储在以hdfs文件系统或者hive或者hbase等数据仓库中,再利用hadoop架构的规范,编写mapreduce作业,再把分析结果展示给用户。当然,这里面设计到数据分析的各种算法。
大数据相关的工作岗位
下面介绍下,大数据相关的核心岗位:
业务专家或者顾问:为大数据提供研发方向和确定研究主题,并为技术人员提供业务支持。
数据分析师:从事数据收集、整理、分析并依据数据做出评估和预测的专业人员。
数据挖掘工程师:从海量数据中发现规律,需要较好的算法和数学基础。
可视化工程师:提供美观、便于人们理解的分析的结果展示界面。
维护工程师:负责服务器环境的配置、搭建和运维。
每个公司采用的大数据技术线路不同,工作岗位会有所差距。感兴趣的朋友,可以自己去了解下,现有的几种大数据方案。
随着5G网络的建设,接入网络的iot设备会越来越多,互联网所积累的数据,还会成级数增加。在未来几年,大数据行业依然是朝阳行业,需要的大数据人才会越来越多,希望本文对有意愿加入大数据行业的朋友,有所启发和帮助,也希望大家能对大数据的概念,有更清晰的认识。谢谢!