今日总结1.1
第一章:软件开发概述
1.1软件与程序
1.1.1从程序到软件
计算机程序(简称程序)是为了解决某个特定问题而用程序设计语言描述的适合计算机处理的语句序列;
软件是能够完成预定功能和性能的可执行的程序和使程序正常执行所需要的数据,加上描述软件开发过程及其管理、程序的操作和使用的有关文档,即“软件=程序+数据+文档”
1.1.2软件类型
按功能:系统软件、支撑软件和应用软件。
按工作方式:实时处理软件、分时软件、交互式软件和批处理软件。
按服务对象的范围:项目软件(定制开发)和产品软件(通用软件)
其他:商业软件、开源软件、共享软件。
1.1.3程序设计与软件开发
程序=算法+数据结构 程序=算法+数据结构
数据结构指的是程序处理或应用的数据与数据之间的逻辑关系;
算法指的是解决特定问题的步骤和方法。
程序设计的核心就是选择和设计适合特定问题的数据结构。
1.2软件生存周期
孕育>诞生>成长>成熟>衰亡
1.2.1使用角度的软件生存周期
提出需求:用户根据需要,提出要解决的问题和需要的软件;
获取软件∶主要是对获取软件的最佳途径做出决策并选择最佳的供应商;
购买软件;
定制或开发软件;
租赁软件或租赁服务。
使用软件:获得软件之后,用户将操作软件使之为其服务。
1.2.2开发角度的软件生存周期
定义软件:
理解问题:用明确的语言描述软件要解决的问题、目标和范围;
可行性研究:从经济、技术、法律等方面分析软件开发的可行性;
需求分析:描述对软件系统的所有需求,即明确要软件做什么 。
开发软件:
软件设计:建立目标软件的解决方案,包括软件的结构和组成;
软件实现: 用程序语言实现设计方案,包括与其他系统的接口和集成;
软件测试:通过各种测试和评审技术,确认软件满足了指定要求。
维护软件:
软件交付:发布开发的软件,或者安装、部署到用户现场以便使用软件维护;
软件退役:对软件进行修改或对需求的变化做出响应终止对软件的技术支持和维护,软件停止使用。
1.3软件开发过程
1.3.1瀑布式开发过程
主要问题在于∶
阶段划分僵硬,每个阶段不能缺省,而且产生大量文档,增加了工作量;
开发是线性的,只有等到整个过程的末期才能见到开发成果——可运行软件,不利于快速响应变化的需求;
早期的错误要等到开发后期的测试阶段才能发现,可能带来严重的后果,增加了开发的风险。
1.3.2增量开发模型
增量开发模型的优点∶
1、在短时间内向用户提交一个可运行软牛,够足用户急用的一些功能。
2、由于每次只提交部分功能,用尸有较允分的时月子习迫应新的产品。
3、在开发过程中,需求的变化是不可避免的。增量开发模型的灵活性可以使软件适应需求变化。
4、有利于系统维护,因为整个系统是由一个个增量(部件)集成在一起的,当需求变更时,只变更部分部件,而不必影响整个系统。
增量模型存在以下风险∶
1、由于各个部件是逐渐开公二俱软Na称t育T的北的的部件不破坏已构造好的系统,这需要软件具备开放式的体系结构,否则系统将失去稳定的结构。
2、逐步增加部件的方式,很容易退化为边做边改模型,从而使软件过程的控制失去整体性。
3、在一个软件开发中如何一致地定义“增量”?如何界定它的工作量、需求范围、功能或特性?