第一章软件工程概述。
1、软件的概念软件的概念。
公认的解释。
软件=程序+数据+文档。
程序:按事先设计的功能和性能需求执行的指令序列。
数据:程序能正常操纵信息的数据结构。
文档:与程序开发、维护和使用有关的**材料。
2、软件的特点:
抽象性、软件生产无明显制造过程、无磨损性、对计算机硬件依赖性、软件的手工开发方式、软件本身复杂性、软件的高成本、社会因素。
3、软件的分类。
1)按功能分类:系统软件、支撑软件、应用软件。
2)按规模分类:微型、小型、中型、大型、甚大型、极大型。
3)按工作方式分类:实时处理软件、分时软件、交互式软件、批处理软件。
4)按软件服务对象的范围分类:项目软件、产品软件。
5)按使用频度分类:一次性使用软件、频繁使用软件。
6)按失效影响分类:高可靠性软件、一般可靠性软件。
找不到一个统一的严格分类标准,从不同角度来进行分类,每一类软件在管理方面要求程度不同。
4、软件的发展。
5、软件危机:计算机软件的开发和维护过程所遇到的一系列严重问题。
表现:对软件开发成本和进度的估算很不准确、用户很不满意、质量很不可靠、没有适当的文档、软件成本比重上升、供不应求、软件开发生产率跟不上计算机应用迅速深入的趋势。
软件危机的原因:
客观 ——软件本身特点。
逻辑部件繁杂、规模庞大。
主观 ——不正确的开发方法。
忽视需求分析、错误思想:软件开发 = 程序编写、轻视软件维护。
软件危机的解决途经:
组织管理:工程项目管理方法。
技术措施:软件开发技术与方法、软件工具。
6、软件工程。
在软件危机形势下,软件工程诞生。1968 年,北大西洋公约组织( nato )的德国格密斯学术会议正式提出了软件工程。
定义:采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。
7、软件工程的三要素。
1)方法。为软件开发提供了 “ 如何做 ” 的技术;项目计划与估算、软件系统需求分析、数据结构、设计等。
2)工具。为软件工程方法提供了自动或半自动的软件支撑环境;计算机辅助软件工程( case )
3)过程。将软件工程的方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的;方法使用的顺序、要求交付的文档资料、管理、软件开发各个阶段完成的里程碑。
8、软件工程包括(se):软件设计、软件工具与环境、软件过程、软件需求与规约 ( 规格说明 )、软件确认、软件演化、软件项目管理、基于构件的计算、形式化方法、软件可靠性、特定系统开发。
9、软件工程需要解决的问题。
软件成本②软件可靠性③软件维护④软件生产率⑤软件复用。
10、软件工程的目标:
付出较低的开发成本②达到要求的软件功能③取得较好的软件性能④开发的软件易于移植⑤需要较低的维护费用⑥能按时完成开发,及时交付使用。
11、软件工程过程简介。
概念:软件工程过程是为获得软件产品,在软件工具支持下由软件工程师完成的一系列软件工程活动。
基本的过程活动:
软件规格说明。
规定软件的功能及其运行的限制。
软件开发。产生满足规格说明的软件。
软件确认。确认软件能够完成客户提出的要求。
软件演化。为满足客户的变更要求,软件必须在使用的过程中演化。
12、软件生存周期。
软件有一个孕育、诞生、成长、成熟、衰亡的生存过程,这个过程即为软件的生存周期。
软件生存周期包含三个阶段①软件定义②软件开发③软件运行维护。
步骤:制定计划。
总目标、可行性、可能方案、实施计划。
需求分析和定义。
软件需求说明书、系统功能说明书。
软件设计。设计说明书。
程序编写。计算机源程序。
软件测试。保证软件质量。
运行 / 维护。
13、软件生存周期模型。
软件生存周期模型是软件工程思想的具体化,跨越软件生存周期的系统开发、运行、维护所实施的全部活动和任务的过程框架。
常用的软件生存周期模型:瀑布模型、演化模型、螺旋模型、喷泉模型、智能模型、增量模型。
14、瀑布模型。
瀑布模型演化模型。
瀑布模型特点①阶段的顺序性和依赖性②推迟实现的观点③质量保证。
该模型带来的问题①过程基本不可迭代②错误到最后才能发现④开发进程呈现塞阻状态。
适合于用户需求明确、完整、无重大变化的软件项目开发。
15、演化模型。
先开发一个 “ 原型 ” 软件,完成部分主要功能,展示给用户并征求意见,然后逐步完善,最终获得满意的软件产品。
特点:①快速开发工具②循环③低成本④减少由于软件需求不明确而给开发带来的风。
险。16、快速原型模型。
原型是指模拟某种产品的原始模型。一个可实地运行的模型,有正式产品的主要特征,但不是全部特征。
软件原型是软件系统的一个早期可运行的版本,以最少的费用,最短的时间开发出的、以反映最终软件的主要特征的系统。
目的:以原型为共同语言,实现用户与开发者双向沟通。
快速原型。优点:①增进软件人员和用户对系统需求的理解和明确②提供了一种有力的学习手段,有利于用户培训和开发同步。
用户:计算机知识开发者:业务知识。
可用作理解和确认软件需求规格说明的工具。
降低开发成本,缩短开发周期。
局限局限:①受到软件工具和开发环境的限制②缺少好的开发方法。
17、螺旋模型。
螺旋模型将瀑布模型与演化模型结合起来,并且加入两种模型均忽略了的风险分析。
软件风险普遍存在于任何软件开发项目中的实际问题;软件开发不可忽视的潜在不利因素;可能在不同程度上损坏软件开发过程或软件产品的质量。
螺旋模型沿着螺线旋转,自内向外每旋转一圈便开发出更完善的一个新版本。
制定计划:确定软件目标,选定实施方案,弄清项目开发的限制条件。
风险分析:分析所选方案,考虑如何识别和消除风险。
实施工程:实施软件开发。
客户评估:评价开发,提出修正建议。
螺旋模型。特点:
瀑布模型 + 快速原型 + 风险分析②迭代过程。
一个螺旋式周期:
1 确定目标,选择方案,选定完成目标的策略②风险角度分析该策略③启动一个开发阶段。
评价前一步的结果,计划下一轮的工作。
18、增量模型。
反复应用瀑布模型的基本成分和原型模型的迭代特征,每一个线型过程产生一个“增量”的发布或提交,该增量均是一个可运行的产品。
渐进开发、逐步完善早期的版本实现用户的基本需求,并提供给用户评估的平台。
19、净室模型。
基本思想:力求在分析和设计阶段就消除错误,确保正确,然后在无缺陷或“洁净洁净”的状态下实现软件的制作。
20、软件工程原则。
在软件开发过程中必须遵循的软件工程原则①确定性②抽象与自顶向下、逐层细化③信息隐蔽和数据封装④模块化⑤局部化⑥一致性和标准化⑦完备性和可验证性。
21、软件工程的基本原理。
按软件生存周期分阶段制定计划并认真实施②坚持进行阶段评审③坚持严格的产品控制④使用现代程序设计技术⑤明确责任,使得工作结果能够得到清楚的审查⑥用人少而精⑦不断改进开发过程。
第二章软件开发方法。
1、结构模板内的五个处理区域。
用户界面②输入③系统功能与控制④输出⑤维护与自测试。
2、需求(requirements)
jonesjones :用户所需要的软件必须达到的目标和能力。
lethbridgelethbridge:关于系统将要完成什么工作的一段描述,必须经过所有相关人员的认可,其目的是彻底的解决用户的问题。
3、需求的类型。
功能性需求:描述系统应该做什么,即为用户和其它系统完成的功能、提供的服务。
非功能性需求:必须遵循的标准,外部界面的细节,实现的约束条件,质量属性等等。
非功能需求限定了选择解决问题方案的范围,如运行平台、实现技术、编程语言和工具等。
4、软件需求文档。
需求规格说明(需求规约)
需求分析阶段的产品,是所有其他开发和管理活动的基础。
对系统开发过程中其他活动的影响。
1 项目经理根据它制定或修改开发计划。
2 设计人员根据它进行系统设计。
测试人员根据它编写测试计划,设计测试用例。
产品发布人员根据它编写产品介绍和用户文档。
培训人员根据它编写培训教程。
5、需求描述 (ieee)
a.功能需求b. 数据需求:
与功能有关的数据定义和数据关系c. 性能需求:响应时间、容量要求、用户数等d.
外部接口:用户界面、软硬件接口、通信接口e. 设计约束:
软件支持环境、报表、数据命名等f. 软件质量属性(可维护性、可靠性、可移植性、可用性、安全性等等)
6、需求分析是指开发人员通过对应用问题及其环境的调需求分析,准确的理解用户的需求,将不规范的需求陈述转化为完整的需求定义,再将需求定义编写成需求规格说明的过程。
7、对需求文档需执行以下类型的检查。
有效性检查:检查不同用户使用不同功能的有效性。
一致性检查:在文档中,需求不应该冲突在文档中,需求不应该冲突。
完备性检查:需求文档应该包括所有用户想要的功能和约束。
现实性检查:检查保证能利用现有技术实现需求。
8、软件需求分析的目标。
有效的需求分析可以避免系统开发时的盲目性。
软件开发需要解决的首要问题是“系统做什么”
需求分析可以预防开发过程中错误的积累与放大效应。
预防和防止错误的出现和扩大,尽量在开发工作的早期发现错误、纠正错误。
3 需求分析可以减少用户需求的模糊性与不稳定性。
语言的二义性和不完备性;用户对系统的需求是不断变化的。
9、软件需求→解决“做什么” 软件设计→解决“怎么做”
软件设计为软件的编程阶段提供依据①数据设计②体系结构设计③接口设计④构件设计。
软件设计的基本思想:①抽象②逐步求精。
软件设计的基本方法:①模块化②控制层次③结构划分。
10、模块划分得越小成本越低,但是集成成本却随着模块划分得越小成本越高。
11、数据流图dfd (data flow diagram)
描述数据处理过程的工具;从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。
12、模块独立性。
模块独立性:软件系统中每个模块只涉及软件要求的具体的子功能,和软件系统中其他的模块的接口是简单的。
度量准则①模块间的耦合:模块之间的依赖程度②模块的内聚:模块内部各成分之间的关联程度。
软件工程复习
单选填空简答思考题。1 传统的软件瀑布生命模型包括哪六个方面?需求 分析 设计 实现 交付后维护 退役2 传统瀑布生命模型的中交付后维护包括哪三种?改正性维护 适应性维护 完善性维护3 现代维护和传统维护的观点有何不同?1 传统维护的观点是先开发后维护。2 现代维护的观点是无论是在软件安装前还是安装...
软件工程复习
软件工程复习资料。备注 1.老师反复强调我们之前做过的作业要熟练掌握 需求陈述 实验课画的模型 自己画。的数据流图 2 蓝颜色的字都是老师上课补充的,还有很多需要自己去补充,欢迎修正完善。核心问题 在考试做大是要表述清楚详细,关。键词要有 问题定义 专用名词表要解决的问题是什么?达要准确,不能更改 ...
软件工程 复习
1.概念 软件危机是指在计算机软件开发 使用与维护过程中遇到的一系列严重问题。2.为什么会产生软件危机?当软件开发技术的进步不能跟上硬件技术的进步,未能满足发展的要求,致使软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。3.软件危机的表现 经费预算经常突破...