CS期末复习Word文档格式.docx
- 文档编号:4815285
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:16
- 大小:71.89KB
CS期末复习Word文档格式.docx
《CS期末复习Word文档格式.docx》由会员分享,可在线阅读,更多相关《CS期末复习Word文档格式.docx(16页珍藏版)》请在冰点文库上搜索。
在数据库应用中,数据的存储管理功能是由服务器程序和客户应用程序分别独立进行的;
对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。
3、软件工程的定义。
软件工程面临的挑战。
软件工程原则。
软件工程的定义
[Bauer,1972]软件工程是为了经济地获得能够在实际机器上高效运行的可靠软件而建立和使用的一系列好的工程化原则。
[CMU,1990]软件工程是以工程的形式应用计算机科学和数学原理,从而经济有效地解决软件问题。
[IEEE,1993]软件工程是①将系统性的、规范化的、可定量的方法应用于软件的开发、运行和维护,即工程化应用到软件上;
②对①中所述方法的研究。
软件工程面临的挑战
•遗留系统的问题
–遗留系统是指那些过时或存在问题的计算机系统,通常是许多年以前开发的
–挑战:
既要以合理的成本维护和更新系统,又要能够继承系统中重要的商业信息和服务
•异构系统的问题
–网络环境下包含不同的硬件平台和软件系统
需要提出新的开发技术,能够使所开发的软件系统运行在不同的硬件平台和系统环境下
•高可信软件开发的要求
–软件的重要作用要求正确性、可靠性、安全性等可信性质
如何在软件的开发和运行中保证其具有高可信的性质
•软件开发方式的变化
–网络时代带来的冲击
•开源软件开发技术
•Web工程
研究分布式的软件体系结构和开发模式,探索与之相适应的软件工程策略
软件工程原则:
抽象、信息隐藏、模块化、局部化、一致性、安全性、可验证性
4、软件危机的定义。
软件危机的表现。
软件危机的原因。
软件危机的定义:
软件危机是指落后的软件生产方式无法满足迅速增长的计算机软件需求,从而导致软件开发与维护过程中出现一系列严重问题的现象。
软件危机的表现:
①软件成本日益增长②开发进度难以控制
③软件质量差④软件维护困难
软件危机的原因:
①用户需求不明确②缺乏正确的理论指导
③软件规模越来越大④软件复杂度越来越高
5、瀑布模型的定义:
它根据软件的生存周期各个阶段的任务从可行性研究开始,逐步进行阶段性变换,直至通过确认测试并得到用户确认的软件产品为止。
瀑布模型的优缺点:
优点:
他提供了软件开发的基本框架,它有利于大型软件开发过程中人员的组织、管理,有利于软件开发方法和工具的研究与使用,从而提高大型软件项目开发的质量和效率。
缺点:
–各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量
–开发过程中很难响应客户的变更要求
–早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果
6、螺旋模型的定义:
螺旋模型是瀑布模型与原型模型的结合,不仅体现了两个模型的优点,而且还增加了风险分析。
螺旋模型的优缺点:
•优点
–关注软件的重用–关注早期错误的消除–将质量目标放在首位–将开发阶段与维护阶段结合在一起
•缺点
–需要风险评估的经验
1.UML的定义,特点和用途。
UML的定义:
UML(UnifiedModelingLanguage,译为统一建模语言),是一种面向对象的可视化建模语言,它能够让系统构造者用标准的、易于理解的方式建立起能够表达他们设计思想的系统蓝图,并且提供一种机制,以便于不同的人之间可以有效的共享和交流设计成果。
特点和用途:
①UML(UnifiedModelingLanguage)
统一建模语言是一种直观化、明确化、构造的和文档化的软件系统产物的通用可视化建模语言。
•不是可视化的程序设计语言,而是可视化的建模语言;
•不是工具或知识库的规格说明,而是一种建模语言规格说明,是一种表示的标准;
•不是过程,也不是方法,但允许任何一种过程和方法使用它。
②UML可以描述开发所需要的各种视图
–概念视图:
业务过程和系统功能
–具体视图:
程序中的类、数据库模式、可重用的软件构件。
③可视化的(Visualizing)
UML提供一组具有明确语义的图形符号,可以建立清晰的模型便于交流,所有开发人员都可以无歧义地解释这个模型。
UML代替了传统的“边想边写”开发方式。
④详细描述(Specifying)
详细描述意味着建立精确的和无歧义的模型。
UML为所有重要的分析、设计和实现决策提供了精确的、无歧义的和完整的描述。
⑤构造的(Constructing)
–UML不是一种可视化的编程语言,但它所描述的模型可以映射成不同的编程语言,如JAVA、C++和VisualBasic等。
–正向工程:
从UML模型到编程语言的代码生成
–逆向工程:
由编程语言代码重新构造UML模型
⑥文档化的(Documenting)
–UML可以建立系统体系结构及其详细文档,提供描述需求和用于测试的语言,同时可以对项目计划和发布管理的活动进行建模。
2、软件设计的定义,软件设计的任务,软件设计的原则。
软件设计的定义:
软件设计是一个把软件需求变换成软件表示的过程。
最初这种表示只是描绘出可直接反映功能、数据、行为需求的软件的总的框架,然后进一步细化,在此框架中填入细节,把它加工成在程序细节上非常接近于源程序的软件表示。
软件设计的任务:
从工程管理的角度来看,软件设计分两步完成。
①概要设计,将软件需求转化为数据结构和软件的系统结构。
②详细设计,即过程设计。
通过对结构表示进行细化,得到软件的详细的数据结构和算法。
软件设计的原则:
(黑色字体,小字是注解)
抽象化
软件系统进行模块设计时,可有不同的抽象层次。
在最高的抽象层次上,可以使用问题所处环境的语言概括地描述问题的解法。
在较低的抽象层次上,则采用过程化的方法。
具体包括过程的抽象和数据的抽象
逐层求精:
将软件的体系结构按自顶向下方式,对各个层次的过程细节和数据细节逐层细化,直到用程序设计语言的语句能够实现为止,从而最后确立整个的体系结构
模块化
软件系统的模块化是指整个软件被划分成若干单独命名和可编址的部分,称之为模块。
这些模块可以被组装起来以满足整个问题的需求。
模块是能够单独命名并独立地完成一定功能的程序语句的集合。
例如高级语言中的过程、函数、子程序等都可作为模块。
信息隐藏
如何分解一个软件才能得到最佳的模块组合?
为了明确怎样去做,需要了解什么是“信息隐藏”。
每个模块都包含了一种设计决定。
如果一项决定可以改变,同时又不影响任何其他模块,我们就说这项设计决定是一个“模块的秘密”
每个模块的实现细节对于其它模块来说是隐蔽的。
就是说,模块中所包含的信息(包括数据和过程)不允许其它不需要这些信息的模块使用。
内聚度
内聚是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。
一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高,相对地,它与其他模块之间的耦合就会减低,而模块独立性就越强。
耦合度:
是程序结构中各个模块之间相互关联的度量。
模块之间的连接越紧密,联系越多,耦合性就越高,而且模块独立性就弱。
它取决于各个模块之间接口的复杂程度、调用模块的方式以及哪些信息通过接口。
3、什么是概念模型设计,什么是分析类,从分析类所负责的主要功能需求看,系统可包括哪三种分析类?
什么是概念模型设计?
在用户需求和相关的业务领域中往往有一些全局性的概念对于理解需求至关重要。
有必要抽取这些概念,研究这些概念之间的关系。
建立领域概念模型适合选择UML类图,描述在问题域中存在哪些主要概念和对象,并表示出它们之间的关系(关联、继承、聚集等)。
建立以UML类图表示的领域概念模型,首先必须标识关键概念。
什么是分析类,从分析类所负责的主要功能需求看,系统可包括哪三种分析类?
分析类是指直接服务于用户功能性需求的概念层面的类,与待开发软件系统的具体实现技术无关。
三种分析类
1)边界类负责目标软件系统与参与者之间的交互,职责包括:
界面控制、外部接口和环境隔离。
2)控制类作为完成用例任务的责任承担者,负责协调、控制其他类共同完成用例规定的功能。
对于比较负责的用例,控制类通常不处理具体的任务细节,但应知道如何分解任务,如何将子任务分派给其他类,如何协调这些类的工作。
3)实体类负责保存目标软件系统中具有持久意义的信息项并向其他类提供读、写信息项内容的必要操作接口,一般不涉及业务逻辑处理。
4、什么是部署图,部署模型设计一般需要考虑哪几点?
1部署图用来描述软件开发过程中形成哪些软件制品,软件运行平台中存在哪些物理节点及通信方式,软件制作到相应硬件节点的部署。
2部署图用来描述对整个系统结构的一些特殊需求,如系统的备份或容错结构设计。
3部署图适合用来描述非面向对象方法开发的软件系统最终的部署方案。
部署模型设计一般需要考虑以下几点:
a)最终开发完成的软件包括哪些制品形式。
b)软件运行环境存在哪些类型的物理节点。
c)不同节点之间的连接和通信形式是什么。
d)软件制品应该如何在物理节点上进行部署,即它们的部署映射关系。
5.从系统设计的角度出发,软件设计方法可以分为哪三大类?
第一类是根据系统的数据流进行设计,称为面向数据流的设计或者过程驱动的设计,以结构化设计方法为代表。
第二类是根据系统的数据结构进行设计,称为面向数据结构的设计或者数据驱动的设计,以LCP(程序逻辑构造)方法、Jackson系统开发方法和数据结构化系统开发(DSSD)方法为代表。
第三类设计方法即面向对象的设计。
6、什么是结构化设计方法。
结构化设计方法实施的要点?
结构化设计方法是基于模块化、自顶向下细化、结构化程序设计等程序设计技术基础上发展起来的。
该方法实施的要点是:
a)建立数据流的类型。
b)指明流的边界。
c)将数据流图映射到程序结构。
d)用“因子化”方法定义控制的层次结构。
e)用设计测量和一些启发式规则对结构进行细化
7、面向数据流的设计过程包含哪些步骤?
面向数据流的方法能方便将数据流转换为软件结构,其过程为
f)确定信息流的类型
g)划分流界
h)将数据流图映射为程序结构(核心)
i)提取层次控制结构
j)通过设计复审和使用启发式策略进一步精化所得到的结构
8、启发式设计策略有哪些:
①模块规模应该适中②深度、宽度、扇出和扇入都应适当③模块的作用域应该在控制域之内④力争降低模块接口的复杂程度⑤设计单入口单出口的复杂程度,主要是防止内容耦合⑥模块功能应该可以预测⑦为满足设计和可移植性要求封装软件包
它们对软件设计起到什么作用:
在多数场合下,启发式规则能给软件工程师有益的启示,帮助他们找到改进软件设计、提高软件质量途径。
改进软件结构提高模块独立性。
1、用户界面设计的基本原则。
1用户界面设计不仅是技术问题,而且还需要研究人的因素。
2细致的用户界面设计是整个软件设计过程中的一个很重要的部分,它对于软件系统发挥其所有潜力非常重要。
3没有设计良好的用户界面意味着用户将可能体验不到系统的某些特征,然后用户将有可能犯错,并且感觉系统没有帮助自己完成所预期的工作。
4在做出用户界面的设计决定时,设计人员必须考虑软件使用者的体力和智力。
5人的因素是设计原则的基础,这些设计原则能够应用于所有的用户界面设计中,而且还可以根据具体的组织和系统类型进一步细化
2、用户界面设计中有哪三条“黄金规则”?
1用于保持对用户控制的设计原则
2用于减少用户记忆负担的设计原则
3界面获取和展现信息的方式必须一致
3、在用户分析过程中,信息的获取方式有哪些?
有哪三种用户分析技术?
用户分析过程中,信息的获取方式
a)用户会谈
b)经销人员信息采集
c)市场分析
d)用户支持人员信息收集
三种基本的用户分析技术:
e)任务分析
f)用户采访和问卷调查
g)群体文化学
4、什么是软件体系风格?
有哪些经典的软件体系风格?
软件体系结构风格是描述某一特定应用领域中系统组织方式的惯用模式。
体系结构风格定义了一个系统家族,即一个体系结构定义一个词汇表和一组约束。
词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。
体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。
经典的体系结构风格
◎数据流风格:
批处理序列;
管道/过滤器。
◎调用/返回风格:
主程序/子程序;
面向对象风格;
层次结构。
◎独立构件风格:
进程通讯;
事件系统。
◎虚拟机风格:
解释器;
基于规则的系统。
◎仓库风格:
数据库系统;
超文本系统;
黑板系统。
5、客户/服务器风格的优缺点?
浏览器/服务器风格的优缺点?
客户/服务器风格的优缺点
◎C/S体系结构具有强大的数据操作和事务处理能力,模型思想简单,易于人们理解和接受。
◎系统的客户应用程序和服务器构件分别运行在不同的计算机上,系统中每台服务器都可以适合各构件的要求,这对于硬件和软件的变化显示出极大的适应性和灵活性,而且易于对系统进行扩充和缩小。
◎在C/S体系结构中,系统中的功能构件充分隔离,客户应用程序的开发集中于数据的显示和分析,而数据库服务器的开发则集中于数据的管理,不必在每一个新的应用程序中都要对一个DBMS进行编码。
将大的应用处理任务分布到许多通过网络连接的低成本计算机上,以节约大量费用。
◎开发成本较高
◎客户端程序设计复杂
◎信息内容和形式单一
◎用户界面风格不一,使用繁杂,不利于推广使用
◎软件移植困难
◎软件维护和升级困难
◎新技术不能轻易应用
浏览器/服务器风格的优缺点
◎基于B/S体系结构的软件,系统安装、修改和维护全在服务器端解决。
用户在使用系统时,仅仅需要一个浏览器就可运行全部的模块,真正达到了“零客户端”的功能,很容易在运行时自动升级。
◎B/S体系结构还提供了异种机、异种网、异种应用服务的联机、联网、统一服务的最现实的开放性基础。
◎B/S体系结构缺乏对动态页面的支持能力,没有集成有效的数据库处理功能。
◎B/S体系结构的系统扩展能力差,安全性难以控制。
◎采用B/S体系结构的应用系统,在数据查询等响应速度上,要远远地低于C/S体系结构。
◎B/S体系结构的数据提交一般以页面为单位,数据的动态交互性不强,不利于在线事务处理(OLTP)应用。
6、为什么要使用异构结构?
C/S与B/S混合之内外有别模型?
C/S与B/S混合之查改有别模型?
实例?
为什么要使用异构结构
◎不同的结构有不同的处理能力的强项和弱点,一个系统的体系结构应该根据实际需要进行选择,以解决实际问题。
◎关于软件包、框架、通信以及其他一些体系结构上的问题,目前存在多种标准。
即使在某段时间内某一种标准占统治地位,但变动最终是绝对的。
◎实际工作中,我们总会遇到一些遗留下来的代码,它们仍有效用,但是却与新系统有某种程度上的不协调。
然而在许多场合,将技术与经济综合进行考虑时,总是决定不再重写它们。
◎即使在某一单位中,规定了共享共同的软件包或相互关系的一些标准,仍会存在解释或表示习惯上的不同。
C/S与B/S混合之内外有别模型
C/S与B/S混合之查改有别模型
1、软件体系结构评估方法?
P250-P273
ATAM方法(软件体系结构折中分析方法):
ATAM方法9大步骤:
◎介绍ATAM方法
◎商业动机的介绍
◎软件体系结构介绍
◎确定软件体系结构方案
◎产生质量属性效果树
◎分析软件体系结构方案
◎集体讨论并确定场景的优先级
◎进一步分析软件体系结构方案
◎展示结果
SAAM方法(软件体系结构分析方法):
步骤1:
场景的形成;
步骤2:
描述软件体系结构;
步骤3:
场景的分类和优先级的划分;
步骤4:
间接场景的单独评估;
步骤5:
评估场景交互;
步骤6:
形成总体评估
ARID方法(中间设计的积极评审):
1、介绍ARID方法2、介绍设计3、场景的集体讨论和优先级划分
4、应用场景5、总结
2、软件设计演化发生的原因?
设计和开发好的软件系统不是一成不变的,而是在不断的变化、不断的完善之中。
这个过程就是软件维护的过程,软件设计的演化包含在软件维护的过程中。
因此,可以从软件维护的分类洞察软件设计演化发生的原因。
1改正性维护。
②适应性维护。
③完善性维护。
④预防性维护。
3、什么是逆向工程
软件的逆向工程是完全类似的。
但是,要做逆向工程的程序常常不是竞争对手的,因为要受到法律约束。
公司做逆向工程的程序,一般是自己的程序,有些是在多年以前开发出来的。
这些程序没有规格说明,对它们的了解很模糊。
因此,软件的逆向工程是分析程序,力图在比源代码更高抽象层次上建立程序表示的过程。
逆向工程是设计恢复的过程。
逆向工程工具可以从已存在程序中抽取数据结构、体系结构和程序设计信息。
什么是软件再工程
再工程,也叫做复壮(修理)或再生。
它不仅能从已存在的程序中重新获得设计信息,而且还能使用这些信息来改建或重构现有的系统,以改进它的综合质量。
一般软件人员利用再工程重新实现已存在的程序,同时加进新的功能或改善它的性能。
为什么要实施软件再工程
(1)再工程可帮助软件机构降低软件演化的风险。
(减少风险)
(2)再工程可帮助软件机构补偿软件的投资。
(减少成本)
(3)再工程可使得软件易于进一步变更。
(4)再工程有着广阔的市场。
(5)再工程是推动自动软件维护发展的动力。
软件再工程的风险
过程风险:
如过高的再工程人工成本;
在规定的时间内未达到成本―效益要求;
未从经济上规划再工程的投入;
对再工程项目的人力投入放任自流;
对再工程方案缺少管理的承诺。
人员风险:
软件人员对再工程项目意见不一致,影响工作进展;
程序员工作低效。
应用风险:
再工程项目缺少本应用论域专家的支持;
对源程序中体现的业务知识不熟悉;
再工程项目的工作完成得不够充分。
技术风险:
恢复的信息是无用的或未被充分利用;
大批昂贵的文档被开发出来;
逆向工程得到的成果不可共享;
采用的再工程方法对再工程目标不适合;
缺乏再工程的技术支持。
工具风险:
依靠了并非如同广告宣传那样的工具;
未经过安装的工具。
策略风险:
对整个再工程方案的承诺不成熟;
对暂定的目标无长期的打算;
对程序、数据和工程过程缺乏全面的观点;
无计划地使用再工程工具。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- CS 期末 复习