软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面。
在现代社会中,软件应用于多个方面。典型的软件有电子邮件、嵌入式系统、人机界面、办公套件、*作系统、编译器、数据库、游戏等。同时,各个行业几乎都有计算机软件的应用,如工业、农业、银行、航空、政府部门等。这些应用促进了经济和社会的发展,也提高了工作效率和生活效率。
网络工程是指按计划进行的以工程化的思想、方式、方法,设计、研发和解决网络系统问题的工程。培养掌握网络工程的基本理论与方法以及计算机技术和网络技术等方面的知识,能运用所学知识与技能去分析和解决相关的实际问题,可在信息产业以及其他国民经济部门从事各类网络系统和计算机通信系统研究、教学、设计、开发等工作的高级网络科技人才。
息安全主要包括以下五方面的内容,即需保证信息的保密性、真实性、完整性、未授权拷贝和所寄生系统的安全性。信息安全本身包括的范围很大,其中包括如何防范商业企业机密泄露、防范青少年对不良信息的浏览、个人信息的泄露等。网络环境下的信息安全体系是保证信息安全的关键,包括计算机安全*作系统、各种安全协议、安全机制(数字签名、消息认证、数据加密等),直至安全系统,如UniNAC、DLP等,只要存在安全漏洞便可以威胁全局安全。信息安全是指信息系统(包括硬件、软件、数据、人、物理环境及其基础设施)受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠正常地运行,信息服务不中断,最终实现业务连续性。
信息安全学科可分为狭义安全与广义安全两个层次,狭义的安全是建立在以密码论为基础的计算机安全领域,早期中国信息安全专业通常以此为基准,辅以计算机技术、通信网络技术与编程等方面的内容;广义的信息安全是一门综合性学科,从传统的计算机安全到信息安全,不但是名称的变更也是对安全发展的延伸,安全不在是单纯的技术问题,而是将管理、技术、法律等问题相结合的产物。本专业培养能够从事计算机、通信、电子商务、电子政务、电子金融等领域的信息安全高级专门人才。
成为一名软件工程师要学哪些课程中国计算机软件设计师考试大纲
一、考试说明
1.考试要求:
(1)掌握数据表示、算术和逻辑运算;
(2)掌握相关的应用数学、离散数学的基础知识;
(3)掌握计算机体系结构以及各主要部件的性能和基本工作原理;
(4)掌握*作系统、程序设计语言的基础知识,了解编译程序的基本知识;
(5)熟练掌握常用数据结构和常用算法;
(6)熟悉数据库、网络和多媒体的基础知识;
(7)掌握C程序设计语言,以及C++、Java、Visual、Basic、VisualC++中的一种程序设计语言;
(8)熟悉软件工程、软件过程改进和软件开发项目管理的基础知识;
(9)熟悉掌握软件设计的方法和技术;
(10)掌握常用信息技术标准、安全性,以及有关法律、法规的基本知识;
(11)了解信息化、计算机应用的基础知识;
(12)正确阅读和理解计算机领域的英文资料。
2.通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程的实际工作能力和业务水平。
3.本考试设置的科目包括:
(1)计算机与软件工程知识,考试时间为150分钟,笔试;
(2)软件设计,考试时间为150分钟,笔试。
二、考试范围
考试科目1:计算机与软件工程知识
1.计算机科学基础
1.1数制及其转换
·二进制、十进制和十六进制等常用制数制及其相互转换
1.2数据的表示
·数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出)
·非数值表示(字符和汉字表示、声音表示、图像表示)
·校验方法和校验码(奇偶校验码、海明校验码、循环冗余校验码)
1.3算术运算和逻辑运算
·计算机中的二进制数运算方法
·逻辑代数的基本运算和逻辑表达式的化简
1.4数学基础知识
·命题逻辑、谓词逻辑、形式逻辑的基础知识
·常用数值计算(误差、矩阵和行列式、近似求解方程、插值、数值积分)
·排列组合、概率论应用、应用统计(数据的统计分析)
·运算基本方法(预测与决策、线性规划、网络图、模拟)
1.5常用数据结构
·数组(静态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树、平衡树、线索树、线索树、堆)、图等的定义、存储和*作
·Hash(存储地址计算,冲突处理)
1.6常用算法
·排序算法、查找算法、数值计算方法、字符串处理方法、数据压缩算法、递归算法、图的相关算法
·算法与数据结构的关系、算法效率、算法设计、算法描述(流程图、伪代码、决策表)、算法的复杂性
2.计算机系统知识
2.1硬件知识
2.1.1计算机系统的组成、体系结构分类及特性
·CPU和存储器的组成、性能和基本工作原理
·常用I/O设备、通信设备的性能,以及基本工作原理
·I/O接口的功能、类型和特性
·I/O控制方式(中断系统、DMA、I/O处理机方式)
·CISC/RISC,流水线*作,多处理机,并行处理
2.1.2存储系统
·主存-Cache存储系统的工作原理
·虚拟存储器基本工作原理,多级存储体系的性能价格
·RAID类型和特性
2.1.3安全性、可靠性与系统性能评测基础知识
·诊断与容错
·系统可靠性分析评价
·计算机系统性能评测方式
2.2软件知识
2.2.1*作系统知识
·*作系统的内核(中断控制)、进程、线程概念
·处理机管理(状态转换、共享与互斥、分时轮转、抢占、死锁)
·存储管理(主存保护、动态连接分配、分段、分页、虚存)
·设备管理(I/O控制、假*机)
·文件管理(文件目录、文件组织、存取方法、存取控制、恢复处理)
·作业管理(作业调度、作业控制语言(JCL)、多道程序设计)
·汉字处理,多媒体处理,人机界面
·网络*作系统和嵌入式*作系统基础知识
·*作系统的配置
2.2.2程序设计语言和语言处理程序的知识
·汇编、编译、解释系统的基础知识和基本工作原理
·程序设计语言的基本成分:数据、运算、控制和传输,过程(函数)调用
·各类程序设计语言主要特点和适用情况
2.3计算机网络知识
·网络体系结构(网络拓扑、OSI/RM、基本的网络协议)
·传输介质、传输技术、传输方法、传输控制
·常用网络设备和各类通信设备
·Client/Server结构、Browser/Server结构
·LAN拓扑,存取控制,LAN的组网,LAN间连接,LAN-WAN连接
·因特网基础知识以及应用
·网络软件
·网络管理
·网络性能分析
2.4数据库知识
·数据库管理系统的功能和特征
·数据库模型(概念模式、外模式、内模式)
·数据模型,ER图,**范式、第二范式、第三范式
·数据*作(**运算和关系运算)
·数据库语言(SQL)
·数据库的控制功能(并发控制、恢复、安全性、完整性)
·数据仓库和分布式数据库基础知识
2.5多媒体知识
·多媒体系统基础知识,多媒体设备的性能特性,常用多媒体文件格式
·简单图形的绘制,图像文件的处理方法
·音频和视频信息的应用
·多媒体应用开发过程
2.6系统性能知识
·性能指标(响应时间、吞吐量、周转时间)和性能设计
·性能测试和性能评估
·可靠性指标及计算、可靠性设计
·可靠性测试和可靠性评估
2.7计算机应用基础知识
·信息管理、数据处理、辅助设计、自动控制、科学计算、人工智能等基础知识
·远程通信服务基础知识
·常用应用系统
3.系统开发和运行知识
3.1软件工程、软件过程改进和软件开发项目管理知识
·软件工程知识
·软件开发生命周期各阶段的目标和任务
·软件开发项目管理基础知识(时间管理、成本管理、质量管理、人力资源管理、风险管理等)及其常用管理工具
·主要的软件开发方法(生命周期法、原型法、面向对象法、CASE)
·软件开发工具与环境知识
·软件过程改进知识
·软件质量管理知识
·软件开发过程评估、软件能力成熟评估基础知识
3.2系统分析基础知识
·系统分析的目的和任务
·结构化分析方法(数据流图(DFD)、数据字典(DD)、实体关系图(ERD)、描述加工处理的结构化语言)
·统一建模语言(UML)
·系统规格说明书
3.3系统设计知识
·系统设计的目的和任务
·结构化设计方法和工具(系统流程图、HIPO图、控制流程图)
·系统总体结构设计(总体布局、设计原则、模块结构设计、数据存储设计、系统配置方案)
·系统详细设计(代码设计、数据库设计、用户界面设计、处理过程设计)
·系统设计说明书
3.4系统实施知识
·系统实施的主要任务
·结构化程序设计、面向对象程序设计、可视化程序设计
·程序设计风格
·程序设计语言的选择
·系统测试的目的、类型,系统测试方法(黑盒测试、白盒测试、灰盒测试)
·测试设计和管理(错误曲线、错误排除、收敛、注入故障、测试用例设计、系统测试报告)
·系统转换基础知识
3.5系统运行和维护知识
·系统运行管理基础知识
·系统维护基础知识
·系统评价基础知识
3.6面向对象开发方法
·面向对象开发概念(类、对象、属性、封装性、继承性、多态性、对象之间的引用)
·面向对象开发方法的优越性以及有效领域
·面向对象设计方法(体系结构、类的设计、用户接口设计)
·面向对象实现方法(选择程序设计语言、类的实现、方法的实现、用户接口的实现、准备测试数据)
·面向对象程序设计语言(如C++、Java、Visual、Bsasic、VisualC++)的基本机制
·面向对象数据库、分布式对象的概念
4.安全性知识
·安全性基本概念
·防治计算机病*、防范计算机犯罪
·存取控制、防闯入、安全管理措施
·加密与解密机制
·风险分析、风险类型、抗风险措施和内部控制
5.标准化知识
·标准化意识、标准化的发展、标准制订过程
·国际标准、国家标准、行业标准、企业标准基本知识
·代码标准、文件格式标准、安全标准、软件开发规范和文档标准知识
·标准化机构
6.信息化基础知识
·信息化意识
·全球信息化趋势、国家信息化战略、企业信息化战略和策略
·有关的法律、法规
·远程教育、电子商务、电子政务等基础知识
·企业信息资源管理基础知识
7.计算机专业英语
·掌握计算机技术的基本词汇
·能正确阅读和理解计算机领域的英文资料
考试科目2:软件设计
1.外部设计
1.1理解系统需求说明
1.2系统开发的准备
·选择开发方法、准备开发环境、制订开发计划
1.3设计系统功能
·选择系统结构,设计各子系统的功能和接口,设计安全性策略、需求和实现方法,制订详细的工作流和数据流
1.4设计数据模型
·设计ER模型、数据模型
1.5编写外部设计文档
·系统配置图、各子系统关系图、系统流程图、系统功能说明书、输入输出规格说明、数据规格说明、用户手册框架
·设计系统测试要求
1.6设计评审
2.内部设计
2.1设计软件结构
·按构件分解,确定构件功能规格以及构件之间的接口
·采用中间件和工具
2.2设计输入输出
·屏幕界面设计、设计输入输出检查方法和检查信息
>2.3设计物理数据
·分析数据特性,确定逻辑数据组织方式、存储介质,设计记录格式和处理方式
·将逻辑数据结构换成物理数据结构,计算容量,进行优化
2.4构件的创建和重用
·创建、重用构件的概念
·使用子程序库或类库
2.5编写内部设计文档
·构件划分图、构件间的接口、构件处理说明、屏幕设计文档、报表设计文档、文件设计文档、数据库设计文档
2.6设计评审
3.程序设计
3.1模块划分(原则、方法、标准)
3.2编写程序设计文档
·模块规格说明书(功能和接口说明、程序处理逻辑的描述、输入输出数据格式的描述)
·测试要求说明书(测试类型和目标、测试用例、测试方法)
3.3程序设计评审
4.系统实施
4.1配置计算机系统及其环境
4.2选择合适的程序设计语言
4.3掌握C程序设计语言,以及C++、Java、Visual、Basic、VisualC++中任一种程序设计语言,以便能指导程序员进行编程和测试,并进行必要的优化
4.4系统测试
·指导程序员进行模块测试,并进行验收
·准备系统集成测试环境和测试工具
·准备测试数据
·写出测试报告
5.软件工程
·软件生存期模型(瀑布模型、螺旋模型、喷泉模型)和软件成本模型
·定义软件需求(系统化的目标、配置、功能、性能和约束)
·描述软件需求的方法(功能层次模型、数据流模型、控制流模型、面向数据的模型、面向对象的模型等)
·定义软件需求的方法(结构化分析方法、面向对象分析方法)
·软件设计(分析与集成、逐步求精、抽象、信息隐蔽)
·软件设计方法(结构化设计方法、Jackson方法、Warnier方法、面向对象设计方法)
·程序设计(结构化程序设计、面向对象程序设计)
·软件测试的原则与方法
·软件质量(软件质量特性、软件质量控制)
·软件过程评估基本方法、软件能力成熟度评估基本方法
·软件开发环境和开发工具(分析工具、设计工具、编程工具、测试工具、维护工具、CASE)
·软件工程发展趋势(面向构件,统一建模语言(UML))
·软件过程改进模型和方法
软件工程专业有哪些课程我也是学软件的!
你看看我们学的东西吧!
都是必修的!
c/C++,数据结构,离散数学,汇编语言,现代*作系统,结构化计算机组成,C#语言,J**A语言(选修),数据库原理,算法分析与设计,编译原理,UML,软件工程,软件需求工程,计算机网络,还有什么呢?
我们的教材除了“汇编语言设计”和编译原理,都是英文原版的,学的时候很辛苦!因为拿两门课更难!
如果楼主对计算机没有什么兴趣,还是学点别的吧!个人感觉很累!可能是我们还有其他的课程,想什么高等数学,线性代数等等之类的,很累!1. c语言程序设计
2. 高等数学
3. 大学英语
4. 离散数学
5. 概率论
6. c#程序设计
7. 软件工程导论
8. 数据库(oracle、sqlserver)
还有一些选修课什么的,看学校了课程,每个学校课程还是有差别的。
ps:希望对你有帮助,望采纳!!!
软件工程需要学什么课程?软件工程专业主干课程简介
计算机导论
内容提要:为新学生提供一个关于计算机科学与技术学科的入门介绍,使他们对该学科有一个整体的认识,并了解该专业的学生应具有的基本知识和技能以及在该领域工作应有的职业道德与应遵守的法律准则。
数字电路与数字逻辑
内容提要:介绍数字逻辑与数字系统的基本概念、分析方法和设计原理,包括开关理论基础、组合逻辑、时序逻辑、可编程逻辑器件、数字系统等。
计算机组成原理与汇编语言
内容提要:以冯诺依曼计算机模型为出发点,介绍计算机的组织结构和工作原理,剖析计算机的运算器、存储器、控制器和输入输出设备的结构、工作原理和相互关系;介绍 80X86指令系统、汇编语言与汇编指令、汇编程序与汇编过程、简单汇编程序设计、汇编语言与高级语言的接口、宏汇编等。
计算机网络
内容提要:介绍数据通信的基本概念和计算机网络的基本原理,包括计算机网络的体系结构、数据通信的基本方法和协议、计算机网络的主要应用协议;同时介绍计算机网络系统的安全和管理知识,使学生对数据通信和计算机网络有一个全面理解。
计算机体系结构
内容提要:研究计算机系统结构的基本概念、基本原理、基本结构和基本分析方法,使同学在具有一定的软硬件知识基础上能综合认识计算机系统的软硬件功能分配与各种不同结构类型机器的特性和性能评价方法。为研究、开发、应用高级计算机系统打下基础。确立全面、系统的观点和学会定量分析问题的方法。
离散数学
内容提要:包括**论、数理逻辑、图论、组合数学等内容,形式化的数学证明贯穿此课程。
高级程序设计语言
内容提要:分别以 C、C#或J**A为例,介绍程序设计和语言,程序的基本数据结构、类型定义、简单类型和结构化类型、程序的基本控制结构、结构化程序设计、面向对象的程序设计等。
算法分析与设计
内容提要: 本课程延续数据结构课程的学习,从算法分析和设计的角度出发,除去传统的分类查找算法和一般的设计方法外,主要内容包括如下几个部分:算法研究的理论基础,递归分析技术,基本算法设计策略(几类经典算法学习), 多项式运算与 FFT ,串匹配,概率分析算法。 希望通过这一课程的学习,使学生能对现代的算法设计及分析的基本工具能有较全面的掌握。
数据结构
内容提要:介绍线性表及其链接存储结构与算法、数组与矩阵、堆栈与队列、广义表的存储结构与多元多项式表示、串与文本编辑、排序、树、图、文件结构。
数据库系统原理
内容提要:介绍数据库系统的基本概念、原理、方法及应用,主要包括数据库系统概论、数据库管理系统实现技术、数据库存储结构及其他类型的数据库系统。
编译技术
内容提要:介绍编译原理的理论和实践,包括编译程序设计、词法分析、语法分析、符号表、声明和存储管理、代码生成以及优化技术。
*作系统
内容提要:介绍*作系统的设计与实现,包括*作系统各组成部分的概述、互斥性和同步性、处理器实现、调度算法、存储算法、设备管理和文件系统。
不要把时间浪费在所谓的大学课程上,很多都是没有营养的。其实软件工程的知识体系也就是那样,各个大学也是照着这个思路编排课程的。所以,自学的时候直奔主题就可以了。
软件工程。包含两个部分:软件和工程。软件是程序员做的,而工程是项目负责人管理、程序员实践的。
软件又包含两部分:语法和算法。语法,即要掌握某种编程语言。一般来讲,要想工作中用的上,那么面向过程的语言和面向对象的语言都得掌握。一般学C、C++、Java、Dephi等等。面向过程的程序比较好学,条目也很清晰。而面向对象的编程需要学两方面的内容:语法本身和庞大的类库。算法,这是编程的灵魂。一般包括:数据结构和经典算法。学无止境,一般性的工作话,掌握基本的就够了,如果工作较复杂得多看看算法方面的期刊。
工程。现代软件越变越大,大型的编写工作动不动就涉及万人。工程的方法只是为了更好的组织、协调编写过程。《软件工程》本身就是一本书,很厚的。主要讲软件的生命周期,比较抽象和繁杂,但是规范的工作方式就是从这本书里来的。另外关注一些编程习惯的知识。这也是工程的一部分。
软件只是计算机科学中的一种。所以,比如计算机基础、计算机系统等等宏观的知识也需要理解。特别是对于高级程序员,计算机运行的底层知识就更重要了。*作系统、80x86以及汇编语言是底层知识中的一部分。
软件行业分工很多:网络编程、数据库编程、应用程序编程、游戏编程以及*作系统编程等(中国似乎还没有商业化的*作系统),研究任何一个都挺累人的。学习完上面的基础知识后,就需要给自己选一个专业方向了。
建议一个学习流程。如果你什么都没有学。
1】计算机基础知识。主要是硬件方面(大一水平)
2】同时,学习C语言,语法就够了
3】透彻的理解C++需要用C语言去编写一个图形化的应用程序,但是,似乎也有一些直接上手的C++教材。学习语法,简单的类库。(现在就是大二的水平)
4】数据结构,C++表述的。《数据结构》的书里面会有一些经典的算法的。
5】*作系统、80x86与汇编(大三水平,大四几乎没有几本书要念的。)
6】专业学习。一方面是专业上的知识,另一方面是类库在专业上的使用。(我想,应该可以工作了,大学里关于这方面的知识是很浅薄的,仅仅建立一个概念而已。但是要拿来谋生的话,就需要学多点了,前面所有的积淀都是为了这个目标的)
先学着,自己有体会后,就能确定自己应该学到什么程度。如果一切顺利的话,大概两年多一点就可以完成这个过程。