软件设计与规范教学大纲

软件设计与规范教学大纲
软件设计与规范教学大纲

《软件设计与规范》课程教学大纲

Software Design and Conventions, Idioms

课程编号:130302070

学时:32(理论:24,实践:8)学分:2.0

适用对象:软件工程卓越班、软件工程专业

先修课程:软件工程概论、数据库原理与技术

一、课程的性质和任务

该课程可以支撑毕业要求第1、2、3、5、6条的达成。《软件设计与规范》是软件工程的专业核心课,承上启下,引导学生从之前的编程语言学习逐步深入软件设计、构造、测试、管理等后续专业课程,涉及软件设计、标准规范与解决复杂工程问题的能力培养。

软件设计包括了解软件生存周期、开发过程模型、软件设计与体系结构等基本概念,理解软件设计过程、软件体系结构、软件设计模式,掌握面向对象软件设计方法;标准规范包括建立标准、规范意识,遵守软件设计规范、命名规范、文档规范;解决复杂工程问题能力包括训练问题求解、系统设计两类计算思维,应用软件设计方法与工具,掌握工程问题的分析、解决方案的设计与实现能力,具备中小型软件设计与开发能力。

二、教学目的与要求

通过本课程的学习,掌握软件设计相关的知识,包括了解软件生存周期、开发过程模型、软件设计与体系结构等基本概念,理解软件设计过程、软件体系结构、软件设计模式,掌握面向对象软件设计方法;掌握软件标准规范知识,包括建立标准、规范意识,遵守软件设计规范、命名规范、文档规范;培养问题解决能力,包括面向问题求解、系统设计的计算思维训练,应用软件设计方法与工具,掌握工程问题的分析、解决方案的设计与实现能力,基本具备小型软件设计与开发能力。

掌握瀑布式开发过程,熟悉集成开发环境,熟练使用开发工具,独

立完成小型软件项目构思、设计与实施,提交设计文档、代码成果,且符合规范要求。

三、教学内容

第一章:概述

1.基本内容:

软件设计的复杂性:设计、沟通、实现、变更;软件设计视图:业务架构、应用架构、信息架构、基础设施架构;软件规范的重要性;软件架构的基本构成:架构=软件元素+元素间关系+约束。

2.教学基本要求:

理解:软件设计与规范基本内涵,核心元素:领域、模型、建模,软件设计过程:自顶向下、不断精化。

掌握:软件设计视图。

3.教学重点难点:

重点:软件架构,难点:软件设计过程。

4.教学建议:

课堂上由学生举例说明常用软件系统的功能、待改进之处,引发讨论,引入软件设计。

第二章:软件工程

1.基本内容:

软件工程标准化:标准的层次、软件工程常用标准;软件工程概念:软件概述、软件危机、软件工程的概念、软件工程的目标与原则;举例+PPT挂图,说明软件开发生存周期:分析当前系统、定义新系统需求、设计新系统、开发新系统、实现新系统、评估新系统;图表说明软件开发过程模型:瀑布模型、快速原型模型、螺旋模型、统一软件开发过程,各模型的特点与适用场景;软件设计基本概念,设计的重要性、设计的特征、设计的要素。

以四则计算器为案例,指导学生开展实践,理解软件开发过程、主要设计活动与产物。

2.教学基本要求:

理解:软件工程标准化,软件工程的基本内涵,软件开发生存周期,软件设计的内涵。

掌握:软件开发过程模型。

3.教学重点难点:

重点:软件开发过程模型,软件设计内涵,难点:软件生存周期V模型。4.教学建议:

应选取难度适中且设计规范的项目作为模仿对象,及时进行软件设计实验,体验瀑布模型,提升学习兴趣。

分析四则计算器的开发过程模型及主要设计活动,重点讲解实践中的主要问题。提供完备参考资料供学生模仿、自学,鼓励学生挑战拓展项目,多动手实践,强调设计与编码规范,及时答疑辅导。

第三章:软件设计

1.基本内容:

软件设计的基本概念:抽象与逐步求精,模块化与信息隐藏,内聚与耦合;Robert C. Martin的SOLID原则;软件设计过程:软件设计的一般过程,软件设计的主要活动;以订单为例,讲解抽象与逐步精化过程,说明软件设计过程与主要活动;软件设计的质量,软件设计规格说明,软件设计评审;

编码规范,大小写约定:标识符的大小写规则,首字母缩写词的大小写,复合词和常用术语的大小写,是否区分大小写;通用命名约定:单词的选择,使用单词缩写和首字母缩写词,避免使用编程语言特有的名字,为已有API的新版本命名;程序集和DLL的命名,命名空间的命名,类、结构和接口的命名,泛型类型参数的命名,常用类型的命名,枚举类型的命名;类型成员的命名:方法的命名,属性的命名,事件的命名,字段的命名,参数的命名,资源的命名,类型和名字空间。

2.教学基本要求:

理解:软件设计基本概念,软件设计基本原则,软件设计模式,软件设计的质量,软件设计规格说明,软件设计评审,命名规范、类型设计规范。

掌握:软件设计过程,编码命名规范。

3.教学重点难点:

重点:软件基本概念,抽象与逐步求精,软件设计一般过程,软件设计主要活动。

难点:SOLID设计原则,设计模式。

4.教学建议:

以省市区三级查询为教学案例,指导学生开展实践,加强对软件开发过程、主要设计活动与产物的理解。提供完备参考资料供学生模仿、自学,鼓励学生挑战拓展项目,多动手实践,强调设计与编码规范,及时答疑辅导。

课后阅读:类和结构之间的选择,类和接口之间的选择,抽象类的设计,静态类的设计,接口的设计,结构的设计,枚举的设计,标记枚举的设计,给枚举添加值,嵌套类型,类型和程序集元数据。

第四章:面向对象的设计方法

1.基本内容:

基于UML的分析与设计过程;讲解计算器的设计,类继承、接口、抽象类三个版本,比较彼此的异同和优劣;用例分析与设计:确定用例,生成用例图,用例设计描述;以学籍管理为例,讲解用例分析与设计,清晰准确描述对象及彼此间关系;概念模型和顶层架构设计;其他设计活动:用户界面设计,数据模型设计;设计精化:精化软件架构,调整软件构成类,精化交互模型,精化类之间的关系;类设计:精化类的属性与操作,类的行为模型设计;部署模型设计。

软件文档分类,开发文档、用户文档和管理文档,重点介绍软件开发文档中的可行性研究报告、软件需求文档、概要设计文档与详细设计文档,以南华大学计算机学院院标准为例,说明软件开发文档规范。

2.教学基本要求:

理解:基于UML的分析与设计过程,设计过程与主要设计活动,用例分析与设计,概念模型和顶层架构设计,其他相关设计活动,设计精化过程,部署模型设计;软件开发文档。

掌握:类的设计、概要设计与详细设计文档。

3.教学重点难点:

重点:用例分析,概念模型与架构设计,用户界面设计,数据模型设计,类设计。

难点:设计精化。

4.教学建议:

教学重点辅以软件项目及代码进行深入讲解分析,将抽象概念转换为生动软件,有利于理解。提供完备参考资料供学生模仿、自学,鼓励学生挑战拓展项目,多动手实践,强调设计与编码规范,及时答疑辅导。

以网购订单为教学案例,指导学生开展实践,加强对软件开发过程、抽象与逐步求精过程与设计文档的理解,理解基于UML的软件分析与设计过程,准确清晰描述对象及其关系,理解软件设计精化。

第五章:软件体系结构设计与设计模式

1.基本内容:

企业应用架构模式,典型架构分层:表现层、业务逻辑层、服务层、数据访问层、数据存储层等,表现层常见架构模式,4+1软件体系结构设计视图,软件体系结构风格,tier与layer,Gof的23种设计模式,设计模式的应用场景。

以四则计算器为背景,讲解MVP、插件式架构案例,说明企业应用架构模式,理解关注点分离,带入软件体系结构设计。

商品打折案例,说明软件设计过程与主要活动,体现策略模式、装饰者模式应用,引入设计模式概念。

2.教学基本要求:

理解:表现层架构模式MVP,插件式架构模式,常见表现层架构模式。

掌握:策略模式、装饰者模式应用场景与实现基本思路。

3.教学重点难点:

重点:架构分层,难点:设计模式应用。

4.教学建议:

教学重点辅以软件项目及代码进行深入讲解分析,将抽象概念转换为生动软件,有利于理解。提供完备参考资料供学生模仿、自学,鼓励学生挑战拓展项目,多动手实践,强调设计与编码规范,及时答疑辅导。

以商品打折为教学案例,指导学生开展实践,加强对软件开发过程、设计模式与设计文档的理解,提供拓展项目供课后练习。

第六章:软件设计的进化

1.基本内容:

遗留系统,软件的进化策略,进化策略的分类,进化策略的选择,软件再工程,业务过程重构,软件再工程的过程模型,软件再工程中的经济因素,信息恢复的级别和方法;软件体系结构的进化,软件体系结构进化的过程,软件体系结构的恢复,软件体系结构的改善,代码重构和数据重构,软件移植。

2.教学基本要求:

理解:遗留系统,软件的进化策略,软件再工程基本概念,软件体系结构的进化,代码重构和数据重构,软件移植。

掌握:代码重构。

3.教学重点难点:

重点:软件再工程,代码重构与数据重构。难点:软件体系结构进化。4.教学建议:

教学重点辅以软件项目及代码进行深入讲解分析,将抽象概念转换为生动软件,有利于理解。提供完备参考资料供学生模仿、自学,鼓励学生挑战拓展项目,多动手实践,强调设计与编码规范,及时答疑辅导。

四、教学环节与学时分配

序号教学内容

总学

其中课外辅导/

课外实践

备注

讲课实验上机其他

1 概述

2 2

2 软件工程 6 4 2

3 软件设计 8 6 2

4 面向对象的设计方法 6 4 2

5 软件体系结构设计与设

计模式

8 6 2

6 软件设计的进化 2 2

32 24 8

五、教学中应注意的问题:

因本课程抽象概念及理论知识点繁多,在讲解软件设计与规范基本概念时,可适当运用软件项目案例加以说明,加深学生理解;同时,考虑到本课程与工程实践紧密关联,鼓励多动手实践,可提供软件项目供学生参考;再者,软件设计活动非常耗时,项目练习以课下为主,利用信息化手段与导生,及时进行答疑辅导。

六、实验/实践内容:

见《软件设计与规范》实践教学大纲。

七、考核方式:

学生最后总成绩由平时成绩(30%,其中课程视频25%+课程测验50%+访问量10%+课堂签到5%+课堂互动5%+作业5%)+理论闭卷考试成绩(70%)的总和确定。

八、教材及主要参考书:

1、选用教材:

《软件设计与体系结构》,齐治昌著,高等教育出版社,2010年。

2、主要参考书:

(1)《.NET设计规范:约定、惯用法与模式》第2版,Krzystof Cwalina,Brad Abrams著,葛子昴译,人民邮电出版社,2010年。

(2)《敏捷软件开发:原则、实践与模式》,Robert C. Martin,邓辉译,清华大学出版社,2003年。

(3)《设计模式-可复用面向对象软件的基础》,Gamma等著,李英军等译,机械工业出版社出版,2013年。

(4)《重构-改善既有代码的设计》,Martin Fowler,人民邮电出版社,2015年。

(5)《重构与模式》,Joshua Kerievsky,人民邮电出版社,2013年。

(6)《企业应用架构模式》,(英)Martin Fowler,王怀民 周斌 译,机械工业出版社,2010年。

(7)《领域驱动设计》,Eric Evans,赵俐 盛海艳 刘霞 译,人民邮电出版社,2010年。

(8)《实现领域驱动设计》,Vaughn Vernon,电子工业出版社,2014年。

(9)《软件框架设计的艺术》,(捷)Jaroslav Tulach,王磊 朱兴 译,人民邮电出版社,2011年。

(10)Google JAVA规范,https://www.360docs.net/doc/d712364496.html,/s vn/trunk/javaguide.html.

(11)Oracle JAVA规范,https://www.360docs.net/doc/d712364496.html,/technetwork/java/jav ase/documentation/codeconvtoc-136057.html.

(12)《微服务设计》,Sam Newman,人民邮电出版社,2016年。

九、教改说明及其他:

采用案例教学法,通过案例营造实践情景,承载知识点与工程能力,训练计算思维。案例不在多在于精,以案例为主线贯穿整个教学过程,加强软件过程的理解,重点培养计算思维能力、工程设计与实施能力。

教学目标分级,引导学生自主选择目标,满足不同水平的学生,激发主动性;分级考核,过程性评价与终结性评价结合;利用信息化教学手段,采用自主研发与甄选互联网相结合,建立优质丰富的线上学习资源库;重视与学生的即时互动,可采取“助教-组长-组员”导生助教机制,与移动端互为补充的方式;加强过程管理,将学习任务里程碑与过程性评价相结合,每个任务后实施测验,引导学生自我感知学习效能,培养学习兴趣。

执笔人:李萌系室审核人:欧阳纯萍

相关主题
相关文档
最新文档