软件重点_软件重点分析
软件重点由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“软件重点分析”。
软件危机 是指在计算机软件的开发和维护过程中所遇到的一系列严重的问题。
软件危机产生的原因(1)软件不同于硬件,它是计算机系统的逻辑部件而不是物理部件;规模庞大,给软件开发和维护带来了困难。(2)硬件环境发展很快,软件不能适应新环境(3)软件开发技术落后,生产方式和开发工具落后,管理技术不能满足现代软件开发的需要,没有统一的软件质量管理规范。(4)开发和管理人员只重视开发而轻视问题的定义,使软件产品无法满足用户的要求。
软件工程正是从技术和管理两方面来研究如何更好地开发和维护计算机软件的。
软件是计算机程序及其有关的数据和文档的完整集合。即:软件 = 程序+数据+文档 软件工程是计算机科学中的一个重要支。是把软件当作一种工业产品,要求 “采用工程化的原理与方法对软件进行计划、开发和维护 ”。目标:是在规定的时间、规定的开发费用内,开发出满足用户需求的、高质量的软件产
软件工程方法学: 是编制软件的系统方法,它确定软件开发的各个阶段,规定每一阶段的活动、产品、验收的步骤和完成准则。(2)三要素:方法、工具、过程 UML的定义包括UML语义和UML表示法两个部分。
事物(Things)UML模型中最基本的构成元素,是具有代表性的成分的抽象 关系(Relationships)关系把事物紧密联系在一起 图(Diagrams)图是事物和关系的可视化表示
从问题定义开始,经过开发、使用和维护,直到最后被淘汰的整个过程,就是软件的生命周期
一般说来,软件的生命周期从大的方面来划分,可以分为软件定义、软件开发和软件维护三个时期,每个时期又进一步划分成若干个阶段。
软件定义时期该时期通常进一步划分成三个阶段:问题定义、可行性研究和需求分析 软件开发时期 其任务是: 具体设计和实现在前一个时期定义的软件。它通常由下述四个阶段组成:总体设计、详细设计、编码和单元测试、综合测试。其中前两个阶段又称为系统设计,后两个阶段又称为系统实现。
软件维护时期 其任务是: 是使软件持久地满足用户的需要。
软件生命周期划分阶段的原则(1)各阶段的任务彼此间尽可能相对独立;(2)同一阶段的工作任务性质尽可能相同
为了反映软件生命周期中的各种工作应如何组织,以及各个阶段应如何衔接,就形成了软件开发模型(Software Life Cycle Model)软件开发模型是跨越整个软件生命周期的系统开发、运作、维护所实施的全部工作和任务的结构框架。以软件需求完全确定为前提的瀑布模型;(2)在软件开发初期只能提供基本需求时采用的渐进式开发模型,如原型模型、增量模型、螺旋模型;(3)适用于面向对象开发方法的喷泉模型、统一过程;(4)以形式化开发方法为基础的变换模型;(5)基于知识的智能模型。
瀑布模型一般适用于功能、性能明确、完整、无重大变化的软件系统的开发。面向过程程序设计方法、“瀑布”模型的过程设计方法、结构化设计方法、抽象数据类型方法和快速原型方法
采用结构化软件开发技术(传统的面向过程的软件开发方法),包括结构化分析、结构化设计和结构化编程,来完成软件开发任务。
对象现实世界中各种各样的实体。既可以是具体事物,又可以是抽象事物
(1)对象定义:在应用领域中有意义的、与所要解决的问题有关系的任何事物(2)属性:是对象的数据,是对客观世界实体所具有的性质的抽象
(3)操作也称方法,是用来描述对象的动态特征(行为)的一系列操作。既可以自身承受,又可以施加其他对象,对象特点:以数据为核心;主动性;实现了数据封装;本质上具有并行性;模块独立性好
类对具有相同数据和相同操作的一组相似对象的定义
面向对象 是指人们按照自然的思维方式认识客观世界,采用基于对象的概念建立模型,模拟客观世界,从而用来分析、设计和实现软件的技术。
面向对象的特征(1)对象唯一性(2)封装性(3)继承性(4)多态性 面向对象软件开发方法包括: OOA OOD OOP 面向对象分析 面向对象分析的目的是对 客观世界的系统 建立对象模型、动态模型和功能模型。
可行性研究包括经济可行性、技术可行性、法律可行性和操作可行性。
在软件的需求分析阶段,在软件工程发展的几十年中,形成了许多的软件需求分析方法。其中,最为常见的,也就是在软件工程教材上提到的需求分析方法,大概有以下几种:(1)面向数据流的软件需求分析方法,又称为结构化的需求分析方法,简写为SA。(2)面向数据结构的Jackson程序设计方法。(3)面向数据结构的Warnier程序设计方法。(4)面向对象的软件需求分析方法,简写为OOA。
数据流图DFD是SA方法的最基本的工具,是用来描述软件中数据的处理过程的工具。数据流图的作用: 数据流图描述的是系统的逻辑模型。数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程。数据流图的四种基本符号:(1)方框:表示数据的源点和终点,也须在框内注明名字。(2)圆框:表示对数据的加工,框内要注明加工的名字或加工的功能。(3)双杠或单杠:表示存储数据的数据文件或数据库。(4)箭头:表示数据的流向,即数据流。数据流的名称注明在箭头的边上。
采用自顶向下画数据流图的具体步骤:(1)先确定系统范围,画出顶层的DFD图,即系统的输入与输出;
(2)逐层分解顶层DFD,获得若干中间层的DFD图;(3)画出底层的DFD图。画分层DFD时的原则:(1)先全局后局部、先整体后细节、先抽象后具体(即通常分为顶层、中间层、底层);(2)数据流和加工要适当命名;(3)父图与子图的平衡,即子图的输入与输出数据流应该与父图中相应加工的输入与输出数据流一致,即平衡;(4)局部文件,隐含在DFD内部的文件,直到成为子加工之间的界面时,才被画出来;(5)分解的程度,不要一次分得太细,层数也不应太多
数据流图绘制步骤 首先确定系统的输入和输出 根据业务,画出顶层数据流图,以反映最主要业务处理流程
数据字典是描述信息的集合,是对数据流图中出现的所有数据项、数据流、数据存储、加工处理的定义集合 数据字典的作用:1)为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。2)为分析人员查找数据流图中有关名字的详细定义而服务。它和数据流图共同构成了系统的逻辑模型,是需求规格说明书中的重要部分。
一般说来,数据字典应该对下面四类元素进行描述或定义:(1)数据流(2)数据项(3)数据存储(4)加工(即数据处理)
数据流的定义:一般是一组数据,是由许多数据项构成的,是数据项之和。
软件生命周期的三个阶段: 软件计划、软件开发、软件维护,软件计划中的需求分析得到系统的逻辑模型,即:数据流图、数据字典及加工逻辑 其中软件开发又分为软件设计和软件实现
一般认为,软件开发阶段是由设计、编码和测试3个基本活动组成。
模块的独立性是指软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他模模块的关系是简单的。
模块独立性的概念是前面所讲的“模块化”、“抽象”、“信息隐藏”的直接结果。
模块的独立性可以由两个定性标准来度量: 一个是内聚,一个是耦合。耦合:是用于衡量不同模块彼此之间互相依赖(连接)的紧密程度。又称为块间联系。是对软件内部内不同模块之间互联程度的度量。内聚:是指用于衡量一个模块内部各个元素间彼此结合的紧密程度。又称为块内联系。
一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高。相对地,它与其他模块之间的耦合性就会减低,而模块独立性就越强。因此,模块独立性比较强的模块应该是高内聚、低耦合的模块。
模块间的耦合程度对系统的可理解性、可测试性、可靠性和可维护性有非常大的影响。非直接耦合;—(弱耦合)数据耦合; —(弱耦合)特征耦合;—(弱耦合)控制耦合;—(中度耦合)外部耦合;—(较强耦合)公共耦合;—(较强耦合)内容耦合;—(最强耦合)
模块化设计的最终目标,是希望建立模块间耦合尽可能松散的系统。具体地来说,应该采取下述设计原则: 尽量使用数据耦合,少用控制耦合,限制公共环境耦合的范围,完全不用内容耦合偶然内聚;—(低内聚)逻辑内聚;—(低内聚)时间内聚;—(低内聚)过程内聚;—(中度内聚)通信内聚;—(中度内聚)顺序内聚;—(高度内聚)功能内聚;—(高度内聚)
在结构化设计中,模块的划分应该遵循:低耦合、高内聚
信息沿着输入路径进入系统,同时,由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理以后,再沿着输出路径变换成外部形式,离开软件系统。当数据流图具有这些特征时,这种信息流就叫做变换流。这类数据流应该划为一类特殊的数据流,称为事务流。在该图中的加工T称为事务中心,它完成下述任务:(1)接收输入数据(输入数据又称为事务);(2)分析每个事务,以确定它的类型;(3)根据事务类型选取一条活动路径SD方法提出了两种映射的方法——变换映射与事务映射,能把DFD图方便地转换为初始SC图。前者适用于DFD图中的变换型结构,后者适用于DFD图中的事务型结构
判定表是一种二维的表格,常用于描述较复杂的组合条件(与结构化语言相比较)。条件类别:各种条件的定义;操作类别:各种操作的定义;条件的组合及其取值:各种条件的取值及其组合;各种操作条目:在各种条件取值组合下,能够执行的操作。特点:可以处理较复杂的组合条件;缺点:不易理解、不易输入计算机判定表不适合于做通用的设计工具,不能表示顺序结构和循环结构。
软件维护的定义:在软件运行/维护阶段对软件产品所进行的修改就是维护。
?软件维护的内容很广泛,根据要求维护的原因,维护的活动可分为4种:
1、改正性维护
2、适应性维护
3、完善性维护
4、预防性维护
用例(Use Case)是一种描述系统需求的方法,使用用例的方法来描述系统需求的过程就是用例建模。用例模型包括用例图和用例描述。用例图主要由以下模型元素构成:参与者 用例 关联
参与者是在系统之外,透过系统边界与系统进行有意义交互的任何事物。通俗地讲,参与者就是我们所要定义系统的使用者。
用例是一种用来探索需求的技术;确定用例过程中,主要有两个方面的问题1.当分析人员面对具有业务流程的用例时该如何处理;2.面对具有功能分解的用例时如何处理。用例与用例之间的关系有三种:包含、扩展和泛化。用例描述的是系统外部可见的行为,是系统为某一个或几个参与者提供的一段完整的服务。从原则上来讲,用例之间都是并列的,它们之间并不存在着包含从属关系。但是从保证用例模型的可维护性和一致性角度来看,我们可以在用例之间抽象出包含(include)、扩展(extend)和泛化(generalization)这几种关系。
用例图是显示一组用例、参与者以及它们之间关系的图,一个用例模型由若干个用例图来描述
用例是系统、子系统或类和外部的参与者交互的动作序列的说明,包括可选的动作序列和会出现异常的动作序列。用例命名往往采用动宾结构或主谓结构,但最常见的是动宾结构。系统需求一般分功能性需求和非功能性需求,用例只涉及功能性需求。用例之间可以有泛化关系、包含关系和扩展关系等。参与者是指系统以外的、需要使用系统或与系统交互的东西,包括人、事物和系统等。参与者之间可以有泛化关系。
用例的描述是用例的主要部分。用例的描述格式没有一个统一标准,不同的开发机构可以采用自认为适合的格式。用例分析结果的好坏与分析人员的个人经验和领域知识有很大关系。用例模型包括用例图和用例文档(用例描述)。类具有相同属性和服务的一组对象的集合。类为属于它的全部对象提供了统一的抽象描述(属性和服务)。
在UML中,类表示为划分成3个格子的长方形,分别表示类名、属性和操作 一般来说,类之间的关系有:关联、聚合、组合、泛化、依赖等
类的关联关系反映对象之间相互依赖、相互作用的关系。
依赖是指一个类是另一个类的操作的参数类型,关系使用虚线箭头连接两个类,箭头方向是由一个类指向操作参数类,不局限于表示类间关系,其他建模元素,如用例之间、包之间都可使用依赖关系
将具有公共属性的多个类抽象出一个抽象类;泛化关系式一般元素和具体元素之间的一种分类关系。具体元素与一般元素一致,但包含一些额外的信息。用空心三角形的连线表示泛化关系。
聚合是一种特殊形式的关联,指的是整体与部分的关系。通常在定义一个整体类后,再去分析这个整体类的组成结构。从而找出一些组成类,该整体类和组成类之间就形成了聚合关系。例如一个航母编队包括海空母舰、驱护舰艇、舰载飞机及核动力攻击潜艇等。需求描述中“包含”、“组成”、“分为„部分”等词常意味着聚合关系。
组合也表示类之间整体和部分的关系,但是组合关系中部分和整体具有统一的生存期。一旦整体对象不存在,部分对象也将不存在。部分对象与整体对象之间具有共生死的关系。分析类的类型 –实体类:表示系统存储和管理的永久信息
–边界类:表示参与者与系统之间的交互
–控制类:表示系统在运行过程中的业务控制逻辑 顺序图包含了四个元素:1)对象2)生命线3)消息4)激活
浏览顺序图的方法是,从上到下按时间的顺序查看对象之间交互的消息。
活动图(activity diagram)是状态图的一种特殊情况。不需要指明任何事件,只要动作被执行,活动图中的状态就自动开始转换。在活动图中,用例和对象的各个活动之间通常具有时间顺序。活动图表达这种顺序,展示出对象执行某种行为时或者在业务过程中所要经历的各个活动和判定点。每个活动用一个圆角矩形表示,判定点用菱形框表示。
状态图(statechart diagram): 用来描述一个特定的对象所有可能的状态,以及由于各种事件的发生而引起的状态之间的转移和变化
状态图的要素:椭圆或圆角矩形:表示对象的一种状态,椭圆内部填写状态名,箭头:表示从箭头出发的状态可以转换到箭头指向的状态.事件:引起状态转换的原因。事件名可在箭头线上方标出, 条件:事件名后加方括号,括号内写状态转换条件, 实心圆:初始状态,内部实心的同心圆:最终状态
活动图(activity diagram)是UML的动态视图之一,用来描述事物或对象的活动变化流程。活动图的要素 1.活动(Action): 是活动图主要结点,用两边为弧的条形框表示,中间填活动名。
2.活动流(ActionFlow): 描述活动之间的有向关系,反映一个活动向另外一个活动之间的转移。用带箭头的实线表示。
3.分支: 表示活动流的分叉和合并。表示从一个活动按照某种条件转移到几个不同的活动。4.分劈和汇合: 表示并发的同步行为,用同步杆表示。
5.泳道(swimlane): 是活动图中的区域划分,每一个泳道代表一个责任区域。一个泳道中包括一组相关活动。
6.对象流: 反映活动与对象之间的依赖关系,表示对象对活动的作用或活动对对象的影响,用依赖关系表示状态图与活动图的比较 ● 描述对象不同 : 状态图:描述对象状态及状态之间的转移; 活动图:描述从活动到活动的控制流。
● 使用场合不同 : 状态图:描述对象在其生命期中的行为状态变化; 活动图:描述过程的流程变化。
面向对象设计的准则 弱耦合——交互耦合:对象之间的耦合通过消息连接来实现。交互耦合应尽可能松散
继承耦合:是一般化类与特殊类之间耦合的一种形式。应该提高继承耦合程度 强内聚——服务内聚 类内聚 一般-特殊内聚
可重用——重用是提高软件开发生产率和目标系统质量的重要途径。