信息系统
信息系统经过开发商测试、用户验证测试后,即可以正式投入运行。此刻也标志着系统的研制工作已经结束。系统进入使用阶段后,主要任务就是对信息系统进行管理和维护,其任务包括日常运行的管理、运行情况的记录、对系统进行修改和扩充、对系统的运行情况进行检查与评价等。
只有这些工作做好了,才能使信息系统能够如预期目标那样,为管理工作提供所需信息,才能真正符合管理决策的需要。
信息化建设过程中,原有的信息系统不断被功能更强大的新系统所取代,所以需要系统转换,系统转换也就是系统切换与运行,是指以新系统替换旧系统的过程。
系统成本分为固定成本和运行成本。其中设备购置费用、设施费用、软件开发费用属于固定成本,为购置长期使用的资产而发生的成本。而系统切换费用属于系统运行维护费用。
编写和调试工作不能操之过急,不可以匆忙完成,很可能后期会造成重大故障。因此最佳的方式就是将原工作做好断点记录和备份。
文档设计
程序员需要用文档来表述自己的思想,文档设计的要点包括: 1. 编写文档前应先做规划。可以参照有关标准以及成熟产品的案例,先列出文档的纲目。文档内容的逻辑性要强,要让人易于理解。要编写进度计划。编写文档常常不是一次完成的,需要先写出初稿,并经过自己多次修改,再送有关人员修改,待基本定稿后,再送审。
2. 要选择最适合表达某种算法的形式。有些内容适合用文本表示,有些则采用表格更好,有时用图来表示更清晰。
3. 软件产品包括程序和文档。程序与文档要保持一致性,文档上下文也要保持一致性,不能出现矛盾。有时随着程序的不断修改,很难完全同步修改文档,但要求尽量做到同步。起码在对程序修改进行了一个阶段后,就应修改相应的文档。虽然完全同步修改文档的代价有时会太高,大多数人也不会这样做,但总体来说,保持一致性十分重要。反过来,文档不一致会造成理解、使用和维护软件的困难。
4. 要保持良好的文档风格,其重要性等同于保持良好的程序设计风格。 软件工程鼓励开发者按相应的文档模板来编写文档,特别是大型软件企业本身建立了文档规范。利用文档模板,可以减少遗漏,考虑得更全面,文档的质量也更高。但是,许多软件的创新性强,没有相应的模板供参照。此外,即使使用了文档模板,在软件升级时对文档的修改也同样需要做不少工作,减少修改工作量不是采用文档模板的主要原因。
面向对象
面向对象程序设计的实质是选用一种面向对象程序设计语言,采用对象、类及相关概念进行程序设计。
实现一个面向对象程序时,通常首先编写类,类是对对象的抽象, 对象表现为类的实例。每个类可以创建不同个数的实例,也可以不创建实例。
类的实例化包括实例生成和实例消除,在实例化时可以确定实例的初始状态,即初始化。
面向对象方法以客观世界的对象为中心,采用符合人们思维方式的分析和设计思想,分析和设计的结果与客观世界的实际情况比较接近。
在面向对象的系统中,对象是基本的运行时实体,它既包括数据(属性),也包括作用于数据的操作(行为)。
对象之间进行通信的一种构造叫做消息。封装是一种信息隐蔽技术,其目的是使对象的使用者和生产者分离,使对象的定义和实现分开。
一个类定义了一组大体上相似的对象,类所包含的方法和数据描述了这组对象的共同行为和属性。类是对象之上的抽象,对象是类的具体化,是类的实例。
父类(基类,超类),子类(派生类)
面向对象中的类是面向对象方法中最基本的封装单元,决定了现实世界中实体的数据和方法,以及数据和方法是否对外界暴露。
面向对象概念中,子类是父类的特化,子类能够自动获得父类的属性和方法,即继承父类的属性和方法,但子类可以根据实际情况对继承而来的方法进行覆盖或重载,也就是子类和父类的行为不必保持完全地一致。
基类定义了一组对象的共有行为和属性;子类是集成关系中的孩子类,定义了特有的行为和属性;特化关系等价于继承关系,因此子类是基类或超类的特化。
类是对象的模板,类定义了对象共有的属性和方法。类也可以看作是一组对象共有特性的集合,即一个类中的对象拥有相同的属性和方法,一般而言,从一个类可以产生多个对象。
根据类之间继承关系的含义,一个子类对象一定也是一个父类对象,所有使用父类对象的地方,都可以使用子类对象代替。因为子类可以选择改变父类的属性和方法,因此,子类和父类有可能具有完全相同的属性和方法,也有可能不完全相同。
对象
在面向对象方法中,对象是一种概念、抽象或具有状态、行为和标识的事物,对象通常可由对象名、属性和操作三部分组成。每个对象有唯一标识。对象之间的关系表示对象之间的依赖、关联等关系。对象之间进行通信的一种构造叫做消息。
在面向对象系统中,对象是基本的运行时实体,它既包括数据(属性),也包括作用于数据的操作(行为),一个对象把属性和行为封装为一个整体。
对象通常可由对象名、属性和行为三部分组成,但并非必须显式定义对象名。
Peter Coad和Edward Yourdon提出用下面的等式识别面向对象方法:
面向对象=对象(object) +分类(classification) +继承(inheritance) +通过消息的通信(communication with messages)
可以说,采用这4个概念开发的软件系统是面向对象的。
继承,封装,多态,覆盖
继承是父类和子类之间共享数据和方法的机制。这是类之间的一种关系,在定义和实现一个类的时候,可以在一个已经存在的类的基础上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容,即子类比父类更加具体化。
在进行类设计时,有些类之间存在一般和特殊关系,即一些类是某个类的特殊情况,某个类是一些类的一般情况,这就是继承关系。在定义和实现一个类的时候,可以在一个已经存在的类(一般情况)的基础上来进行,把这个已经存在的类所定义的内容作为自己的内容,并加入若干新的内容,即子类比父类更加具体化。一个父类可以有多个子类,这些子类都是父类的特例。子类只能有一个父类,称为单重继承;如果一个类可以有两个或更多个父类,称为多重继承。多态(Polymorphism)是不同的对象收到同一消息可以产生完全不同的结果现象。
封装是 一种信息隐蔽技术,其主要目的是对象的使用者和生产者分离,是对象的定义和实现分开。
面向对象系统中,在收到消息时,对象要予以相应。多态(polymorphism)是不同的对象收到同一消息可以进行不同的响应,产生完全不同的结果,用户可以发送一个通用的消息,而实现细节则由接收对象自行决定,使得对象对同一个消息可以调用不同的方法,即一个对象具有多种形态。
多态的实现受到继承的支持,利用类的层次关系,把具有通用功能的消息存放在高层次,而不同的实现这一功能的行为放在较低层次,在这些低层次上的生成的对象能够给通用消息以不同的响应。
Cardelli和Wegner将多态分为4类:参数多态、包含多态、过载多态和强制多态。
其中参数多态的应用比较广,包含多态在许多语言中都存在,最常见的例子就是子类型化。
过载多态是同一个名字在不同的上线文中所代表的含义。
覆盖是一个名称多个含 义,即同一个方法名称,带有不同的参数个数或类型。交通工具是泛指各类交通工具, 而汽车是一种交通工具,且具有自己的特性。因此,继承关系最适合表达这些类的设计,在继承交通工具的基础上,设计汽车类,添加自己特有的行为,设计出子类。
面向对象的4个基本概念是对象、类、继承和消息传递。对象是面向对象的系统中基本的运行时实体,它既包括数据(属性),也包括作用域数据的操作(行为)。所以,一个对象把数据和行为封装为一个整体。一个类定义了大体上相似的对象。继承是父类和子类之间共享数据和方法的机制。消息是对象之间进行通信的一种构造,消息传递是对象之间的通信机制。
在同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是重复定义,但是在类的继承层次结构中,在不同的层次中可以出现名字相同、参数个数和类型都相同而功能不同的函数。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。重载是在同一类中允许同时存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可,而重置(覆盖)是子类重新定义父类中己经定义的方法,即子类重写父类方法。
多态指的是不同对象对同一消息的不同的响应。主要分为: 参数多态:应用广泛、最纯的多态。 包含多态:同样的操作可用于一个类型及其子类型。包含多态一般需要进行运行时的类型检查。包含多态在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另外一个类型的子类型。 强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。 过载多态:同一个名(操作符﹑函数名)在不同的上下文中有不同的类型。
在面向对象的系统中,对象是基本的运行时实体,它既包括数据(属性),也包括作用于数据的操作(行为)。所以,一个对象把属性和行为封装为一个整体。对象有三种成份:对象标识、属性和方法(或操作)。每个对象都有自己的属性值,表示该对象的状态。对象中的属性只能够通过该对象所提供的操作来存取或修改。操作也称为方法或服务,它规定了对象的行为,表示对象所提供的服务。
在面向对象开发方法中,继承是父类和子类之间共享数据和方法的机制。在定义和实现一个类的时候,可以在一个己经存在的类的基础上来进行,即继承己有类,把已有类所定义的内容作为自己的内容,并加入若干新的内容。类Derived是类Base的一个子类,则在Derived中除Base中的属性和方法外,还可以添加新属性和新方法。
类是对象的模板,定义了对象共有的属性和方法。由一个类所生成的对象一定具有相同的属性和操作,类生成对象的属性所含有的数据可能相同也可能不同,但其操作一定是相同的。生成的一组对象可通过类范围的数据成员共享数据,例如C++或java语言中的类静态变量。
类是对象的模板,类可以看作是一组共有特性的对象集合,即一个类中的对象拥有相同的属性和方法。一般而言,一个类可以产生多个对象。但是,在特殊情况下,一个类可以没有对象,如静态类的概念;一个类可以有且仅有一个对象,如单例模式下的类。
面向对象系统中,在收到消息时,对象要予以相应。多态(polymorphism)是不同的对象收到同一消息可以进行不同的响应,产生完全不同的结果,用户可以发送一个通用的消息,而实现细节则由接收对象自行决定,使得对象对同一个消息可以调用不同的方法,即一个对象具有多种形态。多态的实现受到继承的支持,利用类的层次关系,把具有通用功能的消息存放在高层次,而不同的实现这一功能的行为放在较低层次,在这些低层次上的生成的对象能够给通用消息以不同的响应。 Cardelli和Wegner将多态分为4类:参数多态、包含多态、过载多态和强制多态。其中参数多态的应用比较广,包含多态在许多语言中都存在,最常见的例子就是子类型化。过载多态是同一个名字在不同的上线文中所代表的含义。
在同一类中是不能定义两个名字相同、参数个数和类型都相同的函数的,否则就是重复定义,但是在类的继承层次结构中,在不同的层次中可以出现名字相同、参数个数和类型都相同而功能不同的函数。虚函数的作用是允许在派生类中重新定义与基类同名的函数,并且可以通过基类指针或引用来访问基类和派生类中的同名函数。重载是在同一类中允许同时存在一个以上的同名方法,只要这些方法的参数个数或类型不同即可,而重置(覆盖)是子类重新定义父类中己经定义的方法,即子类重写父类方法。
多态指的是不同对象对同一消息的不同的响应。主要分为: 参数多态:应用广泛、最纯的多态。 包含多态:同样的操作可用于一个类型及其子类型。包含多态一般需要进行运行时的类型检查。包含多态在许多语言中都存在,最常见的例子就是子类型化,即一个类型是另外一个类型的子类型。 强制多态:编译程序通过语义操作,把操作对象的类型强行加以变换,以符合函数或操作符的要求。
过载多态:同一个名(操作符﹑函数名)在不同的上下文中有不同的类型。在面向对象的系统中,对象是基本的运行时实体,它既包括数据(属性),也包括作用于数据的操作(行为)。所以,一个对象把属性和行为封装为一个整体。
对象有三种成份:对象标识、属性和方法(或操作)。每个对象都有自己的属性值,表示该对象的状态。对象中的属性只能够通过该对象所提供的操作来存取或修改。操作也称为方法或服务,它规定了对象的行为,表示对象所提供的服务。
UML是一种能够表达软件设计中动态和静态信息的可视化统一建模语言,
由三个要素构成:UML的基本构造块、支配这些构造块如何放置在一起的规则以及用于整个语言的公共机制。
UML的词汇表包含三种构造块:事物、关系和图。 事物是对模型中最具有代表性的成分的抽象,分为结构事物、行为事物、分组事物和注释事物。
结构事物通常是模型的静态部分,是UML模型中的名词,描述概念或物理元素,包括类、接口、协作、用例、主动类、构件和节点。
行为事物是模型中的动态部分,描述了跨越时间和空间的行为,包括交互和状态机。
分组事物是一些由模型分解成为组织部分,最主要的是包。
注释事物用来描述、说明和标注模型的任何元素,主要是注解。
UML2.0中提供了多种图形。
对象图展现了一组对象以及它们之间的关系。对象图描述了在类图中所建立的事物的实例的静态快照。
类图展现了一组对象、接口、协作和它们之间的关系。
用例图展现了一组用例、参与者以及它们之间的关系,描述了谁将使 用系统以及用户期望以什么方式与系统交互。
序列图是场景的图形化表示,描述了在一 个用例或操作的执行过程中以时间顺序组织的对象之间的交互活动。
将进程或其他计算的结构展示为计算内部一步步的控制流和数据流,主要用来描述系统的动态视图。
活动图在本质上是一种流程图。活动图着重表现从一个活动到另一个活动的控制流,是内部处理驱动的流程。