什么是软件:程序+数据+配套文档
软件危机:计算机软件开发过程中所遇到的一系列严重问题
软件危机的背景:20世纪60年代中后期软件开发需求急剧增长
软件工程的定义:指导计算机软件开发和维护的工程学科,采用工程的概念、原理、技术和方法开发与维护软件,经济地开发出高质量软件
软件工程三要素:方法,工具,过程
习题知识点:
1.不属于软件特点的是:软件使用不涉及知识产权
2.软件危机的产生主要原因是:软件规模日益庞大
3.软件工程三要素:方法,工具,过程
4.“软件工程”术语是在1968年NATO会议被首次提出
5.软件工程基本目标是开发足够好的软件
6.软件由程序、数据、文档组成
7.下面选项中,软件工程材料不属于软件工程学科要研究的
8.开发软件所需高成本和产品低质量有着尖锐矛盾,这种现象称为:软件危机
9.人数增加生产效率不加是因为参与人员之间通信困难
10.软件工程的出现主要原因是软件危机的出现
软件生命周期:软件从定义到开发、使用到维护、最终被弃用的整个时期
软件生命周期的三周期八阶段,以及各个阶段的基本任务:
瀑布模型:
适用于功能性能明确、完整、无重大变化的系统开发
优点:提升了软件开发质量和效率
缺点:过程不可逆,逆过程代价过大;实际开发中很难严格按照该模型进行
快速原型模型(原型化模型):
在瀑布模型的基础上增加了原型构建阶段(听取用户建议)
用户说不清楚需求,通过实践了解目标系统概貌
优点:更为准确、减少后期返工,用户参与性强,需求越来越清晰
缺点:为了演示功能往往采用不合适的算法或系统,不考虑长期维护性和整体质量
增量模型:
瀑布模型的改进模型,分解系统,以用户看得见的功能为增量单位实现迭代式开发,一次完成一个增量,在较短时间内完成一部分功能供用户使用。
优点:渐增完成,能在较短时间向用户提交可完成部分的产品;用户更能学习和适应,减少全新软件对用户的冲击
缺点:对软件体系结构要求较高,可能出现不能集成的风险;容易退化成边做边改模型。
螺旋模型:
每个阶段都增加了风险分析的快速原型模型
优点:减少了测试过多过少的风险;融入了迭代的思想;避免错误的积累
缺点:适用于大规模软件项目;一般只适用于内部开发的项目
喷泉模型:
面向对象的软件开发方法为基础,生命周期各阶段间没有明显边界
优点:逐步完善需求;节省开发使劲按;迭代开发
缺点:需要大量开发人员,对文档要求严格。
统一过程模型:
迭代式开发、管理需求、使用基于组件的体系结构、可视化建模、控制软件变更
敏捷过程模型:
个体交互胜于过程和工具
可使用的软件胜过面面俱到的文档
客户合作胜过合同谈判
响应变化胜过遵循计划
CMM:能力成熟度模型
概念:品该软件机构的软件过程能力成熟度的模型
作用:提高软件质量,让软件项目免受时间和费用超支的苦
五个等级:
1)初始级:无秩序、混乱,成功依赖于个人或小组。
2)可重复级:建立了基本的管理过程,制定了必要的纪律。
3)已定义级:文档化、标准化。所有项目使用标准的软件过程开发和维护
4)已管理级:对软件过程和产品都有定量控制
4)优先级:过程的量化反馈和现金的新思想、新技术促使过程不断改进
习题知识点:
1.瀑布模型适用于需求被清晰定义的情况
2.增量模型是一种需要快速构造核心产品的好方法
3.原型化模型适用于客户需求难以被清除定义
4.敏捷开发的优点不包括:遵循严格受控的过程和详细的项目规则
5.包含风险分析的是:螺旋模型
6.软件过程是:软件开发活动的集合
7.CMM在优化级使用定量分析不断改进和管理软件过程
8.瀑布模型把软件生命周期划分为:软件定义、软件开发、运行和维护三个阶段
9.以用户为动力、以对象作为驱动力的模型是喷泉模型
10.需求分析阶段主要任务是:获得系统完整的功能和性能需求
软件需求的定义:从用户角度和开发者角度阐述需求,编写需求文档
需求工程过程(要知道每一步做了什么):
需求获取:听取客户需求,观察用户行为
需求分析:将需求分析和整理
需求规格说明:编写文档说明书
需求验证:采用评审和审议的手段对说明文档验证
需求管理:在软件生命周期中有效地管理和控制需求的变更
活动图:实质上是一种流程图
组成:
动作状态(活动):不能有入口和出口动作,不能有内部转移
活动状态:可以有出口和入口动作,可以有内部转移
动作流:所有动作状态之间的转换流
分支与合并:转换的一部分
分叉与汇合:将动作流分为多个分支,同步这些并发分支
泳道:将活动划分为若干组,每一组指定给负责这些活动的对象
对象流:表示对象之间彼此操作与转换,许下念头表示
数据流图(DFD):自顶向下逐层分解,先画第一层,再画第二层
习题知识点:
1.需求分析最终结果是形成需求规格说明书文档
3.参与者之间可以存在泛化关系
7.需求规格说明描述了:计算机系统的功能、性能和约束
15.DFD基本符号不包括数据字典
16.需求验证应该从一致性、现实性、完整性、有效性方面进行验证
统一建模语言:UML
定义:是一种定义良好的、易于表达的、功能强的建模语言
会画图
该画的图会画,了解基本概念
总体设计:
模块化:把软件划分为独立命名独立访问的模块
衡量模块好坏:模块间的耦合和模块内的内聚
模块独立性:高内聚(模块内部紧密程度),低耦合(模块之间的互联程度)
详细设计:程序流程图,判定表,判定树(还没找到)没找到
什么是软件测试,目的,定义:课上写的
什么是白盒测试:以程序内部逻辑为依据,选取足够多的测试用例,尽可能发现程序中的错误
基本路径测试法(掌握怎么用,画图,算复杂度)
怎么画:书上P204
复杂度:
1)边-点+2
2)判定结点+1
什么是黑盒测试:以程序的功能作为依据
什么是软件演化: 开发和维护的综合
4类维护:
软件再工程:现有软件基础再工程