范文一:软件设计基础
软件设计基础
上机报告
姓名:梁韬
学号:200911513314
班级:09电信嵌入式
指导老师:薛继良
目录
一.写华氏温度换算成摄氏温度
二.C 语言写日历:
三.障碍跑
四.卡雷尔机器人收集报纸
五.将方块个数翻倍
六.心的体会
一.写华氏温度换算成摄氏温度
编写一个华氏温度换算成摄氏温度的程序,换算公式为:C=5/9(F-32);编写一个程序,将用千克表示的公制重量换算为用磅和盎司表示的英制重量,他们之间的换算关系如下:
1千克 = 2.2磅 1磅 = 16 盎司
#include #include #define POUND 2.2 #define OUNCE 16 //********************************* void main() { while(1) { float quality,qounce; int qint; char goOn; printf("*************欢迎使用质量单位转换系统*************\n"); printf("请输入转换的质量大小(单位:千克):\n"); scanf("%f",&quality); qint=quality*POUND; qounce=(quality*POUND-qint)*OUNCE; printf("%.2f千克=%.0f磅%0.2f盎司\n",quality,quality*POUND,qounce); printf("**************************************************\n"); printf("继续请按任意键\n退出请按N\n"); printf("**************************************************\n"); goOn=getch(); if(goOn=='n'||goOn=='N') break; system("cls"); } } 二.C 语言写日历: /*The user input year, program to print the input of the calendar year out*/ #include int JudgmentrunYear(int); int JudgmentWeek(int); void OutputAMonth(int,int); int main(){ int year,week; int runYear; printf("****************Calendar inquires the system****************\n"); printf("Please input the year:\n"); printf("(attention:This system can only inquires in and after the year of 1900)\n"); scanf("%d",&year); runYear=JudgmentrunYear(year); week=JudgmentWeek(year); OutputAMonth(runYear,week); } int JudgmentrunYear(int year){ if ((year%4==0&&year%100!=0)||year%400==0) return 1; else return 0; } int JudgmentWeek(int year){ int total,a; total=(year-1900)*365+(year-1900)/4; switch(total%7){ case 0: return 1; case 1: a=2; break; case 2: a=3; break; case 3: a=4; break; case 4: a=5; break; case 5: a=6; break; case 6: a=0; break; } return a; } void OutputAMonth(int runNian, int week){ int i,j,k,l,month,place; place=week; for(month=1;month<> if (month==1||month==3||month==5||month==7||month==8||month==10||month==12) i=31; else if(month==2&&runNian==1) i=29; else if(month==2&&runNian==0) i=28; else i=30; printf("\n\n%d month\nsun mon tue wed fri sat\n",month); k=0; for(j=0;j<> printf(" "); k++; } for(l=1;l<> if(k%7==0&&k!=0) printf("\n"); printf("%2d",l); printf(" "); k++; } place=k%7; printf("\n"); } } 三.障碍跑 1. 卡雷尔从位置(1, 1)开始,面向东。 2. 障碍跑全长9 列。 3. 障碍数任意,高度任意,分布于任意列。 4. 卡雷尔每次只能" 跨" 一个栏。 执行这个障碍跑(SteepleChase)程序,前后效果图如下: thu 下面是这个障碍跑程序的代码,体现了卡雷尔各种控制结构、程序的分解和注释(包括注明前、后置条件) /* * File: SteepleChase.java * ----------------------- * Karel runs a steeple chase the is 9 avenues long. * Hurdles are of arbitrary height and placement. */ import stanford.karel.*; public class SteepleChase extends SuperKarel { /* * To run a race that is 9 avenues long, we need to move * forward or jump hurdles 8 times. */ public void run() { for (int i = 0; i < 8;="" i++)=""> if (frontIsClear()) { move(); } else { jumpHurdle(); } } } /* * Pre-condition: Facing East at bottom of hurdle * Post-condition: Facing East at bottom in next avenue * after hurdle */ private void jumpHurdle() { ascendHurdle(); move(); descendHurdle(); } /* * Pre-condition: Facing East at bottom of hurdle * Post-condition: Facing East immediately above hurdle */ private void ascendHurdle() { turnLeft(); while (rightIsBlocked()) { move(); } turnRight(); } /* * Pre-condition: Facing East above and immediately after hurdle * Post-condition: Facing East at bottom of hurdle */ private void descendHurdle() { turnRight(); moveToWall(); turnLeft()turnLeft(); } /* * Pre-condition: none * Post-condition: Facing first wall in whichever direction * Karel was facing previously */ private void moveToWall() { while (frontIsClear()) { move(); } } } 四.卡雷尔机器人收集报纸 这是一个简单的情景问题,假设卡雷尔机器人住在如下中央正方形区域内: 卡雷尔位于房间的西北角,他需要拿回放在房间门口的报纸(灰色的方块)。然后回到最初位置。 此问题是典型的卡雷尔机器人题目,我们可以假设自己就是机器人,首先,要明确自己身处的环境——一个房间内,房子的大小不一定是固定的,但是报纸就在门口。其次,要明确自己的目的——拿到报纸。接下来是应该怎么实现这个目标?可以分成三步: ①移动到报纸的位置 ②捡起报纸 ③返回原来的位置 然后,把每一步具体的细节实现,就可以解决问题了。 以下是每一步的具体程序代码, ①private void goToNewspaper() { while(frontIsClear()) { } move(); if(frontIsBlocked()) { turnRight(); } while(leftIsBlocked()) { move(); if(leftIsClear()) turnLeft(); move(); } } ②pickbeeper(); ③private void goBack() { turnAround(); while(frontIsClear()) { move(); } if(frontIsBlocked()) { turnRight(); } move(); while(frontIsClear()) { move(); } if(frontIsBlocked()) { turnRight(); } } 五.将方块个数翻倍 卡雷尔也能做算数。比如让他把方块的数量加倍。我们可以写个程序,将卡雷 尔面前的方块(有限个) 加倍,并返回其初始位置,面朝原始方向。你可以假设卡雷尔袋中的 方块数为无限个。 执行该程序,前后效果图如下(注意(2, 1)处的方块数量加倍了): /* * File: DoubleBeepers.java * ------------------------ * Karel doubles the number of beepers on the corner directly * in front of him in the world. He then returns to his * original position/orientation. */ import stanford.karel.SuperKarel; public class DoubleBeepers extends SuperKarel { public void run() { move(); DoubleBeepersInPile(); moveBackward(); } /* * For every beeper on the current corner, Karel places * two beepers on the corner immediately ahead of him. */ private void DoubleBeepersInPile() { whilwhile (beepersPresent()) { pickBeeper(); PutTwoBeepersNextDoor(); } MovePileNextDoorBack(); } /* * Place two beepers on corner one avenue ahead of Karel * and move back to starting position/orientation */ private void PutTwoBeepersNextDoor() { move(); putBeeper(); putBeeper(); moveBackward(); } /* * Move all the beepers on the corner in front of Karel * the the corner Karel is currently on. */ private void MovePileNextDoorBack() { move(); while (beepersPresent()) { MoveOneBeeperBack(); } moveBackward(); } /* * Move one beeper from the current corner back one avenue * and return to the original position/orientation. */ private void MoveOneBeeperBack() { pickBeeper(); moveBackward(); putBeeper(); move(); } /* * Move Karel back one avenue, but have the same * final orientation. */ private void moveBackward() { turnAround(); move(); turnAround(); } } 六.心得体会 通过上机,我学会了写了一些简单的程序,使用一些基本的命令控制卡雷尔机器人。程序设计过程犹如解决实际问题,首先要了解这个问题的基本要求,即输入、输出、完成从输入到输出的要求是什么; 其次,从问题的要害入手,从前到后的解决问题的每个方面,即从输入开始入手,着重考虑如何从输入导出输出,在这个过程中,可确定所需的变量、数组、函数,然后确定处理过程--算法。在设计程序时也增长了自己的知识,翻阅有关文献, 加强了自己的实践能力。 在这期间,我遇到了不少的困难,不过在老师和同学的帮助下,最终还是得以完成,感谢一下老师和同学的帮助。 我学习到了很多从前没有接触过的知识,使我眼界打开,感受颇深。基本的动手能力是一切工作和创造的基础和必要条件。 本科生软件设计论文 目: 名: 院: 业: 级: 号: 导教师: 网络游戏资讯查询系统 陈思雷 理学院 信息与计算科学 信科132 23113220 朱毅华 职称: 副教授 2016年7月8日 南京农业大学教务处制 题 姓 学 专 班 学 指 网络游戏资讯查询系统 摘要:从游戏玩家的角度,进行了网络游戏资讯查询系统开发。在Windows 7,Mac OS操作系统下,采用eclipse集成开发系统,用My SQL作为后台数据库的管理程序,使用Java语言编写,实现网络游戏资讯查询。 关键词:网络游戏;数据库设计;Java 软件设计是从软件需求规格说明书出发,根据需求分析阶段确定的功能设计软件系统的整体结构、划分功能模块、确定每个模块的实现算法以及编写具体的代码,形成软件的具体设计方案。 网络游戏产业是一个新兴的朝阳产业,经历了20世纪末的初期形成阶段,以及21世纪初的快速发展,现在中国网络游戏处在成长期并快速走向成熟期的阶段。 根据国家文化部的统计,2012年,以互联网和移动网游戏市场计算,我国网络游戏市场收入规模达601.2亿元,同比增长28.3%。其中,互联网游戏536.1亿元,同比增长24.7%;移动游戏65.1亿元,同比增长68.2%。2012年,共有883款网络游戏通过文化部的审查或备案。其中,国产游戏830款,较2011年增加226款。国产网络游戏数量继续增长,并仍然在市场上占据主要地位。2013年中国网络游戏市场规模逼近900亿元,同比增长33%。[1] 对于网络游戏而言,最重要的就是人气。人气决定了一款网络游戏的核心竞争力。任何一款游戏,只要没有人气,就是一款不成功的游戏。为了提升游戏体验,扩大玩家群体,避免玩家流失,提升玩家的关注度,让玩家迅速知道、了解、查询游戏资讯就显得十分必要。 毫无疑问,网络游戏非常需要一款合适的、能满足需求的软件. 1 课题分析 1.1 背景分析 随着计算机技术的不断发展,计算机已经逐渐被各行各业广泛应用,逐渐融入我们日常生活的方方面面。我国的科技水平高速发展,计算机作为今天使用最广的现代化工具已深入到各个领域,并且正在成为未来社会——信息社会的重要支柱。 在此背景下,网络游戏迅速发展,游戏玩家数量日益庞大,仅以英雄联盟为例,根据Roit2014年一月官方数据LOL全球日均用户:2700万以上;LOL全球月均用户:6700万以上;LOL全球同时在线纪录:750万。 我们开发网络游戏资讯查询系统,旨在为那些数量庞大的网络游戏玩家群体提供服务,提高他们的游戏体验。 1.2 研究意义及目的 实现游戏玩家对相关游戏资讯的查询,同时,方便 具体的目的: 提供对用户个人的资料,物品和英雄信息的查询操作。 2 网络游戏资讯查询现状分析 2.1 现状分析 现在市场上存在一定的游戏资讯查询APP或网页,但大多数查询内容不全,给游戏的玩家带来一定不便,在一定程度上破坏了游戏体验。 2.2 可行性分析 2.2.1 技术可行性 本系统设计运行在Windows 7平台上,采用Client/Server(客户/服务器)结构模式,在分析了用户和网络游戏资讯的具体情况以后,充分利用eclipse在应用程序开发上的高效性和灵活性,以此作为界面开发的工具,并以My SQL作为后台数据库开发工具,分析并设计了“网络游戏资讯查询系统”。 系统软件和对数据库的操作都可在计算机上完成,拥有技术可行性。 2.2.2 操作可行性 系统的开发采用java语言在eclipse平台下建立可视化界面,用户可以轻松使用。整个网络游戏资讯查询系统系统采用友好的交互界面,结构清晰,简洁明了。具有易于操作的可行性。 2.2.3 市场可行性 随着网络游戏的不但发展,游戏玩家用户日益增加,对游戏资讯查询的需求也日益增大。 2.3需求分析 在网络游戏中,由于游戏信息过于庞大,用户很难记住每件物品的信息,和英雄信息。所以我们便萌生开发一个便于用户查询游戏资讯的软件,而且在用户登录后,可以收藏那些自己经常使用的物品和装备。 3.系统的整体设计 3.1 系统的总体目标 本系统开发的目标群体是广大游戏玩家,本系统希望可以达到以下几个目标: 用户只能修改密码和填写自己的个人信息,以及收藏自己所喜欢的英雄和物品信息。 界面窗体简单明了。很容易操作,打开软件,即可轻易操作。 完善的查询功能,极大的缩短查询所需要的时间。 完善的增加、删除、修改、查询和用户自由查询关注功能使得操作简单方便,提高信息处理的速度和准确性,能够及时、准确、有效的查询和接收游戏资讯。 3.2 系统的结构 3.2.1 系统的概述 (1)游戏信息管理 在管理这一部分时因为涉及到用户信息表,因此要使用存储过程和触发器来保证数据的一致性。 (2)用户私人信息管理 登陆之后的用户可以对自己收藏表中的信息进行插入、删除、修改等基本操作,可以自主添加和删除收藏物品。 3.3 运行环境 操作系统:Windows 7,Mac OS 数据库服务器:My SQL 3.4 开发软件 本系统采用eclipse集成开发系统,采用My SQL作为后台数据库的管理程序。 3.4.1 eclipse Eclipse 是一个开放源代码的、基于Java的可扩展开发平台。 新版本特点编辑: 1.NLS string hover有一个Open in Properties File动作 2.在Caller模式下,调用层级(Call Hierarchy)有一个在上下文菜单中有一个Expand With Constructors动作 3.当你在编辑器中输入的时候,Java比较编辑器会更新其结构 4.有一个新的toString()产生器 5.为可覆盖方法增加了一个Open Implementation链接,可以直接打开其实现 6.编辑器与执行环境一致 7.Debug视图现在提供了breadcrumb(面包屑),显示了活动的debug上下文 8.可运行的JAR文件输出向导还可以把所需的类库打包进一个要输出的可运行JAR文件,或打包进与紧挨着该JAR的一个目录中 9.当在写一个分配表达式(allocation expression)时发生补全操作,ch内容助手可以提示一个类的可用构造方法 10.如果检测到无用代码,编译器可以发出警告 11.类库、变量或容器入口的路径可以是与项目相关的任何位置 12.在Jovadoc hover的头部及Javadoc视图中,都提供了引用其他类型和成员的链接 13.随该Eclipse发行的JUnit4版本更新为4.5 14.Javadoc视图及hovers都支持{@inheritDoc}标签并给覆盖方法增加链接 15.同一值的比较现在由编译器检测,默认情况下会发出警告[8] 3.4.2 My SQL My SQL是一个关系型数据库管理系统 My SQL的系统特性编辑如下: 1.使用 C和 C++编写,并使用了多种编译器进行测试,保证了源代码的可移植性。 2.支持 AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。 3.为多种编程语言提供了 API。这些编程语言包括 C、C++、Python、Java、Perl、PHP、Eiffel、Ruby,.NET和 Tcl 等。 4.支持多线程,充分利用 CPU 资源。 5.优化的 SQL查询算法,有效地提高查询速度。 6.既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。 7.提供多语言支持,常见的编码如中文的 GB 2312、BIG5,日文的 Shift_JIS等都可以用作数据表名和数据列名。 8.提供 TCP/IP、ODBC 和 JDBC等多种数据库连接途径。 9.提供用于管理、检查、优化数据库操作的管理工具。 10.支持大型的数据库。可以处理拥有上千万条记录的大型数据库。 11.支持多种存储引擎。 12.MySQL 是开源的,所以你不需要支付额外的费用。 13.MySQL 使用标准的 SQL数据语言形式。 14.MySQL 对 PHP 有很好的支持,PHP是目前最流行的 Web 开发语言。 15.MySQL是可以定制的,采用了 GPL协议,你可以修改源码来开发自己的 My SQL 系统。 16.在线 DDL/更改功能,数据架构支持动态应用程序和开发人员灵活性。 17.复制全局事务标识,可支持自我修复式集群。 18.复制无崩溃从机,可提高可用性。 19.复制多线程从机,可提高性能。 3.5 开发语言 本系统采用面向对象的可视化程序设计语言Java。 Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 Java是一个纯粹的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。 Java不同于一般的编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了“一次编译、到处执行”的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的性能。 编辑Java源代码可以使用任何无格式的纯文本编辑器,在Windows操作系统上可以使用微软记事本(Notepad)、EditPlus等程序,在Linux平台上可使用vi工具等。 [5] 4 系统详细设计与实现 4.1 数据库设计 4.1.1 数据库开发平台 数据库设计在程序开发设计中扮演着重要的角色,它往往决定了在后续的代码编写中进行怎样的逻辑设计和结构设计。数据库设计合理、有限可以起到降低程序复杂度的作用,使得后续的程序开发过程更加简单。 本系统是一个网络游戏资讯查询系统,考虑到开发成本、用户需求等问题,决定采用My SQL作为项目中的数据库。 My SQL 是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。My SQL 软件由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 My SQL 作为网站数据库。由于其社区版的性能卓越,搭配 PHP 和 Apache 可组成良好的开发环境。 My SQL提供一个全面的平台用于部署和开发一项大型的任务,包括以下的优点: 1. 它使用的核心线程是完全多线程,支持多处理器。 2. 有多种列类型:1、2、3、4、和8字节长度自有符号/无符号整数、FLOAT、DOUBLE、CHAR、VARCHAR、TEXT、BLOB、DATE、TIME、DATETIME、 TIMESTAMP、YEAR、和ENUM类型。 3. 它通过一个高度优化的类库实现SQL函数库并像他们能达到的一样快速,通常在查询初始化后不该有任何内存分配。没有内存漏洞。 4. 全面支持SQL的GROUP BY和ORDER BY子句,支持聚合函数(COUNT()、COUNT(DISTINCT)、AVG()、STD()、SUM()、MAX()和MIN())。你可以在同一查询中混来自不同数据库的表。 5. 支持ANSI SQL的LEFT 0UTER JOIN和ODBC。 6. 所有列都有缺省值。你可以用INSERT插入一个表列的子集,那些没用明确给定值的列设置为他们的决省值。 7. My SQL可以工作在不同的平台上。支持C、C++、Java、Perl、PHP、Python和TCL API。 4.1.2 数据库设计原则 E-R模型是对现实世界的一种抽象表示。它的主要成分是实体、联系和属性,;灵活使用这三种成分,我们可以构建许多应用环境的E-R模型。 E-R图设计原则 (1)真实性原则 (2)避免冗余原则 (3)简单性原则 (4)合适性原则 4.1.3 数据分析 a) 静态数据:是系统内部有关的数据结构和操作规程 i 物品的各项属性 ii 英雄的属性 b) 动态数据: i 用户的信息 ii 用户收藏的各类信息 4.1.4 E-R模型 4.2 系统功能模块设计 模块化应用把程序分为许多小块的、分散的代码,每一块代码都是相对独立的,使得程序结构清晰,增强了后期的可维护性。 模块化设计的可以进一步提高代码的可重用性、提高代码的可维护性以及提高代码的稳定性,使其成为一个模块化程度高、结构清晰的应用程序,使得后期对程序的维护更加的便捷。 本系统的功能模块有以下几部分组成: (1)主界面可视化代码, (2)登陆界面可视化代码, (3)用户操作代码, (4)游客操作代码 5 系统测试 系统测试,英文是System Testing,是在系统编写完成后,结合系统软件、硬件、外设和网络等基础环境,对信息系统的各种组装进行测试,确认程序的正确执行。 系统测试的范围是整个系统,具体操作的时候可以进行分模块分阶段的进行,并在系统完成之后进行总体测试。系统测试的目的是验证系统的整体功能是否符合用户的需求、整体结构是否符合系统规范的定义。并且在系统测试的过程中,找出产生冲突矛盾的地方,进行相应的调试,找出问题的原因和位置,从而进行修改完善,使得最终方案可以顺利进行满足客户需求。 6 结论 本系统是一个网络游戏资讯查询系统,具有一定实用性的数据库信息管理系统。本系统采用eclipse来完成整个系统的设计,在数据库的设计上利用了My SQL的便利性、实用性、安全性等。 7 感想 此次课程设想让我充实熟悉到团队协作的主要性,只要合作协作才干保证整个项目标有条不絮。我感受作为一名信息与计算科学专业的学生,此次课程设想是很故意义的。 软件设计课程应该说收获是相当大的。刚开始我们从正在玩游戏中找来了课题,当时觉察很多想法都是不完好的,这让我们伤透了脑子。经过不断的调试、修改、再调试,终于获得了成功。这次设计让我获益良多,我会珍惜每一次这样的机会。 参考文献: [1]蔡 灵, 薛胜文, 李方庭, 沈哲彦. 2016-2020年中国网络游戏市场投资分析及前景预测报告(上下卷)[R].广东深圳:中投顾问.2015. [2]程杰.大话设计模式[M].北京:企业管理出版社,2010-7-1. [3]李玮. 软件自动化测试混合框架的研究与实现[D]. 北京:北京交通大学,2007. [4]陆惠恩. 实用软件工程[M].北京:清华大学出版社,2015-5-1. [5]阎宏.java与模式[M]北京:电子工业出版社 ,2002-10-1. [有效软件过程] 软件设计过程 2009年10月12日 作者: 共9页 第1页 [有效软件过程] 1 设计过程流程 作者: 共9页 第2页 [有效软件过程] 2 系统分析过程 2.1 定义业务流程 定义业务流程,挑选与系统有关业务流程,从中抽象出业务用例,以便估算开发成本与周期。该过程用例是现实的业务操作与流程的表述,不代表系统操作与流程。 该过程产生《业务用例说明》文档,包括: 1. 业务用例图 2. 业务用例简述 业务用例名称 业务简述 用例1 简述1 用例2 简述2 2.2 分析业务流程 通过定义业务用例过程,对抽象出的现实业务用例进行现实工作流程分析,通过业务活动图表现。 该过程产生《业务流程说明》。 2.3 定义系统用例 通过分析业务用例,定义业务流程,根据《业务用例说明》、《业务流程说明》定义系统用例,由此确定系统参与业务的范围与深度。 《业务流程说明》活动图中每个动作都可能成为系统用例。 业务用例中的业务执行者,以及活动中的动作负责人都可能成为系统用例中的系统角色。 该过程产生《系统用例说明》文档,包括: 1. 系统用例图 2. 系统用例说明 作者: 共9页 第3页 [有效软件过程] 系统用例名称 系统业务简述 用例1 简述1 用例2 简述2 2.4 分析系统用例 在定义系统用例的结果文档中抽出首要开发的系统用例,来确定首期的系统开发范围,而后对于挑选出的系统用例进一步分析。 该过程产生《系统用例规则说明》文档 在这个过程中针对每一个系统用例,分析内部细节并编写详细的系统用例说明,格式如下: 用例名称 UC编号 用例简述 用例图 参考界面 主要流程 替代流程 例外流程 业务规则 关联电子单据 附带手工单据 其他 由于该过程中对系统用例进行了详细的分析与分解,并确定系统范围与功能,因此系统原型的开发工作可以开展进行,过程参见系统原型开发描述。 2.5 分析业务规则与抽象业务对象关系 企业通过业务规则控制整体业务运行,包括人员,流程,系统等。通过上一过程对系统作者: 共9页 第4页 [有效软件过程] 用例的详细分析,得到用例所要遵循的业务规则,包括约束规则,衍生规则。约束规则用来约束业务对象的结构和行为;衍生规则主要是部分推断规则和计算公示。 本过程中通过上一过程的结果,将业务对象与业务规则进行结合分析,使用状态图来表述分析结果,并根据状态图来确定业务对象与其他业务对象之间关系,使用ER图或对象图来表述。 该过程产生《业务对象状态说明》、《业务对象关系说明》文档 2.6 定义业务对象静态结构 根据上一过程中产生的《业务对象状态说明》、《业务对象关系说明》和系统用例详细说明,使用类图来表达系统内部的静态结构。 1. 根据业务对象关系说明,经过调整将需要持久化的业务对象及其关系衍生出初步的 静态结构。 2. 根据《业务对象状态说明》,为类增加必须的状态属性和操作。 3. 分析系统用例中的参考界面,获得更多的对象数据属性。 该过程产生《系统类图说明》文档 2.7 分析系统对象执行流程 通过系统用例详细说明和对象状态图可分析出系统执行执行流程,从而使系统用例及静态结构进行结合,可用序列图来表述分析结果。方法: 1. 启动角色对象放置于序列图最左方;支持业务对象放置序列图最右方。 2. 针对系统用例叙述里所记载每项流程步骤,判断执行时需要使用那些数据,并且指 派拥有该数据的对象负责该项工作。 3. 试执行序列图,调整流程,为操作加上参数。 该过程产生《系统对象执行流程说明》文档 2.8 完善操作与方法 根据序列图分析多个对象交互所引发的操作及属性可反馈给静态结构类图,从而完善类图中的操作和属性,并调整新增的类关系。 作者: 共9页 第5页 [有效软件过程] 该过程完善《系统类图说明》文档,为开发提供支持。 根据《业务对象关系说明》,《系统类图说明》可进行数据库设计,参见数据库设计过程。 3 系统原型过程 3.1 系统UE开发 根据系统用例所划分出的系统功能与界面描述,使用适当的工具(vios/word)开发用户界面示意图,并定义界面的操作步骤和规则。 将界面示意图与客户进行沟通,完善不足,并反馈于系统用例设计,完善用例描述。同时将界面示意图与系统设计人员进行沟通,排除界面实现问题,反馈于系统设计,从而进一步完善系统设计。 该过程通过多次迭代,产生UE设计文档,进入UI开发过程。 3.2 系统UI开发 根据UE设计文档,分析功能的操作步骤和操作约束规则,设计并开发系统静态界面,其中包括:界面表现,界面数据,操作过程,约束规则。 将UI原型与客户进行沟通,完善不足,并反馈与系统用例流程和规则,进一步完善系统设计。系统原型及系统完成后结果的雏形,因此需要多次沟通和确认。 该过程多次迭代,产出系统静态原型,以供开发人员参考使用。 4 数据库设计过程 4.1 数据库逻辑设计 根据《业务对象关系说明》将需要持久化的业务对象抽出,进行数据库逻辑关系设计,并加入所需支持的数据对象。 数据库设计人员根据需求文档,创建与数据库相关的那部分实体关系图(ERD)。如果采用面向对象方法(OOAD),这里实体相当于类对象。 作者: 共9页 第6页 [有效软件过程] 4.2 数据库存储设计 根据《系统类图说明》与数据库逻辑设计进行表结构设计。一般地,实体对应于表,实体的属性对应于表的列,实体之间的关系成为表的约束。逻辑设计中的实体大部分可以转换成物理设计中的表,但是它们并不一定是一一对应的。数据库表的参考格式如下: 表名 功能说明 列名 数据类型(精度范围) 空/非空 约束条件 补充说明 或者使用适当工具进行设计(powerdesign等) 对表结构进行规范化处理(第三范式)。 4.3 数据库设计优化 分析并优化数据库的“时,空”效率,尽可能地“提高处理速度”并且“降低数据占用的空间”。 1. 对设计进行分析“时,空”效率的瓶颈,找出优化对象(目标),并确定优先级。 2. 当优化对象(目标)之间存在对抗时,给出折衷方案。 3. 给出优化的具体措施,例如优化数据库环境参数,对表格进行反规范化处理等。 4. 编制优化规则,以提供开发人员设计高质量SQL时进行参考。 4.4 完成数据设计文档 数据库设计人员根据指定的模板撰写《数据库设计报告》,主要内容包括: 1. 数据库环境说明 2. 数据库的命名规则 作者: 共9页 第7页 [有效软件过程] 3. 逻辑设计 4. 物理设计 5. 安全性设计 6. 优化 7. 数据库管理与维护说明 5 为开发人员提供文档 《系统用例详细说明》 《对象序列图》 《类详细设计说明》 《系统静态原型》 《数据库设计说明》 《数据库优化规则说明》 作者: 共9页 第8页 [有效软件过程] 作者: 共9页 第9页 OTQP-PMT-4-1 系统设计说明 北戴河家庭旅馆系统之测试软件 设计规格说明 Ver:1.0 OTQP-PMT-4-1 系统设计说明 目录 1 引言.......................................................................................................................... 4 1.1 1.2 1.3 1.4 1.5 2 目标 ............................................................................................................... 4 文档范围 ........................................................................................................ 4 术语和缩略语 ................................................................................................. 4 参考资料 ........................................................................................................ 4 系统目标和 约束.............................................................................................. 4 系统设 计................................................................................................................... 5 2.1 系统架构概述 ................................................................................................. 5 2.1.1 2.1.2 2.2 2.3 2.4 2.5 2.6 2.7 系统模型................................................................ 错误~未定义书签。 系统 架构.............................................................................................. 5 对象模 型 .......................................................................... 错误~未定义书签。 接 口 ................................................................................. 错误~未定义书签。 特性实 现 .......................................................................... 错误~未定义书签。 错误代 码 .......................................................................... 错误~未定义书签。 错误日 志 .......................................................................... 错误~未定义书签。 部署视 图 .......................................................................... 错误~未定义书签。 3 数据库设 计 ............................................................................................................... 5 3.1 3.2 逻辑模型 .......................................................................... 错误~未定义书签。 物理模型 ........................................................................................................ 5 4 质量及其他方 面 ........................................................................................................ 6 4.1 4.2 4.3 4.4 4.5 4.6 可维护性 ........................................................................................................ 6 安全性............................................................................................................ 6 可扩展 性 ........................................................................................................ 6 可靠 性............................................................................................................ 6 可用 性............................................................................................................ 6 性能设 计 .......................................................................... 错误~未定义书签。 5 附录.......................................................................................................................... 7 OTQP-PMT-4-1 系统设计说明 1 5. 5.2 附件 ............................................................................................................... 7 修过记录 ........................................................................................................ 7 OTQP-PMT-4-1 系统设计说明 1 引言 1.1 目标 产品目标 效率 项目目标 软件的交互反应时间小于1秒;项目严重错误数为0;软件稳定运行实现测试人员对家庭旅馆系统的有效测试,能够提高测试人员的工作 时间达到24*7。 1.2 文档范围 1.3 术语和缩略语 无 1.4 参考资料 北戴河家庭旅馆系统项目章程。 北戴河家庭旅馆系统需求确认书 1.5 系统目标和约束 系统目标:简化测试人员的操作步骤,提高测试人员的工作效率 约束: 项目时间要求一周时间完成,时间较紧 对c#不精通 OTQP-PMT-4-1 系统设计说明 2 系统设计 2.1 系统架构概述 系统采用c/s和单机程序结合的形式,使用三层架构。 2.1.1 系统架构 采用三层c\S体系结构,业务逻辑层、业务实体层、数据访问层。 业务逻辑层,实现了与领域相关的所有业务逻辑,在体系架构中的位置很关键,它处于数据访问层与表示层中间,起到了数据交换中承上启下的作用。 业务实体层,业务实体是与关键业务相关的动态的概念性对象,在操作过程中会创建、演化和存档。 数据访问层,实现数据库访问,用来定义、维护、访问和更新数据并管理和满足应用服务对数据的请求。 3 数据库设计 3.1 物理模型 以office access为数据库,设计单独的数据文件和日志文件。 OTQP-PMT-4-1 系统设计说明 4 功能设计(界面及后台功能要点和关键技 术) 5 质量及其他方面 5.1 可维护性 可维护性方面,有系统日志,及相应的错误处理,保证在2小时内处理所有错误。 5.2 安全性 操作系统安全配置系统安全策略,只允许administrator能够登录。 开发过程防止SQL注入。 5.3 可扩展性 Web服务器使用网络负载均衡(NLB)实现可扩展和高可用。 5.4 可靠性 数据库使用双机热备实现高可用。 5.5 可用性 采用交互设计,以人为本,产生了比较易用的web界面,增强用户的良好体验; 如对于家庭旅馆老板,人老眼花,界面中字体设计的比较大等。 OTQP-PMT-4-1 系统设计说明 6 附录 6.1 附件 homehotel.pdm 北戴河家庭旅馆系统需求规约.doc 北戴河家庭旅馆管理项目.eap 6.2 修过记录 设计模式 (英语 design pattern)是对面向对象设计中反复出现的问题的解决方案。这个术语是在1990年代由Erich Gamma等人从建筑设计领域引入到计算机科学中来的。这个术语的含义目前还存有争议。算法不是设计模式,因为算法致力于解决问题而非设计问题。设计模式通常描述了一组相互紧密作用的类与对象。设计模式提供一种讨论软件设计的公共语言,使得熟练设计者的设计经验可以被初学者和其他设计者掌握。设计模式还为软件重构提供了目标。 随着软件开发社群对设计模式的兴趣日益增长,已经出版了一些相关的专著,定期召开相应的研讨会,而且Ward Cunningham为此发明了WikiWiki用来交流设计模式的经验。 建筑学 建筑师克里斯托佛·亚历山大在1970年代编制了一本汇集设计模式的书。但是这种设计模式的思想在建筑设计领域里的影响远没有后来在软件开发领域里传播的广泛。 历史 肯特·贝克和沃德·坎宁安在1987年利用克里斯托佛·亚历山大在建筑设计领域里的思想开发了设计模式并把此思想应用在Smalltalk中的图形用户接口的生成中。一年后Erich Gamma在他的苏黎世大学博士毕业论文中开始尝试把这种思想改写为适用于软件开发。于此同时James Coplien 在1989年至1991 年也在利用相同的思想致力于C++的开发,而后于1991年发表了他的著作Advanced C++ Idioms。就在这一年Erich Gamma 得到了博士学位,然后去了美国,在那与Richard Helm, Ralph Johnson ,John Vlissides 合作出版了Design Patterns - Elements of Reusable Object-Oriented Software 一书,在此书中共收录了23个设计模式。这四位作者在软件开发领域里也以他们的匿名著称Gang of Four(四人帮,简称GoF),并且是他们在此书中的协作导致了软件设计模式的突破。有时这个匿名GoF也会用于指代前面提到的那本书。 模式的格式 尽管名称和顺序在不同的资料中各有不同,描述模式的格式大致分为以下四个主要部分: 模式名称(Pattern Name):每一个模式都有自己的名字,模式的名字使得我们可以讨论我们的设计。 问题(Problem):在面向对象的系统设计过程中反复出现的特定场合,它导致我们采用某个模式。 解决方案(Solution):上述问题的解决方案,其内容给出了设计的各个组成部分,它们之间的关系、职责划分和协作方式。 效果(Consequence):采用该模式对软件系统其他部分的影响,比如对系统的扩充性、可移植性的影响。影响也包括负面的影响。 别名(Also Known As):一个模式可以有超过一个以上的名称。这些名称应该要在这一节註明。 动机(Motivation):该模式应该利用在哪种情况下是本节提供的方案(包括问题与来龙去脉)的责任。 应用(Applicability) 结构(Structure):这部分常用类图与互动图阐述此模式。 参与者(Participants):这部分提供一份本模式用到的类与物件清单,与它们在设计下扮演的脚色。 合作(Collaboration):描述在此模式下,类与物件间的互动。 结果(Consequences):这部分应描述使用本模式後的结果、副作用、与交换(trade-off) 实现(Implementaion):这部分应描述实现该模式、该模式的部分方案、实现该模式的可能技术、或者建议实现模式的方法。 例程(Sample Code):示范程式。 已知应用(Known Uses):业界已知的实做范例。 相关模式(Related Patterns):这部分包括其他相关模式,以及与其他类似模式的不同。 相近的术语 对某个问题经常出现的、在设计中应该尽量避免的、坏的设计方案被称为反模式。 设计模式列表 基础模式 委托模式 接口模式 代理模式 创建型模式 抽象工厂模式 (Abstract Factory) 生成器模式 (Builder) 工厂方法模式 (Factory Methord) 原型模式 (Prototype) 单例模式 (Singleton) 结构型模式 适配器模式 (Adapter) 桥接模式 (Bridge) 组合模式 (Composite) 容器模式 修饰模式 (Decorator) 扩展性模式 外观模式 享元模式 管道与过滤器模式 代理模式 (Proxy) 行为模式 责任链模式 (Chain of Responsibility) 命令模式 (Command) 柯里化模式 事件监听器模式 解释器模式 迭代器模式 中介者模式 备忘录模式 (Memento) 观察者模式 (Observer) 状态模式 (State) 策略模式 (Strategy) 模板方法模式 访问者模式 (Visitor) 层次访问者模式 并发模式 模式 Action at a distance 模式 Balking 模式 Guarded suspension 模式 Scheduler 模式 Read write lock 模式 Double checked locking 模式 Disable job requests while running job 实时模式 模式 Scheduled task 模式 User interface 模式 Disable job requests while running job 其他 模型—视图—控制器模式范文二:软件设计论文
范文三:软件设计过程
范文四:软件设计说明
范文五:软件设计模式