一.软件工程师的软件工程知识技能水平高低主要体现在哪些方面
1、软件工程师
软件工程师主要是指从事软件开发相关工作的人员,不仅包括通常意义上的软件设计人员,还包括软件架构人员、软件工程管理人员、程序员等其他与软件开发相关的工作人员。软件工程师需要掌握较为全面的计算机技术,除了基础的编程语言、数据库技术等,工程师还要掌握诸多如JAVASCRIPT、AJAX、HIBERNATE、SPRING 等前沿技术。
软件工程师是强调实际的技术水平和解决问题的职业,他们除了重点关注项目的经验和学习知识的能力之外,还要学会利用软件工程专业知识来解决问题。根据工程师在公司岗位的不同,他们的职业要求也有所不同
2. 软件工程师的知识技能包含三大类基础知识,计算机基础、数学基础和工程基础:所以软件工程师的软件工程知识技能水平的高低可以体现在这几个方面。
第一:具有扎实的计算机专业知识:此外精通高等数学、离散数学、电子学、编程语言、数据结构等课程。
1)基础编程语言,编程语言是软件工程师必备的技能,不同方向的开发需要使用到不同的编程语言,比如Web开发熟练掌握ASP,NET等编程语言,而大数据可能会使用Scala等语言,而物联网开发可能会使用到C、C++等编程语言。通常来说,软件工程师往往需要掌握多门编程语言。
2)算法。算法是软件工程师的重点知识技能,算法的掌握情况往往能够决定软件工程师的成长高度。
3)数据库。信息是以数据为中心的,因此与数据库的交互在所有软件中都是必不可少的,了解数据库操作和编程是软件工程师需要具备的基本素质之一。目前常用的数据库软件有Oracle数据库和SQL Server等。
4)程序员的基本功。打字输入速度、快捷键使用等 ;代码规范和风格,如缩进、命名、注释等;能够熟练操作的工具集VSCode/Vim、正则表达式等。
第二:累积软件开发相关的知识,提高技术技能(如对具体技术的掌握,动手能力)。例如对Java、C/C++、C#的掌握,诊断和提高效能的技术,对设备驱动程序、内核调试器的掌握,对某一开发平台的掌握。
第三:较强的英语阅读和写作能力。程序世界的主导语言是英文,编写程序开发文档和开发工具帮助文件离不开英文,了解业界的最新动向、阅读技术文章离不开英 文,与编程高手交流、发布帮助请求同样也离不开英文。作为基础软件工程师,具有一定的英语基础对于提升自身的学习和工作能力极有帮助。
第四: 自觉的规范意识和团队精神。随着软件项目规模越来越大,仅仅依靠个人力量已经无法完成工作,因此,现代软件企业越来越重视团队精神。一般来讲,软件企业中的程序员可以分为两种,一种是 " 游击队员 " ,他们可能对编程工具很熟,能力很强,编写的程序简洁高效,却缺乏规范和合作的观念;另一种程序员个人能 力不一定很强,但程序较为规范,合作意识良好。第二种人更适合现代软件企业发展的潮流。对于基础软件工程师来说,他们在企业中的角色决定了他们必须具有良 好的规范意识和团队精神。
第五:掌握前沿技术。不同开发领域需要掌握不同的知识结构,比如大数据软件工程师往往需要掌握Hadoop、Spark平台的使用,而Web开发工程师往往还需要掌握前后端开发技术,包括一系列Web开发框架的使用等等。
第六:对通用的软件设计思想和软件工程思想的理解。例如,IBM 提出了软件开发思想的4项要点——迭代开发、以系统架构为中心、持续的质量保证以及管理变更和资产。理解统一过程、敏捷开发、使用统一建模语言等。
第七:求知欲和进取心。软件业是一个不断变化和不断创新的行业,面对层出不穷的新技术,软件人才的求知欲和进取心就显得尤为重要,它是在这个激烈竞争的行业中立足的基本条件。软件工程师应具有较强的学习总结能力、需求理解能力以及对新技术的敏感性。
第八:提升职业技能。包括自我管理能力,表达和交流的能力,与人合作的能力,安质按量完成任务的执行力。文档编写。熟练的技术文档编写能力,熟练使用Rose,Power Design,Visio等建模软件,有一定的架构设计能力;语言表达能力和沟通能力、工程经济分析能力以及心理素质。
高级软件工程期末考试题目:
一.选择题:
1、软件工程的基本要素包括方法,工具和(A)
A、过程 B、硬件 C、软件系统 D、人员
2、面向对象的开发方法中,(B)是站主导地位的,由国际对象管理组织 OMG 批准的建模语言。
A、Booch 方法 B、UML C、OMT 方法 D、Coad 方法
3、为了提高模块的独立性,模块内部最好是(C)
A、逻辑内聚 B、时间内聚 C、功能内聚 D、通信内聚
4、软件测试是为了(B)而执行程序的过程。
A、纠正错误 B、发现错误 C、避免错误 D、证明正确
5、有一个计算类型的程序,它的输入量只有一个 X,其范围是[-1.0,1.0],现在从输入 角度考虑一组测试用例,-1.002,-1.0,1.0,1.003,设计这组测试用例的方法是(C)
A、条件覆盖法 B、等价分类法 C、边界值分析法 D、条件测试法
6、下面不属于黑盒测试的是(D)
A、等价划分 B、边界值分析 C、错误推测 D、条件测试
7、下面模型属于成本估算方法的是(A)
A、COCOMO 模型 B、McCall 模型 C、McCable 模型 D、代码行技术
8、软件详细设计的主要任务是确定每一个模块的(A)
A、算法和使用的数据结构 B、外部接口 C、功能 D、软件系统的功能
9、在软件质量因素中,因硬件故障,输入的数据元素或操作错误等意外环境下,系统能做出适当响应能力称为软件的(D) A、方便性 B、简洁性 C、安全性 D、健壮性
10、能力成熟度模型可以(A)
A、使软件组织建立一个有规律的,成熟的软件过程 B、使开发出来的软件没有错误 C、使软件开发人员掌握更多的技术 D、避免开发人员跳槽
二.判断题
1、综合测试阶段由程序的编写者完成测试工作。
2、软件生命周期中时间最长的是需求分析阶段。
3、对瀑布模型来说,需求分析阶段出错对其影响最大。
4、软件工程的出现主要由于软件危机的出现。
5、模块的高内聚往往意味着模块间松散的耦合。
6、确认测试中最为测试的依据是设计说明书。
7、基线是通过复审了的软件配置项,当采用基线发生错误时,可以返回到最近和恰当的基线上。
8、测试计划,测试用例和有关的分析报告一般都不用长期保存。
9、适应性维护是改进软件未来的可维护性和可靠性。
10、同一用户界面中,所有的菜单选择,数据显示应该采用不同的形式和风格
答案解析:1-5:FFTTT 6-10:FTFFF
三.名词解释
软件工程(Software Engineering):是把系统的、有序的、可量量化的⽅方法应⽤用到软件的开发、运营 和维护上的过程。软件工程的目标是创造出足够好的软件。
软件开发流程:人们在开发、运营、维护软件的过程中有很 多技术、做法、习惯和思想体系。软件工程把这些相关的技术和过程统⼀一到⼀一个体系中,叫“软件开发流程”。
软件开发流程的目的:是为了了提⾼软件开发、运营、维护的效率,并提高软件的质量量⽤用户满意度、可靠性和软件的可维护性。
软件生命周期(Software Life Cycle):概括的说,软件生命周期由软件定义、软件开发和运行维护(也称为软件维护)3个时期组成,每个时期又进一步划分为若干个阶段。按照在软件生命周期全过程中应完成的任务的性质,在概念上可以把软件生命周期划分为问题定义、可行性研究、需求分析、总体设计、详细设计、偏弱和单元测试、综合测试以及运行维护共8个阶段。实际从事软件开发工作时,软件规模、种类、开发环境及使用的技术方法等因素,都影响阶段的划分。
重构(Refactoring):对软件内部结构的一种调整,目的是在不改变软件可观察行为的前提下,提高其可理解性,降低其修改成本。常见的重构现象为重复代码。
功能内聚(Functional cohesion): 内聚(Cohesion)是一个模块内部各成分之间相关联程度的度量。耦合(Coupling)是模块之间依赖程度的度量。内聚和耦合是密切相关的,与其它模块存在强耦合的模块通常意味着弱内聚,而强内聚的模块通常意味着与其它模块之间存在弱耦合。模块设计追求高内聚,低耦合。
功能内聚:功能内聚是内聚度最高的一种模块类型。如果模块仅完成一个单一的功能,且该模块的所有部分是实现这一功能所必须的,没有多余的语句,则该模块为功能内聚。功能内聚模块的结构紧凑、界面清晰,易于理解和维护,因而可靠性强;又由于其功能单一,故复用率高。所以它是模块划分时应注意追求的一种模块类型。
设计模式:设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
模块化:在结构化方法中,模块是一个功能单位,因此模块可大可小。它可以被理解为所建软件系 统中的一个子程序系统,也可以是子程序系统内一个涉及多项任务的功能程序块,并可以是功 能程序块内的一个程序单元,例如函数、过程。也就是说,模块实际上体现出了系统所具有的 功能层次结构。 模块可以使软件系统按照其功能组成进行分解,而通过对软件系统进行分解,则可以使一 些大的复杂的软件问题分解成诸多小的简单的软件问题。从软件开发的角度来看,这必然有利 于软件问题的有效解决。
观察者模式:观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
可修改性:指系统或软件的能够快速地以较高的性价比对系统进行变更的能力。比如说:对于一个网站,我们要修改它某一板块的UI界面,当我们对界面进行修改时是否会引起对另一个UI模块的影响,是否会引起后台控制,业务逻辑代码的变更,是否会引起整个网站的崩溃,这体现了一个网站的整个架构的是否具备可修改性。
四.简答:
1. 模块化定义及原则
定义:模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。
原则:⑴力求以少量的模块组成尽可能多的产品,并在满足要求的基础上使产品精度高、性能稳定、结构简单、成本低廉,模块间的联系尽可能简单;⑵模块的系列化,其目的在于用有限的产品品种和规格来最大限度又经济合理地满足用户的要求。
2.用例建模
用例是应用程序开发中的一个关键技术,主要用来捕获系统的高层次(High Level)用户功能性需求。这个绕口的描述主要是因为用例不能用于捕获非功能性需求,也不能用于捕获内部的功能性需求。试图这样做将会造成灾难。首先因为用例是一个非正式的和不精确的建模技术。其次用例的另一个用途是建立我们系统的基本结构,它不仅是定义需求的单位,而且是估计我们的工作量的单位。
3.领域建模
领域模型(domain model)是对领域内的概念类或现实世界中对象的可视化表示。领域模型也成为概念模型、领域对象模型和分析对象模型。
领域模型的原因:
领域建模可以降低软件和现实世界之间的差异,用真实的业务概念划分职责,目的是实现一个可以高效低成本维护的可持续发展的软件系统。
从领域模型推导到系统实现是一套引导思考的方式,也是一套科学的开发流程。其核心目的在于提供了系统设计的“指导方针”。领域模型必须站在用户需求和业务发展的角度上,既可以用来同客户沟通验证需求,又可以避免模型因实现的考量而带偏(实现成本、遗留系统)
软件工程师需要在不同的领域或不同的项目中工作,来自不同的背景,这可能会影响他们对应用程序域的感知。他们需要领域知识来开发系统
4.用例建模的步骤
1)从需求中派生(抽象)用例
2)描述每个用例何时何地开始,何时结束(高级用例)
3)使用用例图根据子系统/方面描述用例上下文
4)如果需要,关联用例和参与者
5)逐步指定参与者和系统如何交互以完成业务任务(对于参与者)(扩展用例)。
步骤1)-4)在计划阶段执行。第5步在每个增量期间执行。
5.软件危机及应对策略
软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。软件危机概括的说,包括下述两方面的问题:如何开发软件,以满足对软件日益增长的要求;如何维护数量不断膨胀的已有软件。具体说,有以下表现:
(1)对软件开发成本和进度的估计常常很不准确
(2)用户对“已完成”的软件系统不满意的现象经常发生
(3)软件产品的质量往往靠不住
(4)软件常常是不可维护的
(5)软件通常没有适当的文档资料
(6)软件成本在计算机系统总成本中所占的比例逐年上升
(7)软件开发生产率体提高的速度,远远跟不上计算机应用迅速普及深入的趋势
应对策略:
(1)首先应该对计算机软件有一个正确的认识
(2)更重要的是,必须充分认识到软件开发不是某种个体劳动的神秘技巧,而应该是一种组织良好,管理严密,各类人员协调配合,共同完成的工程项目
(3)应推广充实实践中总结来的开发软件的成功技术和方法,并且研究探索更好更有效的技术和方法,尽快消除计算机系统在早期发展阶段形成的一些错误和做法
(4)应该开发和使用更好的软件工具
总之,既要有技术措施(方法和工具),又具有必要的组织管理措施。
6. 黑盒测试
也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。黑盒测试是以用户的角度,从输入数据与输出数据的对应关系出发进行测试的。很明显,如果外部特性本身设计有问题或规格说明的规定有误,用黑盒测试方法是发现不了的。
黑盒测试法注重于测试软件的功能需求,主要试图发现下列几类错误:⑴功能不正确或遗漏;⑵界面错误;⑶输入和输出错误;⑷数据库访问错误;⑸性能错误;⑹初始化和终止错误等。
黑盒测试用例设计方法:划分等价类、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法、场景法等。
7.白盒测试
又称为“结构测试”和“逻辑驱动测试”。把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
主要对程序模块进行如下的检查:⑴对模块的每一个独立的执行路径至少测试一次;⑵对所有的逻辑判定的每一个分支(真与假)都至少测试一次;⑶在循环的边界和运行界限内执行循环体;⑷测试内部数据结构的有效性
8.软件维护
所谓软件维护就是在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程。
五.E-R图
例 3,某航空公司拟开发一个机票预订系统。旅行社把预订机票的旅客信息(姓名、性 别、工作单位、身份证号码、旅行时间、旅行目的地等)输入进该系统,系统为旅客安排航 班,印出取票通知和账单,旅客在飞机起飞的前一天凭取票通知和账单交款取票,系统校对 无误即印出机票给旅客。试用实体-联系图描绘本系统中的数据对象。 答:建立 E-R 模型的过程与上述异曲同工,E-R 图如下所示:
六.对象模型
例 4,请建立以下有关交通工具的对象模型。交通工具分为空中、陆上、水上交通工具, 空中交通工具分为客机、货机、专用轻型机,陆上交通工具分为火车、汽车;火车汽车又分 为客车、货车;水上交通工具分为客轮、货轮、客货混合轮。
七.用例图
例 1,在某小型图书管理系统中,读者(借阅者)可以请求以下服务:通过系统查询图 书信息、借阅图书、归还图书(若读者还书时超过借阅期限,就要交纳一定罚金)。当读者 登录系统后还可以查询本人的借阅信息,也可以进行图书预订。根据上述功能描述设计读者 请求服务的用例图(Use Case),标明用例之间的关系。