[uml] 01_软件工程介绍

Android 4.0

软件工程介绍

一、软件的开发生命周期
1、问题的定义及规划: (可行性分析报告和软件开发计划)
    此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。
2、需求分析: (需求分析说明书和初步的用户手册)
    在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。"唯一不变的是变化本身。",同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划来应付这种变化,以保护整个项目的顺利进行。
3、软件设计: (概要设计、详细设计)
    此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。
4、程序编码: (提交源程序及清单)
    此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。
5、软件测试: (提交软件维护测试报告)
    在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试(白盒)、集成测试(黑盒,功能测试、强度性能测试)以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细的测试计划并严格按照测试计划进行测试,以减少测试的随意性。
6、运行维护
软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。(提交软件维护报告)

图解:
二、常用的软件生命周期模型及选择
1、瀑布模型--最早出现的软件开发模型
瀑布模型(认为我们的需求是不会变化)


2、增量和迭代模型

增量和迭代模型
    增量迭代是RUP (Rational Unified Process)统一过程常采用的软件开发生命周期模型。增量和迭代有区别但两者又经常一起使用,所以这里要先解释下增量和迭代的概念。假设现在要开发A、B、C、D四个大的业务功能,每个功能都需要开发两周的时间.则对于增量方法而言可以将四个功能分为两次增量来完成,第一个增量完成A,B功能,第二次增量完成C,D功能。而对于迭代开发来将则是分两次迭代来开发,第一次迭代完成A、B、C、D四个基本业务功能但不含复杂的业务逻辑,而第二个功能再逐渐细化补充完整相关的业务逻辑。在第一个月过去后采用增量开始时候A、B全部开发完成,而C、D还一点都没有动,而采用迭代开发的时候A,B,C,D四个的基础功能都已经完成。
 
    RUP强调的每次迭代都包含了需求、设计和开发、测试等各个过程,而且每次迭代完成后都是一个可以交付的原型。迭代不是并行,在每次迭代过程中仍然要遵循需求->设计->开发的瀑布过程。迭代周期的长度跟项目的周期和规模有很大的关系。小型项目可以一周一次迭代,而对于大型项目则可以2-4周一次迭代,如果项目没有一个很好的架构师,很难规划出每次迭代的内容和要到达的目标,验证相关的交付和产出。因此迭代模型虽然能够很好的满足与用户的交付和需求的变化,但确是一个很难真正用好的模型。


3、原型模型
从界面入手,将界面弄好,给客户审查,如果有需要改动的,再改动,然后在编写业务和其他层
原型法适合公司内部的一些小项目,航天的大系统不适合用原型法,中等规模的软件比较适合用RUP。