软件详细设计说明书例

上传人:ail****e2 文档编号:53530686 上传时间:2022-02-10 格式:DOCX 页数:38 大小:307.27KB
返回 下载 相关 举报
软件详细设计说明书例_第1页
第1页 / 共38页
软件详细设计说明书例_第2页
第2页 / 共38页
软件详细设计说明书例_第3页
第3页 / 共38页
点击查看更多>>
资源描述
求仓斤00001日期软件详细设计说明书(例)作 者:完成日期:签收人:签收日期:修改情况记录:版本号修改批准人修改人安装日期签收人错误!未定义书签 错误!未定义书签 错误!未定义书签 错误!未定义书签 错误!未定义书签 错误!未定义书签 错误!未定义书签 错误!未定义书签错误!未定义书签错误!未定义书签错误!未定义书签错误!未定义书签错误!未定义书签错误!未定义书签错误!未定义书签错误!未定义书签错误!未定义书签错误!未定义书签错误!未定义书签目录1引言 错误!未定义书签编写目的 错误!未定义书签范围 错误!未定义书签定义 错误!未定义书签参考资料 错误!未定义书签2总体设计需求规定运行环境基本设计概念和处理流程 结构功能需求与程序的关系 人工处理过程尚未解决的问题3接口设计用户接口 外部接口 内部接口 4运行设计运行模块组合运行控制运行时间5系统数据结构设计逻辑结构设计要点 物理结构设计要点 数据结构与程序的关系 错误!未定义书签6系统出错处理设计 出错信息补救措施错误!未定义书签错误!未定义书签错误!未定义书签错误!未定义书签系统维护设计1引言编写目的随着证券交易电子化程度的不断提高,券商对于各种业务提出了新的要求,为了满足券商的发展需求,更好的为客户提供服务,现结合原有各版本的证券交易软件的优点和特点, 开发一套采用 Client/Server 结构的证券交易软件管理系统( SQL版)。本系统从底层予以 优化,使整个系统的运行速度得到较大提高,通过重新优化数据库内部结构,使系统的可扩充性得到极大提高。本说明书给出SQL版证券交易系统的设计说明,包括最终实现的软件必须满足的功能、 性能、接口和用户界面、附属工具程序的功能以及设计约束等。目的在于:为编码人员提供依据;为修改、维护提供条件;项目负责人将按计划书的要求布置和控制开发工作全过程;项目质量保证组将按此计划书做阶段性和总结性的质量验证和确认。本说明书的预期读者包括:项目开发人员,特别是编码人员;软件维护人员;技术管理人员;执行软件质量保证计划的专门人员;参与本项目开发进程各阶段验证、确认以及负责为最后项目验收、鉴定提供相应报 告的有关人员。合作各方有关部门的复杂人;项目负责人和全体参加人员。范围说明:a.待开发的软件系统的名称:模拟股票交易系统b. 列出本项目的任务提出者、开发者、用户以及将运行该项软件的单位。定义列出本文件中用到的专门术语的定义和缩写词的原词组。本报告用到的术语符合国家标准软件工程术语(GB/T11475-1995)。参考资料列出要用到的参考资料,如:a.本项目的经核准的计划任务书或合同、上级机关的批文;b.属于本项目的其他已发表的文件;c.本文件中各处引用的文件、资料,包括所要用到的软件开发标准。列出这些文件的标题、文件编号、发表日期和出版单位,说明能够得到这些文件资料的 来源。2总体设计需求规定详细的说明可参见需求的规定,详细说明参见需说明对本系统的主要的输入输出项目、处理的功能性能要求,分析说明书。运行环境简要地说明对本系统的运行环境(包括硬件环境和支持环境)求分析说明书。数据库服务器奔月P Pro内存128MB以上硬盘9GB100M网卡应用服务器奔月P Pro内存64MB以上硬盘4GB100M网卡网络配置100M / 10M工作站(柜台)P100以上内存8MB以上硬盘1G以上100M/10M 网卡软件 操作系统Windows NT 以上数据库管理系统SQL Server 2005相关软件工具Windows NT Workstation/Windows NT serverWindows 2000 Professional/ Server开发工具平台: Windows95/98、Windows NT、Windows 2000开发工具:visual stidio 2005 sp1,C#.Net测试环境Windows31、Windows95/98、Windows NT、Windows 2000基本设计概念和处理流程说明本系统的基本设计概念和处理流程,尽量使用图表的形式。营业部系统一共有四个对象,即客户、员工、市场和银行,市场的概念是交易所的细化, 比如上海证券交易所的A股和B股就是两个市场,有了市场的概念我们就可以把交易所这个概念细化,并使同一个市场的共性更突出。银行则通过银证转账业务介入,并成为营业部系统不可或缺的组成部分。上述四个对象通过一些业务流程进行相互操作从而形成整个交易活动。因此整个系统模 型可以表述为图2-1设计时需要将营业部系统所使用的各种信息分为描述四个对象的信息和描述业务流程的信息。由于四个对象相对而言是一种稳定型信息, 而业务流程则较易变化,且营业部之间 差异很大,因此应将四个对象尽量定型, 而将各种业务流程尽可能做成组件, 以便营业部可 根据实际需求组装成适合自己的系统。从而使对象需求变化时不致影响系统结构。军君尹卓一日可撮合系统结构用一览表及框图的形式说明本系统的系统元素(各层模块、子程序、公用程序等)的划分,扼要说明每个系统元素的标识符和功能,分层次地给出各元素之间的控制与被控制关系。本系统采用c/s模式的3层结构按照不同会话来划分的话可以分为3大系统模块报表管理查询管理图2-2交易系统体系结构客户端登陆模块:P-工土仁七*二turi最关键的交易系统模块结构图如下:buyStocksellStockquoteStockCanselDelegatecheckUserMoneyCount (stockData)Or checkUserStockCount要通过数据访问层来访问用户表在撮合队列中处理并且返回处理结果tradeInQueue (stockData newstockData)Successii1 upDateUserInfo (stockData)通过调用ADO 层工厂来访问 不同的数据库 (更新用户表unSuccessupDateDelegate Info (stockDat a)同左更新的是委托临时表1JadoFactory通过该模块可动态建立不同数据库的连接Orical、sqlserver, access仇od就埃令输嗽绍必提RUS/Mel规买指传的据构须湫匕式ec stoDa形chk数据访问层access access.postDate(stockData) 将数据更新到数据库数据访问层sqlserverSqlserver。postDate (stockData)股票信息发布经过修改我认为每次由客户端每5秒去查询一次服务器更新信息不可取,因为这会加重服务端和客户端的负担,特别是服务器端的运算。修改后实现变更为:用户一开始登陆后获得一次服务器的全部股票当前信息。而服务器端每次发生交易后,给每一个在线用户发送当前交易需要更新的股票信息,这样就减轻了客户机和服务端的信息第一次登陆发送请求获得所有 股票信息,并画分时线图Stock idStock priceTCP/IP服务器每次交易返回最新信息功能需求与程序的关系(该关系由需求分析报告编写者根据结构图说明)本条用一张如下的矩阵图说明各项功能需求的实现同各块程序的分配关系:获取并发送用户请求绘制分时图MD5加密解密发送用户交易请求接受并识别用户请求调用数据层查询撮合交易服务器返回客户端信息用户登陆VVVV查看用户持仓VVV实时指数VVV交易委托VVVVVV7V取消交易V7V7V7V7V7V7人工处理过程说明在本软件系统的工作过程中不得不包含的人工处理过程(如果有的话)没有完成股票管理的模块设计,所以股票必须从数据库后台添加如果有新股发行,还必须添加有关股票的交易队列尚未解决的问题说明在概要设计过程中尚未解决而设计者认为在系统完成之前必须解决的各个问题。3接口设计用户接口说明将向用户提供的命令和它们的语法结构,以及软件的回答信息。向用户提供简单易用的 UI,以及帮助文档。客户端将提供以下功能首先弹出用户登陆框,供用户输入用户名和密码菜单项提供个股查询和分时图按钮菜单栏下是选项卡,提供股票实时信息和个股分时图栏提供用户交易界面和交易按钮以及查看用户盈亏按键外部接口说明本系统同外界的所有接口的安排包括软件与硬件之间的接口、本系统与各支持软件之间的接口关系。采用基于正确公开标准的部件和技术以确保最大限度的协作能力以及与第三方系统与 部件集成的简便性。这类标准包括但不限于以下几种:网络协议与标准 (TCP/IP, HTTP, SSL, etc)语言(SQL, C#, etc.)数据库连接性(ADQ net)内部接口说明本系统之内的各个系统元素之间的接口的安排。逻辑层和数据访问层通过以经的stockDataModel接口,来限定访问stockData类型的数据客户端通过调用 buyStock (stockData )和sellStock (stockData )来访问逻辑层,在 这个函数中包含了访问逻辑层的接口dealTransaction(stockData)通过AdoFactory访问不同的数据库客户端登陆协议D(二字节)+(客户名字长度)(4字节)+(客户名字)+(客户密码长度)(4字节)+(客户密 码);客户买卖协议B(二字节)+(股票ID)(4字节)+(股票数量)(4字节)S(二字节)+(股票ID)(4字节)+(股票数量)(4字节)查询交易信息并返回给客户端C(二字节)具体有拆包解包的类using System;using ;namespace ProjectCenterTradingSyspublic class Protocal(privatebyte messagebuffer;privatebyte messagelength;public byte messagebag;StocCQueuRealTime GraphPrivatePWDadowwm :(翎rm)stockID/ sto ckData data要通/动态数组存储股票价格sendMestoServerstockDatbisne就。ckPrice口尸向ae机发送信息Pog |OU_presgDaog,handle);PubecNa metextBoxst哪MW版町学1嗜舞mOKbotton buyStockButton_press(e,h);嗯e端幽函but球数组后添sellS tobPiugeon_pfess(e,h);Class stockData订单号 publicint ListID;publicint UsrlD;publicstring Stocklndex;publicflout Price;publicint Count;publicbool Isbuy;updatePriceMenuBarpricestocklookButton_press(e,h);sotokPR圜timeGraphitem stock Quote Dialog该函询蛹ridVaWPicture画图stockuR第用mSGrapDtem_press(e,h) userBuyStockcountuserBuyStockpriceuserBuyStockButtonV Cl i emtlnfo (string yst em. ITet. EndPoinf. Syst eiClass stockDataClass ADOSQLserverPrivatedataSet/ds卜可有4个dataTableuserTablestockTableUserstockTable5.2publicintUsriD;publicstring Stockindex;publicintPrince;publicintCount;publicboolisbuy;订单号 public int ListID;价格优先原则:价格较高的买入申报优先于价格较低的买入申报, temp晚。价格较低的卖出申报优先于价格较高的实口 2.)时间优先原则:同价位中报、Public:秘怖机同心,先申报者先于后申报者。/验证用尸信息问确定。依照申报时序决定优先顺序,即买卖方向、先后顺序按证券交易所主机接受申报的时Bool在正母部坪?。喇队列的第一笔u swing高)的报价一定小于女队列的第一3队列的价格发生了交叉,如password);(最低报价)的报价。此时不发生撮合。一旦买w图2.3.1所示,发生交叉的那部分就会进行撮合。来的单子进入数列后将会触发一次比较,所以每次触发撮合都是由新单子促成的。称为“来一笔撮合次”,也就是连续竞价。Bool CheckUserStockCount(string userID);/交易成功修改用户和股票信息Void updateUserTable(Class stockData )图 2.3.1连续竞价算法描述:首先设定QueueStruct结构为元素的买卖两个队列 BuyQueu京口 SellQueue。 为了尽可能的提高效率,减少资源占用,我们用静态数组构建这两个队列。其中BuyQueuel1时间优先、买价降序排序,而 SellQueue是时间优先、卖 价升序排序,在连续竞价条件下,可以保证BuyQueue0的price小于 SellQueue0的 price 。连续竞价算法如下:1 .)接收一个新单子newlist ,判断newlist是买单还是卖单;如果是买单,则转2,如果是卖单,则转B;2 .) 取卖单队列头 SellQueue0 , if SellQueue0.price ,利 用插入排序将newlist插入到买队列BuyQueue,转1;3 .) if SellQueue0.count , newlist 完全撮合,SellQueue0.count =SellQueue0.count ,转 2;4 .) if SellQueue0.count= , SellQueue0撮合,并将 SellQueue0从 SellQueue 队列中删除,=0.count,转 2;5 .) 取买单队列头 BuyQueue0, if BuyQueue0.price , newlist 完全撮合, BuyQueue0.count = BuyQueue0.count 一, 转 1 ;7 .)if BuyQueue0.count=,8 .)BuyQueue0撮合, 并将 BuyQueue0从 BuyQueu以歹!J中删除,=0.count ,转 5;如下面流程图5.2.2所示:为空BuyQueueneiWlSeueue判断yQueue判断苴为买判SQieue 是否为空行片还是否为它,不为空不为空为空无法力(画进大审判断差价判断差价TSeUeUe(序nestlprice-BuyQueuisWP而KCSei0.W,lI1小于篝于大于篝于通2Mli入排序找到I箴易,判断差可交易,花eueue防位 BneWicouni-BuyQueuCRuQeMS.counBuyOufe画; _/用通过插入排序找到其 / 大于孱于小0A小年于善于BuyQueue0 neiWESeueu0seue ue全部非空成员向前进一位/被完全磨合全被磨合完全磨合BuyOeb部非一空成员向前进一位返回成交信息图 3.2.2集合竞价是指对所有有效委托进行集中处理,深、沪两市的集合竞价时间为 交易日上午9: 15至9: 25。集合竞价原则:凡是高于开盘价的买单一定成交; 凡是低于开盘价的卖单一定成交; 凡是高于开盘价的卖单一定不成交; 凡是低于开盘价的买单一定不成交;集合竞价分四步完成:第一步:确定有效委托在有涨跌幅限制的情况下,有效委托是这样确定的:根据该只证券上一交易日收盘价以及确定的涨跌幅度来计算当日的最高限 价、最低限价。有效价格范围就是该只证券最高限价、最低限价之间的所有价 位。限价超出此范围的委托为无效委托,系统作自动撤单处理。第二步:系统根据竞价规则自动确定集合竞价的成交价,这个价格就是当日的开盘价, 所有高于开盘价的买盘和所有低开开盘价的卖盘均以此价格成交, 集合竞价的成交价确定原则是:以此价格成交,能够得到最大成交量。第三步:集中撮合处理所有的买委托按照委托限价由高到低的顺序排列,限价相同者按照进入系统的时间先后排列;所有实委托按委托限价由低到高的顺序 排列,限价相同者按照进入系统的时间先后排列。 依序逐笔将排在前面的买委 托与卖委托配对成交,即按照“价格优先,同等价格下时间优先”的成交顺序依次 成交,直至成交条件不满足为止,即不存在限价高于等于成交价的叫买委托、或不存在限价低于等于成交价的叫卖委托。所有成交都以同一成交价成交。这同一成交价成交的买卖单一股量都是很图3.2.3所示第四步:行情揭示:1 .)如该只证券的成交量为零,则将成交价位揭示为开盘价、最近成交价、最高价、最低价,并揭示出成交量、成交金额。2 .) 剩余有效委托中,实际的最高叫买价揭示为叫买揭示价,若 最高叫买价不存在,则叫买揭小价揭小为空;实际的最低叫 卖价揭示为叫卖揭示价,若最低叫卖价不存在,则叫卖揭示 价揭示为空。集合竞价中未能成交的委托,自动进入连续竞价。按照这样的原则和要求,我们设计了如下的集合竞价撮合算法。如图 3.2.4所示。BuyQueue判断两队列是否都不为空V /开盘价为昨日收与盘价,成交量为0SellQueue小于0判断差价BuyQueue0.price-SellQueue0.price大于等于0i=j=0, M、N分别为BuyQueue再SellQueue祚空元素 的数目;BOOL k; Buy=BuyQueue0; Sell=SellQueue0判断差价BuyQueuei.price-SellQueuej.price大于等于0小于0判断差量 Buy.count-Sell.count小于等于0大于0i+; k=false; Buy1.count=Buy.count;Buy.count=Buy.count+BuyQueuei.count;j+; k=true; Sell1.count=Sell.count;Sell.count=Sell.count+SellQueueiSellQueue.count;判断是否iM判断是否j=high+1; -i)SellQueuei+1=SellQueuei;SellQueuehigh+1=*newlist;这是卖队列的排序,对于买队列的排序与之相似,只是价格排列 是由高到底。在这里不再赘述。这种插入排序方法完全符合了撮合算法中价格优先、时间优先的 要求,而且效率也是比较高的。在集合竞价前和连续竞价后进行的插入排序都是这样进行的,而 在集合竞价撮合之后,对两队列的重新排列,我们首先使用了 memset 函数将前面已全部成交的t个元素清空,然后将t到N(原总非空元 素个数)前移t位。如下列代码所示:for (int p=0; *t *N; p+,*t+)(QueueStruct temp;temp=Queue*t;Queue*t=Queuep;Queuep=temp;5.2.4 撮合算法的运行机制在交易所正常运行时,一天内分为开市、开盘、休市、复开、收市等 5个步 骤。开市:每天上午9:15开市。这时候,股民可以通过券商向交易所递单。同 一只股票的买卖单开始分别进入这只股票的买卖队列中,但并不进行撮合。该过程一直持续到9:25。开盘:每天上午9:30正式开盘。9:25-9:30为盘前处理,这段时间也就是 集合竞价撮合算法运行的时间。9:25 ,买卖两队列开市不再接收新的单子。新的 单子这时都放在缓冲区中,直到两队列运行完整个集合竞价算法后开市重新进单 时,再依序将单子从缓存区取出读入买卖队列进行连续竞价的撮合。买卖队列于9:25开始集合竞价,运算完毕,得出开盘价等所有统计数据并发布行情以及发 送完所有回报之后,重新接收单子进入该日正常交易中, 使用连续竞价算法进行 撮合。休市:每天上午11:00休市。此时,所有的券商不再接受买卖单子,也不 再给交易所递单。交易所将此前已经收到的所有单子撮合之后处于休息阶段。并进行各种当日前市盘点。复开:每天下午13:30复开。此时,券商开市接收用户的递单,并将其送 交交易所。交易所重新开市进入连续竞价撮合收市:每天下午15:00收市。此时交易所不再接受任何单子,准时进行最 后一笔单子的撮合之后,关闭撮合线程。将最后得到的收盘价等数据统计发送完 之后,当天的所有工作全部结束。如图3.2.5所示。9: 25开市巴:30开盘I-一口3: 30复开15: 00收市开市开盘休市复开收市图 3.2.5数据库设计数据库服务器为 SQL SERVER 2005 EXPRESS股票信息表记录了股票的当前信息一 d.bo. 5tockliiLfo列名数据类型允许空由stccklndexnchar(lO)stockMamevarth)sbocloCountbigint卜stodfriwint用户信息表数据类型允许空useridnchar(lCi)userNamevarchar(SO)userP ass wordnchtar(lt)n交易订单表列名数据类型允许空Listldn匚曲r(L。)U5 贪 idnchar(lD)Jstockidnchar(lQ)ustockccuritintustackprre口其中userid和stockid 是外键关系图如下? userid userN5me user Pass wordstockinfog stockindex stockName stockCount stockPricelistinfo 业? Listld userid stockld ustockcourrt物理结构设计要点给出本系统内所使用的每个数据结构中的每个数据项的存储要求,访问方法、存取单位、存取的物理关系(索引、设备、存储区域) 、设计考虑和保密条件。数据结构与程序的关系说明各个数据结构与访问这些数据结构的各个程序之间的对应关系,可采用如下的矩阵图的形式:程序1程序2程序m数据Z构1V数据Z构2V一数据Z构nV6系统由错处理设计由错信息用一览表的方式说明每种可能的出错或故障情况出现时,系统输出信息的形式、含意及处理方法。补救措施说明故障出现后可能采取的变通措施,包括:a.后备技术:说明准备采用的后备技术, 当原始系统数据万一丢失时启用的副本的建 立和启动的技术,例如周期性把磁盘信息记录到磁带上去就是对于磁盘媒体的一种 后备技术;b.降效技术:说明准备采用的后备技术,使用另一个效率稍低的系统或方法来求得所 需结果的某些部分,例如一个自动系统的降效技术可以是手工操作和数据的人工记录;c.恢复及再启动技术:说明将使用的恢复再启动技术,使软件从故障点恢复执行或使软件从头开始重新运行的方法。系统维护设计说明为了系统维护的方便而在程序内部设计中作出的安排,包括在程序中专门安排用于系统的检查与维护的检测点和专用模块。(未全部完成,在项目进行过程中完善)
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 演讲稿件


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!