当前位置:文档之家› 软件架构报告

软件架构报告

目录1软件设计风格、软件应用框架和软件设计模式的特征和区别 (2)1.1软件设计风格 (2)1.2软件应用框架 (2)1.3软件设计模式 (2)1.4软件风格、应用框架和设计模式的区别 (2)1.课堂考勤管理系统 (3)2.1项目开发背景 (3)2.2项目用户需求分析 (3)2.2.1学生需求 (3)2.2.2任课教师需求 (4)2.2.3教学秘书功能要求 (4)2.2.4辅导员用户需求 (4)2.课堂考勤系统的软件架构、框架以及设计模式 (5)3.1考勤系统的软件架构 (5)3.2系统框架 (7)3.2.1数据访问层部分代码: (7)3.2.2业务逻辑层: (8)3.2.3表示层: (8)3.2.4详细介绍 (9)3.3设计模式 (10)3.软件架构对软件开发过程的作用及影响 (11)1软件设计风格、软件应用框架和软件设计模式的特征和区别1.1软件设计风格体系结构风格定义一个系统家族,即一个体系结构定义一个词汇表和一组约束。

词汇表中包含一些构件和连接件类型,而这组约束指出系统是如何将这些构件和连接件组合起来的。

体系结构风格反映了领域中众多系统所共有的结构和语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。

对软件体系结构风格的研究和实践促进对设计的重用,一些经过实践证实的解决方案也可以可靠地用于解决新的问题。

例如,如果某人把系统描述为“客户/服务器”模式,则不必给出设计细节,我们立刻会明白系统是如何组织和工作的。

1.2软件应用框架软件架构是一个系统的草图。

软件架构描述的对象是直接构成系统的抽象组件。

各个组件之间的连接则明确和相对细致地描述组件之间的通讯。

在实现阶段,这些抽象组件被细化为实际的组件,比如具体某个类或者对象。

在面向对象领域中,组件之间的连接通常用接口来实现。

软件体系结构是构建计算机软件实践的基础。

与建筑师设定建筑项目的设计原则和目标,作为绘图员画图的基础一样,一个软件架构师或者系统架构师陈述软件构架以作为满足不同客户需求的实际系统设计方案的基础。

1.3软件设计模式设计模式(英语 design pattern)是对面向对象设计中反复出现的问题的解决方案。

这个术语是在1990年代由Erich Gamma等人从建筑设计领域引入到计算机科学中来的。

这个术语的含义还存有争议。

算法不是设计模式,因为算法致力于解决问题而非设计问题。

设计模式通常描述了一组相互紧密作用的类与对象。

设计模式提供一种讨论软件设计的公共语言,使得熟练设计者的设计经验可以被初学者和其他设计者掌握。

设计模式还为软件重构提供了目标。

1.4软件风格、应用框架和设计模式的区别体系结构指的是构成系统的组成元素及其之间的关系,是形而上的东西。

体系结构框架相对于体系结构更加务实,有些时候已经是一个半成品,可以在此基础上进行定制开发或二次开发。

设计模式不同于体系结构(甚至可以说没有可比性,虽然定义上有些容易混淆),因为它更加通用,是设计的通用解决方案和经验总结。

举个例子来说,你可以说我们讨论一下某个系统的体系结构,但不能说讨论一下某个系统的设计模式,最多只能说其中用到了多少种设计模式及其变体。

1.课堂考勤管理系统2.1项目开发背景在课堂教学中,学生的考勤检查是一项很重要的内容。

它能够实时的检查每一位学生的到课情况和听课情况,为学生的平时成绩做一个客观公正的参考。

传统的学生出勤检查往往是教师拿着一张纸质名单逐一点名,或让学生上交课堂作业以便课后查询出勤情况。

这些方法往往造成统计结果不及时,数据容易遗漏,对学生进行教育难及时到位,甚至容易出现无法处分学生的现象,班主任、辅导员、教师、学生无法及时了解考勤状况,监控失效。

针对以上问题,开发基于的学生考勤管理与预警系统,任课教师可以在课堂上直接登录系统进行学生考勤检查并记录考勤信息。

可以根据实际情况设置课程的缺勤预警条件,当某个学生的缺勤达到预警条件的时候,系统将列出学生的姓名等相关信息,使教师能够及时、直观地看到,对此类学生进行帮扶。

此外,在课余,任课教师、班主任、辅导员及学校各级领导也可以登陆该系统查询学生的出勤情况。

图2-1 课堂考勤系统登录界面2.2项目用户需求分析2.2.1学生需求查看出勤信息需求:学生可以查看上课出勤的详细信息,如:具体某个个学期请假、旷课、迟到、早退了多少次,以及具体的时间、任课老师姓名、课程名称等详细信息。

其它需求:修改个人用户密码,查看本班课表安排。

2.2.2任课教师需求学生上课考勤需求:根据学校安排的课表,随着时间的变化,自动列出需要考勤的学生信息、课程信息、上课时间等信息,提交学生上课出勤情况。

图2-2 教师所授课程信息查询查看学生出勤信息需求:查看所教班级学生出勤统计信息及详细信息。

设置考勤预警条件:对自己所教授课程设置预警条件,如:可以设置缺预警条件为4次,系统将会显示缺勤次数达到4次的学生的详细信息。

其它需求:修改个人用户密码,查看本人课表安排。

2.2.3教学秘书功能要求系统管理员拥有系统的最高权限,负责系统运行必需数据维护,基本功能需求如下:维护教学秘书信息、维护上课教室课表的信息、设置学期的开始时间,结束时间,持续周数;设计教师检查考勤的有效时间段,如:如果设置有效时间为10分钟,则考勤有效时间为课程开始10分钟之内;设置数据可用性,如:设置2015-2016年第一学期,2015-2016年第二学期的数据可用,表示这两个学期的数据可用,其他学期的数据不可用。

其他需求:修改个人用户密码。

图2-3 教学秘书课程信息维护2.2.4辅导员用户需求查看学生出勤信息需求:查看所属院系班级学生的出勤统计信息及详细信息。

设置考勤预警条件:对所属院系课程单一课程以及全部课程的预警条件,如:可以设置单一课程预警条件为4次,全部课程的预警条件为10次,系统将会显示单一课程缺勤次数达到4次,全部课程缺勤次数达到10次的学生的详细信息。

图2-4 辅导员查看学生具体缺勤信息其它需求:修改个人用户密码。

2.课堂考勤系统的软件架构、框架以及设计模式3.1考勤系统的软件架构应用软件开发通用的做法是将应用程序的实现分布在从底向高的三个层:数据访问层,业务逻辑层,表示层,如下图所示。

数据访问层实现对数据库的操作,这对于特定DBMS是固定的,不需更改的;业务逻辑层利用数据访问层实现业务逻辑,这层是关键,如果用户的业务需求改了,可以在这层中修改,因为这层有很多独立的方法,而且,改某个功能不会影响到别的功能;表示层调用业务逻辑层实现用户的功能,只要业务逻辑层有这个功能,就可以调用,表示层只需提供输入输出和提示等。

图3-1 三层架构原理图本系统遵循三层架构,数据访问层的类,直接访问数据库,实现基本记录操作;业务逻辑层的类,调用相关的数据访问类,实现用户所需功能;表示层部署控件后,调用业务逻辑层的类,实现具体功能。

将应用程序的功能分层后,对于固定的DBMS,数据访问层基本可以不变,一旦用户的需求改变,修改业务逻辑层,表示层稍做改动即可。

这种做法使程序的可复用性、可修改性,都得到了很好的改善,大大提高了软件工程的效率。

网站采用SQL Server 2014数据库,名称为KQGL,包含表如下图所示图3-2 数据库表图具体表介绍:在本系统中实体模型包括系统管理员表(tb_manager)、系别表(tb_department)、专业班级表(tb_professional)、教学年度学期表(tb_annual)、学生信息表(tb_student)、教师信息表(tb_teacher)、课程表(tb_course)、班级课程表(tb_professionalCourse)、教师课程表(tb_teacherCourse)、教室信息表(tb_classroom)、教学秘书信息表(tb_dean)、辅导员信息表(tb_assistant)、各系学生考勤表(tb_checkOnWorking_*_*)、预警信息表(tb_alert)、预警条件表(tb_alertSet)、考勤有效时间表(tb_validTime)、课程安排信息表(tb_CourseDetail)。

教师存储过程信息介绍:3.2系统框架高校学生考勤系统是采用三层架构实现的,系统包含8个项目。

BusinessLogicLayer是业务逻辑层;DALFactory是数据访问层的抽象工厂;DBHelper是数据访问基础类;IDAL是数据访问层的接口定义;E:\CheckOnWork\WebSite3是表示层,是系统的UI部分,负责使用者与整个系统的交互;Model是实体层;SQLServerDAL是数据访问层,操作SQL Server数据库;WebConfig系统配置层。

系统各项目的依赖关系如下图所示。

图3-3 系统各项目的依赖关系下面从教师的例子中看一下这三层之间的调用关系3.2.1数据访问层部分代码:#region 更新教师信息/// <summary>/// 更新教师信息/// </summary>/// <param name="teacher">Teacher对象</param>/// <returns></returns>public int Update(Teacher teacher){SqlParameter[] param = {new SqlParameter("@teacherID",teacher.teacherID),new SqlParameter("@teacherName",teacher.teacherName),new SqlParameter("@teacherPwd",teacher.teacherPwd),new SqlParameter("@departmentID",teacher.departmentID),new SqlParameter("@teacherTitleName",teacher.teacherTitleName),new SqlParameter("@teacherPhone",teacher.teacherPhone),new SqlParameter("@teacherEmail",teacher.teacherEmail)};return ExecuteNonQuery(StoredProcedureName.teacherUpdate,param);}#endregion3.2.2业务逻辑层:/// <summary>/// 更新教师信息/// </summary>/// <param name="teacher">Teacher对象</param>/// <returns></returns>public int Update(Teacher teacher){return dal.Update(teacher);}3.2.3表示层:表示层负责直接和用户交互。

相关主题