|
|
|
为了消除软件危机,通过认真研究解决软件危机的方法,人们认识到软件工程是使计算机软件走向科学的途径,逐渐形成了软件工程的概念,并开辟工程学的新兴领域,即软件工程学。
|
|
|
|
|
|
|
(3)过程。将方法和工具综合起来以达到合理、及时地进行计算机软件开发的目的。
|
|
|
|
软件生命周期是指软件产品从考虑其概念开始到该软件产品交付使用,直至最终退役为止的整个过程,包括计划阶段、分析阶段、设计阶段、实现阶段、测试阶段和运行维护阶段。
|
|
|
|
比较经典的软件开发模型有瀑布模型、快速原型模型、演化模型、增量模型、螺旋模型、喷泉模型等。
|
|
|
|
|
(1)结构化软件开发(SASD)方法:采用结构化技术来完成软件开发的各项任务。它把软件生命周期划分成若干个阶段,依次完成每个阶段的任务。它与瀑布模型有很好的结合度,是与其最相适应的软件开发方法。
|
|
|
(2)面向数据结构的软件开发方法:从目标系统的输入、输出数据结构入手,导出程序框架结构,再补充其他细节,从而可得到完整的程序结构图。有Jackson方法和Warnier方法。
|
|
|
(3)面向对象的软件开发方法:随着OOP(面向对象编程)向OOD(面向对象设计)和OOA(面向对象分析)的发展,最终形成面向对象的软件开发方法OMT(Object Modelling Technique)。这是一种自底向上和自顶向下相结合的方法,而且它以对象建模为基础,从而不仅考虑了输入、输出数据结构,实际上也包含了所有对象的数据结构。
|
|
|
(4)基于构件化的开发方法:用预先建立的构件和模板,像"搭积木"一样进行建造。
|
|
|
|
|
(1)任务:①确定软件系统的功能需求和非功能需求;②分析软件系统的数据要求;③导出系统的逻辑模型;④修正项目开发计划;⑤如有必要,可以开发一个原型。
|
|
|
(2)主要工作:①需求获取——确定对目标系统的各方面需求。涉及的主要任务是建立获取用户需求的方法框架,并支持和监控需求获取的过程。②需求分析和综合——对问题进行分析,然后在此基础上整合出解决方案。③编写需求规格说明书——对已确定的需求进行文档化描述,该文档通常称为"软件需求规格说明书"。④需求评审——评审需求分析的正确性、完整性和清晰性。
|
|
|
(3)软件需求规格说明书:需求分析阶段的最后成果,是软件开发的重要文档之一。其作用有三:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。软件需求规格说明书的内容主要包括概述、数据描述、功能描述、性能描述、参考文献和附录等。
|
|
|
|
结构化分析(Structured Analysis, SA)方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解的方法,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。SA方法的分析结果由以下几部分组成:一套分层的数据流图、一本数据词典、一组小说明。
|
|
|
|
数据流图(Data Flow Diagram, DFD)用来描述数据流从输入到输出的变换流程。它以图形的方式描绘数据在系统中流动和处理的过程,它只反映系统必须完成的逻辑功能,所以是一种功能模型。
|
|
|
|
|
|
(1)数据流:由一组固定成分的数据组成,表示数据的流向。
|
|
|
(2)加工:描述了输入数据流到输出数据流之间的变换,也就是输入数据流经过某种处理后变成了输出数据流。
|
|
|
(3)数据存储:用来表示暂时存储的数据,每个数据存储都有一个名字。
|
|
|
(4)外部实体:它是指存在于软件系统之外的人员或组织。
|
|
|
|
数据流图仅描述了系统的"分解",但没有对图中各成分进行说明。数据词典就是用来定义数据流图中的各个成分含义的。
|
|
|
数据字典有4类条目,包括数据流、数据项、数据存储和基本加工。
|
|
|
|
加工逻辑的描述用来说明DFD中的数据加工的细节,表达"做什么",而不是"怎样做"。描述工具有结构化语言、判定表和判定树。
|
|
|
|
从技术角度上讲,软件设计分成体系结构设计、数据设计、接口设计、过程设计4方面的工作。从管理角度上讲,软件设计分为概要设计、详细设计两个阶段。
|
|
|
|
|
(1)模块化:将一个待开发的软件分解成若干个小的简单的部分——模块,每个模块可独立地开发、测试,最后组装成完整的程序。
|
|
|
(2)抽象化:抽象是一种设计技术,抽出事物本质的共同特性而暂不考虑它的细节。
|
|
|
(3)信息隐蔽:将每个程序的成分隐蔽或封装在一个单一的设计模块中,定义每一个模块时尽可能少地显露其内部的处理,可以提高软件的可修改性、可测试性和可移植性。
|
|
|
(4)模块独立:每个模块完成一个相对独立的特定子功能,并且与其他模块之间的联系简单。衡量度量标准有两个:模块间的耦合和模块的内聚度。要想使模块独立性强必须做到高内聚低耦合。
|
|
|
|
结构化设计(SD)方法是一种面向数据流的设计方法,它可以与SA方法链接。
|
|
|
在需求分析阶段,用SA方法产生了数据流图。面向数据流的设计能方便地将DFD转换成程序结构图。DFD中从系统的输入数据流到系统的输出数据流的一连串连续变换形成了一条信息流。DFD的信息流大体上可以分为两种类型,一种是变换流,另一种是事务流。
|
|
|
|
详细设计的任务是为软件结构图中的每一个模块确定实现算法和局部数据结构,用某种选定的表达工具表示算法和数据结构的细节。
|
|
|
|
|
|
|
处理过程设计的关键是用一种合适的表达方法来描述每个模块的执行过程。这种表示方法应该简明、精确,并因此能直接导出用编程语言表示的程序。
|
|
|
.程序流程图。其包括3种基本成分:加工步骤,用方框表示;逻辑条件,用菱形表示;控制流,用箭头表示。
|
|
|
.盒图(N-S图)。在N-S图中,每个处理步骤用一个盒子表示,盒子可以嵌套。盒子只能从上头进入,从下头走出,此外别无其他出入口,所以盒图限制了随意的控制转移,保证了程序的良好结构。
|
|
|
.形式语言。形式语言是用来描述模块具体算法的非正式而比较灵活的语言。形式语言的优点是接近自然语言,所以易于理解。
|
|
|
.决策树。决策树是一种图形工具,适合于描述加工中具有多个策略、每个策略和若干条件有关的逻辑功能。
|
|
|
.决策表。决策表是一种图形工具,呈表形。决策表将比较复杂的决策问题简洁地描述出来。
|
|
|
|
面向数据结构设计是以数据结构作为设计的基础,它根据输入输出数据结构导出程序的结构,适用于规模不大的数据处理系统,Jackson方法是一种典型的面向数据结构的设计方法。
|
|
|
|
用户界面设计是系统与用户之间的接口,也是控制和选择信息输入输出的主要途径。用户界面设计应坚持友好、简便、实用、易于操作的原则。
|
|
|
界面设计包括菜单方式、会话方式、操作提示方式以及操作权限管理方式等。
|
|
|
|
|
|
(1)对象:一组属性以及这组属性上的专用操作的封装体,通常由对象名、属性和操作这3个部分组成。属性表示该对象的状态,用户只能看见对象封装界面上的信息,对象的内部实现对用户是隐蔽的。封装目的是使对象的定义和实现分开。
|
|
|
(2)类:一组具有相同属性和相同操作的对象的集合。一个类中的每个对象都是这个类的一个实例(Instance)。
|
|
|
(3)继承:在某个类的层次关联中不同的类共享属性和操作的一种机制。一个父类可以有多个子类,这些子类都是父类的特例。父类描述了这些子类的公共属性的操作,子类中还可以定义它自己的属性和操作。一个子类只有唯一的一个父类,这种继承称为单一继承。一个子类有多个父类,可以从多个父类中继承特性,这种继承称为多重继承。
|
|
|
(4)消息:对象间通信的手段。一个对象通过向另一个对象发送消息来请求其服务。消息通常包括接收对象名、调用的操作名和适当的参数(如有必要)。消息只告诉接收对象需要完成什么操作,但并不能指示接收者怎样完成操作。消息完全由接收者解释。接收者独立决定采用什么方法来完成所需的操作。
|
|
|
(5)多态性:同一个操作作用于不同的对象可以有不同的解释,产生不同的执行结果。
|
|
|
(6)继承性:是面向对象程序设计语言不同于其他语言的主要特点,是否建立了丰富的类库是衡量一个面向对象程序设计语言成熟与否的重要标志之一。
|
|
|
在面向对象的软件工程中,一个组件(Component)包含了一些协作的类的集合。
|
|
|
|
面向对象方法的基本思想是从现实世界中客观存在的事物出发来构造软件系统。面向对象分析(Object-Oriented Analysis, OOA)的目标是建立待开发软件系统的模型,面向对象设计(Object-Oriented Design, OOD)的目标是定义系统构造蓝图,设计分析模型和实现相应的源代码,在目标代码环境中这种源代码可被执行。
|
|
|
统一建模语言(UML)是面向对象软件的标准化建模语言。UML由3个要素构成:UML的基本构造块、支配这些构造块如何放置在一起的规则和运用于整个语言的一些公共机制。UML的词汇表包含3种构造块:事务、关系和图。事务是对模型中最具代表性的成分的抽象,关系把事务结合在一起,图聚集了相关的事务。
|
|
|
.事务,包括结构事务、行为事务、分组事务和注释事务。
|
|
|
|
.图,包括类图、对象图、用例图、序列图、协作图、状态图、活动图、构件图和部署图。
|
|
|