《计算与软件工程Ⅰ》

合集下载

2017年软考软件设计师考试培训指南与大纲

2017年软考软件设计师考试培训指南与大纲

2017年软考软件设计师考试培训指南与大纲考试内容说明:“(Ⅰ)”、“(Ⅱ)”和“(Ⅲ)”表示掌握或熟悉的程度。

“(Ⅰ)”是指对所列只是要理解其内容及含义理解。

“(Ⅱ)”是指在有关问题中能直接使用一般应用“(Ⅲ)”是指对所列知识要理解其确切含义及与其它知识的联系,能够进行叙述和解释,并能在实际问题的分析、综合、推理和判断等过程中运用综合应用。

考试科目1 计算机与软件工程知识1.计算机科学基础知识1.1.数制及其转换●二进制、八进制、十进制和十六进制等常用数制及其相互转换(Ⅱ)1.2.计算机内数据的表示●数的表示带符号定点数据(纯整数和纯小数)的原码、反码、补码和移码表示(Ⅱ)浮点数(实数)的表示(Ⅱ)溢出的概念(Ⅱ)●非数值表示(字符和汉字表示、声音表示、图像表示)(补充)1.3.算数运算和逻辑运算●计算机中的二进制数运算方法补码表示下定点数的加、减、乘、除运算方法(Ⅰ)●逻辑代数的基本运算基本的逻辑运算与、或、非、异或(Ⅱ)1.4.其他数学基础知识●常用数值计算矩阵和行列式、近似求解、插值、数值积分、常微分方程等常用的数值运算方法及运算误差的概念(Ⅰ)●排列组合概率论应用应用统计(数据的统计分析)(Ⅰ)●编码基础(ASCII码汉字编码奇偶校验海明码霍夫曼码、循环冗余码)奇偶校验码、海明码、霍夫曼码、循环冗余码的编码方法及指定实例时校验码的计算(Ⅰ)●命题逻辑、谓词逻辑、形式逻辑的基础知识(Ⅰ)●运筹基本方法(补充)2.计算机系统基础知识2.1.计算机硬件基础知识2.1.1.计算机系统的组成、体系结构分类及特性●CPU、存储器的组成、性能和基本工作原理CPU的基本组成结构(Ⅰ)存储器的组成及特点:内存、外存、缓存Cache、闪存(Ⅱ)存储器的性能指标定义:存取周期、存储容量和可靠性(Ⅱ)●常用I/O设备、通信设备的性能以及基本工作原理(Ⅰ)●I/O接口的功能、类型和特性CPU在与I/O设备进行数据交换时存在的主要问题:速度不匹配、时序不匹配、信息格式不匹配、信息类型不匹配(Ⅰ)CPU与外设之间的数据交换必须通过接口来完成,I/O接口的主要功能(Ⅱ)接口的控制方式及特点:CPU通过接口对外设进行控制的方式程序查询方式、中断处理方式、DMA(直接存储器存取)传送方式(Ⅱ)●CISC/RISC流水线操作多处理机并行处理RISC(精简指令集计算机)和CISC(复杂指令集计算机)的定义和特点(Ⅰ)流水线的定义及操作特点(Ⅱ)多处理机的概念(Ⅰ)单指令流单数据流(SISD)、单指令流多数据流(SIMD)、多指令流单数据流(MISD)、多指令流多数据流(MIMD)的概念和特点(Ⅱ)并行处理的基本概念(Ⅰ)2.1.2.存储系统●虚拟存储器基本工作原理多级存储体系虚拟存储器的定义和管理方式(Ⅰ)多级存储体系的组成及特点(Ⅱ)●RAID类型和特性RAID的定义和基本特点RAID0、RAID7、RAID10、RAID53等规范的特征(Ⅰ)2.1.3.可靠性与系统系能评测基础知识●诊断与容错容错技术与容错控制(Ⅰ)●系统可靠性分析评价系统的可靠性定义(Ⅰ)串联系统特点及可靠性度量(Ⅱ)并联系统特点及可靠性度量(Ⅱ)模冗余系统等可靠性数学模型的特点(Ⅰ)●计算机系统性能评测方法平均无故障时间(MTBF)的定义(Ⅰ)平均修复时间(MTRF)的定义(Ⅰ)可用性的定义(Ⅰ)2.2.计算机软件基础知识2.2.1.数据结构与算法知识●数组二维数组:按行存储和按列存储,数据元素存储位置的计算(Ⅱ) 特殊矩阵和稀疏矩阵的特点及压缩存储(Ⅱ)静态数组(固定容量数组)(Ⅰ)动态数组(根据应用需要申请或扩充数组的容量)(Ⅰ)●链表线性表的定义和基本运算(Ⅰ)线性表的顺序存储和特点(Ⅰ)单向链表、双向链表和环形链表的运算特点(Ⅱ)指针、结点、头指针和头结点的概念(Ⅱ)●队列和栈队列的定义、运算和存储结构(Ⅱ)栈的定义、运算和存储结构(Ⅱ)●树二叉树的定义(Ⅱ)满二叉树、完全二叉树的定义(Ⅱ)二叉树的性质(Ⅱ)二叉树的顺序存储和二叉链表存储(Ⅱ)二叉树的遍历:先序、中序、后序和层序(Ⅱ)最有二叉树的定义、特点和构造方法(Ⅱ)二叉排序树的定义和运算(Ⅱ)平衡二叉树、B-树、B+树的概念(Ⅰ)树与二叉排序树的相互转换(Ⅱ)●图的定义、存储和基本操作图结构的定义(Ⅰ)图的邻接矩阵存储和邻接表存储(Ⅱ)图的广度优先遍历和深度优先遍历操作(Ⅱ)●杂凑(Hash表)哈希(杂凑)表的构造、冲突的处理和元素的查找,平均查找长度的计算(Ⅱ)●常用的排序算法(排序算法、查找算法、数值计算、字符串处理、数据压缩算法、递归算法、图的关系算法)插入排序、冒泡排序、选择排序算法(Ⅲ)希尔排序、快速排序、堆排序、归并排序方法及特点(Ⅱ)顺序查找、二分查找方法及特点(Ⅲ)模式匹配算法(Ⅱ)图的遍历算法、求最小生成树算法、拓扑排序算法、求最短路径算法、求关键路径算法的算法思想(Ⅱ)递归算法的设计方法(Ⅱ)●算法描述和分析算法的实现与数据结构的关系(Ⅱ)算法的效率分析(Ⅱ)算法的流程图、伪代码描述方式(Ⅱ)算法的时间复杂性和空间复杂性概念(Ⅰ)2.2.2.操作系统知识●操作系统的内核(中断控制、进程、线程概念)操作系统内核的功能和基本组成(Ⅰ)内核与用户程序的运行方式差别(Ⅰ)内核运行、中断控制的基本知识(Ⅰ)●处理机管理(状态转换、共享与互斥、分时轮转、抢占、死锁)进程、线程等基本概念,程序顺序执行和并发执行的基本特征(Ⅰ)进程的基本组成,进程的基本状态及状态间的切换三态模型与五态模型(Ⅱ)进程间的通信:同步与互斥、临界资源、临界区、信号量、PV操作(Ⅱ)管程的概念(Ⅰ)进程调度方式及常用的进程调度算法(Ⅱ)死锁的定义、产生死锁的原因、产生死锁的必要条件(Ⅱ)●存储管理(主存保护、动态连接分配、分段、分页、虚存)虚拟地址、地址空间、存储空间、地址重定位的基本概念(Ⅰ)分页存储管理(Ⅱ)程序的局部性特点,虚拟存储器的实现方法(Ⅰ)页面置换算法:最佳置换算法、先进先出置换算法、最近最久未使用置换算法、最近未用置换算法(Ⅱ)●设备管理(I/O控制、假脱机)设备分类方法(Ⅰ)通道、DMA的概念及特点(Ⅰ)Spooling(SimultaneousPeripheralOperationsOnLine)定义、组成和结构(Ⅰ)磁盘调度算法:先来先服务(First-Come-First-Served,FCFS)、最短寻道时间优先SSTF (ShortestSeekTimeFirst)、扫描算法(SCAN)、单向扫描调度算法(CSCAN)、磁盘调度算法的基本思想(Ⅱ)●文件管理(文件目录、文件组织、存取方法、存取控制、恢复处理)文件、文件系统、文件类型、文件组织结构的基本概念(Ⅰ)文件的物理结构:连续结构、链接结构、索引结构、多个物理块的索引表结构的基本概念(Ⅰ)目录,一级目录、二级目录、多级目录的基本概念(Ⅰ)文件的存取方法:顺序存取法、直接存取法、按键存取法的基本概念(Ⅰ)文件存储空间的管理:位示图、空闲区表、空闲块链、成组链接法基本思想(Ⅰ)●作业管理(作业调度、作业控制语言(JCL)、多道程序设计)作业的状态(提交、后备、执行、完成)、作业控制块和作业后备队列的基本概念(Ⅰ) 先来先服务、短作业优先、响应比高优先作业调度算法思想(Ⅱ)优先级调度算法思想(Ⅱ)●网络操作系统和嵌入式操作系统基础知识网络操作系统的特征和分类(Ⅰ)嵌入式操作系统的特点(Ⅰ)操作系统的配置(Ⅰ)2.2.3.程序设计语言和语言处理程序知识●汇编、编译、解释系统的基础知识和基本工作原理语言翻译的基本概念(Ⅰ)汇编的基本方法(Ⅰ)编译的基本过程及编译各阶段的基本任务(Ⅰ)解释的基本过程(Ⅰ)有限自动机的定义及构造(Ⅱ)正规表达式的定义、构造及特点(Ⅱ)上下文无关文法的定义(Ⅰ)句子的推导(Ⅱ)●程序设计语言的基本成分(数据、运算、控制和传输),程序调用的实现机制程序设计语言的数据、运算、控制及输入输出处理机制(Ⅰ)函数的参数传递机制:传值、传地址(Ⅱ)●各类程序设计语言的主要特点和适用情况过程式程序语言、面向对象程序设计语言、函数式程序设计语言、逻辑程序设计语言的基本特点(Ⅰ)脚本语言的特点(Ⅰ)2.2.4.数据库知识●数据库模型(概念模式、外模式、内模式)概念模式(模式)、外模式(用户模式或子模式)、内模式(物理模式)的基本概念(Ⅱ) 三级模式和两级映像(模式/内模式映像、外模式/模式映像)的基本概念(Ⅱ)数据的独立性(数据的逻辑独立性、数据的物理独立性)的基本概念(Ⅱ)●数据模型ER图规范化数据模型:层次模型、网状模型、关系模型、面向对象模型的基本概念(Ⅰ);关系模型的应用方法(Ⅱ)数据模型的三要素(数据结构、数据操作、数据的约束条件)的含义(Ⅰ)E-R模型方面的基本概念(Ⅱ);E-R图E-R模型向关系模型的转换的基本方法(Ⅱ) 实体中主键、候选键、外键方面的基本概念(Ⅱ)联系类型(一对一1:1、一对多1:n、多对多m:n)的基础知识(Ⅱ)属性(简单属性、复合属性、单值属性、多值属性、NULL属性、派生属性)的含义(Ⅰ) 关系模式规范化的程度:第一范式、第二范式、第三范式(Ⅰ)●数据库操作(集合运算和关系运算)关系数据库、关系数据库模式的基本概念(Ⅱ)关系模型的完整性规则:实体完整性、参照完整性、用户定义完整性的基本概念(Ⅰ) 5种基本的关系运算(并、差、笛卡尔积、投影、选择)的基本概念(Ⅰ);扩展的关系运算中选择、投影、连接运算方法(Ⅱ);扩展的关系运算中的除法、外联接方面的基本概念(Ⅰ)●数据库语言(SQL)数据定义语言(DDL):CREATE TABLE(创建表)使用方法(Ⅱ)数据操纵语言(DML):SELECT(查询)、INSERT(插入)、DELETE(删除)和UPDATE(修改)使用方法(Ⅱ)完整性(integrity)定义:PRIMAR YKEY、FOREIGN KEY REFERENCES使用方法(Ⅱ)权限管理(authorization):GRANT和REVORK使用方法(Ⅱ)●数据库管理系统的功能和特征数据库管理系统的特征、功能与组成、文件系统的特征文件系统与数据库管理系统的差异的基本概念(Ⅰ)●数据库的控制功能(并发控制、恢复、安全性、完整性)事务的基本概念、事务的特性、故障的类型的基础知识(Ⅰ)数据不一致性(丢失修改、不可重复读、读脏数据)的基础知识(Ⅰ)并发控制中活锁/死锁、可串行性、两段锁协议的基本概念(Ⅰ)安全控制(权限机制、视图机制、加密机制)的基本概念(Ⅰ)事务、事务的特性、事务的状态、事务状态的转换的基本概念(Ⅰ)故障的类型、故障的恢复技术、恢复策略的基础知识(Ⅰ)并发控制后会产生丢失修改、不可重复读、读脏数据三类数据不一致性(Ⅰ),造成数据不一致性的原因(Ⅱ)并发控制中事务的调度(串行调度、并行调度)、活锁/死锁、可串行性、两段锁协议的基础知识(Ⅰ);造成数据不一致性的原因(Ⅰ)安全控制(权限机制、视图机制、加密机制)的基本概念(Ⅰ)●数据仓库和分布式数据库基础知识数据仓库(DataWarehouse,DW):基本特性、数据模式、体系结构的基本概念(Ⅰ) 数据仓库模型:企业仓库、数据集市和虚拟仓库的基本概念(Ⅰ)分布式数据库的定义、体系结构、设计目标、分布数据独立的基本概念(Ⅰ)2.3.计算机网络知识●网络体系结构(网络拓扑、OSI/RM、基本的网络协议)网络拓扑(Ⅱ)OSI/RM、TCP/IP(Ⅱ)常用的网络协议(Ⅱ)●传输介质传输技术传输方法传输控制(Ⅰ)●常用网络设备和各类通信设备的功能和特点(Ⅰ)●Client-Server结构、Browser-Server结构的特点(Ⅰ)●LAN拓扑,存取控制,LAN的组网,LAN间连接,LAN-WAN连接(补充)●局域网拓扑结构(Ⅱ)存取控制(Ⅰ)网间互联(Ⅰ)●Internet和Intranet基础知识以及应用(Ⅱ)●网络软件(Ⅰ)●网络管理及网络性能分析(Ⅰ)2.4.多媒体基础知识●多媒体系统基础知识媒体分类:感觉媒体、表示媒体、表现媒体、存储媒体和传输媒体的基本概念(Ⅰ) 多媒体、超媒体、流媒体的基本概念(Ⅰ)色彩的三基色、彩色空间、三要素基本概念(Ⅰ)图形和图像图像分辨率与显示分辨率、像素深度、真伪彩色图像的压缩标准的基本概念(Ⅱ)●简单图形的绘制图像文件的处理方法图像的压缩编码:有损压缩和无损压缩方面的基本概念(Ⅰ)JPEG、MPEG和H.261等编码及压缩标准方面的基本概念(Ⅰ)图像文件的处理方法的基础知识(Ⅰ)●音频和视频信息的应用常见的声音文件格式(Ⅰ)数字声音信号、波形声音的基本概念(Ⅰ)声音信号的数字化,包括采样、量化、编码;了解数字语音的数据压缩方法,波形编码、参数编码、混合编码的基础知识(Ⅱ)●多媒体应用开发过程(补充)3.系统开发和运行知识3.1.软件工程基础知识●软件生存周期与软件生存周期模型瀑布模型、演化模型、螺旋模型、喷泉模型(Ⅱ)●软件开发方法结构化方法、面向对象方法的基本概念(Ⅱ)●软件工具与软件开发环境分析工具、设计工具、编程工具、测试工具、维护工具、CASE(Ⅰ)●软件开发项目管理成本估算、风险分析、进度管理(Gantt图、PERT图)、人员管理(Ⅰ)3.2.系统分析基础知识●系统分析的主要步骤(Ⅰ)●结构化分析方法数据流图的基本构成、数据字典、加工逻辑的描述(结构化语言、决策表、决策树)(Ⅱ)3.3.系统设计基础知识●概要设计与详细设计的基本任务(Ⅰ)●系统设计的基本原理抽象、模块化、信息隐蔽、模块独立(耦合、内聚)的基本概念(Ⅰ)●系统模块结构设计模块的概念、模块结构图的构成与内涵(Ⅰ)●结构化设计方法(变换分析、事务分析的概念及基本步骤)(Ⅰ)●面向数据结构的设计方法(Jackson方法的设计步骤)(Ⅰ)●系统详细设计代码设计的基本原则(Ⅰ)输入/输出设计的基本原则(Ⅰ)处理过程的设计(程序流程图、盒图、决策树、决策表)(Ⅰ)用户界面设计的基本原则(Ⅰ)3.4.系统实施基础知识●系统实施的基本内容(Ⅰ)●程序设计方法结构化程序设计方法、面向对象程序设计方法的基本概念(Ⅱ)●程序设计的基本模块(Ⅰ)●系统测试系统测试的基本原则(Ⅰ)用黑盒法设计测试用例(等价类划分、边界值划分、错误推测、因果图)(Ⅱ) 用白盒法设计测试用例(逻辑覆盖、循环覆盖、基本路径测试)(Ⅱ)理解单元测试、集成测试、确认测试与系统测试的基本内容(Ⅱ)●系统转换3.5.系统运行和维护基础知识●系统可维护性的概念(Ⅰ)●系统维护的类型正确性维护、适应性维护、完善性维护、预防性维护的基本概念(Ⅱ)●系统评价的概念与类型(Ⅰ)3.6.软件质量管理基础知识●软件质量特性(ISO/IEC 9126 软件质量模型)(Ⅰ)●软件质量保证(Ⅰ)●软件复杂性的概念及度量方法(McCabe度量法)(Ⅰ)●软件评审(设计质量评审、程序质量评审)(Ⅰ)●软件容错技术容错软件的定义、容错的一般方法(结构冗余、信息冗余、时间冗余、冗余附加技术)(Ⅰ)3.7.软件过程改进基础知识软件能力成熟度模型CMM(Ⅱ)统一过程(UP)与极限编程(XP)的基本概念(Ⅱ)4.面向对象基础知识4.1.面向对象的基本概念●对象、消息、类、继承(单继承、多继承)、多态(动态绑定机制)(Ⅱ)4.2.面向对象分析与设计知识●面向对象分析的基本活动认定对象、组织对象、描述对象间的相互作用、定义对象的操作、定义对象的内部信息(Ⅱ)●面向对象分析与设计方法PeterCoad和EdwardYourdon的OOA和OOD方法(Ⅰ)Booch的OOD方法(Ⅰ)OMT的分析与设计方法(Ⅰ)UML的基本概念及各种图形能够熟练地使用UML的各种模型绘制面向对象分析与设计模型(Ⅱ)面向对象测试的基本概念(Ⅰ)4.3.分析模式与设计模式知识设计模式的基本概念及其要素(Ⅰ)创建型设计模式(Ⅱ)结构型设计模式(Ⅱ)行为型设计模式(Ⅱ)4.4.面向对象程序设计知识●程序设计语言中的面向对象机制类与对象、对象自身引用、无实例的类(Ⅱ)继承与类层次结构(Ⅱ)消息传递与方法(Ⅱ)重置与重载(Ⅱ)●类库的概念(Ⅱ)4.5.面向对象数据库、分布式对象基础知识(Ⅰ)5.信息安全知识●信息系统安全基础知识计算机系统安全、网络安全、信息安全的基础知识(Ⅰ)●信息系统安全管理防治计算机病毒、防范计算机犯罪、存取控制、防闯入、防灾(Ⅰ)●保障完整性与可用性的措施(Ⅰ)●加密与解密机制基础知识(Ⅱ)●风险管理(风险分析、风险类型、抗风险措施和内部控制)(Ⅰ)●计算机安全相关的法律、法规基础知识(Ⅰ)6.标准化、信息化和知识产权基础知识6.1.标准化基础知识●标准化基础知识标准化目的、意义、组织机构及内容方面的基本概念(Ⅰ)标准化分类、代号与编号规定方面的基本概念(Ⅰ)标准制订过程方面的基础知识(Ⅰ)●标准分类国际标准、国家标准、行业标准、企业标准的表示方法(Ⅱ)●代码标准、文件格式标准、安全标准、软件开发规范和文档标准、互联网相关标准、软件开发规范和文档标准、基于构件的软件标准代码标准、文件格式标准、安全标准方面的基本概念(Ⅰ)软件开发规范和文档标准、互联网相关标准方面的基本概念、基于构件的软件标准(Ⅱ)安全标准、互联网相关标准方面的基本概念(Ⅰ)●标准化机构(补充)6.2.信息化基础知识●全球信息化趋势、国家信息化战略、企业信息化战略和策略(Ⅰ)●互联网关的法律、法规知识(Ⅰ)●个人信息保护规则(Ⅰ)●远程教育、电子商务、电子政务等基础知识(Ⅰ)●企业信息资源管理基础知识(Ⅰ)6.3.知识产权基础知识●保护知识产权有关的法律、法规软件有关的法律、法规方面的基础知识(Ⅰ)著作权法、软件保护条例及软件著作登记的基础知识(Ⅰ)软件著作权主体与客体、权力内容、权力归属、侵权责任分析侵权行为(Ⅱ)专利法、商标法、商业秘密权对软件的保护(Ⅰ)7.计算机专业英语具有工程师所要求的英语阅读水平(Ⅱ)理解本领域常用英语术语(Ⅱ)考试科目2 软件设计1.外部设计1.1.理解系统需求说明(Ⅱ)1.2.准备进行系统开发●选择开发方法、准备开发环境、制订开发计划(Ⅰ)1.3.设计系统功能●选择系统结构(Ⅱ)●设计各子系统的功能和接口(Ⅱ)●设计安全性策略、需求和实现方法(Ⅱ)●制订详细的工作流和数据流(Ⅱ)1.4.设计数据模型●设计ER模型及其他数据模型掌握E-R模型、UML模型的表示方法和使用方法,关系模型的定义、相关知识以及符号化表示方法(Ⅱ)通过从数据库逻辑设计中如何构造一个好的数据库模式出发,掌握关系规范化的实际背景、理论及模式规范化的方法(Ⅱ)掌握如何用关系数据库设计理论作指导,进行数据库逻辑设计,重点掌握E-R模型向关系模型转换的方法(Ⅲ)1.5.编写外部设计文档●系统配置图、各子系统关系图(Ⅰ)●系统流程图、系统功能说明书(Ⅰ)●输入输出规格说明、数据规格说明、用户手册框架(Ⅰ)●设计系统测试要求(Ⅰ)1.6.外部设计的评审(Ⅰ)2.内部设计2.1.设计软件结构●按构建分解,确定构建功能、规格以及构建之间的接口(Ⅱ)●数据结构与算法设计数据结构设计:线性表、查找表、树、图的顺序存储结构和链表存储结构的设计和实现(Ⅲ)算法设计:迭代、穷举搜索、递推、递归、回溯、贪心、动态规划、分治等算法设计(Ⅲ)●采用中间件和工具(Ⅰ)2.2.设计输入输出屏幕界面设计、输入输出格式设计(Ⅱ)分析数据特性,确认逻辑数据组织方式、存储介质设计记录格式和处理方式(Ⅱ) 将逻辑数据结构换成物理数据结构,计算容量,进行优化和检查信息(Ⅱ)2.3.设计物理数据(Ⅱ)2.4.构件的创建和重用●创建构件、重用构件(Ⅰ)●使用子程序库或类库AWT、Swing用户界面与事件处理机制(Ⅰ)Java语言中流与文件的应用(Ⅲ)Java语言中的多线程的开发与应用(Ⅲ)Java语言中集合类库的应用(Ⅲ)Java语言中网络、数据库的开发与应用(Ⅲ)C++标准类库中容器库的应用(Ⅲ)C++标准类库中算法库的应用(Ⅲ)C++标准类库中的迭代器的应用(Ⅲ)C++标准类库中的字符串的应用(Ⅲ)C++标准类库中的流与文件的应用(Ⅲ)C语言标准函数库(Ⅲ)2.5.编写内部设计文档●构件划分图、构件间的接口、构件处理说明(Ⅰ)●屏幕界面设计文档、报表设计文档、文件设计文档、数据库设计文档(Ⅰ)2.6.内部设计的评审(Ⅰ)3.数据库应用分析与设计●设计关系模式掌握给定一个实际的应用问题如何设计E-R模型,如何将E-R模型转换成关系模式, 确定联系类型、主键、候选键、外键判断关系模式规范化的程度(Ⅲ)●数据库语言SQL掌握给定一个实际的应用问题如何用SQL进行数据定义(创建表、视图)、完整性定义及权限定义(Ⅲ)●数据库访问掌握常用数据库的访问方法(Ⅱ)4.程序设计4.1.模块划分(原则、方法、标准)(Ⅱ)4.2.编写程序设计文档模块规格说明书(功能和接口说明,程序处理逻辑、输入输出数据格式的描述)(Ⅱ) 测试要求说明书(测试类型和目标、测试用例、测试方法)(Ⅱ)4.3.程序设计评审(Ⅱ)5.系统实施5.1.配置计算机系统及环境(Ⅱ)5.2.选择合适的程序设计语言(Ⅱ)5.3.用C程序设计语言以及C++、Java中的任一种程序设计语言进行程序设计用C语言实现常用的数据结构与算法及应用程序(Ⅲ)用C++语言实现常见的设计模式及应用程序(Ⅲ)用Java语言实现常见的设计模式及应用程序(Ⅲ)5.4.系统测试●指导程序员进行模块测试并进行验收(Ⅰ)●准备系统集成测试环境和测试工具(Ⅰ)●准备测试数据(Ⅰ)●写出测试报告(Ⅰ)6.软件工程应用6.1.软件开发周期模型(瀑布模型、螺旋模型、喷泉模型)(Ⅱ)6.2.需求分析●定义软件需求(系统化的目标、配置、功能、性能和约束功能需求与非功能需求)(Ⅱ) ●描述软件需求使用面向数据流的模型和面向对象模型描述软件的功能需求和非功能需求(Ⅲ) 描述软件需求的功能层次模型、控制流模型、面向数据结构的模型(Ⅰ)●定义软件需求的方法使用结构化分析方法定义软件需求,能够根据具体问题,绘制相应的DFD模型,并定义数据字典,采用决策表或决策树的方式描述加工逻辑(Ⅲ)使用面向对象分析方法定义软件需求,能够根据具体问题,创建符合UML标准的类图、用例图,并准确识别类中的关键属性和方法,以及类之间的关联(Ⅲ) 以UML状态图、活动图以及序列图所表达的软件需求(Ⅱ)6.3.软件设计●软件设计的基本原则分析与集成、逐步求精、抽象、信息隐蔽、模块化(Ⅰ)●软件设计方法(结构化设计方法、Jackson方法、Warnier方法、面向对象设计方法)结构化设计方法,并能够根据具体问题,在结构化分析的基础上给出设计结果(Ⅱ) 面向对象的设计方法,并能够根据具体问题,给出相应的符合UML标准的设计模型(Ⅲ)Jackson方法的基本理念及基本步骤(Ⅰ)●程序设计(补充)6.4.软件测试的原则与方法(Ⅱ)6.5.软件质量(软件质量特性、软件质量控制)(Ⅱ)6.6.软件过程(软件过程评估基本方法、软件能力成熟度评估基本方法)(Ⅱ)6.7.软件开发环境和开发工具(分析工具、设计工具、编程工具、测试工具、维护工具、CASE)(Ⅱ)6.8.面向对象技术●面向构件技术(Ⅰ)●统一建模语言UMLUML的基本概念与作用(Ⅲ)用例图的表示与应用(Ⅲ)类图与对象图的表示与应用(Ⅲ)序列图的表示与应用(Ⅲ)活动图的表示与应用(Ⅲ)通信图的表示与应用(Ⅲ)组件图的表示与应用(Ⅲ)部署图的表示与应用(Ⅲ)状态图的表示与应用(Ⅲ)●软件过程改进模型和方法(补充)6.9.网络环境软件技术(Ⅰ)。

信息与计算科学专业课程简介

信息与计算科学专业课程简介

信息与计算科学专业课程简介课程代码:3112001131.课程名称:解析几何 Analytic Geometry总学时: 64 周学时: 4学分: 3 开课学期:一修读对象:必修预修课程:无内容简介:《解析几何》是学科基础课程,是所有数学专业及应用数学专业的主要的基础课。

它是用代数的方法来研究几何图形性质的一门学科。

《解析几何》包括向量与坐标,轨迹与方程,平面与空间直线,柱面、锥面、旋转曲面与二次曲面,二次曲线的一般理论与二次曲面的一般理论等。

选用教材:吕林根,许子道,《解析几何》(第四版),高等教育出版社,2006年。

参考书目:周建伟,《解析几何》,高等教育出版社,2005年。

课程代码:311200214、311200314、311200616、3112007152.课程名称:数学分析Ⅰ-Ⅳ Mathematical AnalysisⅠ-Ⅳ总学时:334 周学时:4,4,6,5学分: 18 开课学期:一,二,三,四修读对象:必修预修课程:无内容简介:《数学分析》是学科基础课程,是所有数学专业及应用数学专业第一基础课。

它提供了利用函数性质分析和解决实际问题的方法, 培养学生严谨的抽象思维能力,为学习其他学科奠定基础。

主要内容有:实数、函数、极限论,函数的连续性。

一元函数微分学,微分学基本定理。

一元微分学应用,实数完备性基本定理,闭区间上连续函数性质的证明,不定积分,定积分及应用,非正常积分。

数项级数,函数列与函数项级数,幂级数,付里叶级数,多元函数的极限与连续,多元函数微分学。

隐函数定理及其应用,重积分,含参量非正常积分,曲线积分与曲面积分。

选用教材:华东师范大学数学系,《数学分析》(第三版)(上、下册),高等教育出版社,2001年。

参考书目:① 陈纪修,《数学分析》(第二版),高等教育出版社2004年。

② 刘玉琏,傅沛仁,《数学分析讲义》(第三版),高等教育出版社,1992年。

课程代码:311200416、3112005153.课程名称:高等代数Ⅰ-Ⅱ Advanced AlgebraⅠ-Ⅱ总学时:198 周学时:6,5学分: 11 开课学期:二,三修读对象:必修预修课程:无内容简介:《高等代数》是学科基础课程。

本科专业认证《程序设计、算法与数据结构(一)》教学大纲

本科专业认证《程序设计、算法与数据结构(一)》教学大纲

《程序设计、算法与数据结构(一)》教学大纲课程编号:0812000217课程名称:程序设计、算法与数据结构(一)英文名称:Programming,Algorithm and Data Structure I学分:3 课程性质:必修总学时:48 其中,讲授48学时,实验0学时,上机0学时,实训0学时适用专业:网络工程建议开设学期: 1先修课程:无开课单位:计算机与通信工程学院一、课程简介《程序设计、算法与数据结构(一)》是计算机科学与技术、软件工程、网络工程、通信工程专业基础课程,是课程群的启蒙课,也是学生进入大学后的第一门程序设计类课程,其目的是以C语言程序设计为基础,使学生熟悉C程序设计的基本语法,通过大量的编程练习,引导学生进入程序设计的殿堂,培养学生基本的数据结构和算法分析能力,为后续课程的学习打下基础。

二、课程目标与毕业要求依据2017培养方案中的毕业要求,考虑本课程与专业毕业要求的支撑关系,制定本课程学习目标。

课程目标1:通过程序三种基本控制结构,函数等知识点的学习,要求学生掌握结构化程序设计的基本思想,深入领会自顶向下、逐步求精的设计方法,识别网络工程项目的设计与开发过程中功能模块划分的问题。

(支持毕业要求 2.1能运用数学、自然科学及网络工程的基本原理,识别和判断网络工程问题的关键环节。

)课程目标2:在程序设计C语言后阶段学习过程中,针对成绩管理信息系统大作业的要求,将同学分组了解系统功能与应用背景,对具体的开发任务进行分工联调并编程实现。

通过系统实现强化个体的角色意识和团队意识。

(支撑毕业要求9.1:能够理解多学科背景下的团队中每个角色的定位与责任,具有团队合作意识,能够胜任个体、团队成员的角色任务。

)课程目标3:通过学习标准的C语言程序设计语法,运用函数、线性表、字符串、链表等基本知识,通过学习算法的描述方法,使学生能将实际问题转换成计算机描述的算法问题,培养学生运用程序算法的描述方法进行交流的能力。

0835软件工程一级学科简介

0835软件工程一级学科简介

0835软件工程一级学科简介软件工程(Software Engineering)是一门综合性的学科,涉及软件开发、软件质量保证、软件项目管理等多个领域。

本文将对软件工程的定义、发展历程、重要性、学科内容以及职业发展方向等进行简要介绍。

软件工程是指运用工程化的原理、方法和工具,对软件开发、维护和管理过程进行系统化、规范化、可量化的管理和控制,从而确保软件能够以预期的成本、进度和质量满足用户需求。

其发展始于20世纪60年代末期的软件危机,当时软件开发过程中频繁出现的延期、超支、低质量等问题迫使人们开始重视软件开发的管理与规范。

随着信息技术的迅猛发展,软件工程作为一门学科逐渐形成并得到广泛应用。

它涵盖了需求分析、系统架构设计、软件开发、测试与调试、部署与运维等多个环节。

通过对软件开发过程的体系化管理,软件工程能够提高软件开发效率、降低开发风险,并确保软件产品的可靠性、可维护性以及可扩展性。

软件工程的学科内容包括但不限于以下几个方面:1. 需求分析与规格说明:在项目启动阶段,软件工程师需要与客户充分沟通,了解用户需求,并将其转化为明确的规格说明,以便后续开发与设计过程中的参考。

2. 软件设计与开发:软件设计是软件工程中重要的一环,它包括系统架构设计、模块设计、数据结构设计、算法设计等。

软件开发则侧重于根据设计方案编写代码,实现软件功能。

3. 软件测试与调试:为了确保软件质量,软件工程师需要进行全面的测试与调试工作。

测试包括单元测试、集成测试、系统测试等,通过不同层次的测试,发现并修复软件中的错误与缺陷。

4. 部署与运维:软件部署指将软件安装到用户的计算机或服务器上,并配置好所需的环境。

软件运维则是在软件发布后,负责监控、维护和更新软件,以确保其正常运行。

软件工程一级学科对于培养具备软件开发与管理能力的专业人才至关重要。

软件工程专业的学生需具备扎实的计算机基础知识,如数据结构、操作系统、算法等,并能够熟练运用各种软件开发工具和编程语言。

软件工程习题解答(含基本章节应试例子以及一个UML案例)

软件工程习题解答(含基本章节应试例子以及一个UML案例)

软件⼯程习题解答(含基本章节应试例⼦以及⼀个UML案例)软件⼯程习题解答⼀、软件⽣存周期各阶段的基本任务?1. 问题定义:(1)回答要解决的问题是什么。

(2)系统分析员应该提出关于问题性质、⼯程⽬标和规模的书⾯报告。

(3)经过和⽤户讨论,澄清含糊不清的地⽅,改正理解不正确的地⽅,得出⼀份双⽅都满意的⽂档。

(4)问题定义是软件⽣命周期中最简短的阶段。

2.可⾏性研究:(1)前⼀阶段定义的问题有可⾏的解决办法吗?(2)系统分析员要进⾏⼀次⼤⼤压缩和简化了的系统分析和设计。

导出⾼层逻辑模型(⽤数据流图表⽰)。

确定⼯程规模和⽬标,准确估计系统的成本和效益。

(3)使⽤部门的负责⼈根据可⾏性研究的结果决定是否继续进⾏该⼯程的开发⼯作。

3.需求分析:(1)主要确定⽬标系统必须具备哪些功能。

(2)系统分析员和⽤户密切配合,充分交流,得出经⽤户确认的系统逻辑模型(数据流图、数据字典、算法描述)。

4.总体设计:(1)回答如何解决问题。

(2)系统分析员应使⽤系统流程图或其他⼯具描述每种可能系统;估计每种⽅案的成本和效益。

推荐⼀较好的系统──有其详细计划。

设计软件的结构(⽤层次图或结构图描述)。

5.详细设计:(1)回答应该怎样具体地实现这个系统。

(2)设计出程序的详细规格说明(⽤HIPO层次图加输⼊/处理/输出图)或PDL语⾔(过程设计语⾔)。

6.编码和单元测试:(1)写出正确的容易理解,容易维护的程序模块。

(2)程序员:选取⼀种适当的⽤⾼级语⾔书写程序(或汇编语⾔)。

仔细测试编写出的每⼀个模块。

7.综合测试:(1)通过各种类型的测试,使软件达到预定的要求。

(2)最基本的测试是集成测试和验收测试⽅法。

集成测试是根据设计的软件结构,把经过单元测试检验的模块按某种选定的策略装配起来,在装配的过程中对程序进⾏必要的测试。

验收测试是按照需求规格说明书的规定,由⽤户对⽬标系统进⾏验收。

(3)⽤正式⽂档将测试计划、详细测试⽅案以及实际测试结果保存。

软件工程一级学科简介

软件工程一级学科简介

软件工程一级学科简介概述软件工程是计算机科学与工程学科的一个重要分支,旨在研究和应用软件开发的原理、方法和技术,以提高软件系统的质量、效率和可靠性。

随着信息技术的快速发展,软件工程在现代社会中起到了至关重要的作用,成为促进科技创新和推动数字化转型的重要基石。

定义软件工程定义为使用系统化、规范化和可供量化度量的方法和工具来开发和维护软件的工程学科。

它涵盖了软件开发的各个阶段,包括需求分析、系统设计、编码实现、测试验证和运维管理等。

软件工程旨在确保软件质量、提高开发效率、降低维护成本,以满足现代社会对大规模、高可靠性、高性能软件系统的需求。

主要内容软件工程一级学科包含了一系列重要的研究内容和技术方法,其中主要包括以下几个方面:需求工程:需求工程是软件工程的起点,它旨在从用户和系统利益相关者的需求中,明确和建立起一个准确、完整、一致的需求规约。

需求工程的关键是需求获取、需求分析和需求规约等环节,通过使用合适的工具和技术,确保软件系统能够完整、正确地满足用户的需求。

软件设计:软件设计是根据需求规约,对软件系统的结构和组织进行设计。

它包括系统设计和详细设计两个层次。

系统设计主要关注整个系统的结构和模块之间的关系,详细设计则关注于具体模块的实现和接口设计等。

软件设计需要考虑系统的可靠性、可维护性和可扩展性等方面。

编码实现:编码实现是将设计好的软件进行实际的编码和开发工作。

它使用各种编程语言和开发工具,将设计好的系统模块转化为可执行的程序,并在此过程中进行代码调试和错误修复等操作。

编码实现需要灵活运用各种编程技术和规范,以确保软件代码的质量和可读性。

测试验证:测试验证是软件工程中一个重要的环节,旨在验证软件系统的功能、性能和稳定性等方面的要求。

测试验证分为单元测试、集成测试、系统测试和验收测试等不同层次,其中包括了测试用例设计、测试执行和测试结果评估等过程。

通过有效的测试验证,可以发现并解决软件中存在的问题,保障软件的质量和可靠性。

软件工程(应用专业)课程设计_...

软件工程(应用专业)课程设计_...

《软件工程》课程设计任务书一.目的软件工程课程设计是软件工程专业一个综合性的实践教学环节,其目的在于促进学生复习和巩固计算机软件设计知识,加深对软件设计方法、软件设计技术和设计思想的理解,并能运用所学软件设计知识和面向对象技术进行综合软件设计,提高学生的综合应用能力。

通过这次课程设计,要掌握UML(统一建模语言),并能运用UML在Rational Rose中建模。

二.要求:1.一人一组。

2.熟悉Rose开发环境。

3.掌握UML的基本模型元素(如角色、用例、类等)。

4.熟悉UML,主要了解UML中的9大图:Use case diagram(用例图)、Class diagram(类图)、Sequence diagram(序列图)、Collaboration diagram(协作图)、Statechart diagram(状态图)、Activity diagram(活动图)、Component diagram(组件图)、Deployment diagram(配置图)、datamodel diagram(数据模型图)。

5.进行系统需求分析与系统功能模块设计,绘出系统详细的业务流程图和数据流程图,建立完整的系统数据库的逻辑模型。

6.完成对系统的建模实现。

7.期末进行检查,并提交设计报告。

三.题目及时间、地点安排2010-2011第一学期第18周星期五进行课程设计成果的演示与检查(具体地点另行通知),同时提交源程序和课程设计报告。

四.报告要求:1.实验题目2.实验目的3.实验要求4.实验内容5.系统设计的源程序和文档(包括说明)6.心得体会五.参考资料:1.Wendy Boggs & Michael Boggs 著邱仲潘译《UML与Rational Rose2002从入门到精通》电子工业出版社2.Martin Fowler & Kendall Scott:UML Distilled Second Edition A Brief Guide to the StandardObject Modeling Language3.UML参考手册4.Jason T. Roff 著张瑜杨继萍等译《UML基础教程》清华大学出版社5.参见本中心服务器ftp:\\s@172.16.38.223软件开发基础或《软件工程课程设计》目录下的相关文档。

软件工程试题及答案

软件工程试题及答案

软件⼯程试题及答案1. 软件⽣命期各阶段的任务是什么?答:软件⽣命期分为7个阶段:1、问题定义:要解决的问题是什么2、可⾏性研究:确定问题是否值得解,技术可⾏性、经济可⾏性、操作可⾏性3、需求分析:系统必须做什么4、总体设计:系统如何实现,包括系统设计和结构设计5、详细设计:具体实现设计的系统6、实现:编码和测试7、运⾏维护:保证软件正常运⾏。

2、软件重⽤的效益是什么?答:1、软件重⽤可以显著地改善软件的质量和可靠性。

2、软件重⽤可以极⼤地提⾼软件开发的效率。

3、节省软件开发的成本,避免不必要的重复劳动和⼈⼒、财⼒的浪费。

3、⾃顶⽽下渐增测试与⾃底⽽上渐增测试各有何优、缺点?答:①⾃顶⽽下渐增测试优点:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,⽽且能够尽早发现上层模块的接⼝错误。

缺点:需要存根程序,底层错误发现较晚。

②⾃底⽽上渐增测试优点与缺点和⾃顶⽽下渐增测试相反。

4 、提⾼可维护性的⽅法有哪些?答:在软件⼯程的每⼀阶段都应该努⼒提⾼系统的可维护性,在每个阶段结束前的审查和复审中,应着重对可维护性进⾏复审。

在需求分析阶段的复审中,应对将来要扩充和修改的部分加以注明。

在讨论软件可移植性问题时,要考虑可能要影响软件维护的系统界⾯。

在软件设计的复审中,因从便于修改、模块化和功能独⽴的⽬标出发,评价软件的结构和过程,还应对将来可能修改的部分预先做准备。

在软件代码复审中,应强调编码风格和内部说明这两个影响可维护性的因素。

在软件系统交付使⽤前的每⼀测试步骤中都应给出需要进⾏预防性维护部分的提⽰。

在完成每项维护⼯作后,都应对软件维护本⾝进⾏仔细认真的复审。

为了从根本上提⾼软件系统的可维护性,⼈们正试图通过直接维护软件规格说明来维护软件,同时也在⼤⼒发展软件重⽤技术。

简述软件测试要经过哪⼏个步骤,每个步骤与什么⽂档有关。

【解答】测试过程按4 个步骤进⾏,即单元测试(模块测试)、集成测试(⼦系统测试和系统测试)、确认测试(验收测试)和平⾏运⾏。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《计算与软件工程Ⅰ》1.1课程概述1.1.1课程目标与定位《计算与软件工程Ⅰ》,又名《计算与软件工程——个人级软件开发》,课程在软件工程理念指导下,侧重于程序设计教学,以一个计算示例的迭代式增量开发实践为线索,全面培养学生在个人开发级别的小规模软件系统构建能力,让学生初步体验软件工程方法与技术在系统开发中的关键作用。

具体教学内容包括:(1)程序设计基础,面向对象程序设计语言;(2)OOA、OOD、调试与测试等软件工程知识;(3)个人级别的软件开发活动管理,个人级别的软件职业知识。

通过本课程的学习,学生应该能够:●掌握程序设计的基本思想。

●理解迭代式软件开发的基本过程。

●掌握面向对象分析、设计、构造的基本思想,能够使用OOA和OOD的思想、熟练使用OOPL在个人级别进行小规模软件系统的构建。

●理解封装思想,掌握类、包等基本概念,能够熟练使用类、接口等程序设计机制。

掌握继承的思想,能够正确使用继承机制构建复杂类层次结构。

掌握多态的思想,能够熟练使用接口等实现多态。

●理解类库的概念和构造方法。

了解基本的图形库和网络库。

●掌握UML的基本概念和常用图(包括用例图、类图和顺序图),能够使用一种UML建模工具绘制表达软件分析与设计的简单图。

●能够熟练使用一种IDE进行小规模程序的开发。

●能够了解个人级别上的软件职业知识,按照个人软件过程的基本思想记录个人软件开发活动。

本课程是专业教学计划中一门关键入门课程,系统讲授软件工程方法指导下的程序设计,在本科一年级实施。

可以在《计算系统基础》等导论类课程之后执行,也可以做为第一门专业课程执行。

本课程是《计算与软件工程》课程的第一部分,是《计算与软件工程Ⅱ/Ⅲ》的技术基础。

本课程详细讲解软件工程原则指导下的程序设计,建立学生工程观指导下在个人级别构建小规模软件系统的综合能力。

在《计算与软件工程Ⅱ》中将进一步深化学生对软件工程原则的理解以及合作构建中小规模软件系统的综合能力。

本课程全面介绍面向对象程序设计语言知识以及相应的面向对象分析与设计基础知识,为后继课程提供了面向对象软件开发的技术基础。

同时,本课程初步建立学生的软件工程理念,在个人开发级别上教授学生软件工程基础知识和实践,包括调试、测试、集成以及基于个人软件过程思想的初步计划能力,这些能力使得学生在学习后继课程时具备初步的软件工程能力。

1.1.2知识矩阵类型参数和参数化类型k D程序设计基础程序设计基本结构9(3) 5(1) 变量、类型、表达式和语句 a E**高级语言的基本语法和语义 a E**输入和输出基础 a E*顺序、条件和循环控制结构 a E**函数定义、调用和参数传递 a E*结构化分解技术 a E* 算法和问题求解 2 2 问题求解策略 a E*问题求解算法 a E*算法实现策略 a E*算法的概念和特性 a E*问题求解技术 a E* 基本数据结构6(2) 5(1) 数组 a E**字符串和字符串处理 a E**数据在存储器中的表示 a E*静态分配、栈式分配和堆式分配 a E*运行时的存储器管理 a E**指针和引用 a E* 递归 1 1 递归的概念k E* 事件驱动程序设计 2 2 事件处理方法 c E*事件传播 c E*异常处理 c E*面向对象程序设计(及Java语言实现)封装与信息隐藏8 3 类与对象 a E对象和方法的内部表示 a E组合 a E接口 a E访问控制 a E静态变量与方法 a E类的初始化 a E对象垃圾收集机制 a E内部类 a E异常处理 a E 继承 3 1 类的重用 a E类的层次 a E 多态性 3 1●E:核心知识点,必须包含在课程内容中;D:最好包含在课程中;O:选讲内容;●E*与E**:如果学生未学习过计算系统基础和程序设计基础,E*与E**知识点按照栏内课时讲解;否则复习E**知识点,课时数为括号内课时。

1.1.3课程教学组织方式如图3所示,《计算与软件工程Ⅰ》围绕一个具体计算系统示例的迭代式增量开发过程组织教学。

图3. 《计算与软件工程Ⅰ》的教学组织示意图在教学内容上,《计算与软件工程Ⅰ》融合了程序设计、个人开发级别的软件工程方法和职业素质培养,全面培养学生在个人开发级别上构建小规模软件系统的能力。

传统程序设计课程往往偏重于技术的讲解,课程按照程序设计知识点展开。

这种做法只能让学生了解分散的程序设计知识,学生很难从工程的角度了解软件构建过程。

导致了学生割裂看待程序设计与软件工程,较难应用软件工程方法指导程序设计;以程序设计思维而不是工程思维来思考问题,遇到问题时先进行程序设计而不是寻找工程化解决方案;重程序设计技巧,轻软件工程方法,热衷于探索各种机巧的程序设计方法,忽视需求分析、评审、测试等软件工程的基本原则与方法。

而本课程在每个教学阶段均坚持融合个人级软件工程、程序设计和基本职业素质教学,要求学生始终使用软件工程原则指导程序设计,为学生在专业学习的开始阶段建立起软件开发的工程观念,并建立起正确的基本职业素质认知。

在教学组织上,《计算与软件工程Ⅰ》以一个计算系统示例和一个学生实践用例的迭代式增量开发为线索,将个人开发级别的软件工程方法和程序设计教学相结合。

迭代式开发也被称作迭代增量式开发或迭代进化式开发,在迭代式开发方法中,整个开发工作被组织为一系列的短小的项目,被称为一系列的迭代。

采用这种方法,开发工作可以在需求被完整地确定之前启动,并在一次迭代中完成系统的一部分功能或业务逻辑的开发工作。

再通过客户的反馈来细化需求,并开始新一轮的迭代。

为了培养学生能够从工程的角度看待软件开发,本课程设计了一个案例,分为三次迭代,为学生完整展示小规模通用软件系统构建过程。

本课程依据计算系统示例与学生实践用例的迭代开发过程,循序渐进、由浅入深组织程序设计知识与相关软件工程知识的融合教学。

学生可以同时学习到相应的程序设计和软件工程原则,并在教师的引导下体会这些原则在实际软件开发中的应用。

软件工程是一门实践性非常强的学科,那种认为先介绍知识,然后附加一两个实践练习的教学方式割裂了知识与实践,无法帮助学生深入理解软件工程思想。

《计算与软件工程Ⅰ》将程序设计、软件工程知识教学结合案例教学同步进行,按照软件工程原则安排每个迭代的分析、设计、程序设计和测试实践。

学生在学习了相应知识后,立刻就可以看到它们的实践应用,获得及时反馈,加深对软件工程原则的理解。

《计算与软件工程Ⅰ》将计算示例分成三次迭代:●第一次迭代:基于类职责的设计与实现,利用软件工程和程序设计知识构建系统;●第二次迭代:基于类协作的设计与实现,利用软件工程和程序设计知识二次构建系统;●第三次迭代:基于完整系统的设计与实现,利用GUI与网络等,进行三次增量开发。

课程选择Java作为编程语言进行教学。

Java作为当前业界最为广泛使用的编程语言,提供了面向对象程序设计的全面机制,适合作为入门语言选用,也是后继课程教学的语言基础之一。

1.2课程内容《计算与软件工程Ⅰ》课程首先介绍程序设计背景知识,为课程的展开提供基础。

然后,课程将内容依照三次迭代进行组织,每个迭代教学内容均包括程序设计、软件工程基础和计算系统示例,其中计算系统示例在三个阶段是按照迭代式开发组织的。

在课程内容设计过程中,知识教授和计算系统示例的迭代开发内容相匹配是一个重要的原则。

根据学生是否学习过《计算系统基础》或《程序设计基础》等前导性知识课程,课程的课时安排如表3与表4所示:1.2.1预备知识本部分讲解计算基础、软件工程基础、个人级软件职业基础等预备知识,为学生学习个人级别的小规模软件开发做好准备。

教学内容具体包括:●计算环境:程序设计环境(冯•诺依曼体系*,操作系统与支撑软件*,机器语言与汇编语言、高级语言、编译器、解释器),虚拟机工作原理;(如果未学习过《计算系统基础》《程序设计基础》等入门课程,*内容必须详细讲解,否则可以忽略)●软件工程基础:软件开发生命周期,迭代式软件开发,个人软件过程基础;●个人级职业知识:职业实践基础。

1.2.2计算系统示例与学生实践用例说明一、计算系统示例(教学讲解用):图书借阅系统“图书借阅系统”是一个具有图形用户界面的基于网络的用于在大学中管理图书借阅的软件。

软件功能如下:●管理员:⏹图书管理:图书分为普通图书和珍本图书,可以进行增删改的操作;⏹借阅人管理:借阅人分为本科生、研究生、教职工,可以进行增删改的操作。

●学生用户:⏹查询图书;⏹根据自身权限借阅图书,并可以续借图书;⏹归还图书;⏹接近图书借阅期限时,可以获得相应提醒。

●教师用户:⏹具备学生用户功能;⏹可以要求学生借阅者提前归还图书。

●网络同步:⏹可以和服务器进行同步,用户在服务器上设定用户名和密码,登录后可以进行同步;⏹同一时刻,仅允许同一个用户的一个客户端登录。

●系统其它假定:⏹每种图书只有一本;⏹不使用数据库。

二、计算系统实践用例(学生实验用):大学公用场所资源预订管理系统“大学公用场所资源预订管理系统”是一个具有图形用户界面的基于网络的用于在大学中管理公用场所资源预订的软件。

软件功能如下:●管理员:⏹帐号管理:可以对帐号进行增删改操作;⏹公用场所资源管理:可以对房间资源进行增删改操作,资源包括教室、体育场馆、会议厅等。

●一般用户:⏹查询场地在某一时段的使用情况;⏹可以预定体育场馆。

●中级用户(教师,团委学生会):⏹预订体育场馆;⏹预订会议室。

●高级用户(教务处):⏹查询公用场所在某一时段的使用情况;⏹预订所有公用场所;⏹有调整其他用户预订的权力。

●系统其它假定:⏹不使用数据库。

1.2.3迭代一学习如何构建一个基于命令行的简单图书借阅管理软件。

教学内容具体包括:●程序设计知识内容:⏹类的成员变量◆名字(名字,命名规则);◆变量与类型(基本数据类型,变量,类型检测,命名常量);◆表达式与赋值语句(赋值语句,算术表达式,类型转换,关系表达式和布尔表达式,短路求值,混合模式赋值);◆其它常用数据类型(字符串类型,数组类型,记录类型与简单类定义,指针类型与引用类型);⏹类的成员方法◆语句层次的控制结构(条件语句,分支语句,循环语句,Goto语句讨论);◆子程序(子程序的基本原理,子程序的设计问题,参数传递方法,作用域与生存期,全局变量,函数副作用);◆递归;⏹类的封装◆封装的基本概念◆对象初始化和清理Ⅰ◆访问控制Ⅰ◆静态变量与方法⏹Java简单类库的使用◆String◆容器类◆输入输出文件访问⏹注:如果未学习过《计算系统基础》《程序设计基础》等入门课程,*内容必须详细讲解,否则简单复习基础知识,重在认知Java语法。

●软件工程知识内容:⏹软件需求(简单的场景);⏹软件设计(简单的类图);⏹软件构造(调试、代码规范);⏹软件测试(准备测试)。

相关文档
最新文档