(1)面向对象程序设计(OOP)的能力,并会通过具体的编程语言(建议Java和C++二选一)实现。如果要入门推荐慕课网找一门网课,如果想深入推荐劝退系列教科书《C++编程思想》。也可以学习北京理工大学@金旭亮老师的《面向对象软件开发实践之基本技能训练》和《面向对象软件开发实践之专业技能训练》。不过真的有难度。Java的话可以考虑浙江大学@翁恺老师的《程序设计入门—Java语言》与《Java语言程序设计进阶》。当然,顺带掌握语言相对应的IDE,如VisualStudio或者Eclipse。
(2)基本的数据结构与算法。可以看网易云课堂上浙江大学陈越老师和何钦铭老师的《数据结构》。也可以看学堂在线上清华大学邓俊辉老师的《数据结构》。
(4)设计模式。学了这个你才能很大程度上加深对于OOP的理解。可以从《HeadFirst设计模式》或者中南大学刘伟老师的几本设计模式书入门。
(6)软件测试技术。基本概念可以看同济大学软件学院朱少民老师的《软件测试方法和技术(第3版)》,他在网易云课堂也有相应的课程。也可以上Coursera学习南京大学软件学院陈振宇老师的课程《软件测试》,不过有难度。现在也有不少公司开始注重单元测试,各种单元测试框架(如xUnit)学习起来都很简单,难点在于用例的设计,而用例的设计是建立在各种软件测试方法(等价类、边界值、判定表等)基础之上的。
(8)最好掌握UML。可以学习Coursera上北京大学的《面向对象技术高级课程》,非常好。
(10)Linux系统的了解,以及linux的基本命令,推荐《鸟叔的linux私房菜》这本书,之前在网上看了电子档的,觉着不错,又买了一本,前两天刚到,最近忙着考试,还没来得及看。
当然作为一名合格的软件工程专业学生,要掌握的东西还有很多,比如良好的编码规范等等,这些需要在实际的项目开发过程中锻炼形成。
下面是收集的一份关于软件工程知识技能水平的测评试题。
一、选择题
1.软件生存周期模型有多钟,下列选项中,(C)不是软件生存周期模型。
A.螺旋模型
B.增量模型
C.功能模型
D.瀑布模型解析:软件生存周期模型包括瀑布模型,快速原型模型,增量模型,螺旋模型,喷泉模型。其中没有功能模型。考查的知识技能、出题的目的意图是让学生掌握常见的软件工程生存周期模型,并加以了解。
2.软件开发和维护过程中出现的一系列严重问题称为(D)。
A.软件工程
B.软件开发
C.软件开发
D.软件危机
解析:软件危机是指在计算机的开发和维护过程中所遇到的一系列严重问题。这些问题决不仅仅是不能正常运行的软件才具有的,实际上,几乎所有软件都不同程度地存在这些问题。
考查的知识技能、出题的目的意图:学生了解软件危机的概念,了解到软件危机几乎是所有软件共有的问题。
3.为了提高模块的独立性,模块内部最好是(C)
A.逻辑内聚
C.功能内聚
D.通信内聚
功能内聚:模块内所有元素的各个组成部分全部都为完成同一个功能而存在,共同完成一个单一的功能,模块已不可再分。即模块仅包括为完成某个功能所必须的所有成分,这些成分紧密联系、缺一不可。
通信内聚:指模块内所有处理元素都在同一个数据结构上操作或所有处理功能都通过公用数据而发生关联(有时称之为信息内聚)。即指模块内各个组成部分都使用相同的数据结构或产生相同的数据结构。
4.程序的三种基本控制结构是(B)
A.过程,子过程,和分程序
B.顺序,选择和循环(重复)
C.递归,堆栈和队列
D.调用,返回和转移
解析:程序的三种基本控制结构是顺序,选择和循环。
考查的知识技能、出题的目的意图:学生对程序的基本结构有所了解。
5.通过(B)可以完成数据流图的细化。
A.结构分析
B.功能分解
C.数据分析
D.系统分解
解析:分解功能可以对已有模型进行特征拆解,并可以直接调用分解出来的步骤加以重复利用。所以对数据流图有细化作用。
考查的知识技能、出题的目的意图:考察功能分解的作用,并且让学生在数据流图细化过程中掌握功能分解的使用。
二、名词解释
请画出该新闻管理系统的用例图。
答案解析:新闻管理系统用例图如下图所示:
考察内容:考察学生软件开发过程中用例图的设计。
答案解析:E-R图如下所示:
考察内容:考察学生对E-R图的理解与应用。E-R图也称实体-联系图(EntityRelationshipDiagram),提供了表示实体类型、属性和联系的方法,用来描述现实世界的概念模型。用”菱形框“表示实体型之间的联系成因,在菱形框内写明联系名,并用”实心线段“分别与有关实体型连接起来,同时在”实心线段“旁标上联系的类型(1:1,1:n或m:n)。