<!-- /* Font Definitions */ @font-face {font-family:宋体; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-alt:SimSun; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:"/@宋体"; panose-1:2 1 6 0 3 1 1 1 1 1; mso-font-charset:134; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-parent:""; margin:0cm; margin-bottom:.0001pt; text-align:justify; text-justify:inter-ideograph; mso-pagination:none; font-size:10.5pt; mso-bidi-font-size:12.0pt; font-family:"Times New Roman"; mso-fareast-font-family:宋体; mso-font-kerning:1.0pt;} /* Page Definitions */ @page {mso-page-border-surround-header:no; mso-page-border-surround-footer:no;} @page Section1 {size:612.0pt 792.0pt; margin:72.0pt 90.0pt 72.0pt 90.0pt; mso-header-margin:36.0pt; mso-footer-margin:36.0pt; mso-paper-source:0;} div.Section1 {page:Section1;} /* List Definitions */ @list l0 {mso-list-id:1205483886; mso-list-type:hybrid; mso-list-template-ids:756721068 -260126534 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} @list l0:level1 {mso-level-start-at:2; mso-level-text:(%1); mso-level-tab-stop:58.5pt; mso-level-number-position:left; margin-left:58.5pt; text-indent:-37.5pt;} @list l0:level2 {mso-level-number-format:alpha-lower; mso-level-text:"%2/)"; mso-level-tab-stop:63.0pt; mso-level-number-position:left; margin-left:63.0pt; text-indent:-21.0pt;} @list l0:level3 {mso-level-number-format:roman-lower; mso-level-tab-stop:84.0pt; mso-level-number-position:right; margin-left:84.0pt; text-indent:-21.0pt;} @list l0:level4 {mso-level-tab-stop:105.0pt; mso-level-number-position:left; margin-left:105.0pt; text-indent:-21.0pt;} ol {margin-bottom:0cm;} ul {margin-bottom:0cm;} -->
( 1 ) 一个软件系统的开发可以从两个方面进行刻画:
一方面:软件开发过程,从软件需求、总体设计、详细设计、代码实现、测试到最终产品的提交,以及后期的软件维护及再开发过程,这方面要求软件开发具有连续性,开发个阶段得到的产品要求在逻辑上相互一致;
另一方面:软件开发过程中所设计的各种资源,它们包括参与开发的各种工作人员、硬件资源和软件资源,这些资源在使用过程中需要进行协调和管理。
正是这两个方面之间的相互作用,形成了完整的软件开发活动。目前软件开发中存在的问题,究其原因,往往是由于在这两个方面上控制不当,或协调不一致造成的。
(2) 软件工程的目的:
要在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统。这里所说的高质量不仅是指错误率低,还包括好用、易用、可移植、易维护等要求。
( 3 ) 抽象:
一般说来,抽象又可以分为过程抽象和数据抽象。
过程抽象是广泛使用的一种抽象形式。任何一个有明确功能的操作都可被使用者作为单个的实体看待,尽管这个操作实际上可能由一系列更低级的操作来完成。在实际应用中,将处理分解成子步骤是对付复杂性的一个基本方法。
数据抽象定义了数据类型和施加于该类型上的操作,并限定了数据类型的值只能通过这些操作来修改和读取。数据抽象是一个强有力的抽象机制,是控制复杂性的一个重要方法。
( 4 )模块:
一般地,对模块的要求是高内聚( cohesion ),低耦合( coupling )。
高内聚:是指在一个模块中应尽量多地汇集逻辑上相关的计算资源。
低耦合:指的是模块之间的相互作用应尽量少。
( 5 )结构化方法和面向对象方法
结构化方法和面向对象方法对现实世界采用了不同的映射方法。
在结构化方法中,现实世界被映射为功能的集合;
在面向对象方法中,现实世界中的实体及其相互关系被映射为对象与对象间的关系,实体之间的相互作用被映射为对象间的消息发送,以及其他类似的各种映射关系。
也就是说,面向对象的模型对现实世界的映射更直观、更有对应关系。
( 6 )类和对象
类是静态的,类的语义和类之间的关系在程序执行前就已经定义好了。
对象是动态的,对象是在程序执行时被创建和删除的。
( 7 )封装( encapsulation )
封装提供了两种保护。首先封装可以保护对象,防止用户直接存取对象的内部细节;其次,封装也保护了客户端,防止对象实现部分的变化可能产生的副作用,即实现部分的改变不会影响到相应客户端的改变。
( 8 )多态
多态属于运行时的问题,而重载是编译时的问题。
( 9 )消息( message )
消息就是向对象发出的服务请求。它包含了提供服务的对象标识、服务标识,输入信息和回答信息等。
面向对象方法的一个原则就是通过消息进行对象之间的通信。消息可以包括同步消息和异步消息,如果消息是异步的,则一个对象发送消息后,就继续自己的活动,不等待消息接收者返回控制,而函数调用往往是同步的,消息的发送者要等待接收者返回。