《系统分析与设计》课程设计要求一、分组1-2人一组,由班长负责分组,每组指定一名组长。
注:以java方向的同学为主来分组,前台和信息技术方向的同学穿插在各组。
二、选择题目可从附录二中选题,也可选java、jsp等课程设计中老师指定的题目,也可自选题目(应选小型软件:代码2000行左右,如小型数据库应用系统、小型网络应用软件等)。
三、选择软件开发方法从附录一中选择方法二——面向对象的软件开发方法,按方法二的规范完成系统分析与设计。
四、按照方法二完成系统分析、设计,并完成相应文档。
1、17周末,须完成如下文档:1)《关于软件性质、规模、目标的报告书》2)《可行性研究报告》3)《项目开发计划》4)《需求规格说明书》注:每个小组成员都要参与需求分析阶段的工作,需求分析的每个阶段的工作平均分配给每个小组成员。
5)《总体设计说明书》注:每个小组成员都要参与总体设计阶段的工作,总体设计的每个阶段的工作平均分配给每个小组成员。
以上文档撰写规范见附录三。
2、17周末,个人须将下列文档汇总成一份论文提交:1)《关于软件性质、规模、目标的报告书》(论文中列出《关于软件性质、规模、目标的报告书》的全部,并注明自己完成的部分)2)《可行性研究报告》(论文中列出《可行性研究报告》的全部,并注明自己完成的部分)3)《项目开发计划》。
(论文中列出《项目开发计划》的全部,并注明自己完成的部分)4)《需求规格说明书》(论文中的《需求规格说明书》要包含附录一的方法二中需求分析的各阶段,各阶段须书写的内容详见附录一的方法二)5)《总体设计说明书》(论文中的《总体设计说明书》要包含附录一的方法二中总体设计的各阶段,各阶段须书写的内容详见附录一的方法二)五、成绩评定《系统分析与设计》课程成绩=文档成绩+浮动分注:文档成绩由教师根据学生所提交的文档的完整性、质量、规范性打分;浮动分由组长根据每人贡献所给参考分、教师根据每人的工作态度及出勤情况所给分综合评定。
注:《系统分析与设计》课程设计时间:17周附录一:软件开发方法软件开发方法的特点及适用范围一、传统的软件开发方法(结构化的软件开发方法)适用于一般软件,特别适合于如下情况:1.数据结构+算法的程序设计思想。
2.非交互式软件(软件的执行过程主要不是由用户控制,而是由程序控制,并按序执行。
)如:大型工程计算软件、实时数据跟踪软件、自动化控制系统、系统软件、数据库应用系统……3.面向过程的结构化语言:C语言、Pascal语言……二、面向对象的软件开发方法适用于一般软件,特别适合于如下情况:1.类+消息的程序设计思想。
2.交互式软件(软件的执行过程完全用户交互控制,而不是由程序控制。
)如:基于网络的完全由用户交互控制程序执行过程的应用软件和系统软件。
3.面向对象的语言:Java、C++、C#……三、传统与面向对象方法相结合的实用方法适用于一般软件。
传统软件开发方法(瀑布模型)一、问题定义确定目标系统的性质、规模、目标。
二、可行性研究(一)从经济、技术、法律、操作角度分析系统可行性。
(二)若可行,则制订项目开发计划(项目成本、进度安排、分组情况……)三、需求分析(一)业务分析1.业务描述2.建立业务模型(SFD)(可选)(二)功能分析1.功能描述2.建立系统功能模型(DFD、数据字典)(三)数据分析建立系统的数据模型(E-R图)(可选)(四)建立系统的动态模型(STD、时序图、Petri网)(可选)四、总体设计(一)软件运行环境(二)软件架构模式(四)建立软件结构图(软件结构图反应模块及模块间的调用关系,每个模块为一个独立的功能)(五)设计数据库的表结构(每张表应规范到3NF,每张表应包含表名,字段,字段类型、主键、外键)(可选)五、详细设计(一)模块设计(设计每个模块的界面及算法)模块界面:可将所设计界面抓图。
模块算法:叙述模块功能。
模块的输入。
模块的处理。
模块的输出。
使用如下工具描述算法:流程图、N-S图、PAD图、活动图PDL判定表/树(可选)※一个功能模块的实现过程中可能包含多个函数、过程、类,应列出主要的函数、过程或类,对于其中的一些重要的、难度较大的函数、过程、类中的方法的实现算法可用流程图、N-S图、PAD图、活动图、PDL、判定表/树等工具进行详细设计。
(可选)(二)建立数据库、录入数据六、实现(一)编码(算法→源代码)(二)测试参考案例:1、图书馆管理系统的开发2、网上商城管理系统的开发面向对象软件开发方法(喷泉模型)一、问题定义(论文中列出《关于软件性质、规模、目标的报告书》的全部,并注明自己完成的部分)二、可行性研究(论文中列出《可行性研究报告》、《项目开发计划》的全部,并注明自己完成的部分)三、面向对象分析(一)业务分析1、业务描述(论文中包含全部业务描述,并注明自己完成的部分)2、建立系统业务模型(可选)(1)业务主线模型(若选做此部分,论文中包含全部业务主线模型,并注明自己完成的部分)★可选择顺序图、活动图描述系统整体业务流程。
★可选择活动图描述系统参与者的行为。
(2)业务流程模型(若选做此部分,则只需完成部分具体业务的流程模型,论文中只列出自己所做的模型)★可选择顺序图、活动图描述系统中某个业务的业务流程。
★可选择活动图描述某个业务中的参与者的行为。
(二)功能分析,建立系统功能模型(用例图、用例描述)1、建立需求结构(论文中包含全部需求结构,并注明自己完成的部分)2、建立功能模型(将系统所有需求合理归类,为某一主题的需求建立功能模型即可,论文只列出自己所做功能模型的功能描述、用例图、用例叙述)为需求结构中每个最小的需求单元建立一个功能模型:(1)功能描述(2)用例图(3)用例叙述(三)对象分析,建立系统初步的对象模型(实体类的类图)(论文中列出初步对象模型的全部,并注明自己完成的部分)(四)用例分析,建立用例分析模型(将系统所有需求合理归类,为某一主题的需求建立用例分析模型即可,论文只列出自己所做的用例分析模型)确定用例的实现策略。
★可选择顺序图对用例进行分析。
(粗略的顺序图,图中的消息用粗略的方法表达)★可选择活动图对用例进行分析。
(五)扩充和完善,建立系统完整的对象模型(平台无关对象模型)(将系统所有需求合理归类,建立某一主题的需求中涉及的平台无关对象模型即可。
论文中列出某一主题的需求中涉及的平台无关对象模型的全部,并注明自己完成的部分)确定系统的实现策略(系统中包含哪些类,不同的类起什么作用)。
★对于系统中重要的类,用状态图分析其状态变迁。
(论文中包含描述一个类的状态变迁的状态图)四、面向对象的总体设计(一)扩充、完善功能模型(若需要完善,则论文中列出全部完善后的功能模型,并注明自己完成的部分)(二)软件运行环境(论文中写出全部软件运行环境,并注明自己完成的部分)(三)软件架构模型1、软件架构模式(论文中写出全部软件架构模式,并注明自己完成的部分)2、软件逻辑架构(子系统结构,每个子系统对应需求结构中一个最小的需求单元)(论文中写出全部软件逻辑架构,并注明自己完成的部分)(四)扩充和完善对象模型,建立平台相关对象模型。
(将系统所有需求合理归类,建立某一主题的需求中涉及的平台相关的对象模型即可。
论文中列出平台相关对象模型的全部,并注明自己完成的部分)(五)用例设计,建立用例设计模型(将系统所有需求合理归类,为某一主题的需求建立用例设计模型即可,论文只列出自己所做的用例设计模型)★可选择顺序图对每个用例进行设计(详细的顺序图,图中的消息用准确的方法表达)。
★可选择活动图对每个用例进行设计。
(五)若某些类的对象须长期存储,则定义存储方式一般用数据库存储,建立数据库设计模型。
1、数据库的表结构(实体类→表→3NF(每张表应包含表名、字段、字段类型、主键、外键))(论文中列出全部表结构,并注明自己完成的部分)2、数据库的表之间的关系(可选)(论文中列出全部数据库表之间的关系,并注明自己完成的部分)(七)设计人机交互界面,建立界面设计模型(将系统所有需求合理归类,建立某一主题的需求中涉及的界面设计模型即可)1、界面结构模型(论文中列出某一主题的需求中涉及的界面结构模型的全部,并注明自己完成的部分)2、屏幕界面模型(论文中只列出自己完成的屏幕界面模型)(八)建立组件图(可选)(论文中列出全部组件图,并注明自己完成的部分)(九)建立部署模型(论文中列出全部部署模型,并注明自己完成的部分)五、面向对象的详细设计(一)确定每个用例的实现算法(实现用例的类中服务的算法、关联的算法),描述算法可用流程图、N-S图、PAD图、活动图、PDL、判定表/树等工具。
(二)建立数据库、录入数据六、面向对象实现(一)编码算法→源代码(二)测试参考案例:1.企业信息展示系统的开发2. 在线书店的开发传统与面向对象方法相结合的实用方法一、问题定义二、可行性研究三、需求分析(一)业务分析方法二:业务描述、业务模型(系统流图)方法三:业务描述、业务模型(可选择顺序图、活动图描述系统整体业务流程;可选择活动图描述系统参与者的行为。
)方法一:功能描述、DFD、数据字典(二)功能分析方法二:功能描述、用例图、用例描述方法三:用语言详尽地叙述功能(三)数据分析方法一:E-R图方法二:实体类的类图(四)动态分析:建立系统动态模型(STD、时序图、Petri网)(可选)四、总体设计(一)软件运行环境(二)软件架构模式(三)建立软件结构图(功能模块图)(四)设计数据库的表结构方法一:E-R图→表→3NF方法二:实体类→表→3NF五、详细设计(一)模块设计:设计模块的界面及算法。
方法一:模块界面:可将所设计界面抓图。
模块算法:叙述模块功能。
模块的输入。
模块的处理。
模块的输出。
※一个功能模块的实现过程中可能包含多个函数、过程、类,应列出主要的函数、过程或类,对于其中的一些重要的、难度较大的函数、过程、类中的方法的实现算法可用流程图、N-S图、PAD图、活动图、PDL、判定表/树等工具进行详细设计。
(可选)方法二:模块界面:可将所设计界面抓图。
模块算法:叙述模块功能。
模块的输入。
模块的处理。
模块的输出。
使用如下工具描述算法:流程图、N-S图、PAD图、活动图PDL判定表/树(可选)※一个功能模块的实现过程中可能包含多个函数、过程、类,应列出主要的函数、过程或类,对于其中的一些重要的、难度较大的函数、过程、类中的方法的实现算法可用流程图、N-S图、PAD图、活动图、PDL、判定表/树等工具进行详细设计。
(可选)方法三:(特别适合于用面向对象的语言实现的软件)模块界面:可将所设计界面抓图。
模块算法:★可选择顺序图来分析、设计每个用例。
用顺序图粗略地描述用例(顺序图中的消息用粗略的方法表达)→用顺序图详细地描述用例(顺序图中的消息用准确地方法表达)★可选择活动图来分析、设计每个用例。