软件工程分析设计,实验报告

概要设计规格说明文档

1.引言

1.1目的

该文档的目的是描述实验报告管理系统的概要设计,主要内容包括系统功能简介,系统结构设计,系统接口设计,模块设计和界面设计等。

本文档的预期读者包括:设计人员;开发人员;项目管理人员;测试人员。

1.2范围

1.2.1系统目标

本项目主要是为了方便实验报告的提交、修改和管理,为学生提供方便的在线               提交实验报告功能,方便教师批改学生提交的实验报告,模块化实验报告格式,                  统一实验报告规格。

1.2.2主要软件需求

该系统主要功能包括:

留言模块:学生留言、老师回复留言

实验报告模块:

学生:编辑实验报告内容、提交实验报告、查看实验报告详          情、查看实验报告成绩、修改实验报告、查看实验列表。

老师:批改实验报告、查看实验报告详情、查看实验报告成绩、查看学生实验报告列表、导出实验成绩、修改实验报告。

其他模块:

实验室管理员:查看老师负责课程、查看实验任课老师、发布实验大纲

1.2.3软件设计约束、限制

软件支持双鼠标、双键盘的物理结构。

1.3缩写

1.4术语定义

1)软件结构:软件的逻辑架构,指软件模块的层次组成结构。

1.5参考资料

[1] 软件概要设计文档标准,GB856D-1988国家标准

[2] 窦万峰,软件工程方法与实践,北京:机械工业出版社,2012

[3] 张海藩,牟永敏,软件工程导论,北京:清华大学出版社,2013

1.6版本设计

2.数据设计

本部分主要描述软件所涉及的外部数据结构。如果数据是以数据库文件呈现,则要描述表的名称和表字段结构;如果数据是以文件形式呈现,则要描述文件的内部结构。

2.1数据对象和行程的数据结构

2.2文件和数据库结构

2.2.1外部文件结构

包括文件的逻辑结构、逻辑记录描述、访问方法。

2.2.2全局数据

描述全局数据结构

2.2.3文件和数据交叉索引

3.体系结构设计

3.1数据和控制流复审

一般对数据流图的精化分析包括俩方面的内容,一是审查整个数据流图,查看有没有遗漏的地方,并补充和完善;二是分析每一个数据流图,去掉一些细节的内容,这里去掉数据储存和外部用户。

对于实验报告管理系统,我们补充了一个总体数据流图,如图B-1所示。图B-1 实验报告管理系统的总体数据流图

对其他的数据流图精化如下:

1)查看实验列表。查看实验列表精化的数据流图如图B-2所示。

图B-2 精化的查看实验列表数据流图

2)查看实验模板详情。查看实验模板详情精化的数据流图如图B-3所示。

图B-3 精化的查看实验模板详情数据流图

3)查看成绩。查看成绩精化的数据流图如图B-4所示。

图B-4 精化的查看成绩数据流图

4)发布实验报告模板。发布实验报告模板精化的数据流图如图B-5所示。

图B-5 精化的查看成绩数据流图

5)批改实验报告。批改实验报告精化的数据流图如图B-6所示。

图B-6 精化的查看成绩数据流图

6)发布实验大纲。发布实验大纲精化的数据流图如图B-7所示。

图B-7 精化的查看成绩数据流图

3.2得出的程序结构

根据复审的数据流图,逐步得出软件的逻辑组成结构。利用优化思想,对软件结构图进行优化设计,得出模块层次结构适中的关键结构图。

4.界面设计

4.1人机界面规约

给出界面风格、约定和操作要求,设计出用户的所有规则。

4.2人机界面设计规约

给出界面序列关系,每个界面的操作规则和处理规则。

5.接口设计

5.1外部接口设计

与外部系统或设备的连接关系和通信方式。

5.1.1外部数据接口

本系统买有外部数据接口。

5.1.2外部系统或设备接口

本系统的设备接口为usb接口主要是连接输入数据的设备(键盘和鼠标)。

5.2内部设计接口规约

       内部接口是指软件逻辑模块之间的调用接口。内部接口设计规约定义内部模块之间的调用关系和传递的数据结构。

5.2.1内部模块接口调用关系

       内部模块的接口调用关系可看下图,内部接口的设计规约定义内部模块之间的调用关系和传递的数据结构。

1.1登录login(String username , String userPassword) : void ;

1.2身份验证verityIdentity(User user) : Boolean ;

2.1查看学生成绩­getStuScore(Classes classes) : ArrayList<Student> ;

2.2导出实验成绩printStuScore(Classes classes) : void ;

2.3发布实验大纲releaseExperimentOutline() : void ;

2.4查看实验任课教师 getExperimentOfTeacher(String experId) : ArrayList<Teacher> ;

2.5查看老师负责课程getCourserOfTeacher(Teacher teacher) : ArrayList<Course> ;

3.1回复学生留言replyToMessage() : void ;

3.2查看学生留言 getAllStuMessage() : ArrayList<Message> ;

3.3查看学期大纲getExperimentOutline() : String ;

3.4添加实验报告模板addExperReportTemp() : void ;

3.5修改实验报告模板editExperReportTemp(String exId) : void ;

3.6导出学生实验成绩printStuScore(Classes classes) : void ;

3.7查看学实验报告列表getStuExperList(Classes classes) : ArrayList<Experiment> ;

3.8查看学生实验报告详情 getExperDetilOfStu(Student student, Course course) : Experiment;

3.9批改学生实验报告 correctExperOfStu(Student student, Experiment exper) : void;

3.10修改学生实验报告changeExperOfStu(Student student, Experiment exper) : void;

3.11查看实验报告成绩getStuScore(Classes classes) : ArrayList<Student> ;

4.1查看实验列表 getExperList () : ArrayList<Experiment> ;

4.2查看实验报告模板getExperReportTemp(String experId) : Experiment ;

4.3编辑实验报告内容editExperReport(String experId) : void ;

4.4提交实验报告 submitExperReport(String experId, Experiment exper) : void ;

4.5修改实验报告 changeExperReport(String experId,Student student) : void ;

4.6查看实验报告成绩 getScoreOfExper(Student student , Course course) : ArrayList<Experiment>

4.7留言 leaveMessage(Teacher teacher) : void ;


5.2.2接口数据结构

描述接口的每个参数的数据结构、参数顺序和缺省值。本系统的接口数据结构主要有:

User :包含用户的所有信息用来验证信息

Classes :班级的信息可以找到该班级的学生来获得该班级的学生信息和负责该班级的教师信息

Teacher :教师的信息可以根据教师负责的课程和班级来查询信息

Experiment :学生做的实验的信息可以对该实验做增删改擦的操作

6.模块过程设计

6.1处理说明

主要描述了各个模块的主要功能的设计过程的分析

       (1)身份验证模块

主要是对用户身份的验证,登录需要传入参数用户名(username)和密码(userpassword)来验证用户的身份是否合法;

身份验证主要是使用某些功能来验证用户是否拥有使用该功能的权限,返回布尔值来显示是否拥有该权限。

       (2)实验室人员模块

实验室人员查看学生成绩系统默认按班级查看,需要找到该班级的编号来查询该班级内的所有学生的成绩;

同样导出实验成绩是以班级为单位导出的,只要查到该班级的所有学生成绩打印输出;

查看实验任课教师需要该课程的编号来查询负责该课程的教师信息,查询结果返回一个数组来接收教师信息;

查询教师负责课程信息需要该教师的信息来查询课程信息返回课程的一个数组供程序员遍历信息。

       (3)教师模块

修改实验报告模板需要该模板的id来查找模板的原始信息之后进行修改,本个完成模板的修改之后保存就完成功能的目的;

导出学生实验成绩是以班级为单位导出的,只要查到该班级的所有学生成绩打印输出;

查看学实验报告列表以班级为单位查询,需要该班级的信息来查询该班级学生信息,查询后可以按不同的要求进行排序(是否批改、成绩高低……);

查看学生实验报告详情是在教师要对学生实验进行批改时的操作;需要该学生的信息来检索实验报告显示实验报告的详情;

批改学生实验报告是教师给出学生实验报告的成绩需要该生的信息检索数据给出成绩记录成绩;

修改学生实验报告是教师对学生实验报告的成绩的修改需要该生的信息检索数据给出成绩记录成绩;

       (4)学生模块

查看实验报告模板是学生查看本学期的实验报告的操作需要实验报告的id来或许详细的模板内容;

编辑实验报告内容是学生填写实验报告的操作需要实验报告的id来或许详细的模板内容然后填写内容并保存;

提交实验报告是学生填写完实验报告后提交保存内容,需要实验报告的id和学生的相关信息;

修改实验报告是学生填写完实验报告后有错误需要修改内容,需要实验报告的id和学生的相关信息;

6.2接口描述

       本系统需要的接口参数主要是String 、Student 、Classes 、Course 、 Experiment,String是需要传入的一个字符串用来作为检索信息,其他参数则是作为一个对象传入一部分是为了用对象的属性来检索信息一部分是要来判断对象是否是需要操作的对象,用来判断对象的正确与否。

6.3设计语言描述

本系统采用java语言进行设计实现,Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的静态语言。由于本系统固定时间内的用户会较多所以会用到线程这一功能,线程是一种特殊的对象,它必须由Thread类或其子(孙)类来创建。通常有两种方法来创建线程:其一,使用型构为Thread(Runnable)的构造子将一个实现了Runnable接口的对象包装成一个线程,其二,从Thread类派生出子类并重写run方法,使用该子类创建的对象即为线程。值得注意的是Thread类已经实现了Runnable接口,因此,任何一个线程均有它的run方法,而run方法中包含了线程所要运行的代码。线程的活动由一组方法来控制。Java语言支持多个线程的同时执行,并提供多线程之间的同步机制(关键字为synchronized)。故本系统选择使用java语言来实现。

6.4使用的模块

本系统模块之间存在明显的先后顺序,学期需要实验室人员来上传实验大纲、实验模板等资源。教师模块需要学生提交实验报告后方可对实验报告进行批改等操作,教师批改后才其他角色才可以导出实验成绩或者查看一些功能。

6.5内部设计结构

本系统设计采用面向对象的方法设计实现,划分不同的模块,基本不涉及太复杂的算法,系统主要是对逻辑关系的处理和对数据库的增删改查,以及查询结果的显示方式(不同要求进行排序)。

6.6注释、约束、限制

具体的代码的注释、约束、限制会在代码中详细体现出来。

7.需求交叉索引

描述需求与模块的关系,交叉部分即共享模块的调用关系。

8.测试方针

8.1测试方针

针对主要功能优先测试,使用黑盒测试技术为主、白盒测试技术为辅来设计测试用例。

8.2集成策略

模块集成的策略和测试策略及其方案等。

8.3特殊考虑

9.特别注意鼠标、键盘的稳定性,建议进行压力测试。

10.附录(包括特殊注解)

附加说明,包括特殊说明,资料等。

 

第二篇:软件系统分析与设计实验报告

软件系统分析与设计实验报告

毕业以后,我想成为一名软件开发程序员。程序员是一种技术工作,在IT的发展中有相当重要的地位,从底层硬件通讯协议的建立, 到数据传输层的处理,到操作系统的建设,到数据库平台的建设,一直到应用层上各种数 据营销平台的搭建,程序员在里面都扮演着举足轻重的角色并为IT事业的发展做出了巨大 的贡献。

中国有很多精于编码的人,但是中国软件行业,尤其是网络应用开发方面误区很大,很难 形成有规模的软件开发力量和产品能力,不但比美国差距甚远,和印度相比也是颇有不 如。这些问题不是在于中国程序员的智商和工作努力状况,也不是在于国家和民间对开发 的投入程度,而是很大程度上,有一些对技术,对程序开发,对项目设计方面的思想误 区,这些误区,导致了软件行业的产品化能力不足,缺乏规模化和大型复用系统研发能 力,可以说,改变认识误区,是解决软件行业小作坊模式和个体英雄模式所带来的局限性 的重要工作。

要成为一名合格的程序员,毕业之前学习的课程最主要是学好计算机硬件基础知识、计算机系统基础知识、软件开发运行维护基础知识、安全性基础知识、软件技术基础、程序逻辑和C语言编程、SQL Server2005数据库编程、Java初级编程、Java图形编程、SQL Server2005数据库设计与实现、.NET平台及C#编程、计算机专业英语、Visual Basic程序设计。

我们应该利用大四的一些空余时间寻找合适的实业岗位实习,尽量和自己的专业对口,把自己的理论知识运用到实际例子中去。

程序员的发展路线有:

1、技术路线,要求能力强智商高,把握公司核心技术和公司的技术发展。

初级程序员,中级,高级,系统架构师,技术部经理、技术总监。总经理

2、业务路线,要求知识面广,懂得大部分技术,并知道该怎么做,不一定会做,表达能力好,协调能力好,对某一个行业的业务精通。

初级程序员,中级,高级,系统分析员,项目经理、产品经理、研发总监,总经理

3、实施路线。

初级程序员,中级,高级,系统分析员,项目经理、实施经理,实施总监

4、销售路线

初级程序员,中级,高级,系统分析员,项目经理、实施经理,产品经理,售前顾问,销售经理

随着软件流水线般的进行生产,程序员(我是指之会写程序的人)越来越成为工厂里面流水线上的操作工人,依靠越来越强大和方便的开发工具和越来越容易上手的开发语言。这些人拼得是自己的经历和体力,他们是软件开发的最底层人员,即使干的好也不过是熟练的操作技工而已,因为他们只会使用别人开发出来的工具,自己甚至只知道怎么用,而不知道为什么和具体实现。造成这种情况的主要原因是开发工具的自动化和教育上的失误,特别是一些短期的软件培训机构,他们只教会了学生如何使用.Net或者Eclipse这样的容易上手的开发工具,最多再学习一下语言,有些人甚至连语言和开发工具都分不清楚(例如C++和VC++)这些都是软件行业迅速发展所造成的一些不良的影响和某些人急于求成的心理。很多人的基础不扎实就去写程序,它们对多线程,语言的底层实现和算法都不了解,这样,很难写出结构良好,效率高的程序。

所以,总结我以往写程序的经验和教训,我觉得:

1。打好基础,学好本质的东西,分清什么是科学,什么是技术,什么是应用。最上层的东西是会经常变化的,不要把时间大都花在那上面。

2。精通而不是什么都知道,却什么也不熟悉。后者是大忽悠。前者在有可能从程序员过渡到技术主管或者研发核心人员。

3。不要总用别人的东西,要有自己的成果。

4。学计算机不要急,慢慢来,一步一步,不要追求新技术名词,一位会几个新名词就来不得了,高手对底层都很熟悉的。不要浮躁。

5。要理论联系实际,学到的理论要知道有什么应用和怎么实现,到动手编程。

6。要有毅力,真正的工作很枯燥,但如果你投入进去就会很有趣。要珍惜每一分每一秒。

相关推荐