开发_开发框架 - CSDN
精华内容
参与话题
  • 开发都有那些岗位呢?

    千次阅读 2018-10-17 13:41:29
    昨天和大家说了,要分享一下项目的开发流程。不过在此之前我们先了解一下开发标准岗位都有那些以及他们的工作职责是什么?也方便在接下来的过程中能够很好的理解。 一、项目经理 简称:PM   企业建立以项目经理...

    昨天和大家说了,要分享一下项目的开发流程。不过在此之前我们先了解一下开发标准岗位都有那些以及他们的工作职责是什么?也方便在接下来的过程中能够很好的理解。

    一、项目经理       简称:PM      

         企业建立以项目经理责任制为核心,对项目实行质量、安全、进度、成本管理的责任保证体系和全面提高项目管理水平设立的重要管理岗位。职责:

    1、负责软件项目管理及计划实施;
    2、具备较强管理、协调及沟通能力,帮助开发人员解决开发过程中遇到的技术问题,做好日常的开发团队管理工作;
    3、与各团队协同工作,确保开发工作正常顺利的开展;
    4、具备较强的分析问题、解决问题的能力,能够解决项目团队在开发过程中遇到的技术难题。

    在项目经理这一块根据公司的需求不同可以主要分为:懂技术并能够参与到开发中来、了解技术主要负责管理,这两类。项目经理的职责当然不仅仅只有上面那些。这部分是日常项目经理所需要做的工作大家不妨进行参考,文章有多篇这里先提供一篇的链接大家去翻阅即可:https://blog.csdn.net/A_BlackMoon/article/details/83045650

    二、技术经理       简称:TM

         参与技术方向研究和总体规划,发展新项目,并且能够带领技术团队进行项目攻关。职责:

    1、确定企业系统架构的演进方向和路线图;
    2、开发过程的规范化管理;
    3、通过开发技术和过程管理能力的提升,提升开发效率和质量;
    4、能够对开发的交付质量进行量化管理;
    5、根据IT技术发展趋势,如移动互联、BI、大数据、云计算等,组织IT新技术研究,推进IT技术在宇通的落地应用

    三、产品设计经理       简称:PDM

           企业中专门负责产品管理的职位,产品经理负责调查并根据用户的需求,确定开发何种产品,选择何种技术、商业模式等。并推动相应产品的开发组织,他还要根据产品的生命周期,协调研发、营销、运营等,确定和组织实施相应的产品策略,以及其他一系列相关的产品管理活动。职责:

    1. 根据公司产品及用户需求,结合市场调研情况,进行产品规划;
    2. 负责用户沟通、需求分析诊断;
    3. 负责产品定位、用户体验流程定位及产品设计;
    4. 推动、协调与控制产品策划及研发工作,保证产品需求的有效实现;
    5. 负责产品持续升级,不断提升用户满意度及忠诚度;
    6. 对行业及竞争产品的分析,跟踪最新发展趋势,并提交分析报告。

    四、运营经理       简称:POM

           计划、指导或协调公司或公共和私营机构的运营活动。职责包括制定政策、管理日常活动、对物资和人力资源使用进行计划。职责:

    1、负责IT部门的日常管理工作;
    2、建立信息系统的开发技术标准、流程,信息系统运维制度;组织进行相关的系统培训工作;
    3、组织进行相关信息系统的开发工作。

    五、测试经理       简称:QAM

           测试经理的职责是有效的领导一个测试团队。测试经理必须理解测试的基本原则,在履行一个传统的领导角色的同时还应懂得该如何有效地实现一个测试流程。也就是说,测试经理应该管理、贯彻和维护一个有效的测试流程。这包括搭建一个能够支持良好沟通和有效成本控制的测试环境,创建一个有效的测试团队。职责:

    1、熟练使用测试工具如:TD、loadrunner、QTP等;
    2、制定测试过程的文档模板和规范;
    3、测试工具的选择、测试环境的搭建及使用培训;
    4、负责建立和维护有效的测试流程;
    5、负责制定和安排测试计划、测试工作;
    6、组织实施软件测试,对软件缺陷进行确认、跟踪分析和报告,推动测试中发现缺陷及时合理解决;
    7、负责与其他部门的人员沟通协作,例如与开发人员和项目管理人员进行沟通,共同推动项目的顺利进行;

    六、客服经理       简称:CSM

           职责:主要是监管客服的工作,以及客户直接反馈的对象。是项目的来自于客户需求的管理者,也是项目DEMO演示时的主要参与者之一。

    七、开发组组长     简称:TL

           其实就是个更小一点的项目经理。其职责:

    1、 参与软件的设计负责系统需求的分析,进行系统设计和数据库设计;
    2、 解决开发过程中技术问题和提供解决办法;
    3、 能够带领小组负责模块的功能开发;
    4、 负责项目组代码的审查工作,有效地控制项目的质量风险。

    八、架构师       简称:PA

           确认和评估系统需求,给出开发规范,搭建系统实现的核心构架,并澄清技术细节、扫清主要难点的技术人员。主要着眼于系统的“技术实现”。因此他/她应该是特定的开发平台、语言、工具的大师,对常见应用场景能马上给出最恰当的解决方案,同时要对所属的开发团队有足够的了解,能够评估自己的团队实现特定的功能需求需要的代价。 系统架构师负责设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单等。职责:

    1.主导产品的软件架构,保证架构设计能够满足产品的功能需求、性能需求、可靠性需求、可维护性需求和可扩展性需求;
    2.负责技术选型(包括:语言选择、框架选择、公共模块等);
    3.与产品经理沟通,分析需求,分析产品需求,起草并维护架构设计文档,培训工程师并且保证架构设计得到执行;
    4.制定技术文档和开发规范,并对开发过程进行持续改进;
    5.对团队开发人员进行代码质量审核、技术指导和监督;
    6.解决技术难题;
    7.承担关键攻关任务的同时,能够指导初级工程师,组织团队技术分享,促进团队成员共同进步。

    九、开发工程师       简称:DE

           根据软件概要设计、详细设计、编码、单元测试工作及说明文档的进行代码的编写。职责:

    1.熟悉各大常用框架;
    2.公司业务流程理解;
    3.能够很好的根据代码规范编写程序;
    4.有很好的学习和应用新技术的能力。

    十、数据库管理员       简称:DBA

           是从事管理和维护数据库管理系统(DBMS)的相关工作人员的统称,属于运维工程师的一个分支,主要负责业务数据库从设计、测试到部署交付的全生命周期管理。
    DBA的核心目标是保证数据库管理系统的稳定性、安全性、完整性和高性能。职责:

    1、全面负责各类数据库系统(如ERP、OA、网站等)的管理工作,保证其安全、可靠、正常运行;
    2、负责数据库的建设,做好服务器的维护、数据库软件的安装、数据库的建立工作,定期对数据进行备份;
    3、负责中心机房的数据库服务器的管理工作,做好服务器的日常运行记录;
    4、负责数据库服务器的安全防范管理。

    十一、系统管理员      简称:SA

               主要分为网络系统管理员和信息系统管理员。网络系统管理员主要负责整个网络的网络设备和服务器系统的设计、安装、配置、管理和维护工作,为内部网的安全运行做技术保障。服务器是网络应用系统的核心,由系统管理员专门负责管理;信息系统管理员则负责具体信息系统日常管理和维护,具有信息系统的最高管理权限。职责:

    1、负责公司云服务器的管理与维护, 保障公司网站,数据库服务器,应用服务器的正 常运行与数据的备份,同步;
    2、负责公司网络平台,网站域名等网络资源的维护,能进行J2EE应用的部署与配置;
    3、负责公司内部系统的安装、配置、管理、优化及日常运维工作;
    4、负责公司IT硬件设备、网络维护与管理,能够处理常见的系统、软硬件及办公设备故障,确保正常运行;
    5、完成上级安排的其它工作任务。

    十二、界面设计师      简称:UI

               对软件的人机交互、操作逻辑、界面美观的整体设计。职责:

    1、负责公司产品PC端和移动端的UI界面设计工作;
    2、配合完成校样修改和界面调整;
    3、深入了解负责的产品,并通过各种设计形式和视觉语言让用户感受到产品的优点和特性;
    4、跟进设计的变化和需求,注重相关文档的整理、资料的收集;能独立完成界面设计工作。

    十三、产品运营师       简称:PO

               产品运营师是一项从内容建设,用户维护,活动策划三个层面来管理产品内容和用户的职业。职责:

    1、行业应用和行业方案研究总结;
    2、客户技术交流和相关方案支持,确保产品配置的正确性和完整性;
    3、对友商产品和方案进行竞争分析和对比,对市场竞争形势进行动态总结;
    4、销售工具输出,并对内部销售人员进行培训;
    5、配合销售团队培养代理商/合作伙伴,并提供相关培训和长期支持;
    6、研讨会演讲、销售团队市场拓展活动支持;
    7、公司重点存储项目投标阶段的技术部分支持。

    十四、产品设计师        简称:PD

               一个创造性的综合信息处理过程,通过线条、符号、数字、色彩等把产品显现人们面前。它将人的某种目的或需要转换为一个具体的物理形式或工具的过程,把一种计划、规划设想、问题解决的方法,通过具体的载体,以美好的形式表达出来。职责:

    1、调查市场并研究需求,形成市场需求文档;
    2、负责新产品设计,拟定设计规划和方案;
    3、负责新产品的原型设计;
    4、组织产品开发团队,协调资源,跟进产品的开发,保证日程进度;
    5、分析产品运营数据,收集运营意见,及时调整产品形态,优化产品,并提出合理的运营建议;
    6、 以用户体验为中心,改进现有产品,或设计新产品。

    十五、测试工程师       简称:QA

               测试工程师,软件质量的把关者,工作起点高,发展空间大。职责:

    1.理解、分析需求文档,挖掘、细化需求;
    2.根据软件需求及设计文档编写测试用例,参与文档评审并维护相关文档;
    3.准备测试数据,执行测试用例,记录测试结果,整理测试报告;
    4.负责BUG的提交、跟踪、验证、关闭;
    5.负责测试部门测试环境及BUG系统管理与维护。
    6.对产品进行必要的功能,性能,安全,兼容性及其它方面的测试工作;
    7.公司安排的其它工作。

    有句话说,测试呢就是程序员的天敌。为什么会这么说呢?你们会觉得我好好的写得程序,那里有那么多的bug。测试他会全方位的审查你做的产品和代码,看看是不是步骤不一样了是否就会除问题等。他的主要工作就是给你做的东西挑毛病,挑到基本没有为止!就跟你谈恋爱的时候老是会挑你对象的毛病一样。还有一点,项目上线了,出了问题,是会扣他的钱的。一般来说,他们找到bug之后,可能面对面的跟你说bug是什么,再有就是在公司内部的网站上给你提交一个bug。

    十六、配置管理员       简称:PCM

              职责:

    1 .搭建代码管理服务器、编译和版本发布,并负责维护配置库的用户、权限、备份、项目初始化等工作;
    2 .管理和维护配置管理系统,编译环境的维护,自动构建脚本的编写;
    3 .负责配置库、配置管理系统、流程发布系统的配置部署;维护项目环境及项目状态信息,定期输出配置管理相关数据状态、报告;
    4 .进行配置管理审计,发现问题并推动问题及时合理地解决;
    5 .构建产品基线用于测试发布、产品发布;维护基线的变更历史记录等;
    6 .优化研发效率,与产品经理与研发经理一起提升团队的工作效率。

    十七、发布员       简称:PB

               负责发布程序到:开发环境,测试环境,线上环境。

    这一部分很多时候相关的开发人员或项目经理、架构师等会进行发布。

    十八、软件过程专员       简称:SQA

               职责:
    1、 协助项目的规范化以及风险告警;   
    2、 负责监督项目经理对项目管理制度、规范的执行;  
    3、 负责监控项目执行过程,包括项目立项、过程及结项,及时发现并协助项目经理解决项目重大问题,以保证项目按项目质量、成本及时间进度要求顺利完成;
    4、 负责协助项目经理或实施负责人,制定项目计划,协调项目资源,减少项目风险;
    5、 负责对项目进展进行测量及分析,定期发布相关项目分析报告;
    6、 负责提供项目管理相关的咨询、培训和项目管理方法、工具应用指导与支持;
    7、 负责对项目管理人员进行培训,提高其在项目管理方面的能力及技巧;
    8、 负责对项目管理经验、数据、模板进行建立、完善及总结,并在企业内推广使用。

    十九、运维工程师       简称:SRE

              运维工程师最基本的职责都是负责服务的稳定性。

    1. 产品发布前:负责参与并审核架构设计的合理性和可运维性,以确保在产品发布之后能高效稳定的运行;
    2. 产品发布阶段:负责用自动化的技术或者平台确保产品可以高效的发布上线,之后可以快速稳定迭代;
    3. 产品运行维护阶段:负责保障产品7*24H稳定运行,在此期间对出现的各种问题可以快速定位并解决;在日常工作中不断优化系统架构和部署的合理性,以提升系统服务的稳定性。

    以上基本便是相关的岗位了可能不是很完善,下面将会进一步介绍项目的开发。

    展开全文
  • 一个软件完整的开发流程介绍

    万次阅读 多人点赞 2018-06-21 14:21:02
    刚开始写博文的时候就应该将这个文章更新一下,虽然不是什么大牛,但是对于软件的开发流程还是比较了解的,毕竟大大小小做过了好几个项目了,今天就大概的说一下,用我做过的一个项目来说吧,写的不好的,请多多见谅...

    刚开始写博文的时候就应该将这个文章更新一下,虽然不是什么大牛,但是对于软件的开发流程还是比较了解的,毕竟大大小小做过了好几个项目了,今天就大概的说一下,用我做过的一个项目来说吧,写的不好的,请多多见谅,毕竟小生不才。

    开发流程百度的解释是:


    不是我懒得写,而是觉得写出来也不是自己的,还不如直接告诉你们我是百度的概念...但是下面的我们就不要百度了,因为百度说的太专业,让你看了很烦,最起码我是很烦(都是些什么玩意).


    进入正题

    我们分公司性质来说一个软件的开发流程,

    软件公司和非软件公司

    非软件公司

    需求分析-概要设计-程序编码-程序测试-软件交付-客户验收-码农维护

    软件公司

    需求分析-概要设计-详细设计-程序编码-程序测试-软件交付-客户验收-码农维护

    我们一步一步的说:

    需求分析

    一个软件没有出现之前,只是有一部分人有一个想法,我需要一个这样的东西(想要一个孩子了)用来管理我的什么什么,这个时候一个想法出现了,就会有这个需求,他会找软件公司需求分析师来商量,这个时候一个软件就怀孕了,相当于开始发育了.需求分析是听完要求以后会将大概的功能描述一下,用Word或者Axure画出一个简单的Demo给用户看,经过几次确认以后需求分析师会最后确认功能是不是完善的,确认了以后进行我们的下一步,概要设计

    概要设计

    这个功能主要是干嘛的呢?很多的公司觉得没必要,其实是很有必要的,这个就是相当于先规划一下怎么平安度过怀孕期,对于软件来说就是软件的处理逻辑,大概的一个流程是怎么走的,大概需要哪些模块,怎么运行,需要大概多少接口,后期怎么维护等问题,做这些干呢吗?为了下一步-详细设计

    详细设计

    有人说,详细设计是很麻烦的一步,其实不是很麻烦的一步,我觉得是最难的一步,详细设计主要是用来确认细节的,接口的名字啊,控制器的名字啊,多少个控制器,谁来调用谁,这个不可以有错,因为后期码农是需要看这个开发的,你怎么起名字,他们就怎么写,所以这里出错也就意味着编码的时候也会错,最后会有一份详细设计书出现,这个就是告诉孕妇具体吃什么,怎么吃,多少量。

    码农编码

    很多人觉得这个就是搬砖,看着设计书就直接写就可以了,理论是这样的,但是为什么还有很多的bug出现呢?很大一部分原因并不是设计的原因(当然也有可能),很大原因是不规范造成的,还有就是是不是一个项目组的人可以协作处理代码,怎么做可可以提高编码的效率,这些问题都是在编码的时候出现的问题。这个是相当于孕妇实施那一套套餐的时候具体是不是按规范来吃的。

    程序测试

    这一步是里面很重要的一步,测试,我们不可能说写好直接就给用户用了,这个是不现实的,我们需要做的是先给测试部门进行系统的测试,当然这个测试不是按照用户的想法来的,他们会很暴力,举个栗子,一个按钮,正常的用户使用的时候会直接点击一次,看到效果就可以了,但是测试的时候不是,他们会疯狂的点击,知道他们觉得这个世界上不会有人比他们暴力的时候他们会停止,当然这是一个好的测试人员,很多的测试不会是这样的,他们觉得正常使用没问题就是没事的,其实一个软件好不好,很大一部分在于测试人员的测试力度。最后写一份测试报告就可以了。

    软件交付

    测试结束以后没有任何的问题的话,就可以写安装手册了,这个其实就是用户使用指南。

    客户验收

    交付后客户简单的测试以后觉得是和自己想的一样的,就收货,交钱.

    码农维护

    是不是验收以后就没事了呢?当然不是,一个软件很多时候是在用一段时间以后才会出问题的,所以会一直需要人来维护他们,当然不是说只是出问题才会维护的,主要的原因是软件会根据不同的需要更改功能,这样的过程也是维护的过程,QQ已经更新多少代了,是不是,这也是一个维护的过程。

    项目重构

    这个是一个项目如果出现了新的技术,功能没有改变的时候,为了用户体验,例如之前是SSH写的,但是运行的速度很低,用SpringBoot,大家都在用,用户反映很好,那么这个时候就需要项目重构了,用新的技术将之前的功能重新实现。

    基本那就是这些了,另外细心的人也看到了非软件公司是没有详细设计的,这个解释一下,为什么呢?很简单,其实详细设计是和耗费时间的,非软件公司的人不会花费这个时间在设计上,他们就是直接告诉你需求,码农只需要直接编码就可以了,一般这样的对你用什么技术,什么框架是没有要求的。




    展开全文
  • 第一件事是逛知乎的时候看到一个开发人员提出一个这样的问题,大概意思是测试部门来了一个新老大,然后新老大定了一个规定,就是要求开发每次提交测试前需要完成一份测试部门给他的自测用例表,全部通过了才能转测试...
    最近碰到了两件事情,让我感触很深,于是想分享出来大家一起交流下。纯属个人观点,非喜勿喷。

    第一件事是逛知乎的时候看到一个开发人员提出一个这样的问题,大概意思是测试部门来了一个新老大,然后新老大定了一个规定,就是要求开发每次提交测试前需要完成一份测试部门给他的自测用例表,全部通过了才能转测试,并且这份测试用例不断的变多,让他很不爽。其实问题倒是没有什么,但是很多开发同学的答案让人感觉在开发眼里测试就是应该帮他们擦屁股的(部分同学先不要激动,看完再说)。

    第二件事情就是最近团队有个做技术很牛的测试同学跟我说打算转开发了(技术牛到开发经常让他转过去),这个同学以前一直在测试做的很好,包括编写团队的自动化框架,持续集成,跟开发一起定位问题,写工具等,工作得到整个开发和测试团队的认可。
    而他想转过去的原因是因为测试的话语权太少了,虽然他努力去做了,但是一直没有很好的结果,还不如直接转到开发去,这样效果会更好。虽然我还是很想留他,但是最后还是决定让他转了,毕竟对他的发展会更好。(还记得前面测试人员职业发展里面的小B同学吗?很多朋友问我他后面怎样了,没有错,就是他,没有看过的朋友继续往下看)

    其实我们团队在测试地位和开发认可上在整个行业已经算是比较好的了(大家通过我的描述应该也能感受到),但是测试的属性就决定了跟开发会一直有差距(不服气的同学继续往下看)。

    下面从几个维度进行比较:
    重要性:开发是将产品做出来;而测试是保证产品质量。如果没有开发就没有产品,如果没有测试呢?嗯,开发可以自测,就算开发测试的不充分也没有关系,对于互联网产品来说,用户也是测试者,还有现在的云测试平台。所以,在很多团队,测试就是可有可无的,特别是一些对产品质量要求不那么高的互联网产品。就算是对直接要求很高的产品来说,开发依然比测试重要,因为没有开发,啥都没有(没有开发这个职业,也不需要有测试这个职业)。

    起点:相信很多朋友都是因为做不了开发才会选择做测试的(真正将测试作为第一选择的很少很少吧,反正目前为止我一个都没有见过,如果你是的话,希望通过留言我们深入交流下,同时有红包)。这样入职的时候至少从写代码的能力上确实比开发要差一些。其他方面的能力和基础知识暂时还没有体现出来,就不评价了,而且一般应届毕业生开发也比测试工资要高一点。

    成长:过程中开发是全职写代码,测试是兼职写代码。所以,从代码来说差距只会越来越大(我上面举例的那个同学是一个例外,而且团队也给予了更多的机会)。而且大家都知道,测试要求的是广度,而开发要求的是深度。就是说测试关注业务,以及会各种技术,包括数据库,网络,linux,测试理论等。而开发则是某一方面的开发技术。嗯,大家应该知道很多东西都是入门简单深入难的。而这些技术的深入一般都会接触代码。谁的成长会更好呢?

    核心竞争力:提到成长后自然会谈到核心竞争力(前面的一篇文章给大家分享过核心竞争力,大家没有看过的可以再看看),开发的核心竞争力就是coding的能力和系统架构的能力,而且这些都是公司很看重并且摸得着的。那么,测试呢?大家应该能感受到很多公司招聘测试都是要求会写代码和熟悉业务。也许写代码的能力也会是测试的核心能力吧!而测试的测试分析能力却很难体现出来。

    职业发展:关于测试人员的职业发展我前面在软件测试从零开始系列文章里面已经介绍的非常多了,大家感兴趣的话可以通过回复(软件测试资料+自己的邮箱地址,需要先关注大话IT公司)来获得。这里重点跟开发对比一下,测试岗位的尽头是测试总监,而开发是研发总监,甚至是CEO。测试总监到研发总监的机会很少很少(不排除有,但是我还没有听过)。

          有的人说测试比研发更加懂用户和产品,所以更加容易转产品。不知道是哪来的错觉,首先不管是从开发转产品还是从测试转产品都是小部分人的事情,而大家会发现开发人员那些做的好的人都是对产品理解比较好的人(腾讯就要求开发人员具备产品意识),而且他们更加知道如何将产品跟技术结合起来。测试呢?其实一直在开发的后端(产品经理一般跟谁沟通的比较多?)

    待遇:终于到本质了,这里不用摆道理,大家应该普遍能够接受测试的工资比开发要低吧!或者随便找些招聘岗位看看就知道了。问题的原因还是因为开发能够创造更大的价值。而且一个很牛逼的开发的确不需要测试人员。另外,忘记说的是其实测试一个很重要的职业就是通过不断提高开发写代码的质量来干掉自己。

    以上是现实,不过如果不说完下面的话,很多朋友要喷我了。
    1,上面说的是测试的职业发展前景不如开发,不是测试人员不如开发人员。

    2,说的是整体情况,毕竟开发也有很多码农,测试也有精英,不要拿这样的例子来对比。

    3,没有说开发一定比测试好(虽然绝大部分情况是这样的)。而且确实有的人适合做测试,不适合做开发(这个后面会讲到),那么你选择测试对你来说更好,所谓适合的才是最好的。

    还没有完,那么很多同学就又有疑问了:说的测试这么悲观,那么作为测试人员应该怎么办呢?
    1,认清并且接受现实,同时保持良好的心态,安心的做好一个测试人员该做的事情。不用想着一定要跟开发比较,毕竟测试没有开发的压力那么大,同时好歹也是一个技术岗位。这种情况比较适合把工作就当成工作的同学。

    2,改变从转岗开始,如果自己不能够接受并且对测试本身也没有太大好感的话,就尝试转岗吧。学技术转开发,学产品或者运营都可以。

    3,发现测试的乐趣,同时提高自己的技术能力,进一步能够影响开发,争取在测试领域成为专家,这样比大部分开发人员也会混的好。

    4,承担好测试的职责,同时对质量负责,以提高产品的质量为目标。这样也会让自己更加有动力,但是前提是你有一个同样对质量强势的老大(同时还要得到高层的支持,一般适用于对质量要求比较高的产品),否则你会过的很郁闷。

    5,学习技术,然后推动开发测试融合,相信很多团队也这样做了。这样其实淡化测试人员的概念,大家一起承担责任,不过依然任重道远。而且既然这样为啥不直接选择做开发呢?

    其他的欢迎大家讨论,而且个人觉得随着人工智能的发展,后面可能会有自动写代码的机器人出来,到时候70%的码农都会面临职业的挑战,而在这之前70%的测试人员特别是手工测试人员可能会先消失。

    其实现在就出现很多新技术对测试人员有挑战了,比如testin,还有腾讯最近推出的专门针对游戏和app的优测云测试平台等。相信后面会有更多新的技术来替代测试人员(特别是手工测试人员)。

    居安思危,不要做温水煮的青蛙就好了,希望这篇文章对大家有帮助。
    展开全文
  • 软件开发基本流程【一】

    万次阅读 多人点赞 2019-02-14 10:45:49
    它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写...

    分析 


    软件需求分析就是回答做什么的问题。它是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把它用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。本阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。本阶段的工作是根据需求说明书的要求 ,设计建立相应的软件系统的体系结构,并将整个系统分解成若干个子系统或模块,定义子系统或模块间的接口关系,对各子系统进行具体设计定义,编写软件概要设计和详细设计说明书,数据库或数据结构设计说明书,组装测试计划 。


    设计 


    软件设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务就是将软件分解成模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。可以是一个函数、过程、子程序、一段带有程序说明的独立的程序和数据,也可以是可组合、可分解和可更换的功能单元。模块,然后进行模块设计。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。详细设计的首要任务就是设计模块的程序流程、算法和数据结构,次要任务就是设计数据库,常用方法还是结构化程序设计方法。 


    编码 


    软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的"源程序清单"。充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。 
    当前软件开发中除在专用场合,已经很少使用二十世纪80年代的高级语言了,取而代之的是面向对象的开发语言。而且面向对象的开发语言和开发环境大都合为一体,大大提高了开发的速度。 


    测试 


    软件测试的目的是以较小的代价发现尽可能多的错误。要实现这个目标的关键在于设计一套出色的测试用例(测试数据和预期的输出结果组成了测试用例)。如何才能设计出一套出色的测试用例,关键在于理解测试方法。不同的测试方法有不同的测试用例设计方法。两种常用的测试方法是白盒法测试对象是源程序,依据的是程序内部的的逻辑结构来发现软件的编程错误、结构错误和数据错误。结构错误包括逻辑、数据流、初始化等错误。用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。白盒法和黑盒法依据的是软件的功能或软件行为描述,发现软件的接口、功能和结构错误。其中接口错误包括内部/外部接口、资源管理、集成化以及系统错误。黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。黑盒法。 


    维护 


    维护是指在已完成对软件的研制(分析、设计、编码和测试)工作并交付使用以后,对软件产品所进行的一些软件工程的活动。即根据软件运行的情况,对软件进行适当修改,以适应新的要求,以及纠正运行中发现的错误。编写软件问题报告、软件修改报告 。 
    一个中等规模的软件,如果研制阶段需要一年至二年的时间,在它投入使用以后,其运行或工作时间可能持续五年至十年。那么它的维护阶段也是运行的这五年至十年期间。在这段时间,人们几乎需要着手解决研制阶段所遇到的各种问题,同时还要解决某些维护工作本身特有的问题。做好软件维护工作,不仅能排除障碍,使软件能正常工作,而且还可以使它扩展功能,提高性能,为用户带来明显的经济效益。然而遗憾的是,对软件维护工作的重视往往远不如对软件研制工作的重视。而事实上,和软件研制工作相比,软件维护的工作量和成本都要大得多。


    在实际开发过程中,软件开发并不是从第一步进行到最后一步,而是在任何阶段,在进入下一阶段前一般都有一步或几步的回溯。在测试过程中的问题可能要求修改设计,用户可能会提出一些需要来修改需求说明书等。

     

    1、项目设计 


    项目设计的主导思想,我觉得可以理解为两种,一种是完全设计,一个是简单设计。 
    完全设计是指在具体编写代码之前对软件的各种方面都调查好,做好详细的需求分析、编写好全部的开发文档,设计出程序全部流程后再开始写代码。 换句话说,就是全部的计划好了,能看到最终的样子,再开战。这好像也是很多“软件工程”书里要求的那样。开始的时候,我觉得这种方法不错也。什么都计划好了,照着做就是了。不过这里有个明显的问题,就是谁来做这个完美的计划?估计只有及其BT的人了,但是大部分人的想要完全设计,并且没有错误,或者已经有几种后备的容错方案,并能准确无误的推行。以达到最终目标。这样的境界,没有很多年的工作经历是不可能的。我也没有这样的本事,所以我也就放弃了这种想法。 
    简单设计:简单设计一种概念,一种可以接受的简单的设计,最起码数据库已经定下来,基本流程已经确定的方案,来作为程序设计的开始,并随时根据实际情况的进展来修正具体的功能设计,但这种功能修改不能是修改数据库结构。也就是说数据库结构是在编程之前经过反复论证的。这种方法减少了前期设计的时间,把代码编写工作和部分设计工作放在了一起,实际缩短了项目开发的时间。如果说完全设计方法要求有很厉害的前期设计人员,那么简单设计要求有很有设计头脑的编程人员。编程人员不仅仅是K代码的人而且要负责程序架构的设计。所以对程序员的要求就很高了。 简单设计的成功的一个基点是编程人员设计的逻辑结构简单并能根据需要来调整其逻辑结构,就是代码结构灵活,简单设计带来的另外一个变化就是会议会比较多,编程人员之间的交流就变的很重要。现在一般的中小型软件公司基本上都是采用简单设计的,除非那些很大型的软件公司。 
    总结,简单设计考验的是开发人员的能力。完全设计考验的是前期设计人员和整个项目组完整能力。(各种文档的编写,开发人员一定会要写一部分的。)


    2、设计变化和需求变化 


    开发人员最怕的是什么呢?设计变化,还是需求变化?我觉得需求变化是最最致命的。当你的一个项目数据库都定下来后,而且已经开发了若干个工作日,突然接到甲方公司提出,某个功能要改变,原先的需求分析要重新改,如果这个修改是涉及的数据库的表结构更改的话,那真是最致命的。这就意味着项目的某些部分得重新推倒重来,如果这个部分跟已完成的多个部分有牵连的话,那就后果更可怕了。所以当碰到这种情况发生,作为项目经理的你就应该考虑先查责任人,究竟是自己的需求分析做的不够好,还是客户在认同了需求分析后做出的修改,如果是后者的话,你完全可以要求客户对他的这个修改负责任!那么,呵呵,客户先生,对不起了,本次新增加的需求将归入另外一个版本。如果是改变前面某个需求的定义,那么说不定就要推倒重来了,不过这个时候到不用太在意,毕竟错的是客户。(项目正式开始前没有没有说清楚其需求)。所以,各位看客,在需求分析做好后,在开工之前一定要叫客户认可签字,并且在合同上要注明,当由客户原因引起的需求改变而造成开发成本的增加,客户要为此买单地。 
    如果在需求不变的情况之下,设计发生了变化,这个仅仅是我们内部之间的矛盾,商量一下就能解决。在简单设计中,因为前期的设计是不完整的,那么当进入任何一个新的模块进行开发时,都有可能引起设计的变化。开发人员的水平的高低就基本上决定了软件的好坏。


    3、代码编写

     
    当需求定下来数据库也定下来后, 其实我们就可以进行实质性的编码了,按照我的看法,一个人单独编程最好,能随时偷懒。(上网,和MM聊聊),但是现在的软件项目越来越大,工期也越来越紧,事实上我们一个小组里面,一般有3-5程序员,所以我们要强调团队合作性。那么你写的代码使得别人要能够看懂,我们必须在实际的编写代码过程中要有详细的编码规范,编码规范在很多书籍里面都提到过。但最起码以下的一些规范是我们必须要遵守的: 
     

    一)源程序文件结构: 
    每个程序文件应由标题、内容和附加说明三部分组成。 
    (1)标题:文件最前面的注释说明,其内容主要包括:程序名,作者,版权信息,简要说明 等,必要时应有更详尽的说明(将以此部分以空行隔开单独注释)。 
    (2)内容控件注册等函数应放在内容部分的最后,类的定义按 private 、 protected 、 pubilic 、 __pubished 的顺序,并尽量保持每一部分只有一个,各部分中按数据、函数、属性、事件的顺序。 
    (3)附加说明:文件末尾的补充说明,如参考资料等,若内容不多也可放在标题部分的最后。 
     

    二)界面设计风格的一致性: 
    由于采用可视化编程,所有的界面均与Win32方式类似,相应采用的控件等也大都为Windows操作系统下的标准控件,而且参考了其他一些市面上相关的企业内部管理的应用软件。 
    基于简单易操作的原则,贴近用户考虑,用户界面采用Windows风格的标准界面,操作方式亦同Windows风格,这样在实施过程,可以降低对客户的培训,也可以使用户容易上手,简单易学。 
     

    三)编辑风格: 
    (1)缩进:缩进以 Tab 为单位,一个 Tab 为四个空格大小。全局数据、函数 原型、标题、附加说明、函数说明、标号等均顶格书写。 
    (2)空格:数据和函数在其类型,修饰(如 __fastcall 等)名称之间适当空格并据情况对 齐。关键字原则上空一格,不论是否有括号,对语句行后加的注释应用适当空格与语句隔开并尽可能对齐。 
    (3)对齐:原则上关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。 
    另每一行的长度不应超过屏幕太多,必要时适当换行。 
    (4)空行:程序文件结构各部分之间空两行,若不必要也可只空一行,各函数实现之间一般空两行。 
    (5)注释:对注释有以下三点要求: 
    A、必须是有意义; 
    B、必须正确的描述了程序; 
    C、必须是最新的。 
    注释必不可少,但也不应过多,以下是四种必要的注释: 
    标题、附加说明; 
    函数说明:对几乎每个函数都应有适当的说明,通常加在函数实现之前,在没有函数实现部分的情况下则加在函数原型前,其内容主要是函数的功能、目的、算法等说明,参数说明、返回 值说明等,必要时还要有一些如特别的软硬件要求等说明; 
    在代码不明晰或不可移植处应有少量说明; 
    及少量的其它注释。 
     

    四)命名规范: 
    坚持采用匈牙利变量命名惯例,所有标识符一律用英文或英文缩写,杜绝采用拼音,标识符中每个单词首字母大写,缩写词汇一般全部大写,只在必要时加“_”间隔词汇。


    4、BUG修补 


    程序出现了BUG谁来修补呢,嘿嘿嘿…… 
    最好的办法是谁编写谁修补,谁改坏谁修补。一个人改坏的代码一人去修。两个人一起改坏的代码两人一起修。


    5、开发人员的测试 


    开发人员的测试是保证代码能正常运行,在开发时候发现的错误往往比较容易修正。(另外一个好处就是没有人来骂你。因为只有你自己知道)。但是一旦软件到了测试小组那里出了问题,那么就多了很多时间来修正BUG,如果到了客户哪里才发现的BUG,那么时间就更长了,开发人员本身受到的压力也是到了最大话了。客户->公司->测试小组->开发人员。 这个完全是倒金字塔型的,承受能力差的一环很容易出事情的。 
    另外开发人员的测试除了保证代码能正常运行以外,还有一个很重要的方面就是要保证上次能正常运行的代码,这次还是能正常运行。如果做不到这点,那么BUG就不断的会出现,很多BUG也会反复出现。于是软件看上去就有修补不完的BUG了。如果出现这种情况,那么开发人员有必要再教育。一般公司教育的方式有四种。第一种,扣工资,第二种,加班,反复加班+精神攻击。 第三种,开除。第四种,调动人员来帮助那个出了麻烦的家伙。 但愿看这个文章的人不要受到前面三种教育。

    展开全文
  • 软件开发的心得体会(一)

    万次阅读 2018-09-26 23:11:51
    软件开发过程中的任何一个活动都是为了能够产出优秀的代码。所以,代码才是核心。 1. 代码是软件开发的基础  编码是软件开发过程中最基本、最底层的技艺,然而也是最重要的技艺。任何一个领域的专家都需要花费大量...
  • HTML5开发

    千次阅读 2019-06-26 20:59:57
    1.什么是HTML5开发工程师? HTML5开发工程师是协调HTML5设计师、后端程序员实现网站页面或程序界面,优化交互体验的一个职位。 2.HTML5开发工程师需要掌握哪些职业技能? 市场非常需要精通HTML、CSS、JavaScript、...
  • 什么叫组件化开发

    万次阅读 2018-02-24 21:39:32
    转载:什么叫组件化开发? - aloo的回答 - 知乎 https://www.zhihu.com/question/29735633/answer/90873592  从第一代码农写下第一行代码开始到上个世纪的80年代的软件危机,码农一直在考虑一个问题,怎么让写代码...
  • 软件开发模式之敏捷开发(scrum)

    万次阅读 多人点赞 2018-08-08 19:25:59
    这几年关于敏捷开发在互联网企业中越来越广泛被使用到,运用的比较多的当属scrum敏捷开发和xp敏捷开发,人人都在谈论敏捷开发。那什么才是敏捷开发呢? 目录 什么是敏捷开发? 传统的开发模式和敏捷开发模式的...
  • Android studio开发-第一个入门例子(十分详细)

    万次阅读 多人点赞 2018-11-16 23:10:31
    举个栗子 实现功能:可以通过页面输入改变要显示的字符,然后通过按钮可以实现显示字符的放大功能。最终如下: 一共四个控件:一个text输入,一个text显示,一个输入修改确认按钮,一个放大按钮 ...
  • 2019腾讯校园招聘开发岗面经(一面+二面+HR面) 背景: 华为实习结束前两天,突然接到腾讯的邮件,邀请我现场面试,但面试前需要我做道题,这道题的回答内容将作为一面时的沟通话题(当时整个人是懵的,咋还有这操作...
  • 其实游戏开发本质上是软件开发的一种,因为游戏开发也需要用编程语言。这两者之间的区别就是侧重点不同,一个游戏开发出来实际上也是一款软件,如果你认为软件开发跟游戏开发是两种,那么我的观点是是前端的不同,...
  • 微信小程序开发实战

    万人学习 2019-04-01 14:05:00
    本套课程使用了元认知教学法,直接实战式教学,摆脱学院派的理论式讲解,对于0基础的学员可以入门编写微信小程序,过程中指导如何学习使用文档查阅接口等,通过两个完整的实战小项目的实例,入手小程序开发
  • 微信公众平台开发入门

    万人学习 2019-12-30 15:18:17
    通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有...
  • 微信公众平台开发之微信支付开发是子恒老师《微信公众平台开发》视频教程的第12部。详细讲解了用php进行微信支付的开发。内容包含获取支付密钥,微信公众号支付开发,扫码支付,微信刷卡支付,异步处理支付结果等等...
  • “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息...
  • App混合开发(英文名:Hybrid App),是指在开发一款App产品的时候为了提高效率、节省成本...原生应用开发,是在Android、IOS等移动平台上利用官方提供的开发语言、开发类库、开发工具进行App开发。比如android是利用j
  • 使用Cocos2d-x 开发3D游戏

    万人学习 2020-03-15 19:43:18
    由CSDN知名博客讲师火云红孩儿创建的火云开发课堂正式开始讲授新的Cocos2d-x v3.7版本中的3D引擎功能模块!
  • Z平台-开源免费的JAVA快速开发平台

    万次阅读 多人点赞 2020-06-11 10:12:46
    Z平台是开源免费的JAVA快速开发平台,通过Z平台集成开发环境,以零编码、动态配置的方式能够快速开发BS管理系统。同时该平台还可以做为APP、微信、各种小程序等项目的服务端来使用,为前端项目提供数据接口。并且Z...
  • React Native初级入门到项目实战

    万人学习 2019-06-24 13:09:30
    ReactNative是由Facebook公司发布的可以进行混合开发的开源技术框架。通过ReactNative可以为iOS和Android两个系统开发应用程序,“Learn once,write anywhere”。使用ReactNative开发,既拥有Native的良好人机交互...
  • Shader开发从入门到精通

    万人学习 2020-03-15 19:43:15
    Shader编程从入门到精通视频教程,该课程主要分享2D中的Shader与3D中的Shader编程,具体功能包括颜色配置、纹理、UV动画、滤镜等。
1 2 3 4 5 ... 20
收藏数 6,239,143
精华内容 2,495,657
关键字:

开发