57

芜湖市软件开发外包流程,全流程一篇看懂!

2022/6/13

在介绍软件的特点,开发流程之前,先来介绍一下软件的概念。软件是指是一系列按照特定顺序组织的计算机数据和指令的集合。一般来说软件被划分为系统软件、应用软件和介于这两者之间的中间件。

软件并不只是包括可以在计算机(这里的计算机是指广义的计算机)上运行的电脑程序,与这些电脑程序相关的文档一般也被认为是软件的一部分。简单的说软件就是程序加文档的集合体。

代理免费咨询:18715034835 (微信同号)

(项目申报、知识产权代理、软件开发、商业计划书、工商注册财税规划、可行性研究报告、体系认证等)

 

、软件的特点

1、无形的,没有物理形态,只能通过运行状况来了解功能、特性、和质量

2、软件渗透了大量的脑力劳动,人的逻辑思维、智能活动和技术水平是软件产品的关键

3、软件不会像硬件一样老化磨损,但存在缺陷维护和技术更新

4、软件的开发和运行必须依赖于特定的计算机系统环境,对于硬件有依赖性,为了减少依赖,开发中提出了软件的可移植性

5、软件具有可复用性,软件开发出来很容易被复制,从而形成多个副本

、软件开发流程

软件开发是根据用户要求建造出软件系统或者系统中的软件部分的过程。软件开发是一项包括需求捕捉,需求分析,设计,实现和测试的系统工程。软件一般是用某种程序设计语言来实现的。通常采用软件开发工具可以进行开发。

3.1可行性分析和项目开发计划

软件可行性研究的目的就是用最小的代价在尽可能短的时间内确定该软件项目是否够开发,是否值得去开发。

1)技术可行性即确定现有资源(软件、硬件、技术人员)条件下,项目是否能实现。

2)经济可行性即进行开发成本的估算以及了解取得经济效益的评估,确定要开发的项目是否值得投资去开发。

3)社会可行性即要开发的项目是否存在任何侵犯、妨碍等责任问题,要开发项目的运行方式在用户组内是否行得通,现有管理制度、人员素质、操作方式是否可行。

确定了可行性分析之后就要开始编写文档:《可行性研究报告》和《项目开发计划》,《项目开发计划》是一个管理性文档,说明项目的各项主要工作,双方承担的责任,项目完成期限及其他条件限制的文档。

3.2需求分析

需求分析是指:开发人员准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转化到相应形式的功能规约(需求规格说明书)的过程。

需求分析的任务:

3.2.1问题识别

1)功能需求:所开发的软件必须具备怎样的功能。

2)性能需求:待开发的软件的技术性能指标。

3)环境需求:软件运行时所需的软硬件的要求。

4)用户界面需求:人机交互方式等。

5)分析与综合,导出软件的逻辑模型,在分析与综合中,逐步细化软件功能,划分各个子功能,用图文结合的形式,建立系统的逻辑模型。

6)编写文档《需求规格说明书》:把双方共同的理解与分析结果用规范的方式描述出来,作为今后各项工作的基础。

《初步用户使用手册》 :着重反应被开发软件的用户功能界面和用户使用的具体要求。

《确认测试计划》 :对原计划进行适当修整。

3.2.2需求分析方法:结构化分析方法,简称SA,是面向数据流进行分析的方法。该方法使用简单易读的符号,根据软件内数据传递、变换的关系,自顶向下逐层分解,描绘出满足功能要求的软件模型。

描述工具:数据流图(DFD):以图形方式描绘数据在系统中流动和处理的工程。

数据字典(DD):为分析人员查找数据流图中有关名字的详细定义而服务。

3.3概要设计

概要设计是要软件做什么的逻辑模型变换为怎么做的物理模型,把软件需求转换为软件表示,描述软件的总的体系结构。

3.3.1概要设计任务

1)设计软件系统结构

采用某种设计方法,将一个复杂的系统按功能划分为模块

确定每个模块的功能

确定模块之间的调用关系

确定模块之间的接口

数据结构及数据库设计

对于大型数据处理的软件系统,除了控制结构的模块设计外,数据结构与数据库设计也比较重要。

2)编写概要设计文档《概要设计说明书》、《数据库设计说明书》

3.3.2软件结构设计优化准则:

1)划分模块时,尽量做到高内聚,低耦合,保持模块相对独立性,可将功能过于简单而又有联系的模块进行合并,合并时消除重复功能。

2)有判定功能的模块应与受其影响的模块在层次上尽量靠近。

软件结构的深度、宽度、扇入、扇出应适当。

模块的大小要适中。

模块的接口要简单、清晰、含义明确、便于理解、易于实现、测试与维护。

3.4详细设计

3.4.1详细设计任务:

为每个模块进行详细的算法设计概要设计,将每个模块的处理过程的详细算法描述出来。

为模块内的数据结构进行设计,对于需求分析,概要设计确定的概念性的数据类型进行确切的定义。

对数据库进行物理设计

编写详细设计说明书

3.5编码

编码即编程序,它是在前一阶段详细设计的基础上进行的。它是详细设计得到的处理过程的描述转换为基于某种计算机语言的程序。

3.5.1程序设计语言的选择:

1)项目的应用领域

2)软件开发的方法

3)软件执行的环境

4)软件开发人员的知识

3.5.2程序设计风格

1)源程序文档化(编码规范)

2)数据说明(注释)

3)语句构造

4)输入输出(结束标志)

5)效率

3.6测试

测试阶段的基本任务是根据软件开发的各阶段的文档资料和程序内部结构,精心设计一组测试用例,找出软件潜在的各种错误和缺陷。

3.6.1软件测试原则:

1)测试用例应有输入数据和预期的输出数据两部分组成。

2)测试用例不仅要选择合理的输入数据,还要选择不合理的输入数据

3)除了检查程序是否做了它应该做的事,还要检查程序是否做了它不应该做的事。

4)长期保留测试用例。

5)程序员避免测试自己的程序。

3.6.2测试方法:

(1)静态测试:不在机器上运行,采用人工检测和计算机辅助分析的手段对程序进行检测。

(2)动态测试:

黑盒测试:测试人员不考虑程序的内部结构和处理过程,只在软件接口进行测试,依据需求规格说明书,检查程序是否满足功能需求。

白盒测试:测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检查内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。

3.6.3测试过程:

(1)单元测试:对源程序中每一个程序单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。

(2)集成测试:检查与设计相关的软件体系结构的有关问题。

(3)确认测试:主要检查已实现的软件是否满足需求规格说明书中确定了的各种需求。

(4)系统测试:把已确认的软件与其他系统元素(其他支出软件、硬件等)结合在一起测试。

3.6.4版本发布:

分为abc三个阶段

(1)a 阶段也就是一开始测试的阶段,它是由该公司内部人员完成,称为:alpha测试,alpha测试主要看有没有功能上的缺失或系统错误什么的。

(2)b 阶段发布到公网上或以其他途径发给普通用户测试,称为:beta测试。主要看客户对软件外观,使用方便性等的反应。

(3)c 阶段称为:RC测试,该版本已经完成全部功能并清除大部分bug,到这个阶段只会去除一小的bug,不会对软件做任何大的更改。最后正式版发布,测试阶段结束同时会在正式版的软件名称加上--final

3.7软件维护

软件投入使用后就进行软件维护阶段,是软件生存周期中时间最长的一个阶段。

软件维护内容:

(1)校正性维护:软件交付使用后,由于软件开发过程中产生的错误并没有完全彻底的在程序中发现,这些隐含的错误在某些特定的使用环境下会暴露出来。

(2)适应性维护:随着计算机的发展,计算机软硬件都在不断变化,数据环境也在发生变化,为了使应用软件适应这种变化的过程,称为适应性维护。

(3)完善性维护:由于用户对软件提出新的功能和性能要求而对软件进行的维护称为完善性维护。

(4)预防性维护:为提高软件的可维护性和可靠性而对软件进行的修改称为预防性维护。