软件是程序以及开发、使用和维护程序所需的所有文档
是指能够完成预定功能和性能的可执行的程序,包括使程序正常执行所需要的数据和有关描述程序操作和使用的文档。
概念:软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象
主要表现在两个方面:
(1)软件产品质量低劣,甚至开发过程就夭折,
(2)软件生产率低,不能满足需要。
面向过程:结构化方法(sa,sd,sp)
结构化方法:是一种面向数据流的开发方法,其基本原则是功能的分解与抽象,其指导思想是自顶向下,逐步求精。
Sa:结构化分析法: 是结构化开发方法的核心
Sd:结构化设计法
Sp:结构化程序设计法
面向对象(OOA、OOD、OOP)
其基本思想是对问题领域进行自然分割,以便对客观的信息实体进行结构和行为的模拟,从而使设计的软件更直接的表现问题。
OOA:面向对象的分析,强调的是对一个系统中的对象特征和行为的定义。
OOD:面向对象的设计,与OOA密切配合顺序实现对现实世界的进一步建模。
OOP:面向对象的程序设计,是面向对象的技术中发展最快的,使用面向对象的程序设计语言进行编码。
问题定义 :软件开发方与需求方共同讨论,确定软件的开发目标及其可行性。
可行性研究 :项目是否值得开发.
需求分析 :在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析.
总体设计:设计软件结构,确定程序有哪些模块组成。
详细设计:针对每个模块,确定算法和数据结构。
编码 :将软件设计的结果转换成计算机可运行的程序代码。
测试: 在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正.
运行与维护: 在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。
①瀑布模型
1、按照软件生命周期的各个阶段,依次向下,逐步求精的方式完成软件项目;
2、每一阶段都有每一阶段明确的任务,每一阶段的完成都有相应的文档生成,
3、为下一阶段提供依据。
优点: 能够逐步稳定的使项目向前发展。
缺点: 无法解决软件需求不明确或者变动的问题。
1、在项目生命周期的后期才能看到最终的成果,用户不能提前了解到软件产品的实际效果。
2、当需求发生变化时,整个软件项目需要从头再来,增加了软件的周期成本。
3、通过很多的强制完成日期和里程碑,来跟踪各个项目阶段,容易使软件项目质量收到影响。
②增量模型
通过对用户的需求,建立一个满足用户核心功能的产品,并投入使用,在使用的过程中,用户根据实际需求,提出新的需求(增量)。开发人员再将新的需求逐步增加到现有的系统中。
优点:
1、用户可以很快的体验到软件产品,并且投入使用创造价值。
2、可以针对实际的使用情况增加新的比较明确的需求,也减少了用户学习使用的时间
3、减少软件项目的开发风险。
缺点:
1、越到后期,增量的增加越困难,复杂程度越高,需要考虑到对已有功能的联系。
3、 快速原型模型:
1、根据用户的需求快速建立一个原型系统,该原型能够满足用户的部分需求,用户根据原型,提出新的需求或者原需求的修改,一旦需求建立,原型系统将被丢弃。
优点:
1、通过快速 原型的建立,让用户试用,使用户的需求更加明确,降低了用户需求确定的难度。
2、通过原型,可以很快的让用户体验到产品的功能,并激发用户产生新的需求。
缺点:
1、注重需求的确定和功能的实现,而容易忽略产品的质量
2、一旦用户对原需求发生较大改变,需要产生新的模型
3、要求技术人员在短时间内制造原型模型,技术要求比较高
4 螺旋模型
1、是快速原型模型和瀑布模型的结合,并且加入了风险分析;
喷泉模型
获取需求的过程:
确定系统范围;分类排序;建立需求分析模型;建立需求规格说明
获取的方法:
面谈法、问卷调查法、需求专题研讨会、观察用户的工作流程、原型化方法、基于用例的方法。
数据流图(DFD)是描述系统中数据流程的图形工具,它标识了一个系统的逻辑输入和逻辑输出,以及把逻辑输入转换成逻辑输出所需的加工处理。
仓库模型:一般用于银行系统、命令控制系统、cad系统
是一种集中式的模型。应用系统用一个中央数据仓库来存储各个子系统共享的数据,其他子系统可以直接访问这些共享数据。
优点:数据由一个子系统产生,并且被其他一些子系统共享系统,不必关心其他子系统如何使用它生产的数据;各子系统之间不需要通过复杂的机制来传递共享数据;
缺点:各子系统为了有一致的数据视图来共享数据,就都必须走一条折中路线,这会导影响整个系统的性能;集中式的控制使数据和子系统的分布变非常困难甚至不可能;一个子系统发生了改变,它产生的数据结构也可能发生改变,为了共享,数据翻译系统会被用到,但这种翻译的代价很高,并且有时候不可能完成。
分布式模型:
每个连接在网络上的计算机节点都会根据各自的计算能力负责力所能及的计算工作,并通过这样的分工合作得到整体结果,从而提高整个系统的能力和效率。
优点:可资源共享、开放性高、容错能力强、透明性高。
缺点:较为复杂,保证安全性困难,可管理性低,不可预知性。
C/S(客户机/服务器)结构是一种分布式模型,采用发请求、得结果的模式。
客户机:向服务器发出请求(数据请求、网页请求、文件传输请求等等),
服务器:响应请求,进行相应的操作,将结果回传给客户机,客户机再将格式化后的结果呈现给用户。
C/S结构的应用都由三个相对独立的逻辑部分组成:
①用户界面层:与用户交互
②业务逻辑层: 进行具体运算和数据处理
②数据访问层: 完成数据的操作
B/S(浏览器/服务器)模型实际上是一种典型的瘦客户结构。此结构中,客户端简单到只是一个浏览器;服务器是能够传送HTML页面的Web服务器。
B/S结构应用系统的工作原理是:用户通过浏览器向Web服务器发出页面请求;服务器响应请求,并将指定的页面文件传送给客户浏览器﹔浏览器在接受到页面后,解释页面的内容,并将解释的结果显示在浏览器的窗口之中。
概念:主要用于描述系统的行为及各种功能之间的关系,是描述参与者(Actor)与用例以及用例与用例之间关系的图。
组成:用例图 = 参与者 + 用例 + 关系
如何获取:采用“基于用例的方法”来识别和获取需求。
类图是描述系统中的类,以及各个类之间的关系的静态视图。能够让我们在正确编写代码以前对系统有一个全面的认识。类图是一种模型类型,确切的说,是一种静态模型类型。
与类图极为相似,它是类图的实例,对象图显示类的多个对象实例,而不是实际的类。它描述的不是类之间的关系,而是对象之间的关系。
描述用例要求所要进行的活动,以及活动间的约束关系,有利于识别并行活动。能够演示出系统中哪些地方存在功能,以及这些功能和系统中其他组件的功能如何共同满足前面使用用例图建模的商务需求。
概念:用来描述一个特定对象的所有可能的状态及引起状态转移的事件。
组成:包括一系列的状态,以及状态之间的改变。
作用:状态图用于显示状态机(它指定对象所在的状态序列)、使对象达到这些状态的事件和条件、以及达到这些状态时所发生的操作的状态变化,也可以展 示哪些事件将会改变类的对象的状态。状态图是对类图的补充。
概念:主要描述一组对象之间的动态合作关系,着重描述对象间消息传递的事件顺序。
作用:细化用例的表达、有效的描述类职责的分配方式、丰富系统的使用语境的逻辑表达。
组成:
对象:是系统参与者或者任何有效的系统对象
生命线:是一条垂直的虚线,用来表示顺序图中的对象在一段时间内的存在。
激活:是对象操作的执行,它表示一个对象直接地或通过从属操作完成操作的过程。
消息:是用来说明顺序图中不同活动对象之间的通信。
描述相互合作的对象间的动态合作关系。
描述代码构件的物理结构以及各种构建之间的依赖关系。用来建模软件的组件及其相互之间的关系,这些图由构件标记符和构件之间的关系构成。在组件图中,构件时软件单个组成部分,它可以是一个文件,产品、可执行文件和脚本等。
是用来建模系统的物理部署。例如计算机和设备,以及它们之间是如何连接的。部署图的使用者是开发人员、系统集成人员和测试人员。
模块独立性:是指模块内部各部分及模块间的关系的一种衡量标准,
两个衡量:耦合性和内聚性
软件复用是指重复使用已有的软件产品用于开发新的软件系统,以达到提高软件系统的开发质量与效率,降低开发成本的目的。在软件复用中重复使用的软件产品不仅仅局限于程序代码,而是包含了在软件生产的各个阶段所得到的各种软件产品,这些软件产品包括领域知识、体系结构、需求分析、设计文档、程序代码、测试用例和测试数据等。
①单元测试: 分别完成每个单元的测试任务,以确保每个模块能正常工作。白盒
②集成测试: 检验与软件设计相关的程序结构问题。黑盒测试
③确认测试: 检验所开发的软件能否满足所有功能和性能需求的最后手段,黑盒。
④系统测试: 检验它能否与系统的其他部分(如硬件、数据库及操作人员)协调工作
⑤ 验收测试: 检验软件产品质量
了解软件测试中常见的静态分析方法。(P204)
桌前检查:程序编译后,单元测试之前。对代码进行分析,检查
代码会审:测试和开发人员组成评审小组,按照“常见错误清单”进行检查
步行检查:人工执行程序,进行检查。
步行检查时,还常使用以下分析方法:。
(1)调用图:从语义的角度考察程序的控制路线。
(2)数据流分析图:检查分析变量的定义和引用情况。
主要有几种软件维护的类型?(P249)
完善性维护
适应性维护
纠错性维护
预防性维护
软件项目管理涉及的范围有哪些?(软件开发进度及计划、人员配置与组织、项目跟踪与控制)
软件可行性分析
软件项目的估算成本
软件生产率
软件项目管理质量
软件计划
软件开发人员管理
CMM(Capacity Maturity Model):软件能力成熟度模型
概念:是一套评估软件能力与成熟度的标准。
等级:
DFD数据流图要会画,用例图要会画,黑盒测试的设计方法要掌握。