软件项目开发过程

        以软件工程的思想开发一款软件,生产具有正确性可用性以及价格合宜的产品。该过程包含了该软件从出生到死亡的整个周期,我们称之为软件的生命周期,分为以下几个阶段:可行性分析阶段、需求分析阶段、软件设计阶段、编码阶段、测试阶段、运行和维护阶段。

一、软件生命周期及各阶段的主要任务

        1、可行性分析阶段

        该软件是否真正需要开发,主要通过以下几个方面分析软件开发的可行性:法律可行性、经济可行性、技术可行性、操作可行性;

        2、需求分析阶段

        简述:该阶段主要解决待开发软件要“做什么”的问题,确定软件的功能、性能、数据、界面等要求,生成软件需求规约。一般把该阶段细分分:需求获取、需求分析与协商、系统建模、需求规约、需求验证和需求管理六个阶段。

        需求获取

        软件需求包括:功能需求、性能需求、环境需求、界面需求、文档需求、数据需求、资源使用需求、安全保密需求、可靠性需求、成本消耗与开发进度需求、其他非功能性需求。

         需求获取方法与策略:建立顺畅的通讯途径、访谈与调查、观察用户操作流程、组成联合小组、用况(Use Case)。其中创建用况模型的主要步骤如下:1、确定谁会直接使用该系统,即参与者(Actor);2、选取其中一个参与者;3、定义该参与者希望系统做什么,参与者希望系统做的每一件事将作为一个用况;4、对每件事来说,何时参与者会使用系统,通常会发生什么,这就是用况的基本过程;5、描述该用况的基本过程。

        需求分析与协商

        对需求进行分类组织,分析每个需求与其他需求的关系,来检查需求的一致性重叠遗漏的情况。

        系统建模

        这是用户和系统分析人员沟通的桥梁,所创建的模型,要着重于描述系统要做什么,而不是如何去做。常用的分析方法:面向数据流方法(SA)、面向数据结构方法、面向对象方法(OOA)。

        需求规约

        需求规约是分析任务的最终产物,通过建立完整的信息描述、详细的功能和行为描述、性能需求和设计约束的说明、合适的验收标准,给出对目标软件的各种需求。

        规格各部分说明:

        1、引言:陈述软件目标;2、信息描述:给出软件必须解决问题的详细描述,记录信息内容和关系、流和结构;3、功能描述:描述解决问题所需的每个功能。包括:为每一个功能说明一个处理过程;叙述设计规约;叙述性能特征;用一个或多个图形来形象地表示软件的整体结构,以及软件功能与其他系统元素间的相互影响;4、行为描述:描述作为外部事件和内部产生的控制特征的软件操作;5、检验标准:描述检验系统成功的标志;6、参考书目:与软件相关的文档引用,包括其他软件工程文档、技术参考文献、厂商文献以及标准;7、附录:规约的补充信息,如表格数据、算法的详细描述、图表以及其他材料。

        需求验证

        作为需求开发阶段工作的复查手段,需求验证对功能的正确性、完整性和清晰性,以及其它需求给予评价,其目的是检验需求是否能够反映用户的意愿。

        需求管理

        用于帮助项目组在项目进展的如何时候去标识、控制和跟踪需求的活动。

 

        3、软件设计阶段

        简述:主要解决待开发软件“怎么做”的问题。软件设计通常可分为系统设计(体系结构设计)和详细设计(部件级设计)。

        系统设计

        系统设计的任务是设计软件系统的体系结构,包括软件系统的组成成分、各成分的功能和接口、成分间的连接和通信,同时设计全局数据结构。常用的体系结构有:数据为中心的体系结构、数据流风格的体系结构、调用和返回风格的体系结构、面向对象风格的体系结构、层次式风格的体系结构。对于同一需求,采用不同的体系结构分析,得到不同的软件结构。在这里,可以参考需求分析阶段的系统用况,采用自顶向下、逐步求精的过程,不断把系统划分为高内聚低耦合的相对独立模块。

        详细设计

        详细设计的任务是设计各个组成成分的实现细节,包括局部数据结构和算法等。

       

        4、编码阶段

        简述:用某种程序设计语言,将设计的结果转换为可执行的程序代码。

 

        5、测试阶段

        简述:发现并纠正软件中的错误和缺陷。测试主要包括单元测试、集成测试、确认测试和系统测试。

 

        6、运行和维护阶段

        简述:在软件运行期间,当发现了软件中潜藏的错误或需要增加新的功能或使软件适应外界环境的变化等情况出现时对软件进行修改。

 

二、软件过程模型

        软件过程模型是软件开发的全部过程、活动和任务的结构框架,也称软件开发模型或软件生存周期模型。典型的模型有:瀑布模型、演化模型(原型模型/螺旋模型/增量模型)、喷泉模型。

        1、瀑布模型

       

        特征:接受上一阶段的结果作为本阶段的输入;利用这一输入实施本阶段应完成的活动;对本阶段的工作进行评审;将本阶段的结果作为输出,传递给下一阶段。

        缺点:缺乏灵活性,难以适应需求不明确或需求经常变化的软件开发;开发早期存在的问题往往要到交付使用时才发现,维护代价大。

 

        2、演化模型

        许多软件项目在开发早期对软件需求的认识是模糊的、不确定的,因此软件难以一次开发成功。但我们可以获取的一组基本需求后,通过快速分析构造出该软件的一个初始可运行版本,称之为原型。然后根据用户在试用原型的过程中提出的意见和建议、或增加新需求,对原型进行改造,获得原型的新版本,重复这一过程,最终得到客户满意的软件产品。

        演化模型的开发过程就是从构造初始的原型出发,逐步将其演化成最终软件产品的过程,其适应于对软件需求缺乏准确认识的情况。典型的演化模型有:原型模型、螺旋模型、增量模型。

        原型模型

       

        简述:原型是预期系统的一个可执行版本,反映系统性质(如功能、计算结果等)的一个选定子集。原型不必满足目标软件的所有约束,其目的是能快速、低成本地构建原型。原型方法从软件工程师与客户交流开始,其目的是定义软件的总体目标,标识需求。然后快速制定原型的开发计划,确定原型的目标和范围,采用快速设计的方法对其建模,并构建原型。被开发的原型应交给客户试用,并收集客户的返汇意见,这些返汇意见可以在下一轮迭代中对原型进行改进。在前一个原型需要改进,或者需要扩展其范围的时候,进入下一个原型的迭代开发。

 

        螺旋模型

       

        简述:螺旋模型指引的软件项目开发沿着螺旋线自内向外旋转,每旋转一周,表示开发出一个更为完善新软件版本。如果发现风险太大,开发者和客户无法承受,则项目就可能因此而终止。多数情况下沿着螺旋线的活动会继续下去,自内向外,逐步延伸,最终得到所期待的系统。

 

        3、喷泉模型

           简述:这是一种面向对象开发的模型,体现迭代和无间隙特征。迭代:各开发活动常常重复工作多次,相关的功能在每次迭代中随之加入演进的系统。无间隙:开发活动之间不存在明显的边界。

 

三、敏捷软件开发

        软件开发的新挑战:快速的市场进入时间,要求高生产率;快速变化的需求;快速发展的技术。传统的软件开发方法:强调过程、强调文档、开发人员负担过重。

        针对以上问题,敏捷开发应运而生。敏捷开发方法的价值观:1、个人和交互高于过程和工具;2、可运行软件高于详细的文档;3、与客户协作高于合同谈判;4、对变更及时做出反应高于遵守计划。敏捷开发方法的指导原则:1、最优先的是通过尽早地和不断地提交有价值的软件使客户满意;2、欢迎变化的需求,即使该变化出现在开发的后期,为提升对客户的竞争优势,利用变化作为动力;3、已几周到几个月为周期,尽快、不断地发布可运行软件;4、在整个项目过程中,业务人员和开发人员必须天天一起工作;5、已积极向上的员工为中心建立项目组,给予他们所需的环境与支持,对他们工作给予充分的信任;6、项目组内效率最高、最有效的信息传递方式是面对面的交流;7、测量项目进展的首要依据是可运行的软件;8、提倡可持续的开发,项目发起者、开发者和用户应能长期保持恒定的速度;9、时刻关注技术上的精益求精和好的设计,以增强敏捷性;10、简单化是必不可少的,这是尽可能减少不必要工作的艺术;11、最好的构架、需求和设计出自于自我组织的团队;12、团队要定期反思怎样才能更有效,并据此调整自己的行为。敏捷开发方法的适应范围:1、需求不确定、易挥发;2、有责任感和积极向上的开发人员;3、用户容易沟通并能参与。

        XP方法是敏捷开发的一个典型,XP方法的价值观:1、交流;2、简单;3、反馈;4、勇气。XP方法的12个核心实践:1、完整的团队;2、计划对策;3、系统比喻;4、小发布;5、测试;6、简单设计;7、结对编程;8、设计改进;9、持续集成;10、代码全体共有;11、编码标准;12、可持续步调。

转载于:https://my.oschina.net/ganfanghua/blog/882087

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值