软件生命周期((Systems DevelOPMent Life Cycle,SDLC)
目录
什么是软件生命周期
软件生命周期又称为软件生存周期或系统开发生命周期,是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。但随着新的面向对象的设计方法和技术的成熟,软件生命周期设计方法的指导意义正在逐步减少。
生命周期的每一个周期都有确定的任务,并产生一定规格的文档(资料),提交给下一个周期作为继续工作的依据。按照软件的生命周期,软件的开发不再只单单强调“编码”,而是概括了软件开发的全过程。软件工程要求每一周期工作的开始只能必须是建立在前一个周期结果“正确”前提上的延续;因此,每一周期都是按“活动 ── 结果 ── 审核 ── 再活动 ── 直至结果正确”循环往复进展的。
软件生命周期的七个阶段
1、问题的定义及规划
此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。
2、需求分析
在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。"唯一不变的是变化本身。",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。
3、软件设计
此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。
4、程序编码
此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
5、软件测试
在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程主要分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
6、系統轉換
將作業由舊系統轉換新系統,也就是說運行系統的方法,轉換方法有平行、分批、分發、立即、試驗五種轉換方法。
7、运行维护
软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。
软件生命周期的模型
任何软件都是从最模糊的概念开始的:为某个公司设计办公的流程处理;设计一种商务信函打印系统并投放市场。这个概念是不清晰的,但却是最高层的业务需求的原型。这个概念都会伴随着一个目的,例如在一个“银行押汇系统”的目的是提高工作的效率。这个目的将会成为系统的核心思想,系统成败的评判标准。1999年政府部门上了大量的OA系统(办公自动化系统),学过一点Lotus Notes(Lotus Notes是功能强大的多界面的Windows 软件,它使人们能高效地协同工作。使用Notes 人们可以突破平台技术组织和地理的限制,Lotus Notes非常好用,通常要由许多应用程序来完成的任务,用Notes一次即可完成。)的人都发了财(IBM更不用说了),但是更普遍的情况是,许多的政府部门原有的处理模式并没有变化,反而又加上了自动化处理的一套流程。提高工作效率的初衷却导致了完全不同的结果。这样的软件究竟是不是成功的呢?
从概念提出的那一刻开始,软件产品就进入了软件生命周期。在经历需求、分析、设计、实现、部署后,软件将被使用并进入维护阶段,直到最后由于缺少维护费用而逐渐消亡。这样的一个过程,称为“生命周期模型”(Life Cycle Model)。
典型的几种生命周期模型包括瀑布模型、快速原型模型、迭代模型。瀑布模型(Waterfall Model)首先由温斯顿·罗伊斯(Winston Royce)提出。该模型由于酷似瀑布闻名。在该模型中,首先确定需求,并接受客户和软件质量保证(SQA)小组的验证。然后拟定规格说明,同样通过验证后,进入计划阶段…可以看出,瀑布模型中至关重要的一点是只有当一个阶段的文档已经编制好并获得软件质量保证小组的认可才可以进入下一个阶段。这样,瀑布模型通过强制性的要求提供规约文档来确保每个阶段都能很好的完成任务。但是实际上往往难以办到,因为整个的模型几乎都是以文档驱动的,这对于非专业的用户来说是难以阅读和理解的。想象一下,你去买衣服的时候,售货员给你出示的是一本厚厚的服装规格说明,你会有什么样的感触。虽然瀑布模型有很多很好的思想可以借鉴,但是在过程能力上有天生的缺陷。
迭代式模型是RUP(Rational Unified PRocess,统一软件开发过程,统一软件过程)推荐的周期模型。在RUP中,迭代被定义为:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。所以,在某种程度上,开发迭代是一次完整地经过所有工作流程的过程:(至少包括)需求工作流程、分析设计工作流程、实施工作流程和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段(需求及其它)都可以细分为迭代。每一次的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。迭代的思想如下图所示。
迭代和瀑布的最大的差别就在于风险的暴露时间上。“任何项目都会涉及到一定的风险。如果能在生命周期中尽早确保避免了风险,那么您的计划自然会更趋精确。有许多风险直到已准备集成系统时才被发现。不管开发团队经验如何,都绝不可能预知所有的风险。”(RUP)二者的区别如下图所示:
由于瀑布模型的特点(文档是主体),很多的问题在最后才会暴露出来,为了解决这些问题的风险是巨大的。“在迭代式生命周期中,您需要根据主要风险列表选择要在迭代中开发的新的增量内容。每次迭代完成时都会生成一个经过测试的可执行文件,这样就可以核实是否已经降低了目标风险。”
快速原型(Rapid PrototyPE)模型在功能上等价于产品的一个子集。注意,这里说的是功能上。瀑布模型的缺点就在于不够直观,快速原型法就解决了这个问题。一般来说,根据客户的需要在很短的时间内解决用户最迫切需要,完成一个可以演示的产品。这个产品只是实现部分的功能(最重要的)。它最重要的目的是为了确定用户的真正需求。在我的经验中,这种方法非常的有效,原先对计算机没有丝毫概念的用户在你的原型面前往往口若悬河,有些观点让你都觉得非常的吃惊。在得到用户的需求之后,原型将被抛弃。因为原型开发的速度很快,设计方面是几乎没有考虑的,如果保留原型的话,在随后的开发中会为此付出极大的代价。至于保留原型方面,也是有一种叫做增量模型是这么做的,但这种模型并不为大家所接受。
事实上,其实现在的软件组织中很少说标准的采用那一种模型的。模型和实用还是有很大的区别。
软件生命周期模型的发展实际上是体现了软件工程理论的发展。在最早的时候,软件的生命周期处于无序、混乱的情况。一些人为了能够控制软件的开发过程,就把软件开发严格的区分为多个不同的阶段,并在阶段间加上严格的审查。这就是瀑布模型产生的起因。瀑布模型体现了人们对软件过程的一个希望:严格控制、确保质量。可惜的是,现实往往是残酷的。瀑布模型根本达不到这个过高的要求,因为软件的过程往往难于预测。反而导致了其它的负面影响,例如大量的文档、繁琐的审批。因此人们就开始尝试着用其它的方法来改进或替代瀑布方法。例如把过程细分来增加过程的可预测性。
软件生命周期案例分析
案例一:利用软件生命周期创建B2C电子商务网站
一、软件生命周期
任何事物都有产生、发展、成熟、消亡或更新几个阶段,电子商务网站也不例外。任何一个电子商务系统在使用过程中随着其生存环境的变化,都需要不断维护、修改,当它不再适应的时候就要被淘汰,就要由新系统代替旧系统,这种周期循环称为生命周期。
根据软件生命周期的原理,电子商务网站可以划分为系统规划、系统分析、系统设计、系统实施、系统测试、系统运行和维护等几个阶段。
二、B2C电子商务网站建设的一般过程
(一)系统规划阶段
系统规划阶段的任务是对企业的环境、目标、现行系统的状况等进行初步调查,根据企业目标和发展战略,确定信息系统的发展战略,研究新系统的必要性和可能性。在这个阶段给出备选方案,并进行可行性分析,写出可行性分析报告。待可行性分析报告审议通过后,编制系统设计任务书。
1、需求分析
为了进行可行性研究分析,首先对电子商务系统的需求进行分析。通过对企业的需求进行调查,明确电子商务网站需要做什么,做到什么程度。在此,通过查阅资料、实地观察、业务专题报告等方法将该电子商务网站的需求归纳为功能需求和性能需求。
功能需求:B2C电子商务网站就是Business To Consumer,也就是企业借助于Internet建立网点进行交易的一个系统。流程上,店家发布产品信息,消费者在线选购、在线支付,通过物流最后达成交易。所以从购买方看,需满足消费者在线选购、在线支付等;从销售方看,要能让店家整理网上商品、管理订单等。
性能需求:系统运行要稳定,在不同的系统中能正常运行,具有较强的适应性,可移植性。系统要有可扩展性,当出现新的需求时,能将其纳入系统,而不必改变原有的基本结构。
2、可行性分析
在电子商务网站需求已确定的情况下,对系统的进行判定,决定有无必要、有误可能完成系统的建设。在此,包括如下几个方面:运行可行性分析:考查方案在企业中合适程度,避免一个可以工作的方案由于最终用户和管理层的抵制而落选。
经济可行性分析:建立电子商务网站需要经费支出,所以在建站前要评估该开发项目的收益,分析带来的经济效益是否超过所需要的成本。
技术可行性分析:ASP电子商务网站是动态网站技术的产物,以目前计算机硬件、软件、网络,已经具备建立B2C电子商务网站的条件。
(二)系统分析阶段
系统分析阶段的任务是根据系统设计任务书确定的范围,描述系统的业务流程,确定新系统的逻辑模型。系统分析阶段的成果体现在系统说明书中。
1、业务功能分析
根据功能需求,B2C电子商务网站要由前台系统和后台系统两部分构成的。前台系统是供消费者使用的界面,在这里可以提供注册会员、查看商品、购买商品、网上支付等基本功能。后台系统则是提供给销售方,主要是进行管理商品信息、,同时要进行会员管理、配送商品、以及账务管理、报表统计等其他功能。
2、数据流分析通过绘制数据流图来帮助确定合理的数据项、确定合适的数据流向、确认合适的数据处理过程,为系统设计提供信息内容及处理依据。B2C电子商务网站的顶层流程图如图所示:
(三)系统设计阶段
系统设计阶段的任务就是根据系统说明书中的要求,设计新系统的物理模型,最终形成系统设计说明书。在这个阶段主要完成系统划分和数据库设计的工作。
1、系统划分
系统划分的基本思想是按功能角度自顶向下地将系统划分为若干个子系统,子系统再划分成模块,层层划分,逐步设计。在本项目中,B2C电子商务可以划分成登录帐户模块、浏览商品模块、购物车模块、订单管理模块、后台管理模块。
登录帐户模块:通过该模块确定用户身份,以便为下一个购物车模块提供必要的信息。同时,还可以结合客户管理,收集用户信息,如用户的年龄、所属地区、支付能力、购物偏好等。
浏览商品模块:按各商品不同类别为客户提供商品介绍。若客户满意,则点选进入购物车模块。
购物车模块:该模块存放购买商品的信息、并计算商品的数量和价格等。用户通过购物车,可以修改商品数目、退回商品。完成购物后,生成订单,进入订单管理模块。
支付模块:用户购物后可通过多种方法完成支付功能,如网上银行、第三方支付平台、线下邮政汇款、货到付款等方式。
订单模块:用户完成购物后,生成订单,在该模块中可完成货物发送前修改或者取消订单、合并或拆分订单、跟踪订单等功能。
后台管理模块:这是针对卖家,即网站管理员所设计的模块。该模块既可以根据需要统一修改网站界面,也可以根据企业需要,在网站中发布新商品的信息,还能够管理已注册的用户。
2、数据库设计
数据库的设计是系统设计的一个关键步骤。一个好的数据库不仅能反映现实世界实体之间的联系、能满足用户需求,还要易于扩充和修改。在本系统中可以建立4个基表。
产品信息表(product):该表主要用于记录商品的信息,包括商品的编号、名称、价格、类别、生产厂家、图片、供货商情况介绍等。
用户表(user):记录会员的基本信息,如用户编号、用户名、密码、真实姓名、身份证号码、电子邮件、所在地区、邮政地址、邮编、年龄、性别、薪资、住址状况、喜好等。
订单表(order_list):该表主要用于记录订单的信息,包括订单编号、订单产品编号,订单用户编号,订单金额、订单状态,下单时间等。该表分别与产品信息表、订单用户信息表存在外键约束,即一个产品可以在多个订单中,一个用户可以下多个订单。
管理员表(aDMinistrator):存储网站管理员的基本信息,如:ID号、密码、姓名等等。
(四)系统实施阶段
系统开发实施阶段要在系统规划的基础上确定整个商务系统结构中各个组成部分的具体内容,完成应用软件系统的编码,最终将电子商务系统的应用软件和各种平台集成在一起,并购置、安装和调试计算机设备,完成电子商务系统的上线运行准备。
1、编写模块:根据前面的系统设计说明书,确定需要用的技术来构筑电子商务平台,并完成应用软件系统的编码。
本网站主要采用ASP技术编写所需模块。ASP技术类似HTML、Script与CGI的结合体。它是位于服务器端的脚本运行环境,通过这种环境,可以创建和运行动态的交互式WEB服务器应用程序。其拥有如下优点:可以和HTML或其他脚本语言(VBScript与JavaScript)互相嵌套;在Web服务器端运行,因此,程序代码完全保密;以对象为基础,因此可以使用ActiveX控件继续扩充其功能;内置ADO组件,可以存取各种数据库,大大缩短了程序开发时间。
在具体开发中,依据系统设计阶段的划分情况,完成各模块页面的代码。
登录帐户模块:用户登录页面login.asp,买家通过用户名、密码登录。新用户注册页面reg.asp,由新用户登录并填写相关信息,其中用户名、密码、真实姓名、邮政地址、邮编为必填内容。为了避免同一用户多次重复注册,增加身份证ID和电子邮件审核,避免出现相同用户名、ID、电子邮件。同时,在注册页面和登录页面都加入验证码,防止机器批量注册和暴力破解。
浏览商品模块:在网站中向买家展示各种商品的详细信息。
用户可根据类别、品牌浏览商品,并具体查看某一商品的详细信息,也可以输入所要查找的商品名称或种类,即启动查询页面seek.asp。
购物车模块:添加商品到购物车。找到所要购买的商品后,点击购买。启动购物车模块cart_add.asp,记录所购商品的信息,如商品编码、购买数量、单价等。点击购物车,即启动cart_show.asp,显示商品信息,如商品名称、单价、购买数量、应付总金额等。此时,若返回网站继续购物或修改购买数量都会启动cart_upDATe.asp页面,修改购物车中相关信息。
支付模块:用户购物结束后,可点击收银台,进入支付模块。
多种支付方式可供选择:网上银行支付、第三方平台支付、邮政汇款、货到付款等。以近年来颇为流行的第三方支付平台"支付宝"为例,传递参数到相关页面即可完成在线支付。相关参数如下:支付接口gateway (https://www.alipay.com/cooperate/gateway.do?)、 服务参数service、合作商伙伴编号partner、时间out_trade_no、商品名称subject、商品描述body、支付类型pay-ment_type、价格price、展示商品地址show_url、用户帐号sell-er_email、安全校验码key、重定向地址return_url、数量quantity等。其中,合作商伙伴编号、安全校验码在注册支付宝之后,可"我的商家服务"里面可以获取。
订单模块:启动订单模块order_add.asp,根据购物车模块的信息以及用户信息,如用户编号、姓名、邮政编号、邮政地址等信息生成订单。若用户未登录,则会跳转到登录界面。订单or-der_show.asp可显示该订单的相关状态,如订单未支付、订单已支付、订单发送中、订单已完成,以及订单中所选购商品的名称、价格、数量、收货人、收货地址等信息。如果需要,可以通过or-der_update.asp更改订单的收货人、收货地址等。
后台管理模块:商品管理子模块,卖家对商品的管理,查看商品目录、增加商品品种、清除淘汰商品和修改原有商品信息等。订单管理子模块,可以控制订单的执行、跟踪订单的状态。会员管理子模块,管理用户账户,包括查看审核会员资料、更新会员资料和删除不合法会员等。
2、构建硬件平台:根据各类技术标准,选择合适的硬件构建网站运行的平台,即其运行所需要的软硬件环境。
机器硬件可以选用奔腾(R)双核处理器E2220,2.4GHz、1000M网卡、内存1G、硬盘SATAII 160G。操作系统可以选用Windows2003,WindowsXP等。
本系统是基于WEB的采用ASP技术的B2C电子商务网站,首先,在本机安装配置IIS,使之能读取和运行脚本,并设置网站默认打开文件为index.asp。架站完成后,在IE浏览器地址栏输入 http://localhost, 调试站点。
(五)系统测试和维护阶段
系统测试阶段的目的是为了发现系统中存在的问题,需要测试系统的功能是否满足设计的需要,判定系统是否存在各种程度的错误或漏洞,测试的内容包括软件整体测试、极限测试、可操作性测试等。对于电子商务而言,主要考虑系统整体性能的指标参数,例如系统可支持的最大的用户数、系统的压力与性能比、系统的安全性指标等。在系统测试之后形成系统测试分析报告。
1、系统测试
测试时,我们采用本地端架站的方式,通过在网络内部进行测试。把所有的设计文件全部完成并初步修正后,将完整的内容一起上传到预定的空间,最后进行实际的联机测试。
2、运行和维护
运行不仅仅是指电子商务网站投入运行使用,更为重要的是企业在一种新的商务模式下运转,包括相应的维护、管理以及基于系统的市场、销售、财务等基本商务环节的动作与组织。网站维护不仅包括对网站正常运行的维护、管理性工作,更主要的是对网站内容的更新、修改方面的网站建设。对于不能修改或难以修改的问题记录在案,定期整理成新需求建议书,为下一周期的系统规划做准备。
根据软件开发过程中软件生命周期原理的应用,通过对B2C电子商务网站建设的现状及其特点的分析,不难看出:要开发一个成功的电子商务网站,必须利用软件生命周期原理,分阶段按步骤有条不紊的实施,才能在网站的开发中提高效率,提高其稳定性、可靠性、可维护性和用户满意度,取得事半功倍的效果。
发表评论