软件工程总结归纳

1.什么是软件工程?软件工程的目的是什么?

答:软件工程是将系统的、规范的、可度量的工程化方法应用于软件开发、运行和维护的全过程。   

        目的:是在给定成本、进度的前提下,开发出具有可修改性、有效性、可靠性、可理解性、可重用性、可适应性、可移植性、可追踪性和可互操作性并满足用户需求的软件产品。

2.什么是软件危机?软件危机的表现有哪些?产生的原因是什么?

答:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。

       表现在: 

            (1) 对于软件开发的成本和进度的估计很不准确。

            (2) 开发的软件产品不能完全满足用户要求,用户对已完成的软件系统不满意的现象常常发生。

            (3) 开发的软件可靠性差。

           (4) 软件通常没有适当的文档。

           (5) 软件的可维护性差。

           (6) 软件开发生产率提高的速度,无远远跟不上计算机应用普及深入的趋势。

       原因:

          (1) 软件的规模愈发庞大;

          (2) 软件开发的管理困难。

          (3) 软件本身的独有特点确实给开发和维护造成一些客观困难。

          (4) 软件开发和维护中千金错误认识和方法的形成可以归结与计算机发展早期软件开发的个体化特点。

          (5) 软件开发技术落后。

          (6) 生产方式落后。

          (7) 开发工具落后,生产率提高缓慢。


3.要开发XX系统,能否通过充分的调查做到完全了解用户需求,写出正确的,非常符合用户的需求分析报告,并且在以后的软件开发过程中没有需求改变的事情发生?

答:不能。因为用户可能在开始时提出一些功能需求,每当对系统有一定的理解后又会提出一些需求,以后随着理解的深入而不断提出新的需求,用户需求变动是一个极为普遍的问题,即使是部分变动,也往往会影响需求分析的全部,导致不一致性和不完备性。

 

4.说明软件开发的生命周期模型,软件开发的几个生命周期,每个周期里的主要任务是什么?

答:软件开发的生命周期模型是描述软件开发过程中各种活动如何执行的模型。

        软件开发的生命周期:

                    一个软件从提出开发要求开始直到该软件报废为止的整个时期,具体分为以下四个时期:

                  (1)软件分析时期;

                             任务:确定软件项目的目标,软件应具备的功能和性能,构造软件的逻辑模型,并制定验收标准。在此期间,要进行可行性论证,并做出成本估计和经费预算,制定进度安排。进行可行性研究和项目开发计划,需求分析。

                  (2)软件设计时期;

                            任务:a.设计软件的总体结构;

                               b.设计软件具体模块的实现算法;

                               c.软件设计结束之前,也要进行有关评审,评审通过后才能进入编码时期。

                 (3)编码与测试时期;

                           任务:组织程序员将高驻地的软件“翻译”成计算机可以正确运行的程序;并且要经过按照软件分析中提出需求要求和验收标准进行严格的测试和审查。根据具体软件的特点,决定是否划分成一些阶段,如编码、单元测试、集成测试、验收测试等等。

                  (4)运行与维护时期。

                           任务:软件运行过程中可能由于各方面的原因,需要对它进行修改。

 

5.什么是瀑布模型?什么是原型模型?请比较一下瀑布模型和原型模型的优缺点?

 答:瀑布模型是将软件生命周期各活动规定为依线性顺序联接的若干阶段的模型。

   原型模型是借助一些软件开发工具或环境尽可能快地构造一个实际系统的简化模型。

   瀑布模型的优点:严格按照生命周期的各个阶段来进行开发,强调了每一阶段的严格性。这样就能解决在开发阶段后期修正不完善的需求说明将花费巨大的费用的问题。在消除非结构化软件、降低软件的复杂性、促进软件开发工程化方面起了很大作用。缺点:它是一种理想的线性开发模式,缺乏灵活性,特别是无法解决软件需求不明确或不准确的问题。

   原型模型则是利用原型法技术能够快速实现系统的初步模型,供开发人员和用户进行交流,以便较准确获得用户的需求,不断使原型逐步完善,可以大大避免在瀑布模型冗长的开发过程中看不见产品雏形的现象。

 

6.如果要开发一个xx系统,具备哪些条件,你会选择用瀑布模型进行开发?会选择原型模型?

 答:如果要开发的系统功能和性能明确、完整、无重大变化,例如编译系统、数据库管理系统和操作系系统等,则会选择瀑布模型;采用原型模型适合如下条件的软件开发:

               1.有快速建立系统原型系统的软件工具与环境。

               2.那些不能预先确切定义需求的软件开发。3.那些项目组成成员不能很好协同配合、交流或通信上存在困难的情况。

 

7.可行性研究的任务是什么?主要是解决哪几个方面的问题?

  答:可行性研究的任务是对问题的定义,要初步确定问题的规模和目标,问题定义后,要导出系统的逻辑模型。然后从系统的逻辑模型出发,选择若干供选择的主要系统方案。主要解决的4个方面的问题:

           1.技术可行性研究;

           2.经济可行性研究;

           3.法律可行性研究;

           4.开发方案选择性研究。

 

8.需求分析的目的是什么?由那些部分组成,主要任务是什么?你认为做好需求分析需要具备那些素质?

 答:需求分析的目的是开发人员要进行细致的调查分析,准确理解用户的要求,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式功能规约的过程。确定系统要完成哪些工作,也就是对系统提出完整、准确、清晰、具体的要求。

主要任务:(1)问题明确定义;

                    (2)导出软件的逻辑模型;

                    (3)编写文档;

需要具备素质:性格开朗,善于与人交流,具有团队精神,做事耐心细致,负责,善于分析,拥有良好的大局观,具有较强的理解能力,能够将各方面的需求系统组合在一起,具有较强编写文档的能力,能够协调好开发人员和用户之间的各种需求矛盾。

 

9.为什么需求分析很难做准确?说出你的理由。

 答:(1)需求易变性。用户在开始时提出一些功能需求,当对系统有一定的理解后,会提出一些需求。以后随着理解的深入而不断提出新的需求。用户需求的变动是一个极为普遍的问题,即使是部分变动,也往往会影响到需求分析的全部,导致不一对待性和不完备性。

            (2)问题的复杂性;

            (3)交流障碍。进行需求分析的人员具备不同的背景知识,处于不同的角度,扮演不同的角色,造成了相互之间交流的困难。

            (4)不完备性和不一致性。用户各类人员对于系统的要求所处的角度不一样,对问题的陈述往往是不完备的,其各方面的需求还可能存在着矛盾。

 

10.请举例说明什么是数据字典?数据字典在软件工程开发中的作用是什么?

 答:数据字典是关于数据的信息的集合,是对数据流图中包含的所有元素的定义的集合。它是数据条目,数据存储条目、数据项条目和基本加工条目的汇集。

例子:

数据流名称:订单

别名:无

简述:旅客订票写的项目

来源:旅客

去向:加工1“验订单”

数据流量:2000份/每周

组成:编号+订票日期+旅客编号+地址+电话+银行帐号+预定日期+目的地+数量

其中数据流量指单位时间内的传输次数。

作用:用来定义数据流图中的各个成分的具体含义的,它以一种正确的,无二义的说明方式为系统分析,设计及运行维护提供了有关元素的一致定义和详细的描述。它和数据流图共同构成系统的逻辑模型,是需求说明书的主要组成部分。


11.请介绍一下发现对象的原则以及一些方法,并将这些方法与结构化程序开发中所使用的相应工具进行比较。比较一下结构化方法和面向对象方法在需求阶段的相同和不同点。

答:发现对象的原则为正确地运用抽象原则,先要舍弃与系统责任无关的事物,保留与系统责任有关的事物。其次,要舍弃与系统责任有关的事物中与系统责任无关的特征。考虑将问题域中的事物映射为什么对象以及如何对这些对象进行分类的问题,清晰而简练的表达问题域并使系统开销少。

结构化程序开发使用的工具为数据流图,数据字典

 

比较一下结构化方法和面向对象方法在需求阶段的相同和不同点:

结构化分析=数据流图+数据处理+数据存储+端点+处理说明+数据字典

结构化分析方法是一种从问题空间到某种表示的映射方法,由数据流图表示,面向过程,自顶而下,结构清晰的系统结构

面向对象=类和对象+结构与连接+继承+封装+消息通信

OOA的对象是对问题域中事物的完整映射,包括事物的数据特征和行为特征。

 

12.试举例说明继承和多继承的概念。

答:   继承:特殊类的对象拥有其一般类的全部属性与服务,就是称作特殊类对一般类的继承。

例如:有了树这个一般类,那么在考虑苹果树这个类时发现,苹果树是树,它作为树这个类的特殊类,继承了树这个类的属性和服务。

多继承:一个类可以是多个一般类的特殊类,它从多个一般类中继承了属性和服务,这种继承模式就叫多继承。

例如:有了轮船和客运工具两个一般类,在考虑客轮这个类时就可发现,客轮既是一种轮船,又是一种客运工具。所以客轮同时作为轮船和客运工具这两个类的特殊类,它同时继承了轮船和客运工具这两个类的属性和服务。

 

13.请举例说明多态性的概念。

答:多态性:对象的多态性是指在一般类中定义的属性或服务被特殊类继承之后,可以具有不同的数据类型或表现出不同的行为。

例如:在一般类“几何图形”中定义了一个服务“绘图”,但并不确定执行时到底画了一个什么图形。特殊类“椭圆”和“多边形”都继承了几何图形类的绘图服务,但其功能却不同:一个椭圆,一个是画出一个多边形。在多边形类更下层的一般类“矩形”中绘图服务又可以画出一个矩形。这样,当系统的其余部分请求画出任何一种几何图形时,消息中给出的服务名同样都是“绘图”,而椭圆、多边形、矩形等类的对象接受到这个消息时却各自执行不同的绘图算法。

 

14.有人说:软件项目估算是一门艺术,而非一门科学。你如何理解这句话?

答:软件项目估算是有效的软件项目管理必不可少的,由于软件开发的特殊性,开发成本的估算不是一件简单的事,往往不到最后时刻,是很难得到准确的科学估算。常常会遇到以下的一些问题:软件项目人员在对经理、客户、销售人员所建议的预算及进度的现实性提出疑问时缺乏确凿的证据,其次就是系统分析员在系统分析阶段进行实际的软硬件权衡分析时没有可靠的依据,再次就是项目经理在确定各个阶段及活动需要的时间和工作量时没有可靠的依据。因此,软件项目估算在软件开发过程所具有的不确定性,表现出软件项目估算永远不会是一门精确的科学,估算是一门艺术。

 

15.什么是类?什么是对象?举例说明类之间的关系有哪些?

答:类:类是具有相同属性和服务的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述,其内部包括属性和服务两个主要部分。

类之间的关系有四种:继承(比如树与苹果树的关系),关联(人和猫的关系),聚合(黑豹乐队和窦威的关系),组合(pc机和显示器的关系)。


 

16.什么叫整体-部分关系?什么叫一般-特殊关系?图示说明。

答:整体-部分结构是把一组具有整体-部分关系的类组织在一起的结构。

  一般-特殊关系是由一组具有一般-特殊关系的类所组成的结构。


17.请举例说明三条评价人机界面的设计准则

答:设计准则如下:1.一致性;2.使用简便;3.启发性;4.减少重复的输入;5.减少人脑记忆的负担;6.容错性;7.及时反馈。


18..软件质量度量存在哪些质量标准?试说明评价软件质量的五个标准。

答:功能性;可靠性;可用性;可维护性;可移植性。

 

19.如果你是软件开发的项目经理,请举出你可以从哪些方面去保证软件质量?至少 举出四个方面。

答:1.通过适当的监控系统及其开发过程来保证软件质量;

        2.确保软件及其标准与以定的标准和规格要求完全一致;

        3.确保能及时发现产品、过程和标准的任何不足并提醒管理者注意,以便及时弥补。

        4.确保项目组制定的计划、标准和规格适合项目组需要,同时满足评审和审计需要。

 

20.什么是主机-仿真终端体系结构?什么是文件共享结构?什么是客户-服务器结构?

答:主机—仿真终端体系结构:以一台计算机为主机,其他计算机只作为它的远程仿真终端。

   文件共享结构:系统功能分布到网络的各个节点上,数据存放在一个被称作文件服务器的主机上。客户—服务器:把分布在不同节点上的系统组成部分之间的关系处理为请求服务和提供服务的关系,提供服务的计算机称作服务器,请求服务的计算机称作客户机。在这种体系结构中,客户端向服务器发出服务请求,由服务器提供的服务就地完成所要求的处理,然后只把处理结果通知请求者。


21.请比较一下通常情况下,B/S模式和C/S模式的优缺点。

答:B/S模式:浏览器和服务器结构

优点:1.B/S架构软件,维护和开发方式简单。

            2.成本较低,选择更多;

缺点:应用服务器运行负荷较重

C/S模式:客户机和服务器结构

优点:运行效率高,开放性强,可扩充性好,应用服务器运行负荷较轻。

缺点:高昂的维护成本而且投资大

 

22.对象设计必须遵循的步骤。

答:1.组合三钟模型以获取类上的操作;

        2.实现操作的设计算法;

        3.优化数据的访问路径;

        4.实现外部交互式的控制;

        5.调整类结构提高继承性;

        6.设计关联;

        7.确定对象表示;

        8.把类和关联封装成模块。


23.白盒测试的原理是什么?黑盒测试呢?熟悉白盒测试与黑盒测试的具体实例。

答:白盒测试:把测试对象看作一个透明的盒子,测试人员能了解程序的内容结构和处理过程,以检查处理过程为目的,对程序中尽可能多的逻辑路径进行测试,在所有的点检验内部控制结构和数据结构是否和预期相同。

黑盒测试:该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的界面上进行测试,用来证实软件功能的可操作性,检查程序是否满足功能要求,是否能很好的接收数据,并产生正确的输出。


24.举例说明白盒测试不能替代黑盒测试。

答:白盒测试主要是想对程序模块进行如下检查:1.对程序模块的所有独立的执行路径至少测试一遍;2.对所有的逻辑判定,取真与取假的两种情况都能至少测一遍;3.在循环的边界和运行的界限内执行循环体;4.测试内部数据结构的有效性。

   黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的,注重于测试软件的功能需求,主要试图发现下列几类错误:功能不正确或遗漏,界面错误,数据库访问错误,性能错误,初始话和终止错误等。


25.从目的、任务、测试用例的设计思路等方面比较单元测试和集成测试的区别。

答:单元测试:又称模块测试,是针对软件设计的最小单位—程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。

单元测试主要针对模块的5个基本特征进行测试:1.模块接口;2.局部数据结构;3.重要的执行路径;4.错误处理;6.边界条件。测试方法:需要为被测模块设计驱动模块和桩模块。

集成测试:集成测试是指在单元测试的基础上,将所有模块按照设计要求组装成一个完整的系统而进行的测试,故也称组装测试和联合测试。

集成测试方法:主要有自底向上测试和自顶向下测试。


26.软件维护分为哪些类别?各自有什么特点?

答:1.非结构化维护:其过程大致为阅读源代码—定位错误—重编程序—回归测试

结构化维护:其过程为—评价设计—计划途径—修改设计—重编程序—回归测试。


27.请问一个合理的软件维护流程应该是怎么样的?

答:(1)制定维护申请报告;

        (2)审查申请报告并批准。

         (3)进行维护并做详细。

         (4)复审。


28.如果你要应聘测试经理的职位,你觉得测试经理需要安排技术方面的哪些工作?

答:安排的测试方法可以考虑:

1.在软件产品交付使用之前要经过单元测试、集成测试、确认测试和系统测试。

2.静态测试

采用人工检测和计算机辅助静态分析的手段对程序进行检测,方法如下:人工测试,计算机辅助静态分析。

3.动态测试

黑盒测试和白盒测试。

另外对测试工作总体负责,其主要职责如下:1.参与项目开发各个阶段的评审工作,以使提早发现问题;2.根据部门命令及项目需要安排编写测试相关文档并就某些特定文档提出评审;3.组织各级测试工作人员对测试工作进行准备;4.分配测试任务工作任务,并且协调好;5.参与测试中发现重大问题的讨论;6.审查测试人员日志,监督其工作;6.组织并参与测试后的讨论工作,使部门测试水平不断提高。


29.请举三个例子例说明在软件项目管理中,需要注意哪些风险?你会如何预防这些风险?

答:包括三方面的风险:项目风险、技术风险、商业风险

项目风险:潜在的预算、进度、个人、资源用户和需求方面的问题以及它们对软件项目的影响。

技术风险:潜在的设计、实现、接口、检验、和维护方面的问题。

商业风险:市场风险、预算风险等。

预防风险:1.与现在在职的人员协商,确定人员流动的原因

          2.在项目开始之前,把缓解这些原因的工作列入以拟定的计划中

          3.当项目启动时,做好人员流动会出现的准备。采取一些办法以确保人员一旦离开时项目仍能继续。

          4.建立项目组,以使大家都了解有关开发活动的信息

          5.制定文档标准,并建立一种机制以保证文档能够及时产生

          6.对所有工作组织细致的评审

          7.对每一个关键性的技术人员,要培养后备人员。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值