一.软件工程师的软件工程知识技能水平高低主要体现在哪些方面
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等建模软件,有一定的架构设计能力;语言表达能力和沟通能力、工程经济分析能力以及心理素质。
判定树又称决策树,是一种描述加工的图形工具,适合描述问题处理中具有多个判断,而且每个决策与若干条件有关。使用判定树进行描述时,应该从问题的文字描述中分清哪些是判定条件,哪些是判定的决策,根据描述材料中的联结词找出判定条件的从属关系、并列关系、选择关系,根据它们构造判定树。
一. 某工厂对工人的超产奖励政策为:该厂生产两种产品A和B。凡工人每月的实际生产量超过计划指标者均有奖励。奖励政策为:
对于产品A的生产者,超产数N小于或等于100件时,每超产1件奖励2元;N大于100件小于等于150件时,大于100件的部分每件奖励2.5元,其余的每件奖励金额不变;N大于150件时,超过150件的部分每件奖励3元,其余按超产150件以内的方案处理。
对于产品B的生产者,超产数N小于或等于50件时,每超产1件奖励3元;N大于50件小于等于100件时,大于50件的部分每件奖励4元,其余的每件奖励金额不变;N大于100件时,超过100件的部分每件奖励5元,其余按超产100件以内的方案处理。
上述处理功能用判定树描述,如下图所示
这一判定树比起文字叙述,使人一目了然,清晰地表达了在什么情况下采取什么策略,不易产生逻辑上的混乱。因而判定树是描述基本处理逻辑功能的有效工具。
软件测试,描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
二. 为以下程序流程图分别设计语句覆盖和判定覆盖测试用例,并标明程序执行路径。
(1)语句覆盖测试用例
令x=2,y=0,z=4作为测试数据,程序执行路径为abcde。
(2)判定覆盖
可以设计如下两组数据以满足判定覆盖:
x=3,y=0,z=1(1分)(通过路径abce);
x=2,y=1,z=2(1分)(通过路径acde)。
或者
x=2,y=1,z=1;覆盖路径acde
x=1,y=1,z=1;覆盖路径ace
x=3,y=0,z=1;覆盖路径abce
软件工程中的建立对象模型
三.某报社采用面向对象技术实现报刊征订的计算机管理系统,该系统基本需求如下:
(1)报社发行多种刊物,每种刊物通过订单来征订,订单中有代码,名称,订期,单价,份数等项目,订户通过填写订单来订阅报刊。
(2)报社下属多个发行站,每个站负责收集登陆订单、打印收款凭证等事务。
(3)报社负责分类并统计各个发行站送来的报刊订阅信息。
请就此需求建立对象模型。
软件项目管理中的可行性分析
四.设计一个软件的开发成本为50000元,寿命为3年。未来3年的每年收益预计为22000元﹑24000元﹑226620元。银行年利率为10%,不计复利。试对此项目进行成本效益分析,以决定其经济可行性。
解:三年后,50000万的价值为
50000*(1+3*10%)=65000元
三年软件总获利为
22000*(1+2*10%)+24000*(1+1*10%)+26620=79420元
而 79420元>65000元
所以此项目盈利,经济可行。