开发_开发框架 - CSDN
精华内容
参与话题
  • 一个软件完整的开发流程介绍

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

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

    开发流程百度的解释是:


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


    进入正题

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

    软件公司和非软件公司

    非软件公司

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

    软件公司

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

    我们一步一步的说:

    需求分析

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

    概要设计

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

    详细设计

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

    码农编码

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

    程序测试

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

    软件交付

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

    客户验收

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

    码农维护

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

    项目重构

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

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




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

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

    软件开发过程中的任何一个活动都是为了能够产出优秀的代码。所以,代码才是核心。

    1. 代码是软件开发的基础

      编码是软件开发过程中最基本、最底层的技艺,然而也是最重要的技艺。任何一个领域的专家都需要花费大量的时间来进行基本技艺的锻炼,木匠需要花费大量的时间来锻炼他们对各种工具的掌握,厨师则需要练习刀工和火候。程序员也是一样的,对我们来说,语言的各种特性必须要了然于胸。而对软件的管理也需要从代码做起。

      从2000年到现在,国内兴起了一股软件工程热,需求管理、配置管理、甚至CMM。面对纷至沓来的各种方法学、UML、OOA,大家似乎已经热衷于这些概念本身了,却往往忽略了软件开发中最基本的元素:代码。在和很多软件组织的接触过程中,我们认为大多数组织急切需要的并不是这些工程理论,不是说这些理论不重要,而是这些组织的症结不在于此。很多的组织连代码的质量都管理不好,又何谈其它呢?代码管理是基础的基础,从管理的角度上来看,任何一个组织的管理都需要一个从上至下的管理过程,有基层的管理人员,也有高层的管理人员。对代码的管理就是软件开发中的基层管理,它起到的作用就是能够把需求、设计的思路贯彻到最终的代码中。

      “管理无大事”。对软件的管理也是一样,大部分的问题都是由于很小的原因引起的。例如,一个产品如果后期在debug上花费了大量的时间,那么,这种现象是由于什么原因引起的?一种可能的原因是前期的代码设计中对代码质量的把握不严。每一次代码功能的演化并不会产生太多的问题,但是当代码累积越来越多的时候,问题也就慢慢出现了。那么如何解决呢?可以加强QA的力量,也可以引入复审,还可以引入单元测试。总之,要有一种方法对代码进行控制。

      软件的开发过程就象是一部精密的机器,任何一个环节的变化,都会对其它的环节产生影响。把软件过程按照瀑布的形式进行划分是一种分解的处理思路,但同时我们还应该看到不同活动之间的相互影响。软件开发中的生命周期模型也是一个层次模型,从业务建模一直到软件实现,需要跨越数个层次,同样会出现执行不力的情况,例如,代码设计偏离需求、偏离设计的情况比比皆是。

      如何避免这种情况呢?这就需要我们从源代码的角度,反思其上游的实践活动,是否足以约束代码设计?就拿XP来说,他解决这个问题的方式是尽快的进入代码开发阶段,从代码开发中发现问题,并在下一轮的开发中解决。这种思路是正确的,但XP毕竟是方**,他不会告诉你过于细节的东西,尽管XP已经提供了大量面向代码的实践。因为方**的抽象级别比较高,使得他必须舍弃部分的细节。而这篇文章告诉你的,就是这些细节。就像我们在下一节中讨论的例子,需要在代码中加入对异常的处理,那么,异常的源头在哪里呢?是需求,在需求中,我们发现了一些业务的非正常的处理序列,发现了一些业务实体的限制性的要求,所以在代码实现中,就需要有相应的异常处理。在例如,一个优秀的异常处理,还需要让客户端程序员了解可能发生的异常,以保证不同代码间正确的集成。

    2. 面向对象的代码

      面向对象的代码已经在现在的软件开发中占据了主流的位置,面向对象的思路也有其优势所在,就像后文所讨论的,面向对象代码有着非面向对象代码的很多优势,而软件业中很多新的思潮的产生,也都是基于面向对象语言的,所以我们关注的代码将是面向对象代码。

      面向对象的思想来自于抽象数据类型。对于面向对象来说,它最重要的改进就是把世间万物都描述为对象,而类则描述了同一种对象的特征,而不是像传统的开发方法那样,按照机器指令的执行顺序来进行设计。当然,面向对象代码最终仍然是要按照时序来执行的,但是从程序员的角度看来,面向对象代码更侧重于对象之间的交互,多个对象各司其职,相互协作以完成目标。而面向对象技术的发展,也是朝着更加贴近我们世界观的方向发展。从这点来看,有人说完全没有程序设计经验的人学习面向对象可能会更加的容易,因为他不需要从原先的时序程序的桎梏中摆脱出来,但这未必是事实。面向对象决不是一种简单的程序设计思路。这是我们的观点,也会在下文中反复的论证。

      和所有的职业一样,程序员,或者是面向对象程序员,始终坚持的一点就是严谨。你会看到各种各样优秀的代码,但那决不是一次能够写成的,要不断的尝试,不断的改进。为什么重构和测试优先是敏捷方法中很重要的一项实践?因为程序员不是神,他们需要慢慢改进他们的代码。虽然罗马不是一天能够建成的,但是在编写面向对象代码的过程中,有一些实践是需要坚持的,它体现了我们所说的严谨。

    3. 编写并管理面向对象的代码

      编写优秀的面向对象代码并不是一件容易的事情,优秀的OO代码如行云流水,糟糕的OO代码让人觉得浑身起鸡皮疙瘩。编写优秀的OO代码要求程序员有一定的自我修养,能够以抽象的思路看待问题,找到问题的核心并对问题域进行分解。它强调的是一种解题的思路,但这个解不是唯一的。

      典型的例子是设计模式,设计模式确实给了我们以很大的启发,通过它,我们能够了解到优秀的代码是如何用于解决实际问题的。但是是不是你必须在软件中照搬设计模式呢?如果你这么做,那么你对设计模式的理解仍然不够。我曾和在建筑行业的朋友聊起Christopher Alexander的建筑的永恒之道。他很兴奋的告诉我,那确实是一本很好的书,能够引发人很深的思考,但是现在也有另外的一种观点,认为美仍然是无形的,应该发自建筑师的内心。对这句话我思考了很久,其实建筑是给人使用的,因此最重要的是它能都给人带来的价值,隐含在其中的那种活生生的气质,这是建筑师文化底蕴的外在表露。所以,Christopher Alexander在那本书中的目的,也是为了找到一种总结自己观点的方法,来总结自己对人文的认识。至于现在大家对他的思路提出了质疑,那也是一件好事,这说明大家对建筑之道的认识到了新的高度。建筑是这样,软件中的模式也是一样的,我也曾热衷于研究模式的使用,直到某一天我猛然惊醒,与其沉迷于模式的表面形式,为什么不去研究隐藏在它背后的文化底蕴呢?武侠小说中常说无招胜有招,模式的应用也应当到达这个境界,你如果可以在不经意间应用模式的思想,那又何必拘泥于模式的形式呢? 

      编写优秀OO代码虽难,但还有更难的事情,就是让整个开发团队都产出优秀的OO代码。我们刚才说了,OO对问题的解不是唯一的,但各个不同的优秀解汇集到一起,可能就是一个糟糕的解,这是风格和架构的问题。你如何在团队中制定制度,营造氛围,让优秀OO代码成为团队最终的成果?这些问题,在我看来,要比CMM难得多,这个问题并不是靠花钱就能够解决的。如果能够解决这个问题,这个团队的创造力一定是惊人的。

    4. 面向对象软件开发过程

      普通的软件开发过程和面向对象开发过程有着很大的不同。回想我们在非面向对象中开发过程中,最经常采用的任务分配方法就是以软件模块为单位,这样的好处是分配简单,不同任务之间耦合程度低,容易操作。坏处是几乎无法做到重用,也缺乏整体性的设计。而面向对象软件开发则不同,它是以类、类集合作为基本单位的。类之间关系错综复杂(虽然我们提倡低耦合的设计,但类之间的关系仍然是相对复杂的)。这种情况下程序员之间相互协作的要求就非常之高,这种关系如果处理恰当,则能够完全体现出面向对象的威力,否则,那将会是一场大灾难,面向对象的软件开发过程要养成一些好的习惯:

    4. 1 尽量简化和稳定客户端。

      个人编程可以是一种享受,但团队开发始终是一项严谨的职业活动,因此多考虑别人,不要设计复杂的接口,虽然你省事了,但这会给理解和使用你的接口和人造成障碍。

    4.2 准备一份简洁的文档,并保持更新。

      随便一种形式的稳定,可以是代码,可以是UML图,也可以是纯粹的文字(估计没几个程序员喜欢这种形式)。只要它能够传达你的代码的目的,那就足够。记住,更新代码后,同时更新你的文档。过期的文档不仅是废纸这么简单,它会给其它人造成麻烦。切记!

    4. 3 尽可能多的考虑异常和错误的情况。

    展开全文
  • 开发都有那些岗位呢?

    千次阅读 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稳定运行,在此期间对出现的各种问题可以快速定位并解决;在日常工作中不断优化系统架构和部署的合理性,以提升系统服务的稳定性。

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

    展开全文
  • 软件开发基本流程【一】

    万次阅读 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了。如果出现这种情况,那么开发人员有必要再教育。一般公司教育的方式有四种。第一种,扣工资,第二种,加班,反复加班+精神攻击。 第三种,开除。第四种,调动人员来帮助那个出了麻烦的家伙。 但愿看这个文章的人不要受到前面三种教育。

    展开全文
  • 个人博客开发流程

    千次阅读 2017-08-11 21:48:35
    成品:见公告》个人博客站点 ...5:开发好后列出我的博客测试文档,逐个测试。 6:上线。 7:复函:  A:这次开发花了两个月的闲暇时间,其中60%以上花在了前端上。  A.1:自己的前端功力还有待提高。
  • 软件开发模式

    千次阅读 2019-03-01 09:47:30
    迭代开发 螺旋模型 敏捷开发 瀑布模型 瀑布模型是最典型的预见性的方法,严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划...
  • 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年代的软件危机,码农一直在考虑一个问题,怎么让写代码...
  • .NET 开发从入门到精通

    千次阅读 2019-04-29 15:15:49
    .NET 开发从入门到精通 摘要: .NET平台及其开发工具为今天的开发者提供了可靠、易用的平台,使得我们可以更加从容的面对Windows应用程序开发的挑战。本系列课程介绍微软基于.NET平台的开发工具Visual Studio .NET ...
  • 一、你在项目开发中遇到过哪些问题? 此问题的回答一般从三个方向入手,一是技术问题,二是解决方案问题,三是甲方或团队配合问题,针对这三个方面的问题回答示例。 一、技术方面: 开发项目过程中遇到问题是难免的...
  • 其实游戏开发本质上是软件开发的一种,因为游戏开发也需要用编程语言。这两者之间的区别就是侧重点不同,一个游戏开发出来实际上也是一款软件,如果你认为软件开发跟游戏开发是两种,那么我的观点是是前端的不同,...
  • 2019腾讯校园招聘开发岗面经(一面+二面+HR面) 背景: 华为实习结束前两天,突然接到腾讯的邮件,邀请我现场面试,但面试前需要我做道题,这道题的回答内容将作为一面时的沟通话题(当时整个人是懵的,咋还有这操作...
  • LCDP,Low Code Development Platform,尽可能的少写代码来开发应用。 现在不管是在国内还是国外,其实低代码/无代码(0代码)都是放在一起说的,不管是业内人士还是企业IT人员,都将低代码和无代码(0代码)...
  • 微信公众平台开发入门

    万人学习 2019-12-30 15:18:17
    通过本课程的学习,学员能够入门微信公众平台开发,能够胜任企业级的订阅号、服务号、企业号的应用开发工作。 通过本课程的学习,学员能够对微信公众平台有一个清晰的、系统性的认识。例如,公众号是什么,它有...
  • 微信小程序开发实战

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

    万人学习 2019-06-24 13:09:30
    ReactNative是由Facebook公司发布的可以进行混合开发的开源技术框架。通过ReactNative可以为iOS和Android两个系统开发应用程序,“Learn once,write anywhere”。使用ReactNative开发,既拥有Native的良好人机交互...
  • “微信公众平台深度开发Java版 v2.0”系列课程共有6季,使用JAVA语言,系统讲解微信公众平台订阅号、服务号官方列出的全部功能接口,包括:自定义菜单、个性化菜单(按需定制菜单)、群发消息、客服消息(有限次消息...
  • App混合开发(英文名:Hybrid App),是指在开发一款App产品的时候为了提高效率、节省成本...原生应用开发,是在Android、IOS等移动平台上利用官方提供的开发语言、开发类库、开发工具进行App开发。比如android是利用j
  • Shader开发从入门到精通

    万人学习 2020-03-15 19:43:15
    Shader编程从入门到精通视频教程,该课程主要分享2D中的Shader与3D中的Shader编程,具体功能包括颜色配置、纹理、UV动画、滤镜等。
  • 微信小程序全方位深度解析

    万人学习 2019-06-24 13:09:17
    微信小程序是微信在2016年9月15日发布的一种新的应用形态,不需要下载安装即可使用的应用。本套视频教程将会带大家从基础环境搭建、配置、api的使用到开发出一个app的完整流程.
1 2 3 4 5 ... 20
收藏数 6,267,636
精华内容 2,507,054
关键字:

开发