【软件工程导论-ZZU】02. 软件生命周期、开发过程与模型

本文详细阐述了软件生命周期的各个阶段,从可行性研究到维护,以及多种软件开发模型,如瀑布模型、快速原型模型、增量模型等,对比了它们的特点、优缺点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

二。软件生命周期、开发过程与模型

1. 软件生命周期

  软件生命周期:是软件的产生直到报废或停止使用的生命周期。

           实际从事软件开发工作时,软件规模、类型、开发环境及技术方法等因素会影响到阶段划分,及各阶段的执行顺序,形成不同生存周期模型,又称过程模型。

  组成:软件定义、软件开发、软件维护

  阶段:按照国际开发规范可分为8个阶段:   

    1. 可行性研究与计划    

      关键任务:
        解决问题是什么?有行得通解决方法?粗略计划
      问题定义报告:
        问题性质、工程目标、工程规模。
      可行性研究报告:
        经济、技术、社会(操作)可行性。
      项目开发计划:
        粗略

    2. 需求分析(系统做什么 可行吗)

      关键任务:
        目标系统必须作什么?
        可行性研究的需求分析是粗略、不准确;
        需求分析是完整、准确、清晰、具体。
      需求规格说明书:
        目标系统需求。

    3. 总体设计(怎么样实现)    

      关键任务:
        怎样实现目标系统?
        根据需求设计方案;分析推荐最佳方案;设计软件结构等。
      总体设计说明书:
        记录总体设计结果。

    4. 详情设计(改怎么样具体实现这个系统)

      关键任务:
        该怎样具体实现系统?
        设计每个模块的算法和数据结构。
      详细设计说明书:
        用适当表达工具表达算法和数据结构。

    5. 实现阶段(选语言 编码 单元测试) 

      关键任务:
        选择语言、工具翻译详细设计结果、测试模块。
      实现阶段文档:
        程序清单、单元测试报告。

    6. 集成测试阶段(单元测试基础上 组装起来测试)    

      关键任务:
        将经过单元测试模块组装起来进行测试;
        通过测试使软件达到预定要求。
      测试报告:
        测试计划、测试方案、测试结果。

    7. 确认测试(用户 按照需求规格说明书)

      关键任务:
        由用户按需求规格说明书规定进行测试。
      测试报告:
        测试计划、测试方案、测试结果。

    8. 使用与维护阶段(改正性维护、适应性维护、完善性维护、预防性维护)

      关键任务:
        通过必要维护活动使系统持久满足用户要求。
      维护类型:
        改正性维护:软件运行过程中发现错误,进行维护。
        适应性维护:软件运行软硬件环境变化,进行的维护。
        完善性维护:用户要求改进或扩充软件,进行的维护。
        预防性维护:为将来的维护作准备。

 

2. 了解过程的概念,过程建模的工具和技术

  软件过程:指软件生存周期所涉及的一系列相关过程。

  

3. 软件开发模型,各种常用的软件开发模型

  软件开发模型:指软件开发全部过程、活动和任务的结构框架。

  常见的几种开发模型:

    1. 瀑布模型:使用最早应用最广

    模型图:

      

    瀑布模型特点:
      1.阶段具有顺序性和依赖性
        前一阶段结束后一阶段开始,前一个阶段输出文档,后一个阶段输入文档。
      2.推迟实现观点
        瀑布模型在编码前设置系统分析、系统设计,推迟程序物理实现,保证前期工作扎实。

      3. 质量保证观点
        瀑布模型每阶段坚持两个重要做法:
          一是每阶段都必须完成完整、准确的文档。软件开发时人员间通信、运行时期维护的重要依据。
          二是每阶段结束前对文档评审。

    传统瀑布模型过于理想化,但人在工作过程中不可能不犯错误,所以实际瀑布模型带反馈环。

       

    优点:
      提高软件质量,降低维护成本,缓解软件危机。
    缺点:
      模型缺乏灵活性,无法解决需求不明确问题。用户不经过实践提出完整准确需求不切实际。

 

    2. 快速原型模型:快速建立反映用户主要需求的原型系统,反复由用户评价修正需求,开发出最终产品。

    模型图:

      

    优点:
      确定需求上优于瀑布模型(通过原型与用户交互);
      提供学习手段,通过开发原型和演示原型对开发者和使用者了解系统都有积极作用;
      有的软件原型可以成为最终产品的一部分。
    缺点:
      快速建立的系统结构加连续修改可能导致产品质量低下原型系统的内部结构可能不好。

 

    3. 增量模型:又称渐增模型,开发软件时将软件产品作一系列增量构件设计、编码、集成和测试。

    区别于瀑布和快速原型模型:

      瀑布和快速原型模型是一次把满足所有需求产品提交给用户。

      增量模型是分批向用户提交产品。

    模型图:

        

    优点:
      较短时间向用户提交可完成有用工作产品;
      用户有充裕时间学习适应产品;
      软件结构必须开放,方便向现有产品加入新构件。
    缺点:
      做到第三个优点比较困难。

    前述增量模型在实现构件前完成总体的需求分析、规格说明和概要设计,相对来说风险较小。
    风险更大增量模型:确定用户需求后,各构件集并行构建。

       

 

    4. 螺旋模型:1988年B.Boehem提出,加入风险分析,常指导大型软件项目。

    软件风险:
      超期、超预算、行业竞争等。

    模型图:

       

    笛卡尔坐标四象限表达四方面活动:
      制定计划:确定目标、选定方案、设定约束条件。
      风险分析:评估方案,识别和消除风险。
      实施工程:软件开发
      客户评估:评价开发工作,计划下一阶段工作。
    沿螺线自内向外每旋转一圈开发出更完善新版本。

    优点:
      大型软件开发项目有较好的风险控制;
    缺点:
      需要风险评估的经验;
      契约开发通常需要事先指定过程模型和发布产品,
      普及不如前述模型

     

    5. 喷泉模型:面向对象生命周期模型,体现迭代和无缝特性。   

    迭代:
      求精,系统某部分常被重复工作多次,相关功能在每次迭代中逐渐加入演进系统。
    无缝:
      分析、设计、编码各阶段间不存在明显边界。

    模型图:

      

    优点:
      无缝,可同步开发,提高开发效率,节省开发时间, 适应面向对象软件
    缺点:
      可能随时加各种信息、需求与资料,需严格管理文档,审核的难度加大。

    

    6. Rational统一过程模型:由Rational软件公司推出的一种软件过程,该过程强调以迭代和渐增方式开发软件。Rational统一过程是一个二维生命周期模型。

     模型图:

      

    RUP有9个核心工作流,包括6个核心过程工作流和3个核心支持工作流。
    RUP有4个连续阶段,每个阶段有明确目标,通过一次或多次迭代完成。

    Rational统一过程优点:
      不断的版本发布成为一种团队日常工作的真正驱动力;
      将发现问题、制定方案和解决过程集成到下一次迭代;
      迭代开发,降低风险;
      更好地安排产品开发的辅助过程。

 

    7. 微软过程模型

    模型图:

      

    规划阶段
      开展市场调查研究,结合公司战略形成产品的远景目标。
    设计阶段
      根据产品远景目标,完成软件功能规格说明和总体设计,确定产品开发的主要进度。
    开发阶段
      完成产品中所有构件的开发工作。
    稳定阶段
      实行全面的内部和外部测试,最终形成可发布的RTM版本
    发布阶段
      确认产品质量符合发布标准后,发布产品及相关消息

    递进式的开发策略:
      解决问题的及时性、不确定和变更因素可控性、缩短产品上市周期。

      

 

    大佬链接(侵删):

      https://blog.youkuaiyun.com/algzjh/article/details/80726422

      https://blog.youkuaiyun.com/mmd0308/article/details/77853086

      https://blog.youkuaiyun.com/shadowyelling/article/details/7406442

 

申明:

  本文绝大多数内容摘自 大连工业大学--辽宁省大学资源共享课《软件工程》,仅用于苦逼考研狗学习记录来用,侵删删删。

 

转载于:https://www.cnblogs.com/ccczf/p/10184660.html

zzuer@zzu:~/Lyp_folder/pmdk$ make CFLAGS="-Wno-error" make -C src all make[1]: Entering directory '/home/zzuer/Lyp_folder/pmdk/src' make -C libpmem make[2]: Entering directory '/home/zzuer/Lyp_folder/pmdk/src/libpmem' mkdir -p ../nondebug/libpmem cc -MD -c -o ../nondebug/libpmem/file.o -Wno-error -I../include -I../common/ -fPIC ../../src/../src/common/file.c ../../src/../utils/check-os.sh ../../src/../utils/os-banned ../nondebug/libpmem/file.o ../../src/../src/common/file.c cc -MD -c -o ../nondebug/libpmem/file_posix.o -Wno-error -I../include -I../common/ -fPIC ../../src/../src/common/file_posix.c ../../src/../utils/check-os.sh ../../src/../utils/os-banned ../nondebug/libpmem/file_posix.o ../../src/../src/common/file_posix.c cc -MD -c -o ../nondebug/libpmem/fs_posix.o -Wno-error -I../include -I../common/ -fPIC ../../src/../src/common/fs_posix.c ../../src/../utils/check-os.sh ../../src/../utils/os-banned ../nondebug/libpmem/fs_posix.o ../../src/../src/common/fs_posix.c cc -MD -c -o ../nondebug/libpmem/mmap.o -Wno-error -I../include -I../common/ -fPIC ../../src/../src/common/mmap.c ../../src/../utils/check-os.sh ../../src/../utils/os-banned ../nondebug/libpmem/mmap.o ../../src/../src/common/mmap.c cc -MD -c -o ../nondebug/libpmem/mmap_posix.o -Wno-error -I../include -I../common/ -fPIC ../../src/../src/common/mmap_posix.c ../../src/../utils/check-os.sh ../../src/../utils/os-banned ../nondebug/libpmem/mmap_posix.o ../../src/../src/common/mmap_posix.c cc -MD -c -o ../nondebug/libpmem/os_posix.o -Wno-error -I../include -I../common/ -fPIC ../../src/../src/common/os_posix.c ../../src/../utils/check-os.sh ../../src/../utils/os-banned ../nondebug/libpmem/os_posix.o ../../src/../src/common/os_posix.c cc -MD -c -o ../nondebug/libpmem/os_thread_posix.o -Wno-error -I../include -I../common/ -fPIC ../../src/../src/common/os_thread_posix.c ../../src/../utils/check-os.sh ../../src/../utils/os-banned ../nondebug/libpmem/os_thread_posix.o ../../src/../src/common/os_thread_posix.c cc -MD -c -o ../nondebug/libpmem/os_deep_linux.o -Wno-error -I../include -I../common/ -fPIC ../../src/../src/common/os_deep_linux.c ../../src/../utils/check-os.sh ../../src/../utils/os-banned ../nondebug/libpmem/os_deep_linux.o ../../src/../src/common/os_deep_linux.c cc -MD -c -o ../nondebug/libpmem/os_auto_flush_linux.o -Wno-error -I../include -I../common/ -fPIC ../../src/../src/common/os_auto_flush_linux.c ../../src/../utils/check-os.sh ../../src/../utils/os-banned ../nondebug/libpmem/os_auto_flush_linux.o ../../src/../src/common/os_auto_flush_linux.c cc -MD -c -o ../nondebug/libpmem/out.o -Wno-error -I../include -I../common/ -fPIC ../../src/../src/common/out.c ../../src/../src/common/out.c: In function ‘out_init’: ../../src/../src/common/out.c:241:20: error: expected ‘,’ or ‘;’ before ‘SRCVERSION’ 241 | "src version: " SRCVERSION; | ^~~~~~~~~~ make[2]: *** [../Makefile.inc:304: ../nondebug/libpmem/out.o] Error 1 make[2]: Leaving directory '/home/zzuer/Lyp_folder/pmdk/src/libpmem' make[1]: *** [Makefile:167: libpmem] Error 2 make[1]: Leaving directory '/home/zzuer/Lyp_folder/pmdk/src' make: *** [Makefile:83: all] Error 2
05-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值