1、最新软件工程复习1.4 什么是软件危机?它有哪些典型表现?为什么会出现软件危机?软件危机:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。典型表现:(1) 对软件开发成本和进度的估计常常很不准确。(2) 用户对“已完成的”软件系统不满意的现象经常发生。(3) 软件产品的质量往往靠不住。(4) 软件常常是不可维护的。(5) 软件通常没有适当的文档资料。(6) 软件成本在计算机系统总成本中所占的比例逐年上升。(7) 软件开发生产率提高的速度,既跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及深入的趋势。 产生软件危机的原因: 除了软件本身的特点,其原因主要有以下几个方面: (
2、1) 缺乏软件开发的经验和有关软件开发数据的积累,使得开发工作计划很难制定。(2) 软件人员与用户的交流存在障碍,使得获取的需求不充分或存在错误。(3) 软件开发过程不规范。如,没有真正了解用户的需求就开始编程序。(4) 随着软件规模的增大,其复杂性往往会呈指数级升高。需要很多人分工协作,不仅涉及技术问题,更重要的是必须有科学严格的管理。(5) 缺少有效的软件评测手段,提交给用户的软件的质量不能完全保证。1.5 什么是软件工程?软件工程是指导计算机软件开发和维护的工程学科。采用工程的概念、原理、技术和方法来开发和维护软件,把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来
3、,以经济地开发出高质量的软件并有效地维护它,这就是软件工程。1.6 简述软件生存期由哪些主要的阶段组成,每一阶段的主要任务是什么?(1) 问题定义与可行性研究:问题定义必须回答的关键问题是:“要解决的问题是什么”。可行性研究要回答的关键问题是:“在成本和时间的限制条件下能否解决问题?是否值得做?”。(2) 需求分析:这个阶段的任务仍然不是具体地解决客户的问题,而是准确地回答“目标系统必须做什么”这个问题。(3) 软件设计:本阶段要回答的关键问题是“目标系统如何做?”为此,必须在设计阶段中制定设计方案,把已确定的各项需求转换成相应的软件体系结构。结构中的每一组成部分都是意义明确的构件,此即所谓概
4、要设计。进而具体描述每个构件所要完成的工作,为源程序编写打下基础,此即所谓详细设计。(4) 程序编码和单元测试:本阶段要解决的问题是“正确地实现已做的设计”,为此,需要选择合适的编程语言,把软件设计转换成计算机可以接受的程序代码,并对程序结构中的各个模块进行单元测试,然后运用调试的手段排除测试中发现的错误。要求编写出的程序应当是结构良好、清晰易读的,且与设计相一致的。(5) 集成测试和系统测试:集成测试的任务是将已测试过的模块按设计规定的顺序组装起来,在组装的过程中检查程序连接的问题。系统测试的任务是根据需求规格说明的要求,对必须实现的各项需求,逐项进行确认,判定已开发的软件是否符合用户需求,
5、能否交付用户使用。为了更有效地发现系统中的问题,通常这个阶段的工作由开发人员、用户之外的第三者承担。(6) 运行维护:已交付的软件投入正式使用,便进入运行维护阶段。这一阶段可能持续若干年。软件在运行中可能由于多方面的原因,需要对它进行维护。通常有四种类型的维护:改正性维护、适应性维护、完善性维护和预防性维护。1.7 常见的软件生存期模型主要有哪些?每种模型的优缺点是什么?常见的软件生存期模型主要有瀑布模型、快速原型模型、增量模型、螺旋模型、喷泉模型和统一过程。(1) 瀑布模型优点:可强迫开发人员采用规范化的方法;严格地规定了每个阶段必须提交的文档;要求每个阶段交出的所有产品都必须经过质量保证小
6、组的仔细验证。缺点:由于瀑布模型几乎完全依赖于书面的规格说明,很可能导致最终开发出的软件产品不能真正满足用户的需要;用户往往需要等待很长时间才能看到可以运行的程序;适应需求变更的能力比较差。适用范围:瀑布模型只适用于项目开始时需求已确定的情况。 (2) 快速原型模型优点:有助于满足用户的真实需求;原型系统已经通过与用户的交互而得到验证,据此产生的规格说明文档能够正确地描述用户需求。缺点:要求开发人员快速建立原型。适用范围:适用于需求不明确的软件项目。(3) 增量模型优点: 能在较短时间内向用户提交可完成一些基本功能的产品,即从第一个构件交付之日起,用户就能做一些有用的工作。 逐步增加产品的功能
7、可以使用户有较充裕的时间学习和适应新产品,从而减少一个全新的软件可能给用户组织带来的冲击。 项目失败的风险较低,虽然在某些增量构件中可能遇到一些问题,但其他增量构件将能够成功地交付给客户。 优先级最高的服务首先交付,然后再将其他增量构件逐次集成进来。因此,最重要的系统服务将接受最多的测试。缺点: 在把每个新的增量构件集成到现有软件体系结构中时,必须不破坏原来已经开发出的产品。 软件体系结构必须是开放的,即向现有产品中加入新构件的过程必须简单、方便。适用范围:适用于工期紧张、功能可以划分、比较复杂的软件项目。软件工程师必须有较高的技术水平,能够设计出开放的软件体系结构。(4) 螺旋模型优点: 对
8、可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一个重要目标; 减少了过多测试或测试不足所带来的风险; 在螺旋模型中维护只是模型的另一个周期,在维护和开发之间并没有本质区别。缺点:螺旋模型是风险驱动的,因此要求软件开发人员必须具有丰富的风险评估经验和这方面的专门知识,否则将出现真正的风险:当项目实际上正在走向灾难时,开发人员可能还以为一切正常。 适用范围:适用于内部开发的大型软件(开发周期长、比较容易受到社会因素影响的软件项目),软件开发人员具有丰富的风险评估知识和经验。(5) 喷泉模型优点:在开发过程中使用统一的概念和方法,各阶段之间没有明显的界限,容易实现各个
9、开发过程的多次反复迭代,达到了认识的逐步深化,降低了出错的可能性。缺点:由于各个阶段之间的界线不明确,容易造成软件开发过程的无序。适用范围:适用于面向对象的软件开发。 (6) 统一过程优点:提高了团队生产力,在迭代的开发过程、需求管理、基于组件的体系结构、可视化软件建模、验证软件质量及控制软件变更等方面,针对所有关键的开发活动为每个开发成员提供了必要的准则、模板和工具指导,并确保全体成员共享相同的知识基础。它建立了简洁和清晰的过程结构,为开发过程提供了较大的通用性。缺点:RUP只是一个开发过程,并没有涵盖软件过程的全部内容,例如它缺少关于软件运行和支持等方面的内容;此外,它没有支持多项目的开发
10、结构,这在一定程度上降低了在开发组织内大范围实现重用的可能性。适用范围:适用于基于构件的软件开发。2.1 软件工程的三种基本要素是什么,各自的作用是什么?软件工程的三种基本要素是方法、工具和过程。(1) 软件工程方法(method)为建造软件提供技术上的解决方法(“如何做”)。目前使用得最广泛的方法是传统方法(结构化方法)和面向对象方法。(2) 工具为方法的运用提供自动的或半自动的软件支撑环境。(3) 过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。2.2 简述传统方法和面向对象方法的特点。(1) 传统方法的特点传统方法也称为生命周期方法或结构化范型。它
11、采用结构化技术来完成软件开发的各项任务。这种方法学把软件生命周期的全过程依次划分为若干个阶段,然后顺序地逐步完成每个阶段的任务。每一个阶段的开始和结束都有严格的标准,对于任何两个相邻的阶段而言,前一个阶段的结束标准就是后一阶段的开始标准。 传统方法的主要缺点是在适应需求变化方面不够灵活,另外,结构化方法要么面向行为,要么面向数据,缺乏使两者有机结合的机制。(2)面向对象方法的特点面向对象方法把数据和行为看成同等重要,是将数据和对数据的操作紧密地结合起来的方法,这也是面向对象方法与传统方法的重要区别。面向对象方法的出发点和基本原则,是尽量模拟人类习惯的思维方式,使开发软件的方法和过程尽可能接近人
12、类认识问题和解决问题的方法与过程,从而使描述问题的问题空间与其解空间在结构上尽可能一致。对于大型、复杂及交互性比较强的系统,使用面向对象方法更有优势。3.2顶层数据流图或称环境图的作用是什么?顶层数据流图(或称环境图)仅包括一个数据处理过程,也就是要开发的目标系统。其作用如下:(1) 确定系统在其环境中的位置,与系统有联系的外部实体(包括硬件、软件、组织机构及人)有哪些。(2) 通过确定系统的输入和输出与外部实体的关系确定系统的边界,也就是要确定哪些功能或处理属于系统范围之内,哪些属于系统范围之外,需要由其他系统处理或人工处理。3.3 在对数据流图进行分解时需要注意哪些问题?在对数据流图进行分
13、解时,需要注意以下两个问题:(1) 当对数据流图分层细化时必须保持信息连续性,也就是说,当把一个处理分解为一系列处理时,分解前和分解后的输入/输出数据流必须相同。(2) 注意分层细化时对编号的处理方法。3.4 银行存款业务如下:客户到银行柜台存款时,首先填写存款单(包括帐号、姓名、存款金额、存款类型),如果还没有开户,则需要先开户,填写开户单(包括姓名、身份证号、地址、电话、是否留密码)。填写完存款单或开户单后,交给营业员,营业员将存款单或开户单信息输入计算机,系统记录开户信息或存款单信息,如果是开户并选择留密码,则需要客户输入密码。最后印出开户单或存款单给用户。请画出银行存款业务的分层数据流
14、图(至少画出两层)。(1) 识别外部实体及输入输出数据流 外部实体:储户、业务员。输入数据流:存款单,开户单,密码。可以将存款单和开户单抽象为事务。输出数据流:存款单,开户单。(2) 顶层数据流图(3) 一层数据流图对银行储蓄系统进行分解,从大的方面分解为接收事务、处理开户、处理存款三部分,得到一层数据流图。 (4) 二层数据流图对 “处理存款”及“处理开户”进行进一步分解,得到二层数据流图,即处理存款的数据流图和处理开户的数据流图。 处理存款的数据流图处理开户的数据流图3.5 按照以下描述,画出ER图。一本教材由许多章组成,每一章包含许多节、小结和习题组成,章和节都具有标题和序号属性。ER图
15、如下:4.13 对于图4-49所示的流程图,试分别用N-S图和PAD表示之。 图4-49 流程图对应的N-S图如下: 对应的PAD如下:4.14 图4-50所示的流程图完成的功能是使用二分查找方法在table数组中找出值为item的数是否存在。(1) 判断此算法是否是结构化的,说明理由。(2) 若算法是非结构化的,设计一个等价的结构化算法,并用N-S图表示。图4-50 二分查找算法的流程图(1) 不是结构化的,最上面的循环有两个出口,最下面的分支有三个入口。(2) 等价的结构化算法如下:或者或者5.如何提高表达式的可读性?1.注意运算符的优先级,并使用括号明确表达式的操作顺序,避免使用默认优先
16、级。2.避免使用不易理解的数字,用有意义的标识符来代替。6.5 假设汽车的车牌号可由车主人在规定范围内自选,若其规定为:(1) 车牌上应有7个字符; (2) 为首的字符限定为汉字“京”;(3) 第2个字符可任选一字母(AZ);(4) 第37个字符可选任意数字。请为相关的处理程序采用等价类划分方法设计等价类表及相应的测试用例。等价类表输入数据有效等价类无效等价类字符个数 7个(1)06个(2),7个(3)首字符“京”(4)非“京”(5)第2个字符字母(6)非字母(7)第37个字符数字(8)非数字(9)测试用例如下:1)京H87774 (1),(4),(6),(8)2)京H8777 (2)3)京H
17、877745 (3) 4)冀H87774 (5)5)京987774 (7)6)京BA7774 (9) 6.6 比较测试与测试,说明其异同。测试与测试都是集成测试之后所进行的测试,都属于系统测试。所不同的是,测试是在开发环境中所做的测试,主要由开发方人员进行。而测试则是在用户实际工作环境中所做的测试,不受开发人员的干预。6.4说明白盒与黑河的区别,做了其一还需做另一个?黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要求。白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否以经过检查。 2 不需要7.1 uml中有哪几种图
18、?每种图的作用?用例 类 交互 状态 活动 实现图(6种)还有一点就是公司在“碧芝自制饰品店”内设立了一个完全的弹性价格空间:选择饰珠的种类和多少是由顾客自己掌握,所以消费者可以根据自己的消费能力进行取舍;此外由于是顾客自己制作,所以从原料到成品的附加值就可以自己享用。用例 :描述参与者所理解的系统功能类:显示类,类的内部结构以及其他类的联系附件(二):交互:是为用例、用例组或局部用例开发的(它包括顺序图和协作图)状态图:描述一个特定的所有可能的状态以及引起状态装换的事件在现代文化影响下,当今大学生对新鲜事物是最为敏感的群体,他们最渴望为社会主流承认又最喜欢标新立异,他们追随时尚,同时也在制造
19、时尚。“DIY自制饰品”已成为一种时尚的生活方式和态度。在“DIY自制饰品”过程中实现自己的个性化追求,这在年轻的学生一代中尤为突出。“DIY自制饰品”的形式多种多样,对于动手能力强的学生来说更受欢迎。活动图: 用来捕捉用例的活动,用框图的方式显示动作及其结果实现: 显示系统构建及其结构、相互依赖以及在计算机节点上如何部署。8.1比较面向对象的分析方法和面向数据流的分析方法,阐述它们各自的特点。面向对象的分析方法使用用例模型来表示用户的功能需求,用例模型相当于功能模型,在对用例模型进行细化的过程中,也伴随着对功能的分解。但面向对象的分析方法并不是以功能分解为核心,在获取并分析用户的功能需求之后
20、,重点以类和对象为核心,建立对象模型,交互模型也是围绕对象模型进行的。面向数据流的分析方法是从建立顶层数据流图(环境图)开始,之后逐层对加工进行分解。面向数据流的分析方法是以功能分解为核心的。(三)大学生购买消费DIY手工艺品的特点分析8.2 面向对象分析需要建立的三个模型是什么?面向对象分析需要建立的3个模型是:由用例和场景表示的功能模型(用例模型);用类和对象表示的静态模型(对象模型);由状态图和顺序图表示的动态模型(交互模型)。夏日的街头,吊带装、露背装、一步裙、迷你裙五彩缤纷、争妍斗艳。爱美的女孩们不仅在服饰搭配上费尽心机,饰品的选择也十分讲究。可惜在商店里买的项链、手链、手机挂坠等往
21、往样式平淡无奇,还容易出现雷同现象。8.3 用例建模的主要步骤是什么? 用例建模的主要步骤如下:(1) (2) 400-500元 13 26%确定业务参与者可以是与系统有交互的外部硬件、软件、组织、人等。(3) 确定业务需求用例参与者需要系统提供的完整功能。(4) (5) 大学生购买力有限,即决定了要求商品能价廉物美,但更注重的还是在购买过程中对精神文化爱好的追求,满足心理需求。创建用例图标识参与者与用例之间、用例与用例之间的关系。在上海, 随着轨道交通的发展,地铁商铺应运而生,并且在重要的商业圈已经形成一定的气候,投资经营地铁商铺逐渐成为一大热门。在人民广场地下“的美”购物中心,有一家DIY
22、自制饰品店-“碧芝自制饰品店”。8.5 用例与用例之间的关系主要有哪两种?其区别是什么?与此同时,上海市工商行政管理局也对大学生创业采取了政策倾斜:凡高校毕业生从事个体经营的,自批准经营日起,年内免交登记注册费、个体户管理费、集贸市场管理费、经济合同鉴证费、经济合同示范文本工本费等,但此项优惠不适用于建筑、娱乐和广告等行业。 用例之间的关系主要有包含(也称使用)和扩展。包含表示一个用例所执行的功能中总是包括被包含用例的功能;扩展是指一个用例的执行可能需要由其他用例的功能来扩展,扩展联系可用于对期望或可选的行为建模,但其主要用途是使基本用例的功能不依赖于扩展用例。8.6 对于复杂的系统,其对象模
23、型应该由哪五个层次组成?对于复杂的系统,对象模型应该由下述5个层次组成:主题层(也称为范畴层)、类-对象层、结构层、属性层和服务层,如图所示。在上海, 随着轨道交通的发展,地铁商铺应运而生,并且在重要商圈已经形成一定的气候,投资经营地铁商铺逐渐为一大热门。在人民广场地下的迪美购物中心,有一家DIY自制饰品店-“碧芝自制饰品店”对象模型的五个层次8.7 解释关联类的作用,在什么时候需要使用关联类?关联类的作用是描述关联的属性。在关联关系比较简单的情况下,关联关系的语义用关联关系的名字来概括。但在某些情况下,需要对关联关系的语义做详细的定义、存储和访问,为此可以建立关联类(association class)。8.8 按照以下描述,画出UML类图:一本教材由许多章组成,每一章包含许多节、小结和习题组成,章和节都具有标题和序号属性。UML类图如下:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1