《计算与软件工程Ⅰ》
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软件工程一级学科简介软件工程(Software Engineering)是一门综合性的学科,涉及软件开发、软件质量保证、软件项目管理等多个领域。
本文将对软件工程的定义、发展历程、重要性、学科内容以及职业发展方向等进行简要介绍。
软件工程是指运用工程化的原理、方法和工具,对软件开发、维护和管理过程进行系统化、规范化、可量化的管理和控制,从而确保软件能够以预期的成本、进度和质量满足用户需求。
其发展始于20世纪60年代末期的软件危机,当时软件开发过程中频繁出现的延期、超支、低质量等问题迫使人们开始重视软件开发的管理与规范。
随着信息技术的迅猛发展,软件工程作为一门学科逐渐形成并得到广泛应用。
它涵盖了需求分析、系统架构设计、软件开发、测试与调试、部署与运维等多个环节。
通过对软件开发过程的体系化管理,软件工程能够提高软件开发效率、降低开发风险,并确保软件产品的可靠性、可维护性以及可扩展性。
软件工程的学科内容包括但不限于以下几个方面:1. 需求分析与规格说明:在项目启动阶段,软件工程师需要与客户充分沟通,了解用户需求,并将其转化为明确的规格说明,以便后续开发与设计过程中的参考。
2. 软件设计与开发:软件设计是软件工程中重要的一环,它包括系统架构设计、模块设计、数据结构设计、算法设计等。
软件开发则侧重于根据设计方案编写代码,实现软件功能。
3. 软件测试与调试:为了确保软件质量,软件工程师需要进行全面的测试与调试工作。
测试包括单元测试、集成测试、系统测试等,通过不同层次的测试,发现并修复软件中的错误与缺陷。
4. 部署与运维:软件部署指将软件安装到用户的计算机或服务器上,并配置好所需的环境。
软件运维则是在软件发布后,负责监控、维护和更新软件,以确保其正常运行。
软件工程一级学科对于培养具备软件开发与管理能力的专业人才至关重要。
软件工程专业的学生需具备扎实的计算机基础知识,如数据结构、操作系统、算法等,并能够熟练运用各种软件开发工具和编程语言。
软件工程习题解答(含基本章节应试例子以及一个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、在软件开发的各种资源中,(B)是最重要的资源.A开发工具B方法C硬件环境D人员2、软件的复杂性是( A ),它引起人员通信困难、开发费用超支、开发时间超时等问题.A固有的B人为的C可消除的D不可降低的3、原型化方法是用户和软件开发人员之间进行的一种交互过程,适用于(A )系统。
A需求不确定的B需求确定的C管理信息D决策支持4、单元测试的测试用例主要根据( D )的结果来设计。
A需求分析B源程序C概要设计D详细设计5、(A )是软件生存期中的一系列相关软件工程活动的集合,它由软件规格说明、软件设计与开发、软件确认、软件改进等活动组成.A软件过程B软件工具C软件生存周质量保证D软件工程6、(A )意味着一个操作在不同的类中可以有不同的实现方式.A多态性B类的复用C封装7、软件测试计划开始于需求分析阶段,完成于( D )阶段.A需求分析B软件设计C软件实现D软件测试8、在软件生存周期的瀑布模型中一般包括计划、( C )、设计、编码、测试、维护等阶段。
A可行性分析B需求采集C需求分析D问题定义9。
软件需求分析阶段的测试手段一般采用( C )。
A总结B阶段性报告C需求分析评审D不测试10。
(C )是把对象的属性和操作结合在一起,构成一个独立的对象,其内部信息对外界是隐蔽的,外界只能通过有限的接口与对象发生联系。
A多态性B继承C封装D消息11。
软件测试是为了( B )而执行程序的过程。
A纠正错误B发现错误C避免错误D证明正确12. 在结构化分析方法中,(C )表达系统内部数据运动的图形化技术.A数据字典B实体关系图C数据流图D状态转换图13. 软件工程的基本要素包括方法、工具和( A )。
A过程B软件系统C硬件环境D人员14。
TURBO PASCAL是(A)软件。
A、系统软件B、人工智能C、事务软件D、应用软件15、选择结构的复杂性比顺序结构的复杂性要(B)。
A、小B、大C、相等D、无法比较16、模块内聚度越高,说明模块内各成分彼此结合的程度越(B)。
《软件工程》打印--大题作业
根据下面程序代码,画出程序流程图,然后设计满足条件组合覆盖的测试用例。
BEGIN T:=0IF ( X>=80 AND Y>=80 )THENT:=1ELSE IF ( X>=90 AND Y>=75 ) THENT:=2ENDIF END.答案:开始T=0X ≥80AND y ≥80T=1X ≥ AND y ≥75T=2结束YNY N经化简后的测试用例:x=95 y=95;x=95,y=70;x=70,y=95;x=70,y=70;一、应用题2一个城市的公共事业部决定开发一个“计算机化的”坑洼跟踪和修理系统。
市民通过本系统报告有坑洼时,要说明街道地址、大小、影响程度,还要记录报告者的姓名和电话,存储在坑洼报告信息中,被送到公共事业部,工作人员根据坑洼的地点和大小,修理队标识号,修理队的人数,被分配的装备,制定一份工单,送到维修队。
维修队修理后,将坑洼修理信息上报公共事业部的工作人员,包括:修理坑洼状况,使用填料的数量和修理的开销(时间、人数、使用的材料、装备)。
请画出数据流程图,并写出工单的数据字典。
市民报告坑洼信息IPO01DS01DS03坑洼信息工单信息坑洼信息坑洼信息坑洼信息工单信息维修单位信息维修结果录入IPO03生成工单IPO02生成维修报告IPO04DS02维修单位信息维修信息DS04坑洼维修信息工单信息坑洼维修报告制定工单指令坑洼信息公共事业部维修单位维修信息工单数据字典 数据项 类型 长度 初始值 备注 工单号 字符 8 自动生成 主键 坑洼编号 字符 8 DS01的主键 维修单位编号 字符 8 DS02的主键 制单日期 日期 8 当前日期 制单人 字符 8 工单描述 字符 500 工单级别 数字 1 0 计划工时 数字 2 0计划用填料量 数字 5 0 单位(吨)附加题:1、对下列子程序进行调试:procedure example(y,z: real; var x: real) begin if (y>1) and (z=0) then x:=x/y; if (y=2) or (x=l) then x:=x+l; end.该子程序接受x, y, z 的值,并将计算结果x 的值返回给调用程序。
软件工程习题
软件工程基础一.选择题1.软件需求分析阶段的工作,可以分为4个方面:需求获取,需求分析,编写需求规格说明书以及( )-A)用户B).需求审评C).总结D).都不正确2.在原型法中称( )为用户/设计者,开发人员根据用户需求不断修改原型,直到满足用户要求为止.-A)用户B).开发人员C).系统分析员D).程序员3.下面不属于软件工程的3个要素是( )-A)工具B).过程C).方法D).环境4.检查软件产品是否符合需求定义的过程称为( )-A)确认测试B).集成测试C).验证测试D).验收测试5.数据存储和数据流都是( ),仅仅是所处的状态不同.-A)分析结果B).事件C).动作D).数据6.数据流图和( )共同组成系统的逻辑模型.-A)HIPO图B).PDL C).数据字典D).层次图6.数据元素组成数据的方式的基本类型( )-A)顺序B).选择C).循环D).以上全部7.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成.下列图符名标识的图符不属于数据流图合法图符的是( ).-A)控制流B).加工C).数据存储D).源和潭8.结构化分析方法就是面向( )的自顶向下逐步求精进行需求分析的方法.-A)目标B).数据流C).功能D).对象9.通过( )可以完成数据流图的细化.-A)结构分解B).功能分解C).数据分解D).系统分解10.下面不属于软件工程原则的是( )-A)抽象B).模块化C).自底向上D).信息隐蔽11.( )是数据说明、可执行语句等程序对象的集合,它是单独命名的而且可以通过名字来访问.-A)模块化B).抽象C).精化D).模块12.( )是指让一些关系密切的软件元素在物理上彼此靠近.-A)信息隐蔽B).内聚C).局部化D).模块独立13.面向数据流的设计方法把( )映射成软件结构.-A)数据流B).系统结构C).控制结构D).信息流14.程序流程图(PDF)中的箭头代表的是( ).-A)数据流B).控制流C).调用关系D).组成关系16.在进行软件结构设计时应该遵循的最主要的原理是( )-A)抽象B).模块化C).模块独立D).信息隐蔽17.在结构化方法中,软件功能分解属于软件开发中的( )阶段.-A)详细设计B).需求分析C).总体设计D).编程调试18.在测试中,下列说法错误的是( )-A)测试是为了发现程序中的错误而执行程序的过程B).测试是为了表明程序的正确性C).好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案D).成功的测试是发现了至今为止尚未发现的错误的测试19. 下列工具中为需求分析常用工具是( )-A)PA)D)B).PFD)C).N-S D).D)FD)20软件调试的目的是( )-A)发现错误B).改正错误C).改善软件的性能D).挖掘软件的潜能21.软件工程师一种( )分阶段实现的软件程序开发的方法.-A)自底向上B).自顶向下C).逐步求精D).面向数据流22.通过( )机制,各种软件工具用统一的数据接口规范存取环境信息库的的信息.-A)软件工具箱B).环境集成C).软件管理和软件支持工具D).软件开发环境23.在软件生命周期法中,用户的参与主要在( ). A.软件定义期B).软件开发期C).软件维护期D).整个软件生命周期过程中24.软件定义期问题定义阶段涉及的人员有( ).-A)用户、使用部门负责人B).软件开发人员、用户、使用部门负责人C).系统分析员、软件开发人员D).系统分析员、软件开发人员、用户、使用部门负责人25.软件详细设计主要采用的方法是( ).-A)结构化程序设计B).模型设计C).结构化设计D).流程图设计26.( )应考虑对模块相联和资源共享问题进行描述和制约.-A)系统设计B).详细设计C).接口控制D).结构化编辑工具27.( )是程序中一个能逻辑分开的部分,也就是离散的程序单位.-A)模块B).复合语句C).循环结构D).数据块28.软件开发的原型化方法是一种动态定义软件需求的方法,下述条件中,( )是实施原型化方法所必需的.Ⅰ成熟的原型化人员Ⅱ快速的成型工具Ⅲ需求了解的正确性-A)Ⅰ和ⅡB).Ⅱ和ⅢC).Ⅰ、Ⅱ和ⅢD).Ⅲ29.判定树和判定表示用于描述结构化分析方法中的( )环节的工具。
软件工程 一级学科
软件工程一级学科
【原创实用版】
目录
1.软件工程的定义与重要性
2.软件工程的发展历程
3.软件工程的主要研究领域
4.软件工程在我国的发展现状与前景
正文
软件工程是一门研究如何以系统化、科学化、规范化的方法进行软件开发与维护的学科,它是计算机科学与技术领域的一级学科。
随着信息技术的飞速发展,软件工程在现代社会中的重要性日益凸显,它不仅关乎到国家信息安全,还直接影响着各行各业的生产与生活。
软件工程的发展历程可以追溯到上世纪五六十年代,那时计算机刚刚开始普及,软件开发还处于一个非常初级的阶段。
随着计算机技术的不断发展,人们逐渐认识到了软件开发的复杂性,并开始寻求一种更加科学、有效的方法来进行软件开发。
于是,软件工程学科应运而生。
软件工程的主要研究领域包括软件需求分析、软件设计、软件开发、软件测试、软件维护等。
这些领域共同构成了软件工程的完整生命周期,为软件开发提供了一套科学的理论体系和实践方法。
在我国,软件工程学科得到了迅速发展。
一方面,我国政府高度重视软件产业的发展,为软件工程学科的建设提供了有力的支持;另一方面,我国软件产业市场需求巨大,为软件工程学科的发展提供了广阔的空间。
当前,我国软件工程学科正朝着国际化、高端化的方向迈进,前景十分广阔。
总之,软件工程作为一门重要的一级学科,对我国信息技术产业的发
展具有举足轻重的作用。
《软件工程》例子和练习
【分析】 第一步: 确定系统的源点和终点
仓库管理员是数据的源点 采购员是数据的终点 处理 本题应该完成定货系统这样一个功能
数据流
事务需从仓库送到系统中,显然事务是一个数 据流;
系统要把定货报表送给采购部,定货报表也是 一个数据流。
根据问题的陈述,把整个数据处理过程看作一个 加工,它的输入数据和输出数据实际上反映了本 系统与外界环境的接口。系统的顶层数据流图如 下所示:
办理。
欲开发一个银行的活期存取款业务的处理系统:储户将填 好的存/取款单和存折交给银行工作人员,然后由系统作以 下处理; (1)业务分类处理:系统首先根据储户所填的存/取款单,确 定本次业务的性质,并将存/取款单和存折交下一步处理; (2)存款处理:系统将存款单上的存款金额分别记录在存折 和帐目文件中,并将现金存入现金库;最后将存折还给储户; (3)取款处理:系统将取款单上的取款金额分别记录在存折 和帐目文件中,并从现金库提取现金;最后将现金和存折还 给储户。 该系统的总体图如下图所示,请画出该系统的零级图。
2. 判定覆盖(分支覆盖) 或者: Ⅰ. 满足(1)(3) (A=2,B=0,X=3) 覆盖sacbdR Ⅱ. 满足(2)(4) (A=3,B=1,X=1) 覆盖sabR
特点:比语句覆盖强,但对 程序逻辑的覆盖程度仍不高。
3. 条件覆盖 不仅每个语句至少执行一次, 而且使判定表达式中的每个条 件都取到各种可能的结果。 为达到条件覆盖标准,应选 取测试数据,使得:
2. 判定覆盖(分支覆盖) 程序中的每个语句至少执 行一次,并且每个判定的 每个可能结果都至少执行一次。
所有判定分支: (1) a点判定为T (2) a点判定为F (3) b点判定为T (4) b点判定为F
软件工程一级学科简介
0835软件工程一级学科简介一级学科(中文)名称:软件工程(英文)名称: Software Engineering一、学科概况软件工程经过四十余年的发展,明确了自身的学科问题,形成了软件工程领域的基础理论、工程方法与技术体系,完善了软件工程教育体系,具备了学科的完整性和教育学特色,具有广泛的研究领域和研究方向,作为独立学科为软件产业发展提供了理论、技术与人才支撑。
1968年在德国举行的NATO软件工程会议上,为应对“软件危机”的挑战,“软件工程”术语被首次提出。
在这个时期,具有代表性的软件工程定义是“为了经济地获得在真实机器上可靠工作的软件而制定和使用的合理工程原则和方法”。
1972年,IEEE学会计算机协会第一次出版了“软件工程学报”。
此后,“软件工程”这个术语被广泛用于工业、政府和学术界,众多的出版物、团体和组织、专业会议在它们的名称中开始使用“软件工程”这个术语,很多大学的计算机科学系先后开设了软件工程课程。
1980年代末到1990年代初,基于瀑布模型的软件开发过程和结构式过程语言编程范型占主导地位,软件工程研究在软件需求分析、软件设计、软件测试、软件质量保证、软件过程改进等多个子领域得到深化和扩展,形成了软件工程学科的雏形。
同期,软件工程教育得到卡内基·梅隆大学软件工程研究所(SEI)的培育和支持。
该研究所调查软件工程教育的现状,出版软件工程推荐教程,在卡内基·梅隆大学建立软件工程硕士教育计划,并组织和推动软件工程教育者研讨会。
1991年,ACM和IEEE-CS的计算学科教程CC1991专题组将“软件工程”列为计算学科的九个知识领域之一。
1993年,IEEE-CS和ACM为了将软件工程建设成为一个专业,建立了IEEE-CS/ACM联合指导委员会。
随后,该指导委员会被软件工程协调委员会(SWECC)替代。
SWECC 提出了“软件工程职业道德规范”、“本科软件工程教育计划评价标准”以及“软件工程知识体系(SWEBOK)”。
软件工程 一级学科
软件工程一级学科摘要:一、软件工程一级学科的概念与重要性二、软件工程学科的起源与发展历程三、软件工程的研究领域与主要任务四、软件工程在我国的发展现状与趋势五、软件工程一级学科在实际应用中的价值与意义正文:软件工程一级学科是我国高等教育中非常重要的一门学科,它涵盖了软件开发、软件项目管理、软件测试、软件维护等多个方面,旨在培养具备软件开发、项目管理、系统分析与设计等能力的复合型人才。
软件工程学科起源于20世纪60年代的美国,随着计算机技术的飞速发展,软件在各个领域的应用也越来越广泛,因此对软件开发过程进行科学管理的需求日益迫切。
在这样的背景下,软件工程学科应运而生,其主要任务是研究软件开发过程中的规律和方法,以提高软件质量和开发效率。
软件工程一级学科的研究领域包括软件开发方法、软件需求工程、软件设计、软件验证与测试、软件项目管理等。
其中,软件开发方法主要研究软件开发的理论和方法,如结构化分析和设计、面向对象分析和设计等;软件需求工程关注如何获取、分析和管理软件需求;软件设计研究软件系统的模块划分、接口设计等;软件验证与测试关注如何保证软件的正确性和可靠性;软件项目管理则涉及软件开发过程中的资源分配、进度控制、风险管理等。
在我国,软件工程学科的发展取得了显著成果。
近年来,我国软件产业呈现出快速发展的态势,软件工程一级学科在其中发挥了关键作用。
政府和企业对软件工程学科的重视程度越来越高,投入不断加大,推动软件工程学科在人才培养、科学研究、技术研发等方面取得了丰硕的成果。
目前,我国软件工程学科已经形成了较为完善的教育体系,为我国软件产业的发展提供了有力支持。
总之,软件工程一级学科在实际应用中具有极高的价值。
它为软件开发过程提供了科学的管理方法和理论指导,有助于提高软件质量和开发效率,降低开发成本。
重庆理工大学实践教学大纲(实习设计)07 软件工程与计算Ⅰ 课程设计大纲 ok
《软件工程与计算Ⅰ》课程设计大纲开课单位:计算机科学与工程学院开课学期:第1学年春、夏季学期学分:2学分学时:32学时(2周)适用专业:软件工程(0308)一、课程设计的目的与意义本课程设计是软件工程专业的一门实践类核心课程。
本课程设计的目的是从软件工程知识入手,通过一个简单的程序,使学生了解程序的特征,初步理解不同需求和设计方案的好处,学会编写、调试和测试小型程序或软件。
此外,通过课程设计,学生直观感受、参与软件的开发过程,帮助学生进一步理解软件工程内涵,建立软件开发初步意识,培养学生软件开发设计的初步能力。
二、课程设计的内容1、基本设计成果:每名学生独立完成一个初级的小型软件,包含基本的文档和运行程序。
2、概述:客户、用户及其需求,选题。
3、计算的一般原则:问题求解、抽象、分解,模块及其构造准则,软件的重用,软件简单界面的设计原则及其方法。
4、程序设计概念:程序的三种基本结构,程序表达式,API及其使用方法,面向对象设计方法。
5、设计概念:软件设计的本质,软件项目方案的设计方法,方案的选择与评估,程序调试及其方法,测试及其基本方法。
6、软件设计:软件解决方案(基本需求描述),方案评估与选择,程序编码与调试,软件测试。
7、课程总结:软件发布,项目与课程总结,答辩(抽查部分学生参加答辩)。
本课程设计的重点在第6部分的程序编码与调试上。
课程设计难点在于第3部分的计算原则和第6部分的软件解决方案和编码上。
三、课程设计的方式1、以软件工程专业的教师组成课程设计指导小组指导学生课程设计。
2、学生课外设计为主,教师课内指导为辅。
3、课内为集中方式,课外为分散方式。
四、课程设计的基本要求1、学生以自选或指定的方式选题,原则上一人一题。
多人选择同样题目时,最后需要集中比较设计成果。
2、学生能初步按照软件工程工艺流程和软件工程规范,完成需求描述,软件的编码、调试、测试等工作。
3、学生基本能独立完成一个微型、小型程序\软件,并能现场运行、维护。
0课程介绍
• 最后,乐趣还来自自于工工作在如此易于驾驭 的介质上。程序员,就像诗人人一一样,几几乎 仅仅工工作在单纯的思考中。程序员凭空地 运用用自自己己的想象,来建造自自己己的“城堡”。 很少有这样的介质——创造的方方式如此得 灵活,如此得易于精炼和重建,如此得容 易实现概念上的设想。
Email (每天)
• 其次,快乐来自自于开发对其他人人有用用的东 ⻄西。内心心深处,我们期望其他人人使用用我们 的劳动成果,并能对他们有所帮助。
• 第三是整个过程体现出魔术般的力力量—— 将相互啮合的零部件组装在一一起,看到它 们精妙地运行行,得到预先所希望的结果。 比比起弹珠游戏或点唱机所具有的迷人人魅力力!
• 大大量练习!
• 比比赛!
软件工工程
• Disciplined: obeying the rules. 所有工工程学科 的特点。
• 软件:完全的智力力活动,与传统工工程学科 有一一定区别。
学习建议
• 兴趣
• 实践:⺫目目标1万行行代码;每周500行行
• 使用用工工程化方方法进行行编程。
教材与参考书
• 教材:《软件工工程与计算(卷一一):软件开发 的编程基础》,机械工工业出版社
• 参考书:
• Bruce Eckel, Thinking in Java (4rd Edition),Prentice Hall, 2006(对照中译本:Java编程思想(第4版), (美)埃克尔 著,陈昊鹏 译, 出版社:机械工工业出 版社, 2007)
软件工程属于什么专业类别
软件工程属于什么专业类别软件工程是一门综合性学科,涉及计算机科学、工程学以及管理学等多个领域。
它是一门以科学原理和工程方法为基础,致力于开发、维护和管理软件系统的学科。
具体来说,软件工程专业属于工程技术类专业。
软件工程专业的培养目标是培养具备软件开发和项目管理能力的高级工程师。
在当前信息技术高速发展的背景下,软件工程专业不仅拥有广阔的就业前景,还承载着推动社会经济发展的重要使命。
软件工程专业内涵丰富、学科门类多样。
主要包括以下几个方面:1.计算机科学基础:软件工程的学习必须建立在扎实的计算机科学基础上,包括计算机组成原理、数据结构与算法、操作系统、编程语言等。
这些基础知识为软件工程师提供了理论基础和技术支持。
2.软件开发技术:软件工程专业学习和掌握各种软件开发技术,如面向对象分析与设计、软件测试与调试、软件需求工程、软件质量保证等。
这些技术是软件工程师开发、维护和管理软件系统所必备的技能。
3.软件工程管理:软件工程专业还需要学习软件项目管理、软件过程改进等管理知识。
软件工程师需要具备良好的团队合作能力、项目管理能力和沟通协调能力,能够高效地组织和管理软件开发团队。
4.软件工程应用:软件工程往往涉及到各个领域的应用,包括金融、医疗、教育、交通等。
软件工程专业需要学习相关领域的专业知识,为其开发与应用软件系统提供专业支持。
软件工程专业的学习过程中,学生将接触到大量的实际项目案例和实践经验。
通过参与各类软件开发项目,学生可以将所学理论知识应用到实际情境中,培养解决问题和创新能力。
软件工程专业毕业生有广泛的就业前景。
他们可以在软件开发公司、互联网公司、电子商务企业、金融机构、科研院所等单位从事软件开发、软件测试、项目管理、软件维护等工作。
此外,他们还可以自主创业,开设软件开发工作室,为各行各业提供软件解决方案和服务。
总之,软件工程作为一门综合性学科,属于工程技术类专业。
它涵盖了计算机科学、工程学和管理学等多个领域的知识,培养学生具备软件开发和项目管理能力。
软件工程 一级学科
软件工程一级学科摘要:1.软件工程一级学科概述2.软件工程一级学科的核心课程3.软件工程一级学科的研究领域4.软件工程一级学科的职业前景5.我国在软件工程一级学科的现状与展望正文:软件工程一级学科是一门研究软件开发、维护和管理的学科,涵盖了计算机科学、计算机编程、软件设计、系统分析和工程等多个领域。
在我国,软件工程一级学科已成为一门热门专业,吸引了大量学生报考。
本文将从以下几个方面介绍软件工程一级学科:核心课程、研究领域、职业前景、我国现状与展望。
一、软件工程一级学科的核心课程软件工程一级学科的核心课程主要包括:计算机程序设计、数据结构、操作系统、计算机网络、软件工程、数据库原理与技术、软件项目管理、软件测试、人工智能等。
这些课程旨在培养学生扎实的计算机基础和丰富的软件开发技能。
二、软件工程一级学科的研究领域软件工程一级学科的研究领域广泛,包括:软件开发方法、软件架构、软件需求工程、软件设计、软件测试、软件项目管理、软件质量保证、软件安全保障、软件性能优化等。
在这些领域,研究人员致力于提高软件的可靠性、可维护性和可用性,以满足不断变化的用户需求。
三、软件工程一级学科的职业前景随着信息技术的飞速发展,软件工程一级学科的毕业生在市场上具有很高的需求。
他们可以在各类企业、政府部门和科研机构担任软件开发工程师、系统分析师、项目经理、技术支持等职位。
此外,自主创业和从事软件咨询服务等新兴领域也是不错的选择。
四、我国在软件工程一级学科的现状与展望近年来,我国软件产业取得了举世瞩目的成就,已成为全球软件市场的重要组成部分。
在国家政策的扶持下,我国软件工程一级学科得到了快速发展,培养了大批优秀软件人才。
然而,与发达国家相比,我国在软件工程一级学科的研究水平和产业规模仍有较大差距。
未来,我国将继续加大投入,努力提高软件工程一级学科的教育质量和创新能力,推动软件产业迈向更高水平。
总之,软件工程一级学科具有广泛的应用前景和丰富的研究领域,为有志于从事软件行业的人才提供了广阔的发展空间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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语法。
●软件工程知识内容:⏹软件需求(简单的场景);⏹软件设计(简单的类图);⏹软件构造(调试、代码规范);⏹软件测试(准备测试)。