




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一部分 课程总结需求获取和需求模型总结本学期的软件工程课程学习主要分为四个阶段,需求分析、系统架构与分析设计、子系统的分析与设计、数据库设计。这四个阶段的任务完成质量会直接的影响整个开发过程的成败,每一个阶段都十分的重要,都需要做大量细致的工作。每一个使用系统的开发,必定要以用户为中心,了解用户的要求,需要实现的功能和用户对这个系统的期望。最先要做的就是挖掘用户的需求并分析实现的可能性。团队和管理对项目开发很重要,但项目开发的成败取决于是否正确的进行需求获取。一个项目的主要需求可以分为两个部分:功能性需求和非功能性需求。功能需求(Functional Requirement):和系统主要工作
2、相关的需求,即在不考虑物理约束的情况下,用户希望系统所能够执行的活动,这些活动可以帮助用户完成任务。主要包括业务需求(Business Requirement)表示组织或客户高层次的目标。它描述了组织为什么要开发系统,即组织希望达到的目标。例如实现车辆的有效管理和利用。业务需求通常来自项目的投资人、购买产品的客户、实际用户的管理者。用户需求(User Requirement)就是执行实际工作的用户对系统所能完成的具体任务的期望。业务需求是由组织的专门部门提出,但普通用户才是组织中任务的实际执行者,只有通过具体并且合理的业务流程才能真正的实现目标。也就是说用户需求描述了用户能使用系统来做些什么。
3、系统需求规定开发人员必须在产品中实现的软件功能,用户利用这些功能来完成任务,满足业务需求,行为需求描述的是开发人员需要实现什么。非功能性需求:包括性能需求、质量属性、对外接口和约束。非功能需求是衡量软件能否良好运行的定性指标。因此,非功能需求也是非常重要的。在非功能需求中,质量属性对系统的影响极大,因此在某些情况下,非功能需求又被用来特指质量属性,主要包括可靠性、可用性、可移植性、可维护性、效率等。构建一个软件系统最困难的部分是确定构建什么。其他部分工作不会像这部分工作一样,在出错之后会如此严重地影响随后实现的系统,并且在以后修补竟会如此的困难。 Fred Brooks这段话形象的描述了正确的
4、需求获取对软件整个开发过程的重要性,需求获取要求开发人员得到的需求必须是正确的,这就严格的要求了开发人员需要用正确的方法通过正确的途径去获取需求。常用的需求获取方法有下面四种:一、面谈:用户面谈是一种十分直接而常用的需求获取方法,它也经常与其他需求获取技术一起使用,以便更好地澄清和理解一些细节问题。二、需求专题讨论会:需求分析员需要经常组织和协调需求专题讨论会,人们通过协调讨论和群体决策等方法,为具体问题找到解决方案,并在应用需求上达成共识、对操作过程尽快取得统一意见。三、调查问卷:调查问卷是一种经常和面谈配合使用的需求获取方法。它在内容的安排上类似于结构化面谈方法,完全按照事先确定的问题来得
5、到反馈信息,较多地使用封闭式问题。四、原型法:原型(prototype)是在软件开发中被广泛使用的一种工具,在软件开发过程中的各个阶段,包括需求开发,都会使用不同类型的原型来达到不同的目的。通常,人们更愿意从原型使用的角度来理解原型概念。如果在最终的物件(Final Artifact)产生之前,一个中间物件(Mediate Artifact)被用来在一定广度和深度范围内表现这个最终物件,那么这个中间物件就被认为是最终物件在该广度和深度上的原型。在需求获取中有很多困难是客观存在的,了解这些困难对更好地了解需求获取活动有中重要的意义。主要包括用户和开发人员立场不同、用户固执地坚持某些功能、用户消极
6、参与等,这些困恼是开发过程中经常会出现的,了解这些困难的解决办法对然间开发人员是有很大的帮助的。软件过程定义了软件开发中采用的方法。软件工程是集成计算机软件开发的过程、方法和工具的学科。软件工程的一般视图:定义阶段(做什么)、开发阶段(如何做)、支持阶段(变化)。线性顺序模型有时被称为“传统生存周期或瀑布模型”。活动包括:系统/信息工程和建模、软件需求分析、设计、代码生成、测试、支持为什么线性模型有时候不能奏效?建议:虽然线性模型经常被嘲笑为“旧式的”,但是,在需求被很好理解的情况下,它仍然是一种合理的方法。缺点: 1、实际的项目大部分情况难以按照该模型给出的顺序进行,而且这种模型的迭代是间接
7、的,这很容易由微小的变化而造成大的混乱。 2、 经常情况下客户难以表达真正的需求,而这种模型却要求如此,这种模型是不欢迎具有二义性问题存在的。 3、 客户要等到开发周期的晚期才能看到程序运行的测试版本,而在这时发现大的错误时,可能引起客户的惊慌,而后果也可能是灾难性的。 4、采用这种线性模型,会经常在过程的开始和结束时碰到等待其他成员完成其所依赖的任务才能进行下去,有可能花在等待的时间比开发的时间要长。我们称之为“堵赛状态”。 优点: 1、它提供了一个摸板,这个摸板使得分析、设计、编码、测试和支持的方法可以在该摸板下有一个共同的指导。 2、虽然有不少缺陷但比在软件开发中随意的状态要好得多。主要
8、的软件工程模型有:瀑布模型、演化模型(如增量模型、原型模型、螺旋模型)、喷泉模型、基于架构的开发模型和形式方法模型等。瀑布模型的特点: 瀑布模型为软件的开发和维护提供了一种有效有管理模式,对保证软件产品的质量有重要的作用; 可根据这一模式制定出开发计划,进行成本预算,组织开发力量,以项目的阶段评审和文档控制为手段,有效地对整个开发过程进行指导; 在一定程度上消除非结构化软件、降低软件的复杂度、促进软件开发工程化方面起到显著作用; 瀑布模型缺乏灵活性、无法通过开发活动来澄清本来不够确切的需求,这将导致直到软件开发完成时发现所开发的软件并非是用户所需求的。原型实现模型原型实现范型定义:需求收集快速
9、设计原型实现模型是迭代的,是帮助客户或开发者理解需求的,总体上讲,并不是交付一个最终产品系统。其流程从听取客户意见开始、随后是建造/修改原型、客户测试运行原型、然后回头往复循环直到客户对原型满意为止。由于这种模型可以让客户快速的感受到实际的系统(虽然这个系统不带有任何质量的保证),所以客户和开发者都比较喜欢这种过程模型(对于那些仅仅用来演示软件功能的公司而言或从来不考虑软件质量和不害怕长期维护的公司而言)。缺点: 1、没有考虑软件的整体质量和长期的可维护性。 2、大部分情况是不合适的操作算法被采用目的为了演示功能,不合适的开发工具被采用仅仅为了它的方便,还有不合适的操作系统被选择等等。 3、由
10、于达不到质量要求产品可能被抛弃,而采用新的模型重新设计。 优点: 1、如果客户和开发者达成一致协议:原型被建造仅为了定义需求,之后就被抛弃或者部分抛弃, 那么这种模型很合适了。 2、迷惑客户抢占市场,这是一个首选的模型。 原型实现仍然是软件工程的一个有效范型。关键是定义开始时的游戏规则,即客户和开发者达成一致:原型被建造仅是为了定义需求,之后就被抛弃了(或至少部分被抛弃),实际的软件在充分考虑了质量和可维护性之后才被开发。建议:当你的客户有一个合理的续签,但对细节没有任务线索时,先开发一个原型。RAD模型快速应用开发(Rapid Application Development、RAD)是一个增
11、量型的软件开发过程模型,强调极短的开发周期。是线性顺序模型的一个“高速”变种,通过使用基于构件的建造发放赢得了快速开发。如果需求理解的好而且约束了项目的范围,利用这种模型可以很快的创建出功能完善的“信息系统”。其流程从业务建模开始,随后是数据建模、过程建模、应用生成、测试及反复。RAD过程强调的是复用,复用已有的或开发可复用的构件。实际上RAD采用第四代技术。基于构件的软件工程(不理解)适用范围:如果需求理解得很并且约束了项目范围。主要适用于信息系统应用,包括以下阶段:业务建模、数据建模、过程建模、应用生成、测试及反复。业务建模工作流程与其他工作流程的关系如下: 业务模型是需求工作流程的一种重
12、要输入,用来了解对系统的需求。 业务实体是分析设计工作流程的一种输入,用来确定设计模型中的实体类。 缺点: 1、只能用于信息系统。 2、对于较大的项目需要足够的人力资源去建造足够的RAD组。 3、开发者和客户必须在很短的时间完成一系列的需求分析, 任何一方配合不当都会导致RAD项目失败。 4、这种模型对模块化要求比较高,如果有哪一功能不能被模块化,那么建造RAD所需要的构件就会有问题。 5、技术风险很高的情况下不适合这种模型。 优点: 1、开发速度快,质量有保证。 2、对信息系统特别有效。演化软件过程模型演化模型是迭代的。它的特征是:使软件工程师渐进地开发逐步完善的软件版本。增量模型增量模型融
13、合了线性顺序模型的基本成分(重复的应用)和原型实现的迭代特征。增量模型采用随着日程时间的进展而交错的线性序列。每一个线性序列产生软件的一个可发布的“增量”。当使用增量模型时,第一个增量往往是核心的产品,也就是说第一个增量实现了基本的需求,但很多补充的特征还没有发布。客户对每一个增量的使用和评估,都做为下一个增量发布的新特征和功能。这个过程在每一个增量发布后不断从复,直到产生了最终的完善产品。增量模型强调每一个增量均发布一个可操作的产品。 缺点: 1、至始至终开发者和客户纠缠在一起,直到完全版本出来。 优点: 1、人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一
14、个增量。 2、当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。 3、具有一定的市场。螺旋模型这是一个演化软件过程模型,它将原型实现的迭代特征和线性顺序模型中控制的和系统化的方面结合起来。使得软件的增量版本的快速开发成为可能。在螺旋模型中,软件开发是一系列的增量发布。在每一个迭代中,被开发系统的更加完善的版本逐步产生。螺旋模型被划分为若干框架活动,也称为任务区域。典型地,有3到6个任务区域: 1、客户交流:建立开发者和客户之间有效通信所需要的任务。 2、计划:定义资源、进度、及其它相关项目信息所需要的任务。 3、
15、风险分析:评估技术的及管理的风险所需要的任务。 4、工程:建立应用的一个或多个表示说需要的任务。 5、构造及发布:构造、测试、安装和提供用户支持所需要的任务。 6、客户评估:基于对在工程阶段产生的或在安装阶段实现的软件表示的评估,获得客户反馈所需要的任务。 这是一个相对较新的模型,它的功效还需要经历若干年的使用方能确定下来。 缺点: 1、需要相当的风险分析评估的专门技术,且成功依赖于这种技术。 2、很明显一个大的没有被发现的风险问题,将会导致问题的发生,可能导致演化的方法失去控制。 3、这种模型相对比较新,应用不广泛,其功效需要进一步的验证。 优点: 1、对于大型系统及软件的开发,这种模型是一
16、个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。 并发开发模型这种模型关注于多个任务的并发执行,表示为一系列的主要技术活动、任务及它们的相关状态。并发过程模型是由客户要求、管理决策、评审结果驱动的。该模型不是将软件工程活动限定为一个顺序的事件序列,而是定义了一个活动网络。网络上的每一个活动均可于其它活动同时发生。这种模型可以提供一个项目的当前状态的准确视图。 缺点:暂时无 优点: 1、可用于所有类型的软件开发,而对于客户/服务器结构更加有效。 2、可以随时查阅到开发的状态。基于构件的开发模型面向对象的技术为软件工程的基于构件的过程模型提供了技术框架。面向对象模型强调了类的
17、创建、类的封装了的数据、操纵该数据的算法。一般来讲经过合适的设计和实现,面向对象的类可以在不同的应用及基于计算机的系统的体系结构中复用。基于构件的开发模型融合了螺旋模型的许多特征,它本质上是演化形的,要求软件创建的迭代方法。然而基于构件的开发模型是利用预先包装好的软件构件(有时成为类)来构造应用。 开发活动从候选类的标识开始,这一步是通过检查将被应用系统操纵的数据及用于实现该操纵的算法来完成的。相关的数据和算法被封装成一个类。 缺点: 1、 过分依赖于构件,构件库的质量影响着产品质量。 优点: 1、构件可复用。提高了开发效率。 2、采用了面向对象的技术。形式化方法模型 形式化方法模型包含了一组
18、活动,他们导致了计算机软件的数学规约。形式化方法使得软件工程师们能够通过应用一个严格的数学符号体系来规约、开发、和验证基于计算机的系统。 这种方法的一个变种,称为净室软件工程,已经被一些组织所采用。在开发中使用形式化方法时,它们提供了一种机制,能够消除使用其它软件过程模型难以克服的很多问题。二义性、不完整性、不一致性能被更容易地发现和纠正,而不是通过专门的评审,是通过对应用的数学分析。 形式化方法提供了可以产生无缺陷软件的承诺。 缺点: 1、开发费用昂贵(对开发人员需要多方面的培训),而且需要的时间较长。 2、不能将这种模型作为对客户通信的机制,因为客户对这些数学语言一无所知。 3、目前还不流
19、行。 优点: 1、形式化规约可直接作为程序验证的基础,可以尽早的发现和纠正错误(包括那些其它情况下不能发现的错误)。 2、开发出来的软件具有很高的安全性和健壮性,特别适合安全部门或者软件错误会造成经济损失的开发者。 3、具有开发无缺陷软件的承诺。架构分析与设计总结所谓成功的架构设计,就是设计出的软件架构是高质量的,并且在所花费的时间、技术决策等方面也都满足具体开发情况的要求。在不适当的时候“用时间换完美”会毁掉整个项目;架构设计并非“好的就是成功的”,而是“适合的才是成功的”。那么如何才能进行一个好的合适的架构设计呢。从开发角度,应该有良好的模块化,每个模块职责清晰,模块之间松耦合,模块内部高
20、聚合并合理实现了信息隐藏;从逻辑角度,适应了功能需求的变化,适应了技术的变化。典型地,应该保持应用相关的模块和领域通用模块的分离,技术平台相关模块和独立于具体技术的模块相分离,从而达到“隔离变化”的效果;从运行角度,对系统的动态运行有良好的规划,可以标识出哪些是主动模块,哪些是被动模块,面向对象中往往是主动类和被动类,明确这些模块之间的调用关系和加锁策略,并说明关键的进程、线程、排队、消息等机制;从数据角度,对数据进行了良好的规划,不仅包括数据的持久化存储方案,还可能包括数据传递、数据复制、数据同步等;从物理角度,可以进行明确、灵活的部署规划。还往往涉及到可移植性、可伸缩性、持续可用性和互操作
21、性等大型企业软件特别关注的质量属性的架构策略。当然,仅仅做好这些还是远远不够的,客户不仅关心功能的实现,更关心功能实现的好坏, 5秒打开一个网页和10秒打开一个网页对客户来说意义有时是完全不一样的。很多项目甚至产品功能性的需求都实现了,最后却栽倒在非功能性的需求上。这就要求我们在进行架构设计的时候,要充分的考虑重要的非功能性需求。非功能性需求主要来自于客户,系统维护人员和开发人员以及客户组织,软件设计不仅要达到用户要求的功能,也要达到用户期望的质量。非功能性需求分为质量属性和约束两种,质量属性是软件系统的整体质量品质,往往与大多数功能有关,例如易用性、性能、可伸缩性、持续可用性、鲁棒性、安全性
22、、可扩展性、可重用性、可移植性、易理解性、易测试性等。至于约束,要么是架构设计中必须遵守的原则,例如一些硬件或者软件的限制,要么转化为质量性需求或者功能需求。要想在架构过程中不走弯路,最好的办法就是在架构开始的时候制定架构设计策略,将系统中的功能性需求和非功能性需求完全的罗列出来,架构时优先实现对系统有决定性的功能,软件架构设计应当解决的是全局性的、涉及不同“局部”之间交互的设计问题,而不同“局部”的设计由后续的详细设计负责。这就要求了在设计阶段主要实现的是重要的需求,关键需求决定架构。架构是团队开发的基础,好的架构必须是一再求证、测试、发现瑕疵漏洞,另辟蹊径用其他方法来弥补策略不足,有时甚至
23、得全盘放弃,重新策划。所以软件架构的正确与否直接决定了软件的设计进度和质量。软件架构设计系统整体架构,从需求到设计的每个细节都要考虑到,把握整个项目,使设计的项目尽量效率高,开发容易,维护方便,升级简单。架构定义中指出系统由多种结构构成的,下面列出一些常见的结构。六个质量属性的战术列表:构架设计必须按需求分析进行,但不需要在需求分析完成后在开始构架设计。可以根据特定应用的需求方便地对框架中的抽象和类进行定制,以重用框架的设计和代码。子系统与类分析与设计总结现在我们队软件进行的设计基本上都遵循面向对象的设计原则。面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年
24、代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。一个用户、一种销售策略、一条消息、一张订单、一个Web网页用面向对象思想来看待它们,都可视为一种对象。面向对象思想的精要,在于“一切皆为对象”的本质。对象是一个真实的或抽象的元素,它包含了描述信息的属性以及处理对象信息的行为(方法),对象的属性和行为并非一成不变,根据实际情况,同一种对象具有的属性和行为可能会发生变化。面向对象的特征: (1)封装性:就是合理的隐藏与公开。对象的设计者关注隐藏在内的内容,对象的调用者则需要了解公开在外的接口,封装是有限度的,一个包裹得严严实实的箱子,即使它的空间再宽阔,也没有
25、实用价值。正如房屋的门与窗,就是封装对象暴露在外的接口方法,专门供人出入与流通空气,为房间带来一缕阳光。也就是说,封装既保护了对象的“隐私”,又不至于让对象之间“老死不相往来”。(2)继承性:它是重用和抽象的基础,它在保持对象差异性的同时,共享了对象相似性的重用。继承性是子类自动共享父类数据结构和方法的机制,这是类之间的一种关系。在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容。 继承性是面向对象程序设计语言不同于其它语言的最重要的特点,是其他语言所没有的。在类层次中,子类只继承一个父类的数据结构和方法,则称为单
26、重继承。在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承。在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,这是信息组织与分类的行之有效的方法,它简化了对象、类的创建工作量,增加了代码的可重性。采用继承性,提供了类的规范的等级结构。通过类的继承关系,使公共的特性能够共享,提高了软件的重用性。(3)多态性:软件设计最大的悲哀就是随时可能出现的变化,若要解决变化,就需要在设计时考虑系统的可扩展性。多态,是指对象在不同时刻体现为不同类型的能力,它与对象的抽象与继承相关。多态性使指相同的操作或函数、过程可作用于多种类型的对象上并获得不同的结果。不同的对象,收到同一消息可以产生不
27、同的结果,这种现象称为多态性。多态性允许每个对象以适合自身的方式去响应共同的消息。多态性增强了软件的灵活性和重用性,有机地将封装、继承与抽象结合起来,首先,它利用封装的原理,定义了对象类型;然后,又通过继承保证不同类型之间的关系;至于抽象则提供了对象多态的能力。多态保证了程序的稳定性。由于抽象抹去了具体实现细节的差异,使得调用者不因实现细节的变化而改变原来定义的抽象类型,从而达到了隔离变化的目的。对象的封装、继承与多态保证了对象的高内聚与低耦合,有利于软件模块的可复用,保证了程序的可扩展。使用面向对象的方法家里起来的系统类结构,类与类之间的关系大概可以分为关联、泛化、依赖、聚合、组合这几种。面
28、向对象需要遵循一定的设计原则,如下:(1)单一职责原则:类的职责要单一,不能将太多的职责放在一个类中。(2) 开闭原则:软件实体对扩展是开放的,但对修改是关闭的,即在不修改一个软件实体的基础上去扩展其功能。(3) 里氏代换原则:在软件系统中,一个可以接受基类对象的地方必然可以接受一个子类对象。(4) 依赖倒转原则:要针对抽象层编程,而不要针对具体类编程。(5) 接口隔离原则:使用多个专门的接口来取代一个统一的接口。(6) 合成复用原则:在系统中应该尽量多使用组合和聚合关联关系,尽量少使用甚至不使用继承关系。(7) 迪米特法则:一个软件实体对其他实体的引用越少越好,或者说如果两个类不必彼此直接通
29、信,那么这两个类就不应当发生直接的相互作用,而是通过引入一个第三者发生间接交互。面向对象的好处是采用面向对象思想设计的结构,可读性高,由于继承的存在,即使改变需求,那么维护也只是在局部模块,所以维护起来是非常方便和较低成本的。由于继承、封装、多态的特性,自然设计出高内聚、低耦合的系统结构,使得系统更灵活、更容易扩展,而且成本较低。在设计时,可重用现有的,在以前的项目的领域中已被测试过的类使系统满足业务需求并具有较高的质量,根据设计的需要对现实世界的事物进行抽象,产生类。如果熟悉的掌握面向对象的设计方法并使用这样的方法解决问题,接近于日常生活和自然的思考方式,势必提高软件开发的效率和质量。数据库
30、设计总结数据库设计是信息系统开发和建设的重要组成部分,数据库设计的好与坏将直接影响应用系统的效率及实现的效果。合理的数据库结构设计,可以大大提高数据存储的效率,从而保证数据的完整和一致。对数据库的设计第一步要完成的任务就是详细的分析数据库需求。用户的需求具体表现在各种信息的浏览、保存、更新和查询,这就要求数据库结构能够充分的满足各种信息的输入与输出。收集数据、数据结构以及数据处理的流程,组成一份尽可能详尽的数据字典,可以为后面的具体设计做准备。首先从需求出发构造数据库表,然后再由数据库表结合需求划分系统功能模块。这样,就把一个大的系统分解成几个小的系统,从而使整个系统的功能更加详细易于理解,同
31、时易于实现系统的整体设计。设计好数据项和数据结构之后,就可以开始设计满足用户需求的各种实体,以及他们之间的各种关系,为后面的逻辑结构设计做准备。这些实体包含各种具体的信息,通过相互作用来形成数据的流动。数据库的需求分析和概念设计阶段完成以后,就要着手开始数据库的实际设计了,这个阶段主要是运用各种方法将概念设计阶段列出的所有功能在最简便的情况下实现,同时定义数据库操作语句的规范格式,以便系统可以快速高效的运行。数据库是信息系统的核心和基础,主要负责把信息系统中大量的数据按一定的模型组织起来,提供存储、维护、检索数据的功能,使信息系统可以方便、及时、准确地从数据库中获得所需的信息。数据库是信息系统
32、的各个部分能否紧密地结合在一起以及如何结合的关键所在。数据库设计主要考虑持久类如何存储、存储过程如何定义等问题,是硬件、软件和干件的结合,这就要求数据库设计不是单独行动的,它需要和系统的设计紧密的练习在一起,设计出的数据库是可以方便的进行数据交互的。好的数据库一般有如下几点要求:1. 数据库支持设定的和实时的信息提取。2. 表应当正确、有效地构造。数据库中的每个表都代表一个主题,由一些相关的字段组成,数据的冗余度尽可能小,并且在整个数据库中通过一个具有唯一值的字段表示。 3. 数据的完整性强加在字段、表和关系级。4. 数据库支持与组织机构有关的业务规则。5. 数据库支持未来的增长。数据库设计的
33、最后阶段就是数据库的实施、运行以及维护。前期数据库概念的物理设计如果工作十分到位的话,那么在运行和维护阶段就不会出现太大的需要改正的问题,为数据库的火气服务节省了大量的资源。数据库设计前期必然会遇到各种各样的难以解决的问题,但是只要需求分析和逻辑概念设计阶段奖这些问题解决,那么物理设计阶段和实施阶段就会分厂的轻松而且数据库必定是一个良好的数据库。数据库的设计要求设计人员数据库的基本知识和数据库设计技术、计算机科学的基础知识和程序设计的方法和技巧、软件工程的原理和方法、应用领域的知识。只有详细的了解软件设计的各个方面,才有可能设计出适合系统的数据库。第二部分 实际项目分析软件的主要架构以当前学生
34、成绩管理系统为例一、 用例视图1. 用例图如下2,用例描述图11主要描述了学生成绩管理系统的主要参与者在系统中各自的角色和各自可以进行的操作,明确了每个人的基本权限,任何人员都不可以进行自己权限以外的操作。管理员:管理员参加的操作主要有登录, 打开关闭对系统的操作,录入、查看、修改每个使用人员的信息,查看学生成绩并对学生的成绩进行排名。登陆系统的时候,要选择自己的身份,输入正确的账号和密码登陆进入系统。在不需要开放系统的时候,管理员要将系统关闭, 并对系统进行维护等工作,在期末教师需要录入成绩的时候和开学时学生要查看自己成绩的时候将系统开放使用,让身份为学生和教师的账号也可以进入系统,其他非系
35、统开放时间只有管理员可以进入系统。录入人员信息主要是在学校新生入学的时候和学校招聘新教师的时候将老师和学生的信息录入系统,并为添加的每一个人分配一个登陆账号和密码,不同的身份的人员具有不同的操作权限。例如学生只可以查看自己的成绩和自己的排名,不能够修改添加删除自己或别人的成绩,不能够修改自己的基本信息。老师只能够为自己所教的课程和选择了这门课的学生录入成绩,而不能为别的课程录入信息,不能够修改自己的操作权限和基本信息。在学生毕业并对自己在校的任何信息都没有异议之后,在学生离校以后,老师离职以后将已经录入的老师和学生信息删除,相应的账号和密码将不能够再登陆系统。对出现了错误的账号密码等进行修改,
36、解决学生或老师不能登录系统的问题。 管理员可以查看所有学生的成绩,但是没有权利对学生的成绩进行修改。对学生的成绩按照单科成绩从高到低,总成绩从高到低,按学号顺序给学生成绩进行排名,并把排名结果公布到系统到系统中,每个学生只能够看到自己的排名。教师人员:教师人员参与的操作主要有登录系统,添加、删除、修改、查找学生成绩。登陆系统的时候,要选择自己的身份,输入正确的账号和密码登陆进入系统。教师只能添加删除修改查看自己所教的课程的学生的成绩,在处理完学生的试卷后将相应的学生的成绩录入到系统中去,不能录入不是自己学生的和不是自己教学的学生成绩。在学生对自己的成绩有疑问后查实成绩需要修改的情况下改正学生的
37、成绩,老师可以查看自己所录入的所有信息。老师可以查看自己的个人基本信息。学生:学生可以登录系统,查看自己的个人所有成绩,个人的基本信息。登陆系统的时候,要选择自己的身份,输入正确的账号和密码登陆进入系统。学生只可以参看自己的个人成绩和基本信息,可以查看自己的单科成绩排名和总成绩排名,不能修改自己的成绩和信息。二、 用例描述2.1 登录用例编号:001用例名称:登录用例概述:根据用户登录的身份,系统进入相应的界面,供用户操作。参与者:老师、学生、管理员前置条件:管理员开通了系统,并添加了该用户的基本信息并分配了账号和密码。必须进行身份选择才可进入系统后置条件:1. 登录成功,根据用户类型进入到相
38、应界面。2. 登录失败,返回到登录界面。基本事件流:1.管理员开放了系统,并通知用户;2.用户在允许的时间内进入系统登录界面;3.用户选择自己的身份,填写自己的账号密码,点击“确定”按钮成功的进入系统。扩展事件流:1.提示错误信息,等待用户重新输入;子事件流:在按“确定”按钮前,用户随时可以按“退出”按钮,已经填写的任何信息都不会被系统接收。规则与约束: 必须进行身份选择2.2学生查看成绩用例编号:002用例名称:学生查看成绩用例概述:根据用户登录的身份,系统进入相应的界面,供用户操作。参与者:学生前置条件:管理员开通了系统,管理员录入了改用户的信息并给该用户分配了账号和密码才可进入系统。后置
39、条件:用户进入相应界面,完成自己的操作保存后退出系统。基本事件流:1.管理员通知可查询成绩;2.用户在允许规定时间内进入系统登录界面;3.用户选择自己的身份,填写自己的账号密码,点击“确定”按钮成功的进入系统。4.用户进入系统完成自己的操作,并按“退出”按钮;5.用例终止一切的操作。扩展事件流:1. 成绩空白,老师未录入;2. 学生对成绩有异议;子事件流:无规则与约束: 必须进行身份选择2.3管理员录入信息用例编号:003用例名称:管理员录入信息用例概述:根据用户登录的身份,系统进入相应的界面,供用户操作。参与者:管理员前置条件:管理员开通了系统,管理员录入了改用户的信息并给该用户分配了账号和
40、密码才可进入系统。后置条件:用户进入相应界面,完成自己的操作保存后退出系统。基本事件流:1.管理员选择自己的身份,填写自己的账号密码,点击“确定”按钮成功的进入系统;2.管理员选择录入人员的身份;3.管理员填写有关信息内容后保存,并按“退出”按钮;4.用例终止一切的操作。扩展事件流:1.系统提示必须输入的信息空白,无法保存;子事件流:无规则与约束: 必须进行身份选择2.4教师录入成绩用例编号:004用例名称:教师录入成绩用例概述:根据用户登录的身份,系统进入相应的界面,供用户操作。参与者:管理员前置条件:管理员开通了系统,管理员录入了改用户的信息并给该用户分配了账号和密码才可进入系统。后置条件
41、:用户进入相应界面,完成自己的操作保存后退出系统。基本事件流:1.管理员通知可录入学生成绩;2教师在允许时间内进入系统登录页面;3.教师选择自己的身份,填写自己的账号密码,点击“确定”按钮成功的进入系统;4.教师将学生成绩录入后保存,并按“退出”按钮;5.用例终止一切的操作。扩展事件流:1. 系统提示有误,无法录入学生成绩;2. 学生人数等信息和成绩结果不匹配;子事件流:无规则与约束: 必须进行身份选择三、领域模型与用户字典1. 领域建模图2. 用户字典实 体 名教师说 明学校的一个教师,具有一定的专业研究方向,并从事研究方向有关的教学,按照职务岗位或任务量领取一定的工资。基本属性编号、姓名、
42、级别、职务、当月薪水实 体 名姓名说 明教师的姓名姓名最多8个汉字或16个英文字母从属实体教师实 体 名学生说 明学校某个院系某个班级的组成人员之一,具有一定的学习能力和专业研究方向,在学校需要完成一定的学习任务基本属性学号、姓名、性别、年级、专业方向实 体 名课程说 明某个专业知识的集合体,具有一定的掌握要求。基本属性课程名、学分、成绩四、非功能性需求1. 质量属性性能暂无要求安全性密码安全存储的安全易用性简单易用快捷操作持续可用性程序稳定可伸缩性暂无要求互操作性可更换数据库或存储成标准格式CSV可靠性不易死机测试严格鲁棒性能容忍非法操作易理解性易被开发人员看懂设计文档和代码规范可扩展性能增
43、加功能可重用性系统的类可被重用可测试性易测试可维护性易修改错误、代码易理解可移植性易换平台易换数据库2. 分析后的约束技术C+开发,程序员水平不高平台Win32数据库Csv文件或Access界面风格命令行时间一周其他暂无架构分析部分,概要架构设计1 架构分析:序列图选取关键需求添加学生信息,根据需求中的用例描述,进行系统分析。系统分为三个分析类,界面类、实体类、持久化类。他们之间的交互关系如图1所2 概念架构设计概念架构设计具体如图2所示。学生成绩管理系统主要包括两部分,界面层和实体层。界面层是主要来面对使用者的,主要包括操作页面,页面环境,对话框等。这一页面定义了本系统中所有操作的入口并用来
44、规范和引导使用者进行正确的操作。使用者在界面上对系统中的实体进行一系列允许的操作,但没有权利修改实体层的有关信息。第二部分:架构设计部分,细化架构设计一、逻辑视图2 系统逻辑层次图系统逻辑层次图具体如图3所示。学生成绩管理系统主要分 为两层:界面层和实体层。界面层的主要功能包括:(1)引导使用者对本系统的正确使用,通过简单明了的输入框和按钮将系统的主要功能完全的展现。(2)通过一系列的对话框对使用者的操作进行规范和提醒等。实体层的主要功能包括:实体层主要是在使用者发出请求后将存在的信息调运到显示界面上供使用者查看,将使用者的操作信息等保存。二、开发视图 系统开发环境图系统开发环境图如图4所示。
45、本系统基于Windows操作系统下的VC6.0软件开发工具进行开发,通过创建的系统开发项目工程,最终形成了可以使用的CPP文件,对系统的开发主要分为使用界面的布置和对数据存储方法的设计。界面层主要依赖于MFC的界面开发和对话框等工进行开发和布局的,数据库选用了使用简便的ADO数据库。2 系统开发交互关系视图学生成绩管理系统的系统开发关系试图如图5所示。整个系统开发交互关系图中主要包括了管理员、教师、学生、个人信息、课程五个实体,实体之间的部分关系,定义了实体的一些属性和操作。系统开发交互关系视图中主要描述了系统各个实体,实体操作之间的联系。管理员通过对人员信息的操作和对系统的控制来赋予使用人员
46、进入系统的权利,在对系统的维护过程中对各种数据进行操作,限定各种身份的人员的使用权限,保证数据的安全。教师在管理员赋予教师对系统的使用权限后,可以为自己的课程添加成绩等信息,也可以要求管理严修改自己基本信息中有误的部分。学生通过管理员赋予的权限可以查看自己的基本信息和成绩信息,以及在老师的带领下进行一些课程的学习。三、部署视图学生成绩管理系统的系统部署如图6所示。学生成绩管理系统的系统部署主要包括了计算机部署和数据库部署,两个方面相互独立而又联系紧密,系统的正常有效地运行要求两个方面的部署必须都达到要求系统要求的最低水平。在学生成绩管理系统中,系统主要利用外部环境的架构和使用标准的数据库访问语
47、句来实现数据库的连接和使用,主要在协议的物理层描述软件构件的拓扑结构以及它们之间的通信来实现。图6展示了软件系统如何被安装和执行,特别是在计算机网络环境下。要想在计算机中实现学生成绩管理系统这个项目的正常运行,计算机需要安装 Windows Xp及其以上版本的操作系统、VC+6.0的MFC类库等和数据库服务器之间的交互。在数据库服务器要求上,我们至少要安装有 SQL Server数据库和Windows Server 2003其中的一种正版的服务器操作系统,使用盗版的服务系统可能会对数据产生不可恢复的伤害。对系统的操作要求具有一定的专业技术人员,对计算机常见问题有一定的解决能力,可以完成数据库一
48、般的操作。数据库分析下图主要描述了数据库中主要表之间的关系,以及各表的主要属性,各表通过什么操作来连接。具体如图一。如上图所示,学生成绩管理系统的主要数据实体和联系,具体详细的表示了系统中各实体之间的关系,图中主要包括了教师、课程、学生三个实体,教师和课程之间通过授课连接起来,学生和课程之间通过选课联系起来。教师表主要包括有四个属性:教师工号、姓名、年龄、性别,其中工号是主键。课程表主要有三个属性:课程号、课程名、学分。学生表有四个属性:学号、姓名、性别、年龄。教师教授课程,通过授课和课程表联系起来。学生学习课程,通过选课和课程表联系起来,学生选修了某一门课程,就会产生该课程的成绩,所以选课就
49、有一个属性成绩。数据库关系图根据画出的实体联系图建立的数据库共有五个表:教师表、授课表、课程表、选课表、学生表,并为每一个表确立不同的主键和外键将表联系在一起,具体如图二如图所示,图中共有五个表,表连接关系如图所示。在student表中,主键为sno(学号),通过sno与表Sclass(选课表)想连接,选课表中sno和cno(课程号)联合作为主键,课程表中主键是cno,通过cno与选课表相连接,学生通过选课这一操作选择学习的课程,同时学生学习这门课程就产生本门课程的成绩,成绩属性放在课程表中。教师表中的主键为tno(教师工号),授课表中以tno和cno联合作为主键,教师表和授课表通过tno连接
50、,授课表和课程表通过cno连接,这样五个表中的操作就联合成为一个整体。数据库中各个表之间主要通过主键和外键进行连接,定义主键和外键是要注意悬着的属性具有唯一的标志性。关系模式的基本要求有:元组的每个分量必须是不可分的数据项;数据库中号的数据冗余应尽量小;当对数据进行更新操作时,不能产生更新异常。只要一个关系数据库可以满足以上几条,那么就是一个优秀的数据库。源代码如下:/人员类class Person public: Person(char *Name,char *Sex,int a); void InPutFile(); void OutPutFile(); void display(); c
51、har* name(char *name); char* sex(char *sex); int age(int age);protected:int count; char *Username; char *Usersex; int Userage;Person:Person(char *Name,char *Sex,int a)strcpy(Username,Name);strcpy(Usersex,Sex); Userage=a;char * Person:name(char *name) Username=name; return Username;char * Person:sex(char *sex) Usersex=sex; return Usersex;int Person:age(int age)Userage=age; return Userage;void Person:display() coutsetw(7)Usernameendl; coutsetw(6)Usersexendl; coutsetw(6)Userageendl;/管理员class administrator:public Person public:administrator()strcpy(secret,98765);void Input()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年康复医疗器械市场需求分析产品创新与技术创新趋势报告
- 伺服电机知识培训
- 2025-2030家政服务行业职业培训市场化运作模式研究
- 2025-2030家庭健康监测设备与远程照护服务结合报告
- 2025-2030奢侈品包装情感化设计对消费者决策影响机制
- 2026届陕西省西安三中高二化学第一学期期末统考模拟试题含答案
- 2025年执业药师考试题库大全-附答案
- 2025年医疗器械仓库培训试题有答案
- 2025年推拿学全部练习题含答案
- 2026届广东省梅州市蕉岭中学化学高二第一学期期末统考模拟试题含答案
- 电动门合同协议书
- 烈士陵园、纪念馆AI应用行业深度调研及发展项目商业计划书
- 米村合伙人合同范本
- 船舶拖带协议书
- 2025年房地产市场的变化趋势试题及答案
- 风电场危险源辨识、风险评价和风险控制清单
- 医疗AI算法揭秘如何构建高效的疾病预测模型
- 电商外包客服合同协议
- 糖尿病性黄斑水肿护理查房
- 《铁路建设项目安全穿透式管理实施指南》知识培训
- 企业研究院管理制度
评论
0/150
提交评论