1软件危机产生原因:
用户需求描述不准确、开发人员对需求的理解差异、大型项目管理经验缺乏、开发人员素质与经验、缺乏有力的方法学与工具技术、软件本身的复杂性
2软件工程的概念
是用工程、科学和数学的原则与方法研制、维护计算机软件有关技术及管理方法。
软件工程三要素:方法、工具和过程
软件工程方法为软件开发提供了“如何做”的技术,软件工程方法分两类:传统方法和面向对象方法
软件工具为软件工程方法提供了自动的或半自动的软件支撑环境
3 软件工程过程定义了:
方法使用的顺序、要求交付的文档资料、为保证质量和适应变化所需要的管理、软件开发各个阶段完成的里程碑
4.软件工程的基本活动: 需求、设计、实现、确认、支持
5原型模型具有较大的灵活性,适合于软件需求不明确,设计方案有一定风险的软件项目。
其主要优点是能统一客户和开发人员对软件项目需求的理解,有助于需求的定义和确认。
6螺旋模型:新增加了新的成分:风险分析(需求定义,风险分析,工程实现,评审)
软件开发项目力图在以上目标的冲突中取得一定程度的平衡:成本,质量,工期
1软件项目管理任务:
制定软件项目的实施计划和方案;对人员进行组织和分工;按照计划进度,以及成本管理、风险管理、质量管理的要求进行软件开发,完成软件项目的各项要求和任务。
成本管理主要任务:估算软件项目的成本;质量管理:指定软件质量保证计划,对阶段性的软件产品进行评审;对最终产品进行验证和确认。
软配置管理:制定配置管理计划,对程序文档和数据的各种版本进行管理,确保软件的完整性和一致性。
2面向功能的度量优点
与程序设计语言无关;功能点度量能用于软件项目的开发初期。
缺点:它涉及到的主观因素比较多,如各种权函数的取值;信息领域中的某些数据有时不容易采集;FP的值没有直观的物理意义。
3软件质量要素:
软件的运行特征:正确性可靠性有效性完整性可用性
软件承受修改的能力:可维护性灵活性可测试性
软件对新环境的适应程度:可移植性可重用性连接性
4风险分为项目风险、技术风险和商业风险。
软件开发项目的进度是任务、人力、时间的组5.CMM把企业控制软件过程的能力成熟度分五级1初始级(自发过程成功靠员工努力)2可重复级(建立基本管理,参照成功的项目重复)3已定义级(所有管理、工程两方面的活动均文档化并纳入有组织的软件过程,新的项目按定义的过程开发和管理)4已管理级(软件过程可量化管理,可制定产品度量标准第三级除外)5优化级(可从实施过程的反馈中改进过程第四级除外)
1软件需求:用户对目标软件系统在功能、行为、性能、设计约束等方面的期望
软件需求分析三个主要阶段(任务):问题分析、需求描述、需求评审(正确性、无歧义性、完全性、可验证性、一致性、可理解性、可修改性、可追踪性、必要性、可实现性、确定优先级)结构化分析的分析模型:实体关系:数据对象描述。
数据流:加工规格说明。
状态-迁移图:控制规格说明(中间是数据字典)
1UML图1用例图2静态图(类图、对象图、包图)3行为图(交互图、状态图、活动图)4实现图(构件图、部署图)
2什么是用例?
从外部用户的视角看,一个用例是主角(actor)与目标软件系统之间一次典型的交互作用。
从软件系统内部的视角出发,一个用例代表着系统执行的一系列动作,动作执行的结果能够被外部的主角所察觉。
1耦合是模块之间的互相连接的紧密程度的度量
设计软件时应尽量使用数据耦合,减少控制耦合,限制外部环境耦合和公共数据耦合,杜绝内容耦合。
2时间内聚又称为经典内聚。
这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。
例如初始化模块和终止模块。
1、启发式设计策略
变换分析和事务分析的最后一个步骤都是运用启发式策略对程序结构雏形进行优化,以提高软件设计的整体质量。
启发式设计策略是人们从长期的大量软件开发过程中积累总结的经验。
1改造程序结构,减小耦合度,提高内聚度。
2改造程序结构,减少高扇出,在增加程序深度的前提下追求高扇入。
3改造程序结构,使任一模块的作用域在其控制域之内。
4改造程序结构,减少界面的复杂性和冗余程度,提高协调性。
5模块功能应该可预言,避免对模块施加过多限制。
6改造程序结构,追求单入口单出口的模块。
7为满足设计或可移植性的要求,把某些软件用包(Package)封装起来。
1、边界类描述目标软件系统与外部环境的交互,主要任务:(1) 界面控制(2) 外部接口(3) 环境隔离
2、控制类作为完成用例任务的责任承担者,协调、控制其他类共同完成用例规定的功能或行为
1黑盒测试完全不考虑程序的内部结构和处理过程。
测试仅在程序界面上进行。
设计测试用例旨在说明:
①软件的功能是否可操作;②程序能否适当地接收输入数据并产生正确的输出结果;
③能否保持外部信息(如数据文件)的完整性。
黑盒测试又叫做功能测试或数据驱动测试。
2白盒测试时将程序看作是一个透明的盒子,也就是说测试人员完全了解程序的内部结构和处理过程。
所以测试时按照程序内部的逻辑测试程序、检验程序中的每条通路是否都能按预定的要求正确工作。
白盒测试又称为结构测试或逻辑驱动测试。
不论黑盒还是白盒测试都不能进行穷尽测试,所以软件测试不可能发现程序中存在的所有错误, 因此需精心设计测试方案, 力争尽可能少的次数,测出尽可能多的错误。
3测试过程中有哪些活动:单元测试、集成测试、确认测试、系统测试
4系统测试有哪几种:恢复测试、安全测试、强度测试、性能测试
1软件维护的分类:纠错性:诊断和改正软件系统中潜藏的错误而进行的活动;适应性:适应环境的变化而修改软件的活动;改善性:根据用户在使用过程中提出的一些建设性意见而进行的维护活动;预防性维护:为了进一步改善软件系统的可维护性和可靠性,并为以后的改进奠定基础。
1什么是软件配置项:
计算机程序(包括源程序和目标程序); 描述计算机程序的文档(包括面向技术人员和面向用户两类); 数据结构(包括程序内部和外部定义两部分)
2基线标志软件开发过程的各个里程碑,任一SCI(例如,设计说明书),一旦形成文档并复审通过,即成为一个基线,它标志开发过程中一个阶段的结束。