通常情况下,软件工程师需要具备以下几个方面的知识结构:
1、操作系统知识。
操作系统知识是软件工程师必须具备的重要内容,Web开发领域可能会使用到Windows系列操作系统,大数据和物联网方向要使用到Linux系列操作系统,掌握操作系统的体系结构是进行软件研发的重要基础。主要内容包括资源管理、任务调度、并发管理、权限管理、网络管理等内容。
2、编程语言和算法。
编程语言是软件工程师必备的技能,不同方向的开发需要使用到不同的编程语言,比如Web开发可能会使用PHP、Python、Java等语言,而大数据可能会使用Java、R、Scala等语言,而物联网开发可能会使用到C、C++等编程语言。通常来说,软件工程师往往需要掌握多门编程语言,以应对不同的开发环境。算法是软件工程师的重点知识结构,因为软件研发说到底就是个数学问题,所以算法的掌握情况往往能够决定软件工程师的成长高度。当然,对于应用级软件工程师来说,也有可能不会接触到更多的算法。
3、领域知识。
不同开发领域需要掌握不同的知识结构,比如大数据软件工程师往往需要掌握Hadoop、Spark平台的使用,而Web开发工程师往往还需要掌握前后端开发技术,包括一系列Web开发框架的使用等等。
接着,软件工程师需要如下几方面能力:
1、团队精神和协作能力:
在我看来,这是软件工程人员应该具备的最基本的,也是最重要的一项技能。随着软件项目规模越来越大,仅仅依靠个人力量已经无法完成工作,因此,现代软件企业越来越重视团队精神,很好的合作意识和团队精神更加适应时代发展的潮流,也是我们软件工程师的必修课。
2、规范化,标准化的代码编写习惯:
在一些外国知名软件公司,代码的变量命名,代码内注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。
3、良好的文档书写习惯:
良好的文档是正规研发流程中非常重要的环节,作为代码程序员,30%的工作时间写技术文档是很正常的,而作为高级程序员和系统分析员,这个比例还要高很多。缺乏文档,一个软件系统就缺乏生命力,在未来的查错,升级以及模块的复用时就都会遇到极大的麻烦。
4、较强的英语阅读和写作能力:
程序世界的主导语言是英文,编写程序开发文档和开发工具帮助文件离不开英文,了解业界的最新动向、阅读技术文章离不开英文,与世界各地编程高手交流、发布帮助请求同样离不开英文。作为基础软件工程师,具有一定的英语基础对于自身的学习和工作极有帮助。
5、软件测试习惯:
软件研发作为一项工程而言,一个很重要的特点就是问题发现的越早,解决的代价就越低,程序员在每段代码,每个子模块完成后进行认真的测试,就可以尽量将一些潜在的问题最早的发现和解决,这样对整体系统建设的效率和可靠性就有了最大的保证。
6.具有软件工程的概念:
基础软件工程师处于软件企业人才金字塔的底层,是整个人才结构的基础,虽然他们从事的工作相对于系统分析师和高级程序员要单纯一些,但是他们是整个软件工程中重要的一环,因此,基础软件工程师同样要具有软件工程的概念。从项目需求分析开始到安装调试完毕,基础软件工程师都必须能清楚地理解和把握这些过程,并能胜任各种环节的具体工作,这样的能力正好符合了当前企业对基础软件工程师的全面要求。
7.学习与总结能力:
软件业是一个不断变化和不断创新的行业,面对层出不穷的新技术,软件人才的求知欲和进取心就显得尤为重要,它是在这个激烈竞争的行业中立足的基本条件。软件工程师应具有较强的学习总结能力、需求理解能力和对IT新技术比较敏感,同时,掌握最新的IT实用技术。
最后,软件工程师的软件工程知识技能水平高低主要体现在这些方面:
1、操作系统知识。
操作系统知识是软件工程师必须具备的重要内容,Web开发领域可能会使用到Windows系列操作系统,大数据和物联网方向要使用到Linux系列操作系统,掌握操作系统的体系结构是进行软件研发的重要基础。
2、编程语言和算法。
编程语言是软件工程师必备的技能,不同方向的开发需要使用到不同的编程语言,比如Web开发可能会使用PHP、Python、Java等语言,而大数据可能会使用Java、R、Scala等语言,
而物联网开发可能会使用到C、C++等编程语言。通常来说,软件工程师往往需要掌握多门编程语言,以应对不同的开发环境。算法是软件工程师的重点知识结构,因为软件研发说到底就是个数学问题,
所以算法的掌握情况往往能够决定软件工程师的成长高度。当然,对于应用级软件工程师来说,也有可能不会接触到更多的算法。
3、领域知识。
不同开发领域需要掌握不同的知识结构,比如大数据软件工程师往往需要掌握Hadoop、Spark平台的使用,而Web开发工程师往往还需要掌握前后端开发技术,包括一系列Web开发框架的使用等等。
4、架构设计。
应对不同项目需求采用不同的设计方案构建项目框架。
试题如下:
一、填空(10分)
1.结构化分析方法的分析策略是___自顶向下逐步求精_______。
2.衡量模块独立性的两个定性标准是_耦合性与内聚性________。
3.软件集成测试的方法主要有两种,它们是___渐增式与非渐增式测试_______。
4.可行性研究的目的是用最小的代价在尽可能短的时间内确定该软件项目_是否值得开发_。
5.需求分析阶段,分析人员要确定对问题的综合需求,其中最主要的是__功能需求_。
6.软件生存周期中时间最长、花费的精力和费用最多的一个阶段是__维护_____阶段。
7. 计算机辅助软件工程这一术语的英文缩写为_CASE_______。
8.McCall提出的软件质量模型包括______11_____个软件质量特性。
9.软件结构是以____模块_______为基础而组成的一种控制层次结构。
10.软件概要设计的主要任务就是__软件结构的设计______。
二、选择(20分)
1.UML是软件开发中的一个重要工具,它主要应用于哪种软件开发方法( C )
A、基于瀑布模型的结构化方法 B、基于需求动态定义的原型化方法
C、基于对象的面向对象的方法 D、基于数据的数据流开发方法
2、面向对象的开发方法中,(B)将是面向对象技术领域内占主导地位的标准建模语言。
A、Booch方法 B、UML语言
C、OMT方法 D、Coad方法
3、功能模型中所有的(A)往往形成一个层次结构。在这个层次结构中一个数据流图的过程可以由下一层的数据流图作进一步的说明。
A、数据流图 B、概念模型图 C、状态迁移图 D、事件追踪图
4、(A)应当在应用分析之前进行,因为我们在了解问题之前应当对问题敞开思想考虑,不应加以限制。
A、问题域分析 B、高层分析 C、实例的建立 D、类的开发
5、通过执行对象的操作改变对象的属性,但它必须通过(B)的传递。
A、接口 B、消息 C、信息 D、操作
6、所有的对象可以成为各种对象类,每个对象类都定义了一组(B)
A、说明 B、方法 C、过程 D、类型
7、面向对象的主要特征除对象唯一性、封装、继承外,还有(A)
A、多态性 B、完整性 C、可移植性 D、兼容
8、在面向对象的设计中,我们应遵循的设计准则除了模块化、抽象、低耦合、高内聚以外,还有(B)
A、 隐藏复杂性 B、 信息隐藏 C、 即存类的重用 D、 类的开发
9、在考察系统的一些涉及时序和改变的状况时,要用动态模型来表示。动态模型着重于系统的控制逻辑,它包括两个图:一个是事件追踪图,另一个是(B)
A、数据流图 B、状态图 C、系统结构图 D、时序图
10、人们常用的评价软件质量的4个因素是( B )
A.可维护性、可靠性、健壮性、效率 B.可维护性、可靠性、可理解性、效率
C.可维护性、可靠性、完整性、效率 D.可维护性、可靠性、移植性、效率
三、简答(40分)
1、简述软件工程方法学所包含的内容。
软件工程方法学包括三个要素,这就是方法、工具和过程。其中,方法是完成软件开发的各项任务的技术方法,回答“如何做”的问题;工具是为方法的运用提供自动的或半自动的软件支撑,过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
2、什么是软件过程?它与软件工程方法学有何关系?
(1) 软件过程是为了获得高质量软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
(2) 软件过程是软件工程方法学的3个重要组成部分之一。
(3) 软件工程方法学包含三个要素:方法、工具和过程。
3、分析软件危机产生的主要原因有哪些?
答:导致软件危机的主要原因有:
(1)软件日益复杂和庞大
(2)软件开发管理困难和复杂
(3)软件开发技术落后
(4)生产方式落后
(5)开发工具落后
(6)软件开发费用不断增加
4、软件测试包括哪些步骤?说明这些步骤的测试对象是什么?
答:(1)单元测试:测试对象对单元模块
(2)集成测试:测试对象为组装后的程序模块
(3)确认测试:测试对象为可运行的目标软件系统
(4)系统测试:测试对象为计算机系统的各组成部分
四、综合应用(30分)
1、在某小型图书管理系统中,读者(借阅者)可以请求以下服务:通过系统查询图 书信息、借阅图书、归还图书(若读者还书时超过借阅期限,就要交纳一定罚金)。
当读者登录系统后还可以查询本人的借阅信息,也可以进行图书预订。根据上述功能描述设计读者 请求服务的用例图(Use Case),标明用例之间的关系。
2、找出下面过程中的参与者和用例,画出用例图
在某单位内部的工作通告中,有空缺地区的人力资源部通知该地区的员工及其他地区的人力资源部。作为对此消息的响应,来自不同地区的员工把他们的申请送到有空缺地区的人力资源部。
申请人的技能要与空缺所要求的相匹配。具有所要求技能的申请被列入到缩减的申请人名单并获得面试计划表。通知己列入缩减的申请人名单中的申请人有关面试的时间表。
根据面试程序,面试的材料将被更新,向所有己选的申请人发送一份新的录州信。 申请人通过接受或拒绝录用信来通知有空缺的人力资源部。
在员工接受录用之后,空缺地区的人力资源部将转职请求发送到该员工当前地区的人力资源部。各个地区处理转职材料并把它发送给己转职员工的新地区。然后空缺地区的人力资源部更新此员工的材料, 把凋动的文档发送给此员工。
3、请建立以下有关交通工具的对象模型。交通工具分为空中、陆上、水上交通工具, 空中交通工具分为客机、货机、专用轻型机,陆上交通工具分为火车、汽车;火车汽车又分 为客车、货车;水上交通工具分为客轮、货轮、客货混合轮。