既然咱们之后从事的工做时软件开发,那么咱们就要对软件开发的流程先作了解,毕竟要从娃娃抓起。早点了解软件开发流程,也就有了软件开发的思想与动力。算法
问题定义 是软件定义时期的第一个阶段。做为软件的开发者,在这个阶段必须弄清用户“须要计算机解决什么问题”。若是在问题还没有明确的状况下就试图解决这个问题,那么就会白白浪费时间和精力,结果也毫无心义。因此总结起来问题的定义也是起到了十分重要的位置!数据库
软件可行性分析 是经过对项目的市场需求、资源供应、建设规模、工艺路线、设备选型、环境影响、资金筹措、盈利能力等方面的研究,从技术、经济、工程等角度对项目进行调查研究和分析比较,并对项目建成之后可能取得的财务、经济效益及社会环境影响进行科学预测,为项目决策提供公正、可靠、科学的软件咨询意见。安全
需求分析 也称为软件需求分析、系统需求分析或需求分析工程等,是开发人员通过深刻细致的调研和分析,准确理解用户和项目的功能、性能、可靠性等具体要求,将用户非形式的需求表述转化为完整的需求定义,从而肯定系统必须作什么的过程。服务器
需求分析阶段的工做,能够分为四个方面:问题识别、分析与综合、制订规格说明、评审。网络
概要设计 的主要任务是把需求分析获得的系统扩展用例图转换为软件结构和数据结构。设计软件结构的具体任务是:将一个复杂系统按功能进行模块划分、创建模块的层次结构及调用关系、肯定模块间的接口及人机界面等。数据结构设计包括数据特征的描述、肯定数据的结构特性、以及数据库的设计。数据结构
详细设计 ,是软件工程中软件开发的一个步骤,就是对概要设计的一个细化,就是详细设计每一个模块实现算法,所需的局部结构。在详细设计阶段,主要是经过需求分析的结果,设计出知足用户需求的软件系统产品。传统软件开发方法的详细设计主要是用结构化程序设计法。架构
编码通俗易懂来讲,就是须要写代码了!对产品根据功能和技术架构来实现功能开发、单元测试、功能测试等并发
软件测试 ,描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。软件测试的经典定义是:在规定的条件下对程序进行操做,以发现程序错误,衡量软件质量,并对其是否能知足设计要求进行评估的过程。app
静态测试: 对软件代码的静态分析测验,过程应用数据较少,能够经过人工或机器辅助测试数据库设计
动态测试: 检测软件运行中出现的问题,较静态测试方式相比,其被称为动态的缘由即为其测试方式主要依赖程序的运用,主要为检测软件中动态行为是否缺失、软件运行效果是否良好。
功能测试(黑盒测试): 经过数据输入观察数据输出,检查软件内部功能是否正常,数据是否一致等等。
性能测试(白盒测试): 原理为根据软件内部应用、源代码等对产品内部工做过程进行调试。测试过程当中常将其与软件内部结构协同展开分析,最大优势即为其可以有效解决软件内部应用程序出现的问题,测试过程当中常将其与黑盒测试方式结合
系统集成测试: 在单元测试的基础上,将全部模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。一些模块虽然可以单独地工做,但并不能保证链接起来也能正常的工做。一些局部反映不出来的问题,在全局上极可能暴露出来。
压力测试: 软件压力测试是一种基本的质量保证行为。压力测试是给软件不断加压,强制其在极限的状况下运行,观察它能够运行到何种程度,从而发现性能缺陷,是经过搭建与实际环境类似的测试环境,经过测试程序在同一时间内或某一段时间内,向系统发送预期数量的交易请求、测试系统在不一样压力状况下的效率情况,以及系统能够承受的压力状况。而后作针对性的测试与分析,找到影响系统性能的瓶颈,评估系统在实际使用环境下的效率状况,评价系统性能以及判断是否须要对应用系统进行优化处理或结构调整。并对系统资源进行优化。
压力测试能够分为负载测试、并发性能测试、疲劳强度测试
负载测试: 经过增长系统负载来测试系统性能的变化趋势。并最终肯定系统的最大负载不能超过某个值,以确保为用户提供最大的服务还保证了系统性能。
并发性能测试: 经过逐渐增长用户量和用户的并发访问量,直到系统遇到瓶颈或者不能正常运转,综合分析交易执行指标与资源监控指标。
疲劳强度测试: 构建系统稳定运行状况下可以支持的最大并发度与平常运转。
软件的性能能够经过响应时间、并发用户数、吞吐量、资源利用率等性能指标来衡量。
响应时间: 是指用户从客户端发出请求到接收完服务器返回结果的整个过程所需花费的时间,包含网络传输时间以及服务器处理时间。从用户角度来看,响应时间应该从客户端计算机处理用户操做并发出请求到客户端程序收到服务器端返回结果并显示出来的时间。
并发用户数: 是指在必定时间内,某一时刻同时与服务器进行会话操做的用户数,并发用户数的类型包括:系统用户数、同时在线用户数,业务并发用户数。
吞吐量: 是指单位时间内,系统处理用户的请求数或页面数量,能够直接反映出软件的承载能力。通常来讲,利用每秒钟的请求数或页面数量衡量吞吐量;从业务的角度来看,也能够用天天的访问人数或每小时处理的业务数来衡量。
资源利用率: 是指系统资源(CPU、内存)的利用率,一般用资源的实际使用量与总的资源可用量比值来衡量,包括网络、操做系统、数据库等方面。
项目部署、用户培训、交付协议款、后期保证协议内期限的产品维护等
软件开发流程能够分为这几大步骤: