软件是指一系列按某种特定规则组织在一起,实现用户需求的计算机数据和指令的集合体。从狭义理解,运行在计算机、手机、移动终端设备等电子产品上的应用程序,都称为软件;从广义理解,软件不仅仅包含实现用户需求的源代码,还包含与之相匹配的数据文档、支撑源代码运行的配置数据。三者构成一个完整的软件实体。
软件生产的发展划分为三个时代:
①程序设计时代:这一时期,软件生产主要采用个体手工劳动的生产方式。
②程序系统时代:由于计算机的应用领域不断扩大,软件的需求也不断增长,软件由于处理的问题域扩大而使程序变得复杂,设计者不得不由个体手工劳动组成小集团合作,形成作坊式生产方式。
③软件工程时代:软件工程时代的生产方式是采用工程的概念、原理、技术和方法,使用数据库、开发工具、开发环境、网络、分布式、面向对象技术来开发软件。
软件生产行业在几十年的研发活动中,积累了大量的经验,总结出软件的生命周期流程,指导软件生产企业遵循规范的生产流程设计开发软件系统。一般而言,软件从设计、研发到销售使用,主要经历以下几个阶段:
目前,软件研发需求来源主要有两种渠道:一种是软件公司主动挖掘市场需求,从而开发出解决大众需求的软件系统,一般称为产品;另一种是由用户主动提出需求,由软件公司负责设计开发,一般称为项目。
无论是产品还是项目,经过初步需求沟通后,在正常情况下都会有初步需求分析报告。
产品项目可行性研究是以企业研发能力为前提,以投资收益为目的,从技术、成本、管理、风险控制等方面对产品或项目进行全面分析研究的方法,预测其投资后的经济效益,在既定范围内进行方案论证与选择,以便最合理地利用资源,达到预定的社会效益和经济效益。
从软件生产角度来看,可行性研究的重点是解决前期市场调研的产品或项目是否可行,能否在一定的成本压力下持续地为公司或企业带来适当的利益,无论是社会效益还是经济效益。
经过市场需求调研、可行性研究评审确认可行后,由需求调研人员(市场人员、需求分析人员或客户经理)牵头,进行产品或项目立项活动,构建产品或项目研发小组,制定产品运作计划。
产品或项目立项后,需进行详细的需求调研。需求调研同样有两种模式:主动模式和被动模式。
在主动模式下,软件公司派出需求调研小组与用户直接沟通,获得正确可靠的需求。在被动模式下,软件公司市场调研人员根据市场产品需求信息分析判断,无明确的需求提供者,得到较为粗泛的需求。
需求调研是整个软件生产活动中最为重要的环节,此环节的一切成果都是后续工作的基础。
需求调研阶段输出的需求规格说明书,经过评审后形成需求基线,由项目组内的开发工程师进行系统设计。如果公司有专门的系统架构师,则由系统架构师从系统可靠性、扩展性、安全性、可维护性等角度进行系统概要设计。系统概要设计活动结束后,输出系统概要设计说明书,评审活动通过后形成概要设计基线,此时可以依据需求规格说明书及概要设计文档进行系统的详细设计、数据库设计等相关事宜。
概要设计、详细设计结束后,按照整体项目实施计划,项目组开发工程师根据各自的编码任务及规范完成相关模块、子系统、软件的编码。
当测试版本交付日期到达后,项目组开发工程师构建测试版本,以便交于测试团队进行测试。根据前期的测试计划,测试团队执行测试用例测试系统的功能、性能。经过多次版本迭代后,完成系统测试,输出系统测试报告。
项目专家团队评审测试部门输出的系统测试报告,如果达到预定义的停测标准,则可结束测试活动,否则持续回归测试,直至达到被测对象出口准则。
如果研发对象是产品,一般由研发公司择日发布,通常情况下会在网络或媒体上宣传;如果研发对象是项目,则一般由客户确定正式交付日期,客户在接收软件公司提供的软件系统前,通常会进行验收测试,验收通过后才正式接受。
项目交付使用后,需根据与客户签订的产品维护协议,制定产品维护流程,当软件系统在使用过程中出现问题时,需及时处理,直到产品废弃或升级,进入新的生命周期。
如果用户在使用过程中发现了缺陷,研发公司会提供补丁进行修复,从而保证软件系统正常工作。