作为系统分析员,请从信息系统开发的原理与实践原理出发,详细描述如何系

点击文档标签更多精品内容等伱发现~

  信息系统分析与设计(第3版)邝孔武 王晓敏_第 4章-信息系统建设概论.


VIP专享文档是百度文库认证用户/机构上传的专业性文档,文库VIP用户或购買VIP专享文档下载特权礼包的其他会员用户可用VIP专享文档下载特权免费下载VIP专享文档只要带有以下“VIP专享文档”标识的文档便是该类文档。

VIP免费文档是特定的一类共享文档会员用户可以免费随意获取,非会员用户需要消耗下载券/积分获取只要带有以下“VIP免费文档”标识嘚文档便是该类文档。

VIP专享8折文档是特定的一类付费文档会员用户可以通过设定价的8折获取,非会员用户需要原价获取只要带有以下“VIP专享8折优惠”标识的文档便是该类文档。

付费文档是百度文库认证用户/机构上传的专业性文档需要文库用户支付人民币获取,具体价格由上传人自由设定只要带有以下“付费文档”标识的文档便是该类文档。

共享文档是百度文库用户免费上传的可与其他用户免费共享嘚文档具体共享方式由上传人自由设定。只要带有以下“共享文档”标识的文档便是该类文档

还剩34页未读, 继续阅读

需求分析奠定了软件工程和项目管理的基础我们在建造软件系统这座大厦的时候,如果需求分析的基础不够坚实和牢固那么往往会导致软件系统问题百出,甚至被马仩丢弃在建造软件系统的过程中,如果我们经常习惯地沿用一些不规范的方法其后果便是产生一条鸿沟──开发者开发的与用户所想嘚到的软件存在着巨大的“期望差异”。 因此“需求”这个名词的定义不仅仅是从用户角度对系统外部行为的描述以及从开发人员角度對系统内部特性的描述,其关键的一点是“需求”必须文档化

软件需求包括三个不同的层次──业务需求、用户需求和功能需求。 除此の外每个系统还有各种非功能需求。

业务需求(BusinessRequirement)表示组织或客户高层次的目标业务需求通常来自项目投资人、购买产品的客户、实際用户的管理者、市场营销部门或产品策划部门。业务需求描述了组织为什么要开发一个系统即组织希望达到的目标。使用前景和范围(vision and scope)文档来记录业务需求这份文档有时也被称作项目轮廓图或市场需求(project charter 或 market requirement)文档。 用户需求(UserRequirement)描述的是用户的目标或用户要求系統必须能完成的任务。用例、场景描述和事件响应表都是表达用户需求的有效途径也就是说用户需求描述了用户能使用系统来做些什么。

功能需求(Functional Requirement)规定开发人员必须在产品中实现的软件功能用户利用这些功能来完成任务,满足业务需求功能需求有时也被称作行为需求(behavioral requirement),因为习惯上总是用“应该”对其进行描述:“系统应该发送电子邮件来通知用户已接受其预定”功能需求描述是开发人员需偠实现什么。

非功能需求(Non-functional Requirement) 定义了软件产品为满足用户业务需求而必须具有的除功能需求以外的特性包括系统的完整性(联机帮助、 數据管理、用户管理、软件发布管理、在线升级等)、性能、可靠性、可维护性、可扩充性、对技术和业务的适应性等。

1) 齐全、准确地找絀目标系统全部的功能、性能、限制; 2) 找出全部的输入流、输出流; 3) 找出所有的加工;

4) 产生完整的分层的DFD、数据字典、加工的描述; 5) 补充嘚意见

确定对系统的综合要求,系统功能要求系统性能要求,运行要求将来可能提出的要求。

图1为需求分析任务图需求分析阶段偠完成的具体明确的最终任务就是形成一份经开发方和用户认可或达成共识的软件需求分析文档(需求规格说明书、修改后的项目开发计劃、初步的用户手册、确认测试计划、数据要求说明书)。这个文档能清晰准确地说明系统将要开发什么能够规定出详细的技术需求,包括所有面向用户、面向机器和其它软件系统的接口可以说需求文档在开发过程中一直起指导作用。

为了更好地完成软件开发第一阶段嘚需求分析任务提高质量,需求管理是必不可少的

需求管理的目的是在客户与开发方之间建立对需求的共同理解,维护需求与其他工莋成果的一致性并控制需求的变更,主要体现在跟踪和控制需求变更管理需求管理是开发工作有效进行的保证,是一种很高层次的系統行为涉及整个开发过程和产品本身。

需求分析方法由对软件问题的信息域和功能域的系统分析过程及其表示方法组成大多数的需求汾析方法是由信息驱动的。信息域具有三种属性: 信息流、信息内容和信息结构

常用的需求分析方法有:面向数据流的结构化分析方法(SA),面向数据结构的Jackson方法(JSD)面向数据结构的结构化数据系统开发方法(DSSD),面向对象的分析方法(OOA)等选择那种方法要根据哪些資源在什么时间对开发人员有效,不能盲目套用这里着重阐述面向数据流的结构化分析方法(SA)。

面向数据流的结构化分析方法

面向数據流的结构化分析方法(Structured Analysis简称SA),是面向数据流进行需求分析的方法是需求分析使用最多的方法之一。 SA也是一种建模活动该方法使鼡简单易读符号,根据软件内部数据传递、变换的关系自顶向下逐层分解,描绘出满足功能要求的软件模型适用于数据处理类型软件嘚需求分析,这一方法除了简单容易掌握之外,还能和设计阶段的结构化设计(SD)衔接从而取得良好的设计结果。

自顶向下逐层分解嘚分析策略

SA方法的基本手段:“分解”和“抽象”这是系统开发技术中控制复杂性的两种手段。它先将系统“抽象”成一个模型此模型是有输入和输出并有系统名称的盒子,然后打开这个盒子对它进行逐层分解,直到能被理解可以实现为止。因此分析的策略是自顶姠下逐层加细,由抽象到具体的过程如图2。

结构化分析方法使用工具

SA方法利用图形等半形式化的描述方式表达需求简明易懂,用它們形成需求规格说明书中的主要部分描述工具是

1) 数据流图:描述系统由哪几部分组成,各部分之间有什么联系等等 2) 数据字典:定义了數据流图中每一个图形元素。

3) 描述加工逻辑的结构化语言、判定表、判定树:详细描述数据流图中不能被再分解的每一个加工

由于分析Φ的主要依据是数据传递及数据变换所形成的数据流,所以结构化分析一般采用的方法是使用数据流图的分析方法最终结果是产生需求規格说明书,该文档包括一套数据流图对数据流图中的成分进行定义的一本数据字典及对加工逻辑的描述。

用结构化分析方法进行系统需求分析的具体步骤是: 1) 了解当前系统的工作流程获得当前系统的物理模型。通过对当前系统的详细调查了解当前系统的工作过程,哃时收集资料、文件、数据、报表等将看到的、听到的、收集到的信息和情况用图形描述出来。也就是用一个模型来反映自己对当前系統的理解如画系统流程图。

2) 抽象出当前系统的逻辑模型物理模型反映了系统“怎么做”的具体实现,去掉物理模型中非本质的因素抽取出本质的因素,构造出当前系统的逻辑模型反映了当前系统“做什么”的功能。

3) 建立目标系统的逻辑模型分析、比较目标系统与當前系统逻辑上的差别,明确目标系统到底要“做什么”从而从当前系统的逻辑模型导出目标系统的逻辑模型。

4) 作进一步补充和优化為了对目标系统做完整的描述,还需要对得到的逻辑模型做一些补充

说明目标系统的人机界面。

说明至今尚未详细考虑的细节(包括出錯处理、系统的启动与结束、系统的输入/输出和系统性能方面的需求等)

其他(系统特有的其他必须满足的性能和限制,也需要用适当嘚形式做出书面记录 分析阶段结束时,系统分析员必须和用户再次认真地审查系统文件争取在系统开始设计之前,尽可能地发现其中存在的一些错误并及时纠正直至用户确认这个模型表达了他们的要求后,系统文件(软件需求规格说明书等)才作为用户和软件开发人員之间的“合同”而最后得到确定

结构化分析方法的优缺点

1) 优点: 结构化分析方法是软件需求分析中公认的、有成效的、技术成熟的、使用广泛的一种方法,它较适合于开发数据处理类型软件的需求分析该方法利用图形等半形式化工具表达需求,简明易读也易于使用,为后一阶段的设计、测试、评价提供了有利条件 2) 缺点:① 传统的SA方法主要用于数据处理方面的问题,主要工具DFD体现了系统“做什么”嘚功能但它仅是一个静态模型,没有反映处理的顺序即控制流程。因此不适合描述实时控制系统。② 上世纪60年代末出现的数据库技術使许多大型数据处理系统中的数据都组织成数据库的形式,SA方法使用DFD在分析与描述“数据要求”方面是有局限的DFD应与数据库技术中嘚实体联系图(ER图)结合起来(如同IDEF0功能模型与IDEF1信息模型相结合一样)。ER图能增加对数据存储的细节以及数据与数据之间数据与处理过程之间关系的理解,还解决了在DD中所包含的数据内容表示问题这样才能较完整的描述用户对系统的需求。③ 对于一些频繁的人机交互的软件系统如飞机订票、银行管理等系统,用户最关系的是如何使用它输入命令、操作方式、系统响应方式、输出格式等都是用户需求的重要方媔,DFD不适合描述人机界面系统的需求SA方法往往对这一部分用自然语言作补充。④ 描述软件需求的精确性有待提高 5 需求的变更

在开发项目过程中,用户随时会提出一些新的需求要求开发方解决,这些需求的提出有时在开发阶段中有时在开发阶段后。这种在需求分析的兩个相邻子阶段中或者在迭代周期的需求分析中,后一段或周期的需求分析结果与前一次不一致我们把这种不一致称为需求变更。产苼需求变更的原因主要有以下几个方面:1) 在需求分析阶段开发方与用户的沟通不够。在需求分析阶段开发方与用户没有很好的交流,開发方就根据用户提供的大概信息自己推导出用户的需求。通过这种需求分析得出的需求往往会和用户的实际需求相差甚远导致用户提出更改需求。2) 项目的实施周期过长随着时间的推移,用户对整个系统的了解也越来越深入他们会对模块的界面、功能和性能方面提絀更高更多的要求。3) 技术更新过快由于技术的快速更新, 企业可能引进一些新的设备 而这些设备可能就会与我们的目标系统有直接的關系, 由于这一变化可能发生在解决用户原先问题之前或者之中那么开发方不得不加入这一新的需求。[3]

为了尽可能地避免发生需求变更以及保证需求分析的高稳定性,可以采用以下方法:1) 分工明确系统分析员和程序员各有不同的职责。系统分析员处在用户和程序员之間沟通用户和开发人员的认识和见解。系统分析员一方面要协助用户对所开发的软件提出需求另一方面还要和程序员充分交换意见,探讨其合理性和实现的可能性如图3所示,系统分析员在需求分析阶段起着重要的作用

2) 开发方与用户进行协作和交流。在用户提出需求變更时系统分析员应该认真听取用户的要求并加以整理和分析分析需求变更的原因并提出可行的替代方案;同时向用户说明这些需求变哽会对整个项目的开发带来的不良后果。3) 合同约束由于需求变更可能会对整个项目产生影响,所以开发方和用户在签定项目合同时,鈳以对需求变更增加一些相关的合同条款4) 建立需求文档并进行版本控制。需求分析的最终成果是一份客户和开发方对所开发的产品达成囲识的系统文档有了这份文档, 即使开发方人员的角色有所变动也不会对需求分析的前期工作有所影响。对每次的需求变更都用一个噺的版本来标识5) 需求评审和设立需求基线。为了让开发方详细了解用户的需求让不同人员从不同的角度对需求进行验证,作为需求的提出者(用户方)在需求评审过程中,往往能提出许多有价值的意见同时,也是对需求进行最后确认的机会可以有效减少需求变更嘚发生。需求在通过正式评审和批准之后应该确定需求基线,进一步的需求变更将在此基线的基础上依照项目定义的变更过程进行。設置需求基线可以将变更引起的麻烦减至最小

architecture)是一系列相关的抽象模式,用于指导大型软件系统各个方面的设计 软件架构是一个系統的草图。软件架构描述的对象是直接构成系

统的抽象组件各个组件之间的连接则明确和相对细致地描述组件之间的通讯。在实现阶段这些抽象组件被细化为实际的组件,比如具体某个类或者对象在面向

对象领域中,组件之间的连接通常用接口_(计算机科学)来实现

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

软件构架是一个容易理解的概念,多数工程师(尤其昰经验不多的工程师)会从直觉上来认识它但要给出精确的定义很困难。特别是很难明确地区分设计和构架:构架属于设计的一方面,它集中于某些具体的特征

认为软件构架是有关如下问题的设计层次:“在计算的算法和数据结构之外,设计并确定系统整体结构成为叻新的问题结构问题包括总体组织结构和全局控制结

构;通信、同步和数据访问的协议;设计元素的功能分配;物理分布;设计元素的組成;定标与性能;备选设计的选择。

on Architecture 把其定义为“系统在其环境中的最高层概念”构架还包括“符合”系统完整性、经济约束条件、審美需求和样式。它并不仅注

重对内部的考虑而且还在系统的用户环境和开发环境中对系统进行整体考虑,即同时注重对外部的考虑

茬Rational Unified Process 中,软件系统的构架(在某一给定点)是指系统重要构件的组织或结构这些重要构件通过接口与不断减小的构件与接口所组成的构件進行交互。

从和目的、主题、材料和结构的联系上来说软件架构可以和建筑物的架构相比拟。一个软件架构师需要有广泛的软件理论知識和相应的经验来事实和管

理软件产品的高级设计软件架构师定义和设计软件的模块化,模块之间的交互用户界面风格,对外接口方法创新的设计特性,以及高层事物的对象操作、逻辑

一般而言软件系统的架构(Architecture)有两个要素:

它是一个软件系统从整体到部分的最高层次的划分。

一个系统通常是由元件组成的而这些元件如何形成、相互之间如何发生作用,则是关于这个系统本身结构的重要信息

所谓架构元素,也就是组成系统的核心"砖瓦"而联结器则描述这些元件之间通讯的路径、通讯的机制、通讯的预期结果,任务流则描述系統如何使用这些元件和

联结器完成某一项需求

建造一个系统所作出的最高层次的、以后难以更改的,商业的和技术的决定

建造一个系統之前会有很多的重要决定需要事先作出,而一旦系统开始进行详细设计甚至建造这些决定就很难更改甚至无法更改。显然这样的决萣必定是有关系统设计成败的最重要决定,必须经过非常慎重的研究和考察

对于较大的通常应用应该使用框架,可能节省不少时间.能使你很轻松的开发出一款软件来。

(软件开发一般比较会关注设计模式而不是架构设计)

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鮮体验你的手机镜头里或许有别人想知道的答案。

信息系统 分析 设计 现代系统 分析員 设计 领域

本论文 完整版 物有所值 摘 要 本文主要描述了如何利用汇编语言编写一个能够实现网络之间信息传递的聊天程序系统.并介绍了无連接协议的SOCKET编程模型,以及阐述了聊天程序的设计目的前景和具体规划,还有聊天程序的商业运作.本论文共分为五部分. 第一部分简单的分析了即时聊天系统开发的可行性并重点对技术可行性(选择VB)做了详细分析; 第二部分借助数据流图和数据字典对系统的功能和性能进行了詳细的需求分析,建立了系统的逻辑结构; 第三部分利用VB程序设计了UDP聊天程序; 第四部分验证了设计的程序; 第五部分是此次设计的结论總结及部分参考文献和附录 关键字:Winsock 即时通讯 点对点 数据流图 数据字典 结构图 层次输入输出处理图  伪码 总结 本文详细介绍了UDP協议,Net WinSock SDK提供给Visual B#用以操作UDP协议的主要类库以及通过一个具体而使用的示例——实现一个网络聊天系统,介绍在Visual B#实现UDP协议的具体方法和過程UDP由于其自身的缺点注定在某些领域无法利用它,但在可以利用它的领域UDP以其快捷、简单、实用的特点正在受到更多程序员的欢迎。尤其在现代网络运行态势越来越好的情况下,可以预见的是UDP在网络中的应用情景将更广阔希望本文的内容对您掌握用Visual B#编写基于UDP的網络应用程序有所帮助。 谢 辞 经过几个月的努力准备资料,查证资料、整理资料、编写论文最后终于顺利的完成论文。回首自己求学期间的点点滴滴无数感慨涌上心头。时光匆匆飞逝三年多的努力与付出,随着论文的完成终于给自的大学生活划下了句点。 通过此佽的论文的写作我学到了很多知识,跨越了传统方式下的教与学的体制束缚在论文的写作过程中,通过查资料和搜集有关的文献培養了自学能力和动手能力。 论文得以完成离不开赵陈粟指导老师的悉心指导,在此真诚的感谢赵老师的无私帮助和关怀 总之,此次论攵的写作过程我收获了很多,即为大学三年划上了一个完美的句号也为将来的人生之路做好了一个很好的铺垫。 参考文献 参考资料: 《Visual Basic程序设计教程》 何瑞麟 科学出版社 《Visual Basic与Internet程序设计》 黄嘉辉 科学出版社 《VB6程序员指南》

网上购物系统最新网上购物系统 后台管理具体描述洳下: (1) 公告管理最新网上购物系统 ◆ 添加公告包括公告标题和公告内容等;<最新网上购物系统 /P> ◆ 修改公告; ◆ 删除公告。<最新网上购物系统 /P> (2) 商品管理 ◆ 添加商品类别;最新网上购物系统 ◆ 修改商品类别; ◆ 删除商品最新网上购物系统 类别 ◆ 添加商品信息,包括商品类别、名称、编最新网上购物系统 号、所属公司等信息; ◆ 商品图片的上传、修改和删除最新网上购物系统 ; ◆ 修改商品信息; ◆ 删最新网上購物系统 除商品信息; ◆ 查看商品信息 最新网上购物系统 (3) 订单管理 ◆ 处理订单; <最新网上购物系统 p>◆ 办理发货; ◆ 办理结帐; 最新网上購物系统 ◆ 删除订单。 (4) 投诉管理 最新网上购物系统 ◆ 录入投诉的解决方法; ◆ 删除已解决的最新网上购物系统 投诉; ◆ 查看投诉用户 最噺网上购物系统 (5) 顾客用户管理功能 ◆ 注册顾客用户,包括用户最新网上购物系统 名、密码等信息; ◆ 修改顾客用户信息;最新网上购物系統 ◆ 删除顾客用户信息 (6) 系统用户最新网上购物系统 管理功能 ◆ 添加系统用户,包括用户名、密码等最新网上购物系统 信息; ◆ 修改系统鼡户信息; ◆ 最新网上购物系统 删除系统用户信息 功能模块划分 从功能描述的内容可以看到,本系统最新网上购物系统 可以实现六个完整的功能根据这些功能,设计出系统的功能模块如最新网上购物系统 图1: 在我的购物篮中可操作的事件为: 最新网上购物系统 ◇     最新網上购物系统 确认更改:在数量项目文本框中可以更改数目,该事件是用以更新购物篮中最新网上购物系统 的商品数量; ◇   最新网上购物系统   继续购物:该事件是关闭窗口; ◇&最新网上购物系统 nbsp;    订单取消:该最新网上购物系统 事件清空购物篮; ◇  &最新网上购物系统 nbsp;  去收银台:该事件是用来关闭窗口并重新最新网上购物系统 打开新的窗口   除最新网上购物系统 了购物篮中的可视化操作外,还有就是商品购入事件(即在网上商店的点击最新网上购物系统 购买的事件)现在我们称这些事件是用来触发购物篮中的工作模式,在最新网上购物系统 每佽的触发模式时都有一个传递的数值变量通过来判断触发的是哪个工作模最新网上购物系统 上架时间: 出版日期:2009 年11月 开本:16开 页码:560 蝂次:1-1 编辑推荐    资深数据库专家的心血力作    SQL Server设计思想的独到解析    关系数据库实现的通关宝典 内容简介   本书深入浅出地介紹了目前世界上最受欢迎的数据库管理系统之一——sql server。全书共分三个部分:第一部分阐释了数据库的基本概念讲解了数据库建模语言;苐二部分展示了从概念建模到在 sql server 2008上真正实现数据库的过程;第三部分深入探讨了 sql server若干方面的技术细节,如数据保护、索引、并发访问等通过将理论融入数据库实践原理,清晰地讲解了关系型数据库的设计原则完整地展示了如何进行良好的关系型数据库设计,深入揭示了 sql server 2008嘚技术细节.   本书浓缩了作者作为 sql server数据库架构师多年来丰富的实践原理经验,适合各类数据库开发和管理人员学习参考... 作译者 作者:   Kevin Kline是Quest软件公司SQL Server解决方案的技术战略经理。Kevin从2004年开始就是微软的SQL Server ShoupInc.公司内部IT部门的应用程序监管,该公司是——家技术方案的全球供应商总部位于伊利诺伊州的Springfield。Kurt在IT工业中的经验超过了17年他在SQL Server专家联盟的董事会中服务了5年,为很多SQL Server杂志供过稿也在讨论SQL Server数据库编程的國际会议上发过言。   Louis Davidson作为企业数据库开发人员和架构师,他拥有超过15年的工作经验目前他是田纳西州Nashville的Christian广播网络和NorthStar工作室的数据架构师。对于Louis而言他全部的职业经验几乎都与微软的SQL Server有关,从早期版本一直到当前最新版本的Beta版Louis是一本讲数据库设计的书的4个版本的主要作者。Louis主要的兴趣领域是数据库架构和用T-SQL编码并且,他设计过许多数据库在这许多年中编写过数以千计的存储过程和触发器。   Scott Klein是一位独立咨询师对SQL Server和.NET用户群体交流。Scott住在佛罗里达的Wellington当他不坐在计算机前时,你会发现他和自己的家人在一起或者骑着他的雅马哈摩托车轰鸣在当地的摩托车越野赛赛道上。你可以通过ScottKlein@SqlXml.com联系他 目录 封面 -17 封底 -16 扉页 -15 版权 -14 译者序 -13 关于作者 -12 序 -11 前言 -10 致谢 9.2 维护组播主机群的成员信息 119 9.3 主机群表 119 9.4 查找一个主机群 121 9.5 向主机群表中增加一个表项 122 9.6 为一个组播地址设置网络接口 124 9.7 IP组播地址和硬件组播地址之间的转换 125 9.8 从主機群表中删除一个组播地址 126 9.9 加入一个主机群 127 9.10 维持与一个组播路由器的联系 129 9.11 473 附录2 程序代码中使用到的C数据结构交叉参考表 493 附录3 程序代码中使鼡到的Xinu函数和常量 498 参考文献 513 附录页 前言    很荣幸Doug Comer给我这个机会,让我能在他的这本书第三版付印时与诸位探讨一些个人的想法在过去嘚十年期间,Internet以惊人的速度发展着Internet上主机的数目从1989年的100000台发展到1998年的30000 000台。在本书第二版出版的时候连接到Intemet的网络大约有26000个。到1998年这個数字大约在200000到350000之间,这还不包括那些利用互联网技术但未连接到公共网络上的专用内联网    除了规模上的变化,Internet在应用上也发生了驚人的变化Internet技术与正在蓬勃发展的WWW作为一个完整的、不可缺少的系统已被人们所认可。而WWW在商业、学术和政府等部门都掀起了一场革命在WWW上每天出现的“网页”可达3.2亿之多,并且还在不断涌现有些学校大约四分之一的入学申请都是通过电子邮件或其他网页申请形式進行的。Dell公司透露他们通过网站每天销售价值大约600万美元的PC机。Amazon网上书店以季度盈利达6600万美元而成为历史上发展最快的公司这也是第┅个在一年之内销售额超过2.5亿美元的公司。    目前至少有两千多家无线电台将其音频服务推向了Internet,许多网站也开始提供音频甚至低質量的视频服务随着访问速度提高到兆比特的范围以及主干网容量的增加,视频服务质量也将得到提高    随着1996年网络电视和1997年Nokia推出嘚支持网络功能的手机的问世,其他支持网络功能的产品也不断地涌现更多的实用产品实现了相似的网络功能,例如水暖加热器既可以甴家用电脑来控制也可以由电力公司来控制,以满足适度的调峰需求尽管智能代理还没有成为主流,但是XML近来的发展也表明Internet上有关事務处理的应用正在急剧增多SML的标准“文档”表示方式以及一致的常用解释格式构成了一种可传输对象,该对象已形成所有商业、金融事務、数据库事务及其他需要标准表示方式和解释格式的交易的基础    再回头看看电话产品的发展,无论传统的服务商还是现代企业都茬将支持网络的电话产品推向市场“Soft PBX”系统利用LAN和Internet实现传统的专用交换机的功能,基于微处理器的电话机也正在改变远程通信的经济情況和可操作性具有IP功能的传真机已经出现。网关把原有的模拟世界与现在的Intemet世界联系在一起起着非常重要的作用。    对Internet服务需求量嘚增长速度赶上甚至超过了网络本身的增长主干网络的速度达到622MM/s已是很平常的事。利用硬件IP交换机的新一代路由器可望以10Gb/s(OC192)以上的速度處理Internet分组下一个挑战是利用单模光纤处理每秒兆兆字节的信息量。    网络的安全性过去总是处于后台操作状态随着更多领域依赖于Internet,安全性已逐渐走向前台防火墙技术、端—端加密、密钥管理、证书系统和鉴别系统已成为成功管理Internet的关键因素。    再向未来展望網络协议和结构已经朝着星际互联的方向发展,也许会形成和互联网一样的形式域名系统如果还存在,还要考虑将不同的行星计人命名體系“互联的Internet”协议将能够处理更高的延迟,传统的TCP概念也将被更多的单向过程取代未来的网际邀游者回看这十年,一定会觉得这是個充满挑战但技术相对落后的时代在他们看来,这段前言中的观点可能已经过时又难以理解因为他们所面对的是经历了另外二十年变革的Internet。 用TCP/IP进行网际互联第二卷提供了第一卷所没有包含的关于TCP/IP协议的一些细节问题第二卷如同将TCP/IP置于放大镜下,考察每个协议的具体细節它讨论了协议的实现方案,并着重于介绍协议软件的内部机制第三版包含了对某些协议的修改和更新的内容。其中的代码改用C++语言嘚ANSI标准C子集包含了函数原型和参数的声明。另外还纠正了一些错误我们将SNMP更新为SNMPv2,其中包括替换了地址转换表增加了UDP listener列表。在本书嘚最后还增加了附录2,给出了书中代码所用到的主要数据结构的声明及变量的交叉参考表并扩充了附录1中的过程调用交叉参考的内容。    书中的范例代码用Gnu C++编译器在Intel体系平台编译通过也在Pentium TM系统上经过测试。所有的代码均可在以下网址得到:    ftP://ftp.cs.purdue.edu/pub/comer/TCPIP—vol2.dist.tar.Z    虽然本书受到版权保护但书中的代码可供读者使用,而且已经在许多商业产品中实现这些代码使用的惟一限制是不得在公开出版物Φ出版。    我们鼓励读者利用计算机工具来查看、修改、编译和测试这些代码事实上,尽管附录1和附录2中提供了定位代码条目的有效途径但在查看大段代码时,UNIXgrep程序的价值更是不可估量    对于各种正式的协议规范,以及对协议的实现和使用的讨论可参见请求评論文档(RFC)。尽管一些RFC文档对初学者来讲难以理解但这些文档是信息详尽的权威性资源,没有哪个作者能够做到在自己编写的书中包含RFC文档Φ的所有内容尽管RFC文档涉及了每一个协议,但有时它们对协议之间的交互问题并未加以说明例如,选路信息协议(RIP或OSPF)之类的选路协议规萣了网关如何将路由置人IP路由表中以及如何将表中的路由通知其他网关。RIP还规定路由必须设立定时机制一旦某条路由超时,就将其删除但是,我们在RFC文档中并不容易看出RIP和其他协议之间是如何交互作用的随之而来的问题是:“路由超时机制将如何影响路由表中那些甴ICMP设置的路由呢?”我们可能还会考虑这样一个问题:“当RIP更新路由时,应不应该推翻那些由管理员直接输入的路由呢?” 为了有助于解释协議之间的交互作用并确保我们的方案能协调工作,我们设计并构造了一个工作系统作为全书的中心范例。该系统提供了TCP/IP协议族中的大蔀分协议包括:TCP、IP、ICMP、IGMP、UDP、ARP、RIP、SNMPv2以及OSPF的主要部分。另外该系统还有一个finger服务的客户和服务器范例。由于本书包括了每一个协议的程序玳码读者可以研究其实现方法并了解其内部结构。最重要的是由于范例系统将所有协议软件集成为一个工作整体,读者可以清楚地了解协议之间的交互作用 范例的程序代码试图做到一方面遵守协议标准,另一方面引入一些新的思想例如,我们的TCP程序代码中包含了“糊涂窗口预防”技术、Jacobson—Karels的“慢启动”和“拥塞预防”等优化技术诸如此类的性能可能在商业实现中被忽略。但同时我们也清楚地认识箌商业领域并不总是遵从已经公布的标准因此我们也努力将系统调整到能够在现实环境中使用。例如程序代码中包含了一个配置参数,使得它既可以采纳Internet标准也可以采纳BSD UNIX中“TCP紧急数据指针”的实现方法。    我们并不认为书中所提供的程序代码都是准确无误的甚至鈈能断言它肯定比其他实现方法要好。事实上经过多年使用,我们仍然在不断完善这套软件同时,也希望读者跟我们一起继续改进它    本书可以作为网络工程人员的高级教程或者作为研究生教材使用。在作为本科教程使用时应将重点放在前几章,而忽略有关OSPF、SNMP和RIP這几章内容研究生可能会在有关TCP的章节中发现一些最为有趣和最难理解的概念。为保证其高性能而采用的自适应重发和相关的试探法尤為重要应当仔细加以研究。纵观全书绝大部分习题都向大家提示了其他可选择的实现方案及其大致情况,这些内容并不要求死记硬背学生们可能需要阅读本书以外的其他资料,才能解答这些习题    正如任何耗费甚巨的工程一样,本书中包含了许多人的心血对此峩们表示衷心的感谢。作者.之一David Stevens完成了大部分软件的编制工作其中包括一个完整的TCP版本。Shawn Ostermann为本书付出了许多努力Shawn将TCPAP代码集成到xinu版本8Φ,并将其从最初的Sun 3平台移植到DECstion 3100上在这一版本中,他还对上一版中由Vic Norman编写的SNMP软件进行了大量的修改以符合第二版的标准并有助于代码嘚调试。John Lin对书中的技术细节进行了校对纠正了一些错误。    珀杜(Purdue)大学的网际互联研究小组(Internetworking Research Group)的许多成员对程序代码的早期版本做过很多貢献Andy Muckelbauer和Steve Chapin建立了一个UNIX兼容库,并与Shawn Ostermann和Scott Mark合作使用TCP代码运行一个X window服务器。他们对TCP做了大量的测试工作并指出其性能上存在的几个问题。Scott M.Ballew參与了一些软件的开发工作    我的妻子Christine对本书手稿进行了编辑,并提出了许多建议最后,我们感谢珀杜大学的计算机科学系和计算個L1所提供的帮助    Douglas E.Comer    David L.Stevens

软件工程.rar 软件工程的授课课件软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件嘚学科。它涉及到程序设计语言、数据库、软件开发工具、系统平台、标准、设计模式等方面 在现代社会中,软件应用于多个方面典型的软件比如有电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。同时各个行业几乎都有计算机软件的应用,比如工业、农业、银行、航空、政府部门等这些应用促进了经济和社会的发展,提高人们的工作效率同时提升了生活质量。 软件工程师是对应用软件创造软件的人们的统称软件工程师按照所处的领域不同可以分为系统分析员、软件设计师、系统架构师、程序员、测试员等等。人们也常常用程序员来泛指各种软件工程师

软件工程是研究和应用如何以系统性的、规范化的、可定量的过程化方法詓开发和维护软件以及如何把经过时间考验而证明正确的管理技术和当前能够得到的最好的技术方法结合起来的学科。它涉及到程序设計语言、数据库、软件开发工具、系统平台、标准、设计模式等方面 在现代社会中,软件应用于多个方面典型的软件比如有电子邮件、嵌入式系统、人机界面、办公包、操作系统、编译器、数据库、游戏等。同时各个行业几乎都有计算机软件的应用,比如工业、农业、银行、航空、政府部门等这些应用促进了经济和社会的发展,提高人们的工作效率同时提升了生活质量。 软件工程师是对应用软件創造软件的人们的统称软件工程师按照所处的领域不同可以分为系统分析员、软件设计师、系统架构师、程序员、测试员等等。人们也瑺常用程序员来泛指各种软件工程师

随着社会经济和科技的不断进步, 计算机应用科学与技术应用领域也越来越广,它涉及到人们工作、学習、生活的方方面面,发挥着越来越重要的作用如果利用好它,可以大大节省人力、财力和财力并还能起到事半功倍的效果。计算机科技、网络的发展为大家的生活、学习、工作都带了很大的方便本论文研究的网上成绩管理系统,是应黄冈欧亚学院的要求而设计的一個网络管理信息系统想要开发和成功使用一个支持网络、支持多种数据信息(多媒体)的新一代网络版“网上成绩管理系统”。 网上成績管理系统的开发方法有多种本系统的开发过程中,采用的是基于Web技术的、建立在Internet环境之上的管理信息系统是Internet技术与管理信息系统开發方法的统一。用到了Web技术以及所涉及的 HTML语言、HTTP协议、B/S结构模式的设计和实现动态网页技术ASP、Dreamweaver、Vbscript和Javascript脚本语言,SQL Server 数据库操作等等技术结合嘚方式 网上成绩管理系统的功能:包括学生成绩管理、学生信息管理、教师信息管理、权限管理等。系统的设计包括数据库表的设计和各功能模块的设计数据的浏览、增删改、模糊查询和后台数据的自动处理是实现各个功能模块的四个主要方面,每个都有自己的实现特點文中对于每个功能模块的这四个方面都做了系统的分析,给出了具体的实现方法基于ASP SQL SERVER技术的网上成绩管理系统的设计与实现,除了偠分析系统本身应该具有哪些功能外要考虑的另一个重要因素就是网络与数据库的安全性。随着教育科技,网络更加飞速的发展新嘚形式,新的期待新的时代总在为我们提出不同的新的课题。该项目开发最终目的是想提高网络查分系统的现代化水平同时将所学的知识实践原理化,向网上成绩管理系统的“适时化、准确化、完善化、系统化、规范化、自动化、多维化、通用化、人性化、简洁化”的方向发展 本论文研究的主要内容:应用结构化分析方法为主线,对网上成绩管理系统进行了详细的需求分析阐述了系统的功能需求,利用先进的技术、模块化的软件结构给出了系统的数据流图,勾画出了系统的逻辑模型以此为基础,采用结构化设计方法对系统进行詳细设计在系统的功能结构图的基础上,对各功能模块和数据库进行了详细的设计为系统的实现打下了坚实的基础。通过项目的实践原理网上成绩管理系统的应用解决了家在外地的同学查成绩的不方便等居多问题,也可以使学生及其家长方便的了解学生在校的学习情況解决了老师和管理员的担忧,减轻了学校信息管理的压力操作也很方便和实用,但是离理想中的完美系统还有一定距离不同人们鈈同阶段不同时期均有不同需求信息管理需求,我们只有不断努力学习和进步才能适应形式的要求和创造更新更合适更美好更人性化更受欢迎的程序。

一、软件工程概述 1.软件特点 软件:计算机程序、方法、规则、相关的文档资料以及计算机程序运行时所需要的数据。 軟件是计算机系统中的逻辑成分具有无形性。其主要内容包括:程序、配置文件、系统 文档、用户文档等 2.软件分类 (1)按功能划分:系统软件、支撑软件、应用软件。 (2)按工作方式划分:实时处理软件、分时处理软件、交互式软件、批处理软件 (3)按规模划分:微型软件、小型软件、中型软件、大型软件。 (4)按服务对象划分:通用软件、定制软件 3.软件发展阶段 (1)程序设计时代(20世纪50年代)。 (2)程序系统时代(20世纪60年代) (3)软件工程时代(20世纪70年代起)。 4.软件危机 (1)危机现象:软件开发成本与进度估计不准确軟件产品与用户要求不一致,软件产品质量可靠性差软件文档不完整不一致,软件产品可维护性差软件生产率低。 (2)危机原因:软件的不可见性系统规模庞大,生产工程化程度低对用户需求关心不 够,对维护不够重视开发工具自动化程度低。 5.软件工程 软件工程:运用现代科学技术知识来设计并构造计算机程序及为开发、运行和维护这些程序所必须的相关文件资料 软件工程是一门关于软件开發与维护的工程学科,它涉及软件生产的各个方面能够为经济、高效地开发高质量的软件产品提供最有效的支持。 (1)工程方法:结构囮方法、JSD方法、面向对象方法 (2)软件工具:具有自动化特征的软件开发集成支撑环境。 (3)工程过程:在软件工具支持下的一系列工程活动基本活动是软件定义、软件开发、 软件验证、软件维护。 (4)工程管理:项目规划项目资源调配,软件产品控制 (5)工程原則:分阶段生命周期计划,阶段评审制度严格的产品控制,采用先进的技术 成果能清楚地审查,开发队伍精练不断改进工程实践原悝。 (6)工程目标:开发成本较低软件功能能满足用户需求,软件性能较好软件可靠性高, 软件易于使用、维护与移植能按时完成開发任务并及时交付使用。 (7)工程文化:包括工程价值、工程思想和工程行为三个方面的内容 二、软件工程过程模型 1.软件生命周期 洳同任何事物都有一个发生、发展、成熟直至衰亡的全过程一样,软件系统或软件产品也有一个定义、开发、运行维护直至被淘汰这样的铨过程我们把软件将要经历的这个全过程称为软件的生命周期。它包含:软件定义、软件开发、软件运行维护三个时期并可以细分为鈳行性研究、项目计划、需求分析、概要设计、详细设计、编码实现与单元测试、系统集成测试、系统确认验证、系统运行与维护等几个階段。 软件定义期 软件定义是软件项目的早期阶段主要由软件系统分析人员和用户合作,针对有待开发的软件系统进行分析、规划和规格描述确定软件是什么,为今后的软件开发做准备这个时期往往需要分阶段地进行以下几项工作。 1.软件任务立项 软件项目往往开始於任务立项并需要以“软件任务立项报告”的形式针对项目的名称、性质、目标、意义和规模等作出回答,以此获得对准备着手开发的軟件系统的最高层描述 2.项目可行性分析 在软件任务立项报告被批准以后,接着需要进行项目可行性分析可行性分析是针对准备进行嘚软件项目进行的可行性风险评估。因此需要对准备开发的软件系统提出高层模型,并根据高层模型的特征从技术可行性、经济可行性和操作可行性这三个方面,以“可行性研究报告”的形式对项目作出是否值得往下进行的回答,由此决定项 目是否继续进行下去 3.淛定项目计划 在确定项目可以进行以后,接着需要针对项目的开展从人员、组织、进度、资金、设备等多个方面进行合理的规划,并以“项目开发计划书”的形式提交书面报告 4.软件需求分析 软件需求分析是软件规格描述的具体化与细节化,是软件定义时期需要达到的目标 需求分析要求以用户需求为基本依据,从功能、性能、数据、操作等多个方面对软件系统给出完整、准确、具体的描述,用于确萣软件规格其结果将以“软件需求规格说明书”的形式提交。 在软件项目进行过程中需求分析是从软件定义到软件开发的最关键步骤,其结论不仅是今后软件开发的基本依据同时也是今后用户对软件产品进行验收的基本依据。 软件开发期 在对软件规格完成定义以后接着可以按照“软件需求规格说明书”的要求对软件实施开发,并由此制作出软件产品这个时期需要分阶段地完成以下几项工作。 1.软件概要设计 概要设计是针对软件系统的结构设计用于从总体上对软件的构造、接口、全局数据结构和数据环境等给出设计说明,并以“概要设计说明书”的形式提交书面报告其结果将成为详细设计与系统集成的基本依据。 模块是概要设计时构造软件的基本元素因此,概要设计中软件也就主要体现在模块的构成与模块接口这两个方面上结构化设计中的函数、过程,面向对象设计中的类、对象它们都昰模块。概要设计时并不需要说明模块的内部细节但是需要进行全部的有关它们构造的定义,包括功能特征、数据特征和接口等 在进荇概要设计时,模块的独立性是一个有关质量的重要技术性指标可以使用模块的内聚、耦合这两个定性参数对模块独立性进行度量。 2.軟件详细设计 设计工作的第二步是详细设计它以概要设计为依据,用于确定软件结构中每个模块的内部细节为编写程序提供最直接的依据。 详细设计需要从实现每个模块功能的程序算法和模块内部的局部数据结构等细节内容上给出设计说明并以“详细设计说明书”的形式提交书面报告。 3.编码和单元测试 编码是对软件的实现一般由程序员完成,并以获得源程序基本模块为目标 编码必须按照“详细設计说明书”的要求逐个模块地实现。在基于软件工程的软件开发过程中编码往往只是一项语言转译工作,即把详细设计中的算法描述語言转译成某种适当的高级程序设计语言或汇编语言 为了方便程序调试,针对基本模块的单元测试也往往和编码结合在一起进行单元測试也以“详细设计说明书”为依据,用于检验每个基本模块在功能、算法与数据结构上是否符合设计要求 4.系统集成测试 所谓系统集荿也就是根据概要设计中的软件结构,把经过测试的模块按照某种选定的集成策略,例如渐增集成策略将系统组装起来。 在组装过程Φ需要对整个系统进行集成测试,以确保系统在技术上符合设计要求在应用上满足需求规格要求。 5.系统确认验证 在完成对系统的集荿之后接着还要对系统进行确认验证。 系统确认验证需要以用户为主体以需求规格说明书中对软件的定义为依据,由此对软件的各项規格进行逐项地确认以确保已经完成的软件系统与需求规格的一致性。为了方便用户在系统确认期间能够积极参入也为了系统在以后嘚运行过程中能够被用户正确使用,这个时期往往还需要以一定的方式对用户进行必要的培训 在完成对软件的验收之后,软件系统可以茭付用户使用并需要以“项目开发总结报告”的书面形式对项目进行总结。 软件运行与维护期 软件系统的运行是一个比较长久的过程哏软件开发机构有关的主要任务是对系统进行经常性的有效维护。 软件的维护过程也就是修正软件错误,完善软件功能由此使软件不斷进化升级的过程,以使系统更加持久地满足用户的需要因此,对软件的维护也可以看成为对软件的再一次开发在这个时期,对软件嘚维护主要涉及三个方面的任务即改正性维护、适应性维护和完善性维护。 2.瀑布模型 瀑布模型诞生于20世纪70年代是最经典的并获得最廣泛应用的软件过程模型。瀑布模型中的“瀑布”是对这个模型的形象表达即山顶倾泻下来的水,自顶向下、逐层细化 (1)特点:线性化模型、阶段具有里程碑特征、基于文档的驱动、阶段评审机制。 (2)作用:为软件项目按规程管理提供了便利为其他过程模型的推絀提供了一个良好的 拓展平台。 (3)局限性:主要适合于需求明确且无大的需求变更的软件开发但不适合分析初期需求 模糊的项目。 3.原型模型 (1)快速原型方法:是原型模型在软件分析、设计阶段的应用用来解决用户对软件系统在需求上的模糊认识,或用来试探某种設计是否能够获得预期结果 (2)原型进化模型:针对有待开发的软件系统,先开发一个原型给用户使用然后根据用 户的使用意见,对原型不断修改使它逐步接近,并最终到达开发目标 4.增量模型 增量模型结合了瀑布模型与原型进化模型的优点。在整体上按照瀑布模型的流程实施开发以方便对项目的管理。但在软件的实际创建中则将软件系统按功能分解为许多增量构件逐个地创建与交付,直到全蔀构件创建完毕并都被集成到系统之中交付使用。 比较瀑布模型、原型进化模型增量模型具有非常显著的优越性。但增量模型对软件設计有更高的技术要求 5.螺旋模型 螺旋模型是一种引入了风险分析与规避机制的过程模型,是瀑布模型、快速原型方法和风险分析方法嘚有机结合其基本方法是,在各个阶段创建原型进行项目试验以降低各个阶段可能遇到的项目风险。 6.喷泉模型 喷泉模型是专门针对媔向对象软件开发方法而提出的“喷泉”一词用于形象地表达面向对象软件开发过程中的迭代和无缝过渡。 7.组件复用模型 组件复用方法是最近几年发展起来的先进的软件复用技术在基于组件复用的软件开发中,软件由组件装配而成这就如同用标准零件装配汽车一样。因此组件复用模型能够有效地提高软件生产率。 三、项目分析与规划 1.计算机系统分析 (1)计算机系统 计算机系统是一个非常复杂并具囿智能特性的开发系统包括:硬件系统、软件系统、网络通信系统、人工操作系统等诸多子系统。 (2)系统分析 系统分析是对软件项目嘚高层分析需要获取的是有关系统的框架描述,并需要使系统从它所处的环境中分离出来为划分系统边界与确定系统构架提供依据。 (3)系统分析模型 分析模型是指采用作图方式对系统进行直观的描述系统前期分析过程中经常使用的图形模型有系统框架图和系统流程圖。其中系统框架图用于说明系统的基本构造框架,而系统流程图则用于表现系统的基本加工流程 2.项目可行性分析 (1)意义 ?以少量嘚费用对项目能否实施尽早作出决断。 ?根据项目条件限制对系统的体系构造、工作模式等作出高层抉择。 ?其结果可作为一个高层框架被用于需求分析之中 (2)分析内容 ?技术可行性:从技术与技术资源这两个方面作出可行性评估。 ?经济可行性:从项目投资和经济效益这两个方面作出可行性评估 ?应用可行性:从法律法规、用户操作规程等方面作出可行性评估。 (3)分析过程 ?建立系统模型 ?進行可行性评估。 ?撰写可行性研究报告 3.项目成本效益分析 (1)项目成本估算方法:基于软件规模的成本估算;基于任务分解的成本估算。 (2)项目效益分析指标:纯收入;投资回收期;投资回收率 4.项目规划 (1)项目开发计划 项目开发计划涉及的内容包括: ?开发团队嘚组织结构,人员组成与分工 ?项目成本预算。 ?项目对硬件、软件的资源需求 ?项目任务分解和每项的任务里程碑标志。 ?基于里程碑的进度计划和人员配备计划 ?项目风险计划。 ?项目监督计划 (2)项目进度表 项目进度是基于里程碑制定的,可以使用进度图表來描述项目进度甘特图表是一种常用的项目进度图表,可以直观地描述项目任务的活动分解以及活动之间的依赖关系、资源配置情况、各项活动的进展情况等。 四、软件需求分析 1.需求分析任务 (1)用户需求 用户需求是用户关于软件的一系列意图、想法的集中体现是用戶关于软件的外界特征的规格表述。 (2)系统需求 系统需求是比用户需求更具有技术特性的需求陈述是提供给开发者或用户方技术人员閱读的,并将作为软件开发人员设计系统的起点与基本依据主要包括:功能、数据、性能、安全等诸多方面的需求问题。 2.需求分析过程 需求分析是对软件系统的后期分析需要进行的活动包括:分析用户需求、建立需求原型、分析系统需求和进行需求验证等。 3.用户需求获取 (1)用户调查是最基本的用户需求信息收集方法比较常用的调查方法包括:访谈用户、开座谈会、问卷调查、跟班作业、收集用户资料。 (2)需求原型可被用来解决用户对软件系统在需求认识上的不确定性一般情况下,开发人员将软件系统中最能够被用户直接感受的那一部分东西构造成为原型例如,界面、报表或数据查询结果 4.结构化分析建模 所谓模型,就是对问题所做的一种符号抽象可以把模型看作为一种思维工具,利用这种工具可以把问题规范地表示出来主要的分析模型包括: (1)功能层次模型。它使用矩形来表示系统中嘚子系统或功能模块使用树形连线结构来表达系统所具有的功能层级关系。 (2)数据流模型用于描述系统对数据的加工过程,其图形苻号是一些具有抽象意义的逻辑符号主要的图形符号包括:数据接口、数据流、数据存储和数据处理。可以依靠数据流图来实现从用户需求到系统需求的过渡结构化分析就是基于数据流的细化实现的,它是结构化分析方法的关键 (3)数据关系模型。也称为ER图是应用朂广泛的数据库建模工具。需要通过数据实体、数据关系和数据属性这三类图形元素建立数据关系模型 (4)系统状态模型。通过系统的外部事件、内部状态为基本元素来描绘系统的工作流程这种建模方式比较适合于描述一些依赖于外部事件驱动的实时系统。 5.需求有效性驗证 需求有效性验证是指对已经产生的需求结论所要进行的检查与评价一般需要对需求文档草稿从有效性、一致性、完整性、现实性、鈳检验性等几个方面进行有效性验证。比较常用的需求有效性验证方法与工具包括:需求评审、需求原型评价和基于CASE工具的需求一致性分析 6.需求规格定义 需求规格说明书是需求分析阶段需要交付的基本文档,将成为开发者进行软件设计和用户进行软件验证的基本依据涉忣引言、术语定义、用户需求、系统体系结构、系统需求等有关软件需求及其规格的诸多描述与定义。 五、软件概要设计 1.设计过程与任務 概要设计中首先需要进行的是系统构架设计然后是软件结构、数据结构等方面的设计。主要有以下几个方面的设计任务:制定规范、系统构架设计、软件结构设计、公共数据结构设计、安全性设计、故障处理设计、可维护性设计、编写文档、设计评审 2.系统构架设计 (1)集中式结构 集中式系统由一台计算机主机和多个终端设备组成。其具有非常好的工作稳定性和安全保密性但系统建设费用、运行费鼡比较高,灵活性不够好结构不便于扩充。 (2)客户机/服务器结构 客户机/服务器结构依靠网络将计算任务分布到许多台不同的计算机上但通过其中的服务器计算机提供集中式服务。其优越性是结构灵活、便于系统逐步扩充 (3)多层客户机/服务器结构 ?两层结构:将信息表示与应用逻辑处理都放在了客户机上,服务器只需要管理数据库事务 ?三层结构:将两层结构的客户机上的容易发生变化的应用逻輯部分提取出来,并放到一个专门的“应用服务器”上 ?B/S结构:是Web技术与客户机/服务器结构的结合。其优点是不需要对客户机进行专门嘚维护 (4)组件对象 分布式结构通过组件进行计算分布。它依赖于对象中间件建立具有灵活的构架,系统伸缩性好能够给系统的功能调整与扩充带来便利。 3.软件结构设计 软件结构设计是对组成系统的各个子系统的进一步分解与规划主要设计内容有:确定模块元素、定义模块功能、定义模块接口、确定模块调用与返回、进行结构优化。 (1)模块概念 ?模块化:使用构造程序可使软件问题简化。 ?抽象化:概要设计中的模块被看成是一个抽象化的功能黑盒子 ?信息隐蔽:每个模块的内部实现细节对于其他模块来说是隐蔽的。 (2)模块的独立性 软件系统中每个模块都只涉及自己特定的子功能并且接口简单,与软件中其他模块没有过多的联系一般采用耦合和内聚這两个定性的技术指标进行度量。 耦合用来反映模块相互关联程度模块间连接越紧密,耦合性就越高内聚用来反映模块内元素的结合程度,模块内元素结合越紧密则内聚性就越高。为提高模块独立性要求模块高内聚、低耦合。 耦合形式由低至高是:非直接耦合、数據耦合、控制耦合、公共耦合、内容耦合 内聚形式由低至高是:偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。 (3)设计建模 ?软件结构图:由Yourdon于20世纪70年代提出被广泛应用于软件结构设计中,能够有效说明软件中模块之间的调用与通信 ?HIPO图:由美国IBM公司推出。其中H图用于描述软件的分层调用关系,作用类似软 件结构图IPO图用于说明描述模块的输入—处理—输出特征。 (4)软件结构优化 主要优化设计原则有:使模块功能完整、使模块大小适中、使模块功能可预测、尽量降低模块接口的复杂程度、使模块莋用范围限制在其控制范围之内、模块布局合理 4.面向数据流的结构设计 (1)变换分析 软件结构由输入、变换和输出三个部分组成。 (2)事务分析 软件结构由接收事务与事务活动两个部分组成 (3)混合流分析与设计 软件系统是变换流与事务流的混合。对于这样的系统通常采用变换分析为主、事务分析为辅的方式进行软件结构设计。5.数据库结构设计 (1)逻辑结构设计 ?设计数据表 ?规范数据表 ?关联数據表 ?设计数据视图 (2)物理结构设计 ?数据存储结构 ?数据索引与聚集 ?数据完整性 六、面向对象分析与设计 1.面向对象方法学 面向对潒技术涉及面向对象分析(OOA)、面向对象设计(OOD)和面向对象编程实现(OOP)这三个方面的问题 (1)基本概念 ?类:面向对象模块单位,莋用是为创建对象实例提供模板其具有数据与行为这两个方面的特征,并需要通过属性、操作和方法进行描述 ?属性、操作与方法:類具有数据与行为这两个方面的特征,并需要通过属性、操作和方法进行描述 ?类的继承性:指上级父类能够把自己的属性、操作传递給下级子类。 ?类的多态性:子类对象可以像父类对象那样使用它们可以共享一个操作名,然而却有不同的实现方法 ?对象:对象是類模块实例化的结果。 ?消息:指对象之间的通信 (2)优越性 ?跟现实世界更加接近 ?可使软件系统结构更加稳定 ?软件具有更好的可偅用性 ?软件更加便于维护与扩充 2.面向对象分析建模 面向对象分析建模需要建立的是软件系统的用户领域模型,需要从系统业务流程、組织结构和行为过程等几个方面对系统进行分析 (1)用例图 用例图涉及参入者、用例等元素,用于描述用户与系统之间的交互关系说奣系统所具有的业务能力和业务流程,能够方便开发者理解用户领域的专有术语和业务内容 (2)活动图 活动图是一种行为模型,主要用於描述用例图中用例的内部活动状态与活动转换过程以获得对用例的交互行为与工作流程的细节说明。涉及活动状态、活动转换等元素 (3)分析类图 建立类图的概念模型,描述体现现实世界中数据构造的实体类及其它们之间的关系 (4)序列图 以用例图中的用例为描述單位,以类图中的类为对象依据以活动图中的活动转换为行为依据,建立与时间顺序有关的用例中对象之间的交互模型 3.面向对象设計建模 面向对象设计建模需要把分析阶段的结果扩展成技术解决方案,需要建立的是软件系统的技术构造模型 (1)设计类图 设计类图中嘚类是构造系统的基本模块单位,需要在分析类图基础上进行更加完整的面向设计的描述除了实体类,设计类图中还需要考虑用于向外提供操作接口的边界类和用于实现内部协调的控制类 (2)协作图 描述对象交互时的链接关系和基于链接而产生的消息通信及其操作接口。 (3)状态图 描述一个特定对象的所有可能的状态以及引起状态转换的事件 (4)构件图 描述组成系统的物理构件及其它们之间的关系。構件之间关系主要是依赖关系 (5)部署图 描述系统运行时的物理架构,涉及物理节点、节点之间的连接关系以及部署到各个节点上的构件的实例等 七、用户界面设计 1.图形用户界面(GUI)所具有的特点 (1)比较容易学习和使用。 (2)用户可利用多屏幕(窗口)与系统进行茭互并可通过任务窗方便地由一个任务转换到另一个任务。 (3)可以实现快速、全屏的交互能很快在屏幕上的任何地方进行操作。 图形用户界面设计已不是设计人员能够独立解决的了需要邀请图形设计人员、系统分析人员、系统设计人员、程序员、用户应用领域方面嘚专家和社会行为学方面的专家以及最终用户的共同参入。 2.基于原型的用户界面设计 用户界面设计是一个迭代的过程其基本过程包括彡个步骤: (1)建立界面需求规格模型。 (2)以界面需求模型为依据创建界面原型 (3)评价界面原型。 3.界面设计中需要考虑的因素 用戶界面设计将会受诸多用户因素的影响并主要体现在以下几个方面: (1)用户工作环境与工作习惯。 (2)用户操作定势 (3)界面一致性。 (4)界面动作感 (5)界面信息反馈。 (6)个性化 (7)容错性。 (8)审美性与可用性 4.界面类型 在基于图形界面的应用系统中,鼡户界面一般由若干个窗体组成其窗体类型包括: (1)单窗体界面(SDI)。其特点是应用程序一次只能打开一个独立窗体 (2)多窗体界媔(MDI)。由一个MDI主窗体和多个MDI子窗体组成其中MDI主窗体如同容器用来装载MDI子窗体,而MDI子窗体则被限制于MDI主窗体之内不能独立存在。诸多公共操作都被放置在MDI主窗体上 (3)辅助窗体。通常也叫做对话框它是对主窗体的补充,用于扩展主窗体的功能辅助窗体的种类主要囿:登录窗、消息窗、设置窗等。 (4)Web页面当采用到基于Web的B/S结构时,系统中的某个Web页面可能会被作为Web应用的进入点则它可以作为一个特殊的主窗体看待。 5.界面功能特征 在进行用户界面设计时需要考虑界面的功能问题。大体上说来用户界面的功能主要体现在以下方媔: (1)用户交互。指用户与计算机系统之间的信息交流 (2)信息表示。指系统提供给用户信息信息可以采用文本形式表示,也可以采用图形形式表示 (3)用户联机支持。指系统给用户提供的应用指导 6.界面导航设计 界面导航所指的是如何由一个界面转换到另一个堺面。可以使用活动图来描述界面之间的转换关系其中活动图中的每一个活动状态可用来表示系统中的每一个界面。 八、程序算法设计與编码 1.结构化程序特征 结构化程序的基本特征是程序的任何位置是单入口、单出口的因此,结构化程序设计中GOTO语句的使用受到了限淛,并且程序控制也要求采用结构化的控制结构以确保程序是单入口和单出口的。 2.程序算法设计工具 (1)程序流程图 程序流程图又称為程序框图其历史悠久、应用广泛,从20世纪40年代末到70年代中期它一直是程序算法设计的主要工具。程序流程图的主要优点是能够非常矗观的描述程序的控制流程但是,传统的程序流程图却是一种非结构化的程序算法设计工具 (2)N-S图 为了满足结构化程序设计对算法設计工具的需要,Nassi和Shneiderman推出了盒图又称为N-S图。它是一种严格符合结构化程序设计原则的图形描述工具 N-S图的基本特点是通过矩形框描述模块内部程序的各个功能区域,并通过由外到内的矩形框嵌套表示程序的多层控制嵌套 (3)PAD图 PAD是问题分析图(ProblemAnalysisDiagram)的英文缩写,由日本ㄖ立公司首先推出并得到了广泛的应用。它是符合结构化程序设计原则的图形描述工具 PAD图的基本特点是使用二维树形结构表示程序的控制流程,从上至下是程序进程方向从左至右是程序控制嵌套关系。 (4)PDL语言 PDL语言也称为伪码或过程设计语言,它一般是某种高级语訁稍加改造后的产物可以使用普通的正文编辑软件或文字处理系统进行PDL的书写和编辑。 PDL语言的语法规则分外部语法和内部语法其中,外部语法用于定义程序中的控制结构和数据结构内部语法则用于表示程序中的加工计算或条件。 (5)判定表 判定表是算法设计辅助工具专门用于对复杂的条件组合关系及其对应的动作行为等给出更加清晰的说明,能够简洁而又无歧义地描述涉及条件判断的处理规则 3.Jackson程序设计方法 1983年法国科学家Jackson提出了一种以软件中的数据结构为基本依据的程序算法设计方法。在以数据处理为主要内容的信息系统开发中具有一定的应用价值。 Jackson程序设计方法的基本设计途径是通过分析输入数据与输出数据的层次结构由此对程序算法的层次结构进行推论。 为了方便由数据结构映射出程序结构Jackson将软件系统中所遇到的数据分为顺序、选择和重复三种结构,并使用图形方式加以表示Jackson程序结構也是顺序、选择和重复这三种结构,并可以使用与数据结构相同的图形符号表示 4.程序编码 在完成程序算法设计之后,接着需要编码 (1)编程语言种类 ?低级语言:包括第一代机器语言与汇编语言,它们是直接面向机器的语言 ?高级语言:指面向问题求解过程的语訁,使用了与人的思维体系更加接近的概念和符号一般不依赖于实现这种语言的计算机,具有较好的可移植性 ?第四代语言(4GL):指┅些面向问题的高级语言,第四代语言是在更高一级抽象的层次上表示数据与猜想结构它不需要规定程序算法细节。 (2)选择编程语言嘚依据 在对软件系统进行编码之前必须抉择使用什么样的程序设计语言实现这个软件系统。在选择编程语言时往往需要考虑诸多方面的洇素例如软件项目的应用领域、软件问题的算法复杂性、软件的工作环境、软件在性能上的需要、软件中数据结构的复杂性、软件开发囚员的知识水平和心理因素等。 (3)编程风格与质量 编程风格是编写程序时需要遵守的一些规则在衡量程序质量时,源程序代码的逻辑簡明清晰、易读易懂是一个重要因素而这些都与编程风格有着直接的关系。 (4)影响程序工作效率的因素 一般说来程序工作效率会受箌处理器计算速度、存储器存储容量和输入输出速度等几个方面因素的影响,并与程序设计语言、操作系统、硬件环境等有着直接关系洇此,在考虑程序工作效率时需要将诸多因素综合起来分析。 5.程序算法复杂性度量 程序算法复杂性主要指模块内程序的复杂性比较著名的程序算法复杂性度量方法是McCabe度量法,其对程序复杂性的度量采用的是程序的环形复杂度计算公式是: V(G)=m–n+p 其中,V(G)是程序有姠图G中的环数m是程序有向图G中的弧数,n是程序有向图G中的节点数p是程序有向图G中分离部分的数目。 九、软件测试 1.测试目标 尽力发现軟件中的错误而不是为了验证软件的正确性。 2.测试方法 (1)黑盒测试:基于程序的外部功能规格而进行的测试又称为功能测试。 (2)白盒测试:基于程序的内部结构与处理过程而进行的测试又称为结构测试。 3.单元测试 单元测试的对象是单元模块一般以白盒测试為主,以黑盒测试为辅测试内容包括模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试。 单元测试通常在编码阶段进行测试时需要用到辅助模块,如驱动模块、桩模块 4.集成测试 系统集成时主要有非渐增组装测试和渐增组装测试这两种方法: (1)非渐增组装测试:一种一次性地进行系统组装的方法。 (2)渐增组装测试:一种将单元模块的确认测试与集成测试结合在一起的测试方法它比非渐增组装测试是具有更大的优越性。可以自顶向下渐增集成也可以自底向上渐增集成。5.确认测试 确认测试又称有效性测试其任务是验证软件的功能、性能及其他特性是否与用户的要求一致。在进行确认测试时可以采用Alpha测试或Beta测试。其中Alpha测试是在开发环境下由用户进行的测试,而Beta测试则是由软件用户在软件实际使用环境下进行的测试 6.测试用例设计 设计测试用例就是为测试准备测试数據。由于测试用例不同发现程序错误的能力也就不同,为了提高测试效率降低测试成本应该选用高效的测试用例。 白盒测试用例设计主要采用逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定—条件覆盖、条件组合覆盖和路径覆盖。 黑盒测试用例设计包括等价划分、边界值分析和错误推测等几种方法 7.面向对象测试 (1)面向对象单元测试 不能孤立地测试单个操作,而应该把操作作为类的一部分来測试 (2)面向对象集成测试 ?基于线程的测试。 ?基于使用的测试 (3)面向对象确认测试 研究系统的用例模型和活动模型,设计出确認测试时的用户操作脚本 8.软件调试 软件调试也叫做排错,涉及诊断与排错这两个步骤但调试的关键是诊断。 常用的调试方法有:输絀存储器内容、在程序中插入输出语句、使用自动调式工具 常用的调试策略有:试探法、回溯法、对分查找法、归纳法、演绎法。 9.自動测试工具 常用的自动测试工具有:测试数据生成程序、动态分析程序、静态分析程序、模块测试、程序 10.软件可靠性评估 软件可靠性嘚定义是:程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率 软件可用性的定义是:程序在给定的时间点,按照规格說明书的规定成功地运行的概率。为了方便可用性的计算一般使用稳态可用性对系统进行可用性评价。 系统平均无故障时间的估算式昰:MTTF=1/(K(ET/IT–Ec(t)/IT)) 十、软件维护 1.软件维护定义 软件维护是在软件运行维护阶段为了改正软件错误或为了满足用户新的应用需要,而对软件进荇改错、变更或进化的过程 维护任务一般分为:改正性维护、适应性维护、完善性维护和预防性维护。 2.影响软件维护工作的因素 主要洇素有:系统大小、程序设计语言、系统文档和系统年龄等 3.非结构化维护 没有按照软件工程原则实施软件开发,以致和软件配套的一系列文档没有建立起来保留下来的可能只有源程序。 4.结构化维护 建立在严格按照软件工程原则实施软件开发基础上因此各个阶段的攵档完整,能够比较全面地说明软件的功能、性能、软件结构、数据结构、系统接口和设计约束等 5.软件维护的代价 软件维护代价包括囿形与无形这两个方面的代价。其中有形代价是指软件维护的直接费用支出,无形代价则指其他非直接的维护代价 6.软件可维护性 软件可维护性是指维护人员理解、改正、改动和改进这个软件的难易程度。 可以从系统的可理解性、可靠性、可测试性、可修改性、可移植性、运行效率和可使用性这七个方面对软件的可维护性进行综合评估 7.软件维护的实施 软件维护实施过程中,一般涉及以下几个问题:維护机构、维护申请报告、软件维护工作流程、维护记录和维护评价 8.对老化系统的维护 老化系统是指一些使用早期程序设计语言开发嘚系统。为了能够有效地对老化系统进维 护Yourdon提出了以下的几点维护建议: (1)尽可能得到更多的背景信息。 (2)力图熟悉程序的所有控淛流程 (3)评价现有文档的可用性。 (4)充分利用交叉引用信息 (5)必须非常谨慎地对程序进行修改。 (6)在删除某些代码时要确認代码确实不再使用。 (7)不要试图共享程序已有的临时变量或工作区 (8)保持详细的维护活动和维护结果记录。 (9)如果程序结构混亂修改受到干扰,可抛弃程序重新编写 (10)插入出错检验。 9.逆向工程与再工程 逆向工程是通过源程序甚至是目标程序,由此导出設计模型、分析模型的过程可以把逆向工程描述为一个魔术管道,从管道一端流入的是一些非结构化的无文档的源代码或目标代码而從管道另一端流出的则是计算机软件的分析、设计文档。 逆向工程被用到了软件维护上通过从老化系统的源代码中提取程序流程设计、系统结构设计,甚至是数据流图给老化系统的维护带来方便。 当逆向工程被用于重新构造或重新生成老化系统时这个过程就叫做再工程。再工程不仅能从已存在的程序中重新获得设计信息而且还能使用这些信息来改建或重建现有的系统。 10.软件配置管理 配置管理包括軟件配置标识、软件变更控制和软件版本控制等方面的内容 当对软件进行维护时,软件产品发生了变化这一系列的改变,必须在软件配置中体现出来以防止因为维护所产生的变更给软件带来混乱。

我要回帖

更多关于 实践原理 的文章

 

随机推荐