﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-生活源于奋斗不息 - 不在能知而在能行!!-随笔分类-软件工程</title><link>http://www.blogjava.net/site120/category/18062.html</link><description>&lt;span style="position:relative"&gt;
&lt;span  style="font-size:12px; color:#006699;position:absolute;left:100px; top:10px"&gt;机遇与挑战并存 (&lt;script type="text/javascript" src="http://fastonlineusers.com/on4.php?d=http://www.blogjava.net/site120"&gt;&lt;/script&gt;
)&lt;/span&gt;
&lt;/span&gt;</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 23:02:51 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 23:02:51 GMT</pubDate><ttl>60</ttl><item><title>如何明确，完整地描述一个系统 , 欢迎大家一起讨论</title><link>http://www.blogjava.net/site120/archive/2007/01/31/96822.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Tue, 30 Jan 2007 16:54:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2007/01/31/96822.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/96822.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2007/01/31/96822.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/96822.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/96822.html</trackback:ping><description><![CDATA[如题，应该从哪些角度去看待这个系统呢？<br /><br />１，从系统功能角度去看，应该有哪几大功能，或者子系统，通过功能结构图可以描述<br />２，数据流动过程来看，每一个功能，他都应该有一个流程图，数据从哪开始，流经过哪，怎么处理，最终流到哪里....等等.<br /><font color="#808080"><font color="#000000">３，ＥＲ图，就是在数据库设计中的<strong>实体Entity  关系Relative图，与ＵＭＬ有点相像</strong></font><br /></font><br />在黑盒测试时，应该了解这些，　先从功能入手，细化每一个功能，最终的每个功能都应该有相应的操作流程.　之后遍历这些流程.　这样，思路就应该比较清晰.<br /><strong><font color="#ff1493">功能是横向，流程是纵向</font></strong>.　这有点像时序图，几个功能一排，某个功能的具体操作流程，可能会与其它功能打交道.　其它功能处理完之后，又回到原功能流程中的某一步继续执行......<br /><br /><font color="#000000"><strong><u>这就是面向过程开发　－－－－－＞　ＯＰＰ</u></strong><br />这个方法，虽然可以设计并实现出一个系统，但随着系统庞大，复杂，这样处理起来将会越来越复杂.<br />OO的出现将大大降低这个复杂度，提高灵活度，安全性<br />尤其是<strong>封装 , 多态 , 通过面向接口编程，也大大降低偶合度.<br />之后利用现成的开源框架，分层处理,如:<br /><br /></strong>针对Web应用来说有:<br /><strong>Ｗeb层/View层 -----(将请求封装为对象)--&gt;  控制层 -----&gt;  权限拦截层  ----&gt; 业务层 -----&gt; 持久层 ---------(ORMapping)----&gt; 数据库<br /></strong>每层各尽其职, 不涉及跨层操作, 只认接口,下层向上层提供操作接口, <br />就像ISO/OSI七层模型一样<br /><strong>应用层 --&gt; 表示层 ---&gt; 会话层 ---&gt; 传输层 ---&gt; 网络层 ---&gt; 数据链路层 ---&gt; 物理层 , <br /></strong>底层向上层接口服务接口<br /><br />不过通过比较,发现, <strong>这个分层图对应于OPP当中的数据流程图</strong> , 也可以说定了一个标准,一个框架, 具体的业务逻辑,可以在业务层中有不同的操作<br /><br />但从中可以发现, 不论是面向对象 , 还是面向过程 , 总体的设计应该还是 <strong><font color="#ff1493">功能是横向，流程是纵向<br /></font></strong><br />起了个头,这里面所讲得都是我的理解过程,  并非一定正确, 欢迎大家一块讨论.<br /></font><img src ="http://www.blogjava.net/site120/aggbug/96822.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2007-01-31 00:54 <a href="http://www.blogjava.net/site120/archive/2007/01/31/96822.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[UML基础与Rose建模]-----读书笔记.面向对象</title><link>http://www.blogjava.net/site120/archive/2007/01/06/85914.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Sat, 06 Jan 2007 04:34:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2007/01/06/85914.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/85914.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2007/01/06/85914.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/85914.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/85914.html</trackback:ping><description><![CDATA[
		<p>面向对象方法使用对象,类,继承,封装等一些核心元素进行程序设计.客观实体与实体之间的联系构成了现实世界的所有问题.面向对象技术通过将客观实体抽象成对象的方法，尽可能地利用人类自然的思维方式构造软件系统</p>
		<ol>
				<li>面向对象技术概述 
<ol><li>面向对象的基本概念 
<ol><li>基本观点 
<ol><li>客观世界由对象组成，任何客观实体都是对象，复杂对象可以由简单对象组成 
</li><li>具有相同数据和操作的对象可以归纳成类，对象是类的一个实例 
</li><li>类可以派生出子类，子类除了继承父类的全部特性外还可以有自己的特性 
</li><li>对象之间的联系通过消息传递来维系。由于类的封装性，它具有某些外界不可见的数据，这些数据只能通过消息请求调用可见方法来访问 
</li><li>面向对象的基本出发点就是<u><font color="#ff0000">尽可能地按照人类认识世界的方法和思维方式来分析和解决问题</font></u>，使人们分析，设计一个系统的方法尽可能接近认识一个系统的方法 </li></ol></li><li>对象 
<ol><li>客观世界里面的任何实体都可以被称之为对象 
</li><li>对象可以是有形的物，如汽车，飞机 
</li><li>也可以是无形的事物与概念，如事件，规则，计划，活动等等 
</li><li>复杂的对象可由相对比较简单的对象以某种方式组成，甚至整个世界也可以从一些最原始的对象开始，层层组合而成。 
</li><li>对象在软件生命周期当中的各个阶段可能有不同的表示形式。 
<ol><li>如：在分析与设计阶段，对象表现为某种OOA／OOD方法给出的粗略定义 
</li><li>而在编程阶段表现为一种程序设计语言写出的详细而明确的源程序代码 </li></ol></li><li>如一台收音机对象的实例： 
<ol><li>整个收音机封装也如下行为 
<ol><li>调节声音 
</li><li>关闭 
</li><li>打开 
</li><li>调节频道 
</li><li>... </li></ol></li><li>同时也封装了内部状态 
<ol><li>音量 
</li><li>频道 
</li><li>打开还是关闭 
</li><li>.... </li></ol></li><li>这些状态值可以，也只能通过上面的行为来得以改变。 </li></ol></li></ol></li><li>封装 
<ol><li>封装也是面向对象的一个重要原则 
</li><li>封装指把状态与行为，属性与操作， 数据与方法封装到一个对象里面。它的内部信息对外隐藏，不允许外界直接修改对象的属性，只能通过对象提供的有限的接口来对对象的属性数据进行修改，操作。 
</li><li>对于外界而言，只能知晓对象的外部行为而无法了解对象内部实现细节，这样可以保证对象内部状态，属性，数据的安全性 
</li><li>总的来讲，封装有两层含义 
<ol><li>结合性 
<ol><li>将对象的全部属性与方法结合起来，形成一个独立的不可分割的单位 </li></ol></li><li>信息隐蔽性 
<ol><li>即尽可能的隐蔽对象内部细节，对外形成了一个边界，只保留有限的对外接口使这与外部发生联系 </li></ol></li></ol></li><li>封装的基本单位是对象 
<ol><li>如：一块集成电路被封装起来，其内部电路是不可见的。 
</li><li>集成电路的使用者只关心芯片引脚的个数，引脚的电气参数以及引脚所提供的功能 
</li><li>通过这些引脚，使用者对这个电路芯片的功能就有大致的了解，便可以使用这块芯片组装成具有一定功能的产品 </li></ol></li><li>封装的目的在于将对象的使用者与设计制造者分离，使用者不必知道行为实际的细节，只需向这个对象发送相应的消息访问访对象即可。 
</li><li>将定义模块（即使用模块）与实现模块分开（<font color="#808080">可参考“开闭原则.面向接口编程”</font>），可以大大提高软件的可维护性，可修改性。 </li></ol></li><li>消息 
<ol><li>对象通过对外提供的服务在系统中发挥自己的作用 
</li><li>当系统中其它对象请求该对象执行某个服务时，些对象就响应这个服务以完成服务所需求的职责 
</li><li>消息就是面向对象发出的请求，一个消息包含 
<ol><li>消息名 
</li><li>接收对象的标志 
</li><li>服务标志 
</li><li>输入信息 
</li><li>回答信息 </li></ol></li><li>当一个消息发送给某个对象时，包含要求接收对象去执行某些活动的信息 。接收到消息的对象经过解释，然后予以响应。这种通信机制叫做消息传递。 
</li><li>面向对象技术的封装机制使得对象相互独立，各个对象要相互协作实现系统的功能就少不了消息传递机制。 
</li><li>某一个对象在执行相应的处理时，如果需要，它可以通过传递消息请求其它对象完成某些处理工作或者回答某些信息，其它对象在执行所要求的处理活动时，同样也可以通过传递消息与另的对象取得联系。 
</li><li>在对象传递消中只包含发送者的要求，它指示接收者需要完成哪些处理，但并不告诉接收者应该如何完成这些处理，接收者接收到消息后要独立决定采用什么方式完成所需的处理。 
</li><li>一个对象能够接收多种形式，内容不同的消息，相同形式的消息可以送往不同的对象，不同的对象对于形式相同 的消息可以有不同的解释，做出不同的响应。 </li></ol></li><li>类 
<ol><li>类是一组具有相同的数据结构和相同的操作的对象的集合。类是对象的抽象，它将一组属性和在数据上的一组合法操作抽象封装。 
</li><li>类好比是对象模板，模型，基于类就可以生成多个具有不同属性值的对象，在类的定义当中，可以为某个属性指定一个值，作为它的默认值。 </li></ol></li><li>继承 
<ol><li>继承指子类<strong>可以拥有父类的全部属性与操作</strong></li><li>这个使用已存在的定义作为基础建立新定义的技术使用父类与子类之间能够共享数据与方法 
</li><li>在现实世界建模时，可以根据事物的共性抽象出一批基类，在基类的基础之上，事物可以根据个性添加<strong>自己的</strong>属性与操作，抽象出新的对象类。 
</li><li>这些新类既有基类的全部属性与操作，又有自己的属性与操作，被称之为基类的子类或者派生类，基类被称之为父类或者超类。这种产生子类的方法叫继承 
</li><li>继承又可以分为两种： 
<ol><li>单重继承 
<ol><li>一个子类只能有一个父类 
</li><li>这种继承链最终关系结构是一棵自顶向下的树，顶部表示根基类，一直向下发展，延伸 </li></ol></li><li>多生继承 
<ol><li>一个子类有多于一个的父类 
</li><li>这种继承链最终关系结构是图 </li></ol></li></ol></li><li>继承简化了世界的描述，定义子类时不必重复定义那些在父类中已经定义过的属性与操作，而只需专注于自己特有的属性与操作 </li></ol></li><li>多态性 
<ol><li>多态性是面向对象技术的一个重要概念。 
</li><li><strong>同一个操作</strong>作用于不同的对象，可以有不同的解释，产生不同的执行结果。这就是多态。 
</li><li>多态性通常通过重载基类的方法来实现 
</li><li>多态性可以分为两种 
<ol><li>编译时的多态。 
<ol><li>编译时的多态性是通过重载来实现的，系统在编译时，根据传递的参数信息决定实现何种操作。 </li></ol></li><li>运行时多态 
<ol><li>运行时的多态就是指到系统运行时，才根据实现情况决定实现何种操作 </li></ol></li></ol></li><li>多态大致有以下3种实现方式 
<ol><li>通过接口实现多态。 
</li><li>通过继承实现多态。主要是重写基类的操作以提供不同的实现 
</li><li>通过抽象类实现多态 
<ol><li>抽象类为多态的实现提供了极大的灵活性 
</li><li>因为它同时提供继承和接口的元素。 </li></ol></li></ol></li><li>结构与连接 
<ol><li>为了使系统能够有效地映射问题域，系统开发者需认识并描述对象之间的以下几种关系 
<ol><li>对象的分类关系 
</li><li>对象之间的组成关系 
</li><li>对象属性之间的静态联系 
</li><li>对象行为之间的动态联系 </li></ol></li><li>面向对象方法分别利用 
<ol><li>一般／特殊结构 
</li><li>整体／部分结构 
</li><li>实例连接／消息连接，来描述对象之间的上述四种关系 </li></ol></li><li>一般／特殊结构： 
<ol><li>又称为分类结构，是一组由一般／特殊关系的类所组成的结构 
</li><li>它是以一个类为节点，以继承关系为边的连通有向图， 
<ol><li>由仅存在单继承的类构成的结构称为层次图。层次图是一种树形图 
</li><li>由存在多继承的类构成的结构称为网络图，网络图是一个网状结构。 </li></ol></li></ol></li><li>整体／部分结构 
<ol><li>又称为组装结构，如组装电脑一样。 </li></ol></li><li>实例连接 
<ol><li>实例连接反映了对象与对象间的静态关系。 </li></ol></li><li>消息连接 
<ol><li>消息连接描述对象之间的动态联系。 
<ol><li>若一个对象在执行服务时需要通过消息请求其它对象为它完成某个服务，则表明第一个对象与第 二个对象之间存在着消息连接 
</li><li>消息连接是有向的，从消息发送者指向消息接收者。 </li></ol></li></ol></li></ol></li></ol></li></ol></li><li>面向对象的开发语言 
<ol><li>面向对象的软件开发不仅限于编码，还包括系统前期分析与设计， 
</li><li>这里所说的设计就是第1</li></ol></li><li>面向对象的分析设计与开发工具 </li></ol></li>
		</ol>
<img src ="http://www.blogjava.net/site120/aggbug/85914.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2007-01-06 12:34 <a href="http://www.blogjava.net/site120/archive/2007/01/06/85914.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[UML基础与Rose建模]-----读书笔记.建模四原则与面向对象建模</title><link>http://www.blogjava.net/site120/archive/2006/12/06/85774.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Wed, 06 Dec 2006 02:53:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2006/12/06/85774.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/85774.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2006/12/06/85774.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/85774.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/85774.html</trackback:ping><description><![CDATA[
		<ol>
				<li>在工程学科中，对模型的使用有着相当悠久的历史，人们从中总结出4条基本的建模原则 
<ol><li>选择什么样的模型对如何发现和解决问题具有重要的影响. 
<ol><li>认真选择模型，正确的模型有助于提高开发者的洞察力，指导开发者找到主要的问题 
</li><li>而错误的模型会误导开发者将注意力集中在不相关的问题上面． </li></ol></li><li>每个模型可以有多种表达式，从多个方面，多个角度来看待这个系统． 
<ol><li>正如你正在建一幢高楼 
</li><li>有时你需要设计一张俯视图，以使参观者有一个很直观地印象 
</li><li>有时你又需要认真考虑最低层的设计，例如辅设自来水管或者电线 </li></ol></li><li>最好的模型总是能够切全实际的. 
<ol><li>一幢高楼的物理模型如果只有有限的几个数据，那么它不可能真实地反映现实的建筑 
</li><li>一架飞机的数学模型如果只考虑理想的飞行条件和良好的制造技术，那么很可能掩盖真实飞行中的致使缺陷 
</li><li>避免以上情况的最好办法就是让模型与现实紧密联系.所有的模型都是简化的现实.关键的问题是必须保证简化过程不会掩盖任何重要的细节 
</li><li>孤立的模型是不完整的. 
<ol><li>任何好的系统都是由一些几乎独立的模型拼凑出来的. 
</li><li>就象建造一幢房子一样，没有一张设计图可以包括所有的细节. 
</li><li>至少楼层平面图，电线设计图，取暖设备设计图，管道设计图是需要的. 
</li><li>这里所说的＂几乎独立＂指的是每一个模型可以分开来建立与研究 
</li><li>但它们是相互联系的.电线设计图可以独立存在，但是在楼层平面图当中甚至是管道图中仍然可以看到电线的存在 </li></ol></li></ol></li></ol></li>
				<li>面向对象建模 
<ol><li>在软件行业当中，最常用是方法是： 
<ol><li>基于算法方法建模 
<ol><li>主要的模块是程序或者是函数 
</li><li>注意力集中在控制流与将庞大的算法拆分成各个小块 </li></ol></li><li>面向对象建模 
<ol><li>主要模块是对象与类. 
</li><li>对象通常是问题字典或者方法字典中抽象出来的. 
</li><li>类是一组具有共同特点的对象的描述 </li></ol></li></ol></li></ol></li>
		</ol>
		<p> </p>
<img src ="http://www.blogjava.net/site120/aggbug/85774.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2006-12-06 10:53 <a href="http://www.blogjava.net/site120/archive/2006/12/06/85774.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[UML基础与Rose建模]-----读书笔记.建模</title><link>http://www.blogjava.net/site120/archive/2006/12/06/85759.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Wed, 06 Dec 2006 02:26:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2006/12/06/85759.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/85759.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2006/12/06/85759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/85759.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/85759.html</trackback:ping><description><![CDATA[
		<p>一,目的</p>
		<ol>
				<li>满足用户及项目需要才是最根本的目标 
</li>
				<li>为了保证软件满足需求,开发组织必须要深入到使用者的中间了解系统的真实需求 
</li>
				<li>为了开发具有持久质量保证的软件,开发组织必须建立一个富有弹性,稳固的结构基础 
</li>
				<li>为了加速,高效地开发软件并使无用和重复开发最小化,开发组织必须具有精干的开发人员,正确的开发工具及合适的开发重点 
</li>
				<li>为了达到以上目标,在对系统生存周期正确估计的基础之上,开发组织必须具有能够适应商业和技术需求变化的健全的开发步骤 
</li>
				<li>建模是所有建造优质软件活动的中心一环 </li>
		</ol>
		<p>二,建模的重要性</p>
		<ol>
				<li>揭示建模重要性的例子 
<ol><li>盖狗窝 
<ol><li>最终目的:为狗建造一个能够遮风挡雨的窝. 
</li><li>所需材料:一堆木材,一些钉子,一把锤子,一把木锯,一把尺子 
</li><li> 只需一个人稍微计划一下,在几个钟头之内,就可以盖好一个狗窝 </li></ol></li><li>盖房子 
<ol><li>最终目的: 建造一个自己家人能够居住的房子 
</li><li>所需材料:一堆木材,一些钉子,一些砖,石头,钢筋,石灰,混泥土,铁丝,尺子,一些基本工具 
</li><li>在这种情况下,会占用你很长时间,因为家庭成员的要求肯定比狗高出很多. 
</li><li>要在打地基之前好好规划一下 
<ol><li>设计一幅草图 
</li><li>针对要求高质量的房屋,需要画几张蓝图 
</li><li>考虑各房间的用途及照明取暖设备的布局 
</li><li>做好以上工作之后,可以对建设时间,及材料作出合理的估计. 
</li><li>尽管一个人的能力可以独自盖一座房子,但你会发现与其它人合作会更有效率. 
</li><li>只要坚持计划并且不超过时间及财政的限制,建造计划就成功了一多半 </li></ol></li></ol></li><li>盖写字楼 
<ol><li>最终目的: 给投资人盖一个写字楼 
</li><li>那刚刚开始就准备好材料和工具就是无比愚蠢的行为.因为你可能正在使用其它人的钱,而他们将决定建筑物的大小,形状,样式.通常情况下,他们甚至会在开工之后改变他们的想法,需要你做额外的计划,因为失败的代价巨大 
</li><li>你可能只是很多工作组之一,所以你的团队需要各种各样的图纸和模型同其它小组进行沟通. 
</li><li>只要人员,工具,材料配置得当,按照计划施工,肯定会交付令人满意的工作. </li></ol></li></ol></li>
				<li>软件的建模 
<ol><li>软件的开发类似于上面所讲的例子 
</li><li>当软件开发象盖房子与写字楼一样的时候,问题就不仅仅是写代码,而是怎么样写正确的代码和怎么样少写代码. 
</li><li>这就使得质量的软件开发成了一个<strong>结构(架构),过程(规范化,项目管理),工具</strong>相结合的问题. 
</li><li>所以如果没有对结构,过程,工具加以考虑,所造成的失败是惨重的. 
</li><li>失败的软件项目都有其特殊的原因,但成功的项目在许多方面都相似的, 
</li><li>软件组织获得成功的因素有很多,但一个基本的因素就是<strong>对建模的使用</strong>. </li></ol></li>
				<li>模型的实质 
<ol><li>模型就是对现实的简化,模拟 
</li><li>模型提供系统的蓝图,包含细节设计,也包含对系统的总体设计 
</li><li>一个好的模型包括重要的因素,而忽略不相干的细节. 
</li><li>每一个系统可以从不同的方面使用不同的模型来描述 
</li><li>因此每个模型都是对系统从主义上近似的抽象. 
</li><li>模型可以是结构的,侧重于系统的组织 , 可以是行为的,侧重于系统的动作 </li></ol></li>
				<li>建模的目标 
<ol><li>便于开发人员展现系统 
</li><li>允许开发人员指定系统的结构或者行为 
</li><li>提供指导开发构造系统的模板 
</li><li>记录开发人员的决策 
</li><li>通过建模,可以使人们将注意力集中在一点,使得问题变得容易,这就是"<strong>分而治之</strong>"的方法:将问题分割成一系列可以解决的，较小的问题，来解决复杂的问题 </li></ol></li>
				<li>通用的建模语言的必要性 </li>
				<ol>
						<li>如果不建立模型，那么失败的可能性与项目的复杂度成正比</li>
						<li>团队可以使用ＣＲＣ（类，责任，协作者模型）来验证设计的可行性．</li>
						<li>模型本身没有任何错误，只要有用就尽可能的使用．但是这种不正规的模型通常情况下很难被其他开发者所共享，因为太具有个性色彩.所以：<strong>通用建模语言的存在成为必然．</strong></li>
				</ol>
		</ol>
<img src ="http://www.blogjava.net/site120/aggbug/85759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2006-12-06 10:26 <a href="http://www.blogjava.net/site120/archive/2006/12/06/85759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[UML基础与Rose建模]-----读书笔记.软件工程</title><link>http://www.blogjava.net/site120/archive/2006/12/05/85715.html</link><dc:creator>姜利阳</dc:creator><author>姜利阳</author><pubDate>Tue, 05 Dec 2006 15:41:00 GMT</pubDate><guid>http://www.blogjava.net/site120/archive/2006/12/05/85715.html</guid><wfw:comment>http://www.blogjava.net/site120/comments/85715.html</wfw:comment><comments>http://www.blogjava.net/site120/archive/2006/12/05/85715.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/site120/comments/commentRss/85715.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/site120/services/trackbacks/85715.html</trackback:ping><description><![CDATA[
		<ol>
				<li>
						<font size="2">软件危机的出现原因:</font>
						<ol>
								<li>
										<font size="2">软件规模的急剧膨胀</font>
								</li>
								<li>
										<font size="2">软件需求的日趋复杂</font>
								</li>
								<li>
										<font size="2">软件维护的难度越来越大</font>
								</li>
								<li>
										<font size="2">开发成本速度增长</font>
								</li>
								<li>
										<font size="2">因此而失败的项目比比皆是</font>
								</li>
						</ol>
				</li>
				<li>
						<font size="2">概括来讲,</font>
						<ol>
								<li>
										<font size="2">如何开发软件,以满足不断增长的,日趋复杂的要求</font>
								</li>
								<li>
										<font size="2">如何维护规模不断庞大的软件产品.</font>
								</li>
						</ol>
				</li>
				<li>
						<font size="2">"软件危机"的出现使得人们开始对软件开发的方法进行重新审视。人们意识到，优秀的程序除了功能正确，性能优良之外，还应该易读，易用，易维护。</font>
				</li>
				<li>
						<font size="2">1968年，在一次讨论与摆脱“软件危机”为主题的国际学术会议上第一次提出了“软件工程(Software Engineering)”概念</font>
				</li>
				<li>
						<font size="2">软件工程是建立在系统化，规范化，数量化等工程原则和方法上，关于软件开发各阶段的定义，任务及作用的工程学科。</font>
				</li>
				<li>
						<font size="2">软件工程包括两个方面内容：</font>
						<ol>
								<li>
										<font size="2">软件开发技术</font>
										<ol>
												<li>
														<font size="2">软件开发方法学</font>
												</li>
												<li>
														<font size="2">软件开发工具</font>
												</li>
												<li>
														<font size="2">软件工程环境</font>
												</li>
										</ol>
								</li>
								<li>
										<font size="2">软件项目管理</font>
										<ol>
												<li>
														<font size="2">软件度量</font>
												</li>
												<li>
														<font size="2">项目估算</font>
												</li>
												<li>
														<font size="2">进度控制</font>
												</li>
												<li>
														<font size="2">人员组织</font>
												</li>
												<li>
														<font size="2">配置管理</font>
												</li>
												<li>
														<font size="2">项目计划</font>
												</li>
										</ol>
								</li>
						</ol>
				</li>
				<li>
						<font size="2">软件的生命周期</font>
						<ol>
								<li>
										<font size="2">需求分析</font>
										<ol>
												<li>
														<font size="2">用户对目标软件系统在功能，行为，性能与设计的约束等方面的期望</font>
												</li>
												<li>
														<font size="2">通过对应用问题及其环境的理解与分析，建立系统模型，将用户的需求精确化，完全化，最终形成需求规格说明，这一系列活动就构成了需求的分析阶段。</font>
												</li>
												<li>
														<font size="2">需求分析是整个系统开发过程的基础部分，对后面的几个阶段进展有直接的影响，纵观软件技术的发展，不难发现，需求分析的工作量在不断增加，其地位也在不断提高</font>
												</li>
										</ol>
								</li>
								<li>
										<font size="2">系统分析与设计</font>
										<ol>
												<li>
														<font size="2">包括分析与设计两大块</font>
												</li>
												<li>
														<font size="2">分析与设计通常在系统分析员的指导下进行</font>
												</li>
												<li>
														<font size="2">系统分析员不仅对计算机的专业知识有深刻的理解，而且还要对相关的业务有一定的了解。</font>
												</li>
												<li>
														<font size="2">一般情况下，系统分析是与需求分析同时进行的</font>
												</li>
												<li>
														<font size="2">而系统设计一般是在系统需求分析之后</font>
												</li>
										</ol>
								</li>
								<li>
										<font size="2">系统实现</font>
										<ol>
												<li>
														<font size="2">也就是通常所说的编码阶段，在软件工程出现之前，编码几乎是软件开发的全过程</font>
												</li>
												<li>
														<font size="2">而在现代的软件工程当中，编码阶段所当的比重在逐渐地缩小</font>
												</li>
										</ol>
								</li>
								<li>
										<font size="2">系统测试</font>
										<ol>
												<li>
														<font size="2">软件测试是软件工程当中的一个重要阶段，此阶段的主要任务是对软件需求分析，设计，编码各阶段的产品进行检查，保证软件开发产品的正确性，完全性，一致性，检测并修正软件过程当中的Bug， </font>
												</li>
												<li>
														<font size="2">软件测试以检查软件产品内容和功能特性为核心，不仅仅是软件质量保证的关键步骤，也是软件开发目标实现的重要保障</font>
												</li>
										</ol>
								</li>
								<li>
										<font size="2">系统维护</font>
										<ol>
												<li>
														<font size="2">软件维护是在软件产品交付之后进行维护，修改工作。</font>
												</li>
												<li>
														<font size="2">在软件工程思想出现之前，由于软件浓烈的色彩，使得软件修改成为一个令所有人头疼的问题</font>
												</li>
												<li>
														<font size="2">即使在软件工程思想迅速发展的今天，维护问题仍然是软件开发面临的最困难的问题</font>
												</li>
										</ol>
								</li>
						</ol>
				</li>
				<li>
						<font size="2">现在软件工程</font>
				</li>
				<ol>
						<li>
								<font size="2">软件开发包含了物和人的因素，存在很大的不确定性，这就使得软件工程不可能象理想的，可以基于物理学等原理来做的物质生产过程</font>
						</li>
						<li>
								<font size="2">最初的软件开发只考虑了人的因素，而传统的软件开发又过分强调物的因素</font>
						</li>
						<li>
								<font size="2">现代软件工程则重视人，与物的因素，即人和物在不同层次上，不断循环发展的关系</font>
						</li>
						<li>
								<font size="2">基于面向对象的分析，设计方法的出现使得软件开发方法发生了翻天覆地的变化。</font>
						</li>
						<li>
								<font size="2">随之而来的面向对象建模语言（如：UML），软件复用，基于组件的软件开发等新的方法和领域。</font>
						</li>
						<li>
								<font size="2">软件工程进入一个新的发展阶段！</font>
						</li>
				</ol>
		</ol>
<img src ="http://www.blogjava.net/site120/aggbug/85715.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/site120/" target="_blank">姜利阳</a> 2006-12-05 23:41 <a href="http://www.blogjava.net/site120/archive/2006/12/05/85715.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>