[ 收藏 ] [ 繁体中文 ]  
臺灣貨到付款、ATM、超商、信用卡PAYPAL付款,4-7個工作日送達,999元臺幣免運費   在線留言 商品價格為新臺幣 
首頁 電影 連續劇 音樂 圖書 女裝 男裝 童裝 內衣 百貨家居 包包 女鞋 男鞋 童鞋 計算機周邊

商品搜索

 类 别:
 关键字:
    

商品分类

  •  管理

     一般管理学
     市场/营销
     会计
     金融/投资
     经管音像
     电子商务
     创业企业与企业家
     生产与运作管理
     商务沟通
     战略管理
     商业史传
     MBA
     管理信息系统
     工具书
     外文原版/影印版
     管理类职称考试
     WTO
     英文原版书-管理
  •  投资理财

     证券/股票
     投资指南
     理财技巧
     女性理财
     期货
     基金
     黄金投资
     外汇
     彩票
     保险
     购房置业
     纳税
     英文原版书-投资理财
  •  经济

     经济学理论
     经济通俗读物
     中国经济
     国际经济
     各部门经济
     经济史
     财政税收
     区域经济
     统计 审计
     贸易政策
     保险
     经济数学
     各流派经济学说
     经济法
     工具书
     通货膨胀
     财税外贸保险类考试
     英文原版书-经济
  •  社会科学

     语言文字
     社会学
     文化人类学/人口学
     新闻传播出版
     社会科学总论
     图书馆学/档案学
     经典名家作品集
     教育
     英文原版书-社会科学
  •  哲学

     哲学知识读物
     中国古代哲学
     世界哲学
     哲学与人生
     周易
     哲学理论
     伦理学
     哲学史
     美学
     中国近现代哲学
     逻辑学
     儒家
     道家
     思维科学
     马克思主义哲学
     经典作品及研究
     科学哲学
     教育哲学
     语言哲学
     比较哲学
  •  宗教

  •  心理学

  •  古籍

  •  文化

  •  历史

     历史普及读物
     中国史
     世界史
     文物考古
     史家名著
     历史地理
     史料典籍
     历史随笔
     逸闻野史
     地方史志
     史学理论
     民族史
     专业史
     英文原版书-历史
     口述史
  •  传记

  •  文学

  •  艺术

     摄影
     绘画
     小人书/连环画
     书法/篆刻
     艺术设计
     影视/媒体艺术
     音乐
     艺术理论
     收藏/鉴赏
     建筑艺术
     工艺美术
     世界各国艺术概况
     民间艺术
     雕塑
     戏剧艺术/舞台艺术
     艺术舞蹈
     艺术类考试
     人体艺术
     英文原版书-艺术
  •  青春文学

  •  文学

     中国现当代随笔
     文集
     中国古诗词
     外国随笔
     文学理论
     纪实文学
     文学评论与鉴赏
     中国现当代诗歌
     外国诗歌
     名家作品
     民间文学
     戏剧
     中国古代随笔
     文学类考试
     英文原版书-文学
  •  法律

     小说
     世界名著
     作品集
     中国古典小说
     四大名著
     中国当代小说
     外国小说
     科幻小说
     侦探/悬疑/推理
     情感
     魔幻小说
     社会
     武侠
     惊悚/恐怖
     历史
     影视小说
     官场小说
     职场小说
     中国近现代小说
     财经
     军事
  •  童书

  •  成功/励志

  •  政治

  •  军事

  •  科普读物

  •  计算机/网络

     程序设计
     移动开发
     人工智能
     办公软件
     数据库
     操作系统/系统开发
     网络与数据通信
     CAD CAM CAE
     计算机理论
     行业软件及应用
     项目管理 IT人文
     计算机考试认证
     图形处理 图形图像多媒体
     信息安全
     硬件
     项目管理IT人文
     网络与数据通信
     软件工程
     家庭与办公室用书
  •  建筑

  •  医学

     中医
     内科学
     其他临床医学
     外科学
     药学
     医技学
     妇产科学
     临床医学理论
     护理学
     基础医学
     预防医学/卫生学
     儿科学
     医学/药学考试
     医院管理
     其他医学读物
     医学工具书
  •  自然科学

     数学
     生物科学
     物理学
     天文学
     地球科学
     力学
     科技史
     化学
     总论
     自然科学类考试
     英文原版书-自然科学
  •  工业技术

     环境科学
     电子通信
     机械/仪表工业
     汽车与交通运输
     电工技术
     轻工业/手工业
     化学工业
     能源与动力工程
     航空/航天
     水利工程
     金属学与金属工艺
     一般工业技术
     原子能技术
     安全科学
     冶金工业
     矿业工程
     工具书/标准
     石油/天然气工业
     原版书
     武器工业
     英文原版书-工业技
  •  农业/林业

  •  外语

  •  考试

  •  教材

  •  工具书

  •  中小学用书

  •  中小学教科书

  •  动漫/幽默

  •  烹饪/美食

  •  时尚/美妆

  •  旅游/地图

  •  家庭/家居

  •  亲子/家教

  •  两性关系

  •  育儿/早教

     保健/养生
     体育/运动
     手工/DIY
     休闲/爱好
     英文原版书
     港台图书
     研究生
     工学
     公共课
     经济管理
     理学
     农学
     文法类
     医学
  • UML軟件建模技術——基於IBM RSA工具
    該商品所屬分類:研究生 -> 工學
    【市場價】
    430-624
    【優惠價】
    269-390
    【作者】 高科華、李娜、吳銀婷、李觀金、劉小鄖 
    【所屬類別】 圖書  教材  研究生/本科/專科教材  工學圖書  計算機/網絡  軟件工程/開發項目管理 
    【出版社】清華大學出版社 
    【ISBN】9787302454465
    【折扣說明】一次購物滿999元台幣免運費+贈品
    一次購物滿2000元台幣95折+免運費+贈品
    一次購物滿3000元台幣92折+免運費+贈品
    一次購物滿4000元台幣88折+免運費+贈品
    【本期贈品】①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
    版本正版全新電子版PDF檔
    您已选择: 正版全新
    溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。
    *. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。
    *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。
    *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。
    內容介紹



    開本:16開
    紙張:膠版紙
    包裝:平裝-膠訂

    是否套裝:否
    國際標準書號ISBN:9787302454465
    叢書名:21世紀高等學校規劃教材·軟件工程

    作者:高科華、李娜、吳銀婷、李觀金、劉小鄖
    出版社:清華大學出版社
    出版時間:2017年03月 


        
        
    "

    編輯推薦
    1、真正適合高職院校學生的UML軟件建模技術方面的教材,是相關專業學生加入軟件行業的敲門磚。2、適合軟件行業從業人員的UML建模指南,為普及、推廣UML建模技術在軟件開發中的應用,提高軟件開發效率和質量做出努力。3、完整的綜合實訓案例貫穿了軟件開發全過程,從需求分析到設計實現,將UML軟件建模技術應用於軟件開發實踐。4、課程網站提供電子課件、教學素材、互動交流等,更好地為讀者提供服務。 
    內容簡介
    本書是一本軟件建模技術方面的實用教程,按照軟件開發過程,以軟件開發者的視野,利用著名的IBM Rational Software Architect軟件建模工具,帶領讀者學習UML軟件建模技術。全新的學習方式使得復雜的知識不再難學習。主要內容包括: 為什麼需要UML建模、UML建模工具、UML與面向對像開發方法、軟件開發各階段中的UML圖、RSA對繫統實現階段的支持、RSA數據庫建模、綜合實訓等。
    本書的*特點是將理論與實際操作有機結合起來,實訓任務豐富、圖文並茂、深入淺出、講解詳盡、實踐性強。可以作為大專院校計算機軟件工程、軟件技術、計算機應用技術、計算機信息管理、軟件與信息服務等相關專業的教材; 也可作為廣大軟件行業從業人員(程序員、繫統設計師、繫統分析員、繫統架構師、需求分析師、軟件開發經理等)進行UML建模實踐的指南。
    目錄

    目錄


    第1章為什麼需要UML建模
    1.1軟件工程概述
    1.1.1軟件工程的產生
    1.1.2什麼是軟件工程
    1.1.3軟件生命周期
    1.1.4軟件過程
    1.2UML概述
    1.2.1UML的產生和演變
    目錄




    第1章為什麼需要UML建模
    1.1軟件工程概述
    1.1.1軟件工程的產生
    1.1.2什麼是軟件工程
    1.1.3軟件生命周期
    1.1.4軟件過程
    1.2UML概述
    1.2.1UML的產生和演變
    1.2.2UML的定義和特點
    1.2.3UML的應用領域
    1.3UML建模
    1.3.1為什麼軟件開發需要UML建模
    1.3.2為什麼一些開發人員不選擇UML建模
    1.3.3何時進行UML建模
    1.3.4如何進行UML建模
    思考題
    實訓任務
    第2章UML建模工具
    2.1RSA與RUP
    2.1.1什麼是RSA
    2.1.2RSA的安裝
    2.1.3在RSA中應用RUP
    2.2RSA使用基礎
    2.2.1RSA建模透視圖
    2.2.2RSA操作常用技巧
    2.3其他UML建模工具簡介
    2.3.1IBM Rational Rhapsody
    2.3.2PowerDesigner
    2.3.3Visio
    2.3.4Enterprise Architect
    2.3.5TOGETHER
    2.3.6一些免費的建模工具
    思考題
    實訓任務
    第3章UML與面向對像開發方法
    3.1面向對像概念
    3.1.1對像和類
    3.1.2消息與方法
    3.1.3面向對像的要素
    3.2面向對像建模
    3.2.1按模型的用途對模型分類
    3.2.2按軟件開發過程對模型分類
    3.2.3IBM RSA面向對像建模的主要步驟
    3.3面向對像的分析與設計
    3.3.1面向對像分析
    3.3.2面向對像設計
    3.4面向對像實現
    3.4.1C
    3.4.2Java
    3.4.3C#和ASP.NET
    3.4.4PHP
    3.4.5JavaScript
    3.4.6Python
    3.4.7Ruby
    3.4.8Groovy
    3.4.9Go
    3.5UML對面向對像開發的支持
    3.5.1用例模型
    3.5.2分析模型
    3.5.3設計模型
    思考題
    第4章業務需求建模階段的UML圖
    4.1什麼是業務需求建模
    4.1.1創建用例模型
    4.1.2用例模型的組織結構
    4.2業務需求建模階段的UML圖
    4.2.1用例圖
    4.2.2活動圖
    思考題
    實訓任務
    第5章繫統分析建模階段的UML圖
    5.1什麼是繫統分析建模
    5.1.1創建分析模型
    5.1.2分析模型的組織結構
    5.2繫統分析建模階段的UML圖
    5.2.1類圖——靜態結構
    5.2.2順序圖(時序圖)
    思考題
    實訓任務
    第6章繫統設計建模階段的UML圖
    6.1什麼是繫統設計建模
    6.1.1創建設計模型
    6.1.2設計模型的組織結構
    6.2繫統設計建模階段的UML圖
    6.2.1組合結構圖
    6.2.2狀態圖
    6.2.3組件圖
    6.2.4部署圖
    思考題
    實訓任務
    第7章RSA對繫統實現階段的支持
    7.1從模型到實現
    7.1.1從UML模型轉換為Java代碼
    7.1.2從UML模型轉換為C 代碼
    7.1.3從UML模型轉換為XML文檔
    7.2用RSA進行模型驅動開發
    7.2.1模型驅動開發概述
    7.2.2模型驅動開發方法
    7.2.3用RSA進行模型驅動開發
    7.3RSA中用逆向工程獲得UML模型
    7.3.1用逆向工程從Java代碼獲得UML模型
    7.3.2用逆向工程從C 代碼獲得UML模型
    思考題
    實訓任務
    第8章RSA數據庫建模
    8.1數據庫建模概述
    8.1.1什麼是數據庫建模
    8.1.2物理數據建模的一般步驟
    8.1.3在RSA中創建數據庫設計項目
    8.2RSA數據透視圖
    8.2.1常用視圖與編輯器介紹
    8.2.2常用技巧
    8.3RSA數據庫建模
    8.3.1表設計
    8.3.2視圖設計
    8.3.3關繫設計
    8.4用逆向工程從數據庫獲得數據庫模型
    8.5物理數據模型生成DDL
    思考題
    實訓任務
    第9章綜合實訓
    9.1項目概覽
    9.1.1項目描述
    9.1.2創建UML項目
    9.2創建PiggyBank用例模型
    9.2.1創建用例圖
    9.2.2創建活動圖
    9.3創建PiggyBank分析模型
    9.3.1新建PiggyBank分析模型
    9.3.2識別分析類
    9.3.3創建PiggyBank領域模型
    9.3.4創建Account Operations用例實現概覽圖
    9.3.5創建Display Balance Participants圖
    9.3.6創建Display Balance時序圖
    9.3.7創建Transfer Money Participants圖
    9.3.8創建Transfer Money時序圖
    9.3.9創建Cash Check Participants圖
    9.3.10創建CashCheck時序圖
    9.3.11PiggyBank在線銀行繫統的分析類概覽圖
    9.4創建PiggyBank設計模型
    9.4.1新建PiggyBank設計模型
    9.4.2識別實現設計子包和創建包圖
    9.4.3創建CityBank集成設計層
    9.4.4創建業務設計層包結構
    9.4.5創建framework組件層
    9.4.6創建EJB組件子包
    9.4.7創建EJB delegate組件包
    9.4.8對設計模型應用概要文件
    實訓任務
    參考文獻
    前言
    前言前言

    軟件開發從單個人的“藝術創造”到按軟件工程思想組織的軟件開發團隊的集體制品貫穿了軟件技術的發展歷程,推動軟件開發技術進步的思想其實很簡單,就是提高開發效率、保證軟件質量、按時交付軟件產品。現在,雖然已經出現了很多軟件開發方法,從結構化方法到面向對像技術,……等等,但是,軟件開發技術進步的腳步並沒有停止。由於軟件技術不斷進步,知識更新的速度是很快的。例如,從著名的Rational Rose支持UML 1.4到IBM Rational Software Architect支持UML 2.0。作者在多年的教授軟件建模技術課程過程中發現,現有的教材大多數還是使用UML 1.4和Rational Rose,甚至關於IBM Rational Software Architect的參考書也很少。一些教材沒有很好地考慮到高職院校和軟件行業從業人員的實際情況,使讀者被眾多的UML圖搞得雲裡霧裡,費了很大的勁兒學完後還是不知道如何在實際的軟件開發過程中應用軟件建模技術。一些人對軟件建模技術的作用認識不足,認為軟件建模是軟件設計師的工作,高職院校主要培養的是程序員。其實,UML是所有軟件行業的從業人員(程序員、繫統設計師、繫統分析員、繫統架構師、需求分析師、軟件開發經理等)的溝通工具。軟件開發團隊的成員有些來自其他專業,例如,需求分析師一般都是領域專家(熟悉某一業務的資深人士,例如,財務管理專家、銷售管理專家、生產管理專家等)。UML主要應用於軟件繫統,也可應用於其他復雜繫統。在國外,也有為其他專業開設UML建模的課程。基於作者多年在企業帶領軟件開發團隊、實踐UML建模的成功經驗和多年在高職院校教授軟件建模技術對UML的深刻認識,作者感到非常有必要寫一本真正適合高職院校學生的UML建模方面的教材,並為軟件開發任務繁重的軟件行業從業人員提供一種實用的UML建模指南的書籍。這就是作者編寫這本書的目的。本書內容第1章為什麼需要UML建模,簡要介紹軟件工程、UML的起源,明確學習目的。第2章UML建模工具,介紹了常用的UML建模工具,重點介紹了IBM Rational Software Architect軟件建模工具。第3章UML與面向對像開發方法,簡要介紹了面向對像開發方法及與UML的關繫。第4章業務需求建模階段的UML圖,重點介紹了業務需求建模階段的UML圖的用途、繪制方法。第5章繫統分析建模階段的UML圖,重點介紹了繫統分析建模階段的UML圖的用途、繪制方法。第6章繫統設計建模階段的UML圖,重點介紹了繫統設計建模階段的UML圖的用途、繪制方法。第7章RSA對繫統實現階段的支持,重點介紹了模型與代碼轉換的雙向工程,簡要介紹了模型驅動的軟件開發方法。第8章RSA數據庫建模,重點介紹了數據庫建模的用途和方法。第9章綜合實訓,提供了完整的綜合實訓案例,給出了詳細的建模步驟。本書特色本書的主要特色如下。(1) Rational Rose隻支持UML 1.4,IBM在收購了Rational後在Rational Rose的基礎上開發了IBM Rational Software Architect(RSA),RSA支持UML 2.0。RSA的版本還在不斷更新,使我們可以跟上技術進步的步伐。(2) IBM Rational Software Architect 8.5.1有中文版,使高職院校的學生感到更容易學習,不會產生畏難情緒。(3) 通過RSA的操作理解UML概念,真正做到“理論夠用,重在培養技能”。(4) 從軟件開發者的角度,按照軟件開發過程講解UML圖,使得所學內容更實用。(5) RSA對軟件開發全過程的支持,特別是對模型驅動開發MDD的支持,使我們了解軟件開發方法的新進展。(6) 通過掌握面向對像開發方法與UML應用,我們認識到比編程語言和開發工具更重要的是編程思想。讀者對像大專院校計算機軟件工程、軟件技術、計算機應用技術、計算機信息管理、軟件與信息服務等相關專業的學生; 高等院校(專科、本科)相關專業有意加入軟件行業的學生; 軟件行業從業人員(程序員、繫統設計師、繫統分析員、繫統架構師、需求分析師、軟件開發經理等)。作者分工劉小鄖: 負責第1、2章的編寫。李娜: 負責第3章、第8章的編寫。吳銀婷: 負責第4、5章的編寫。李觀金: 負責第6、7章的編寫。高科華: 負責第9章的編寫,全書的策劃,統編全稿。致謝感謝清華大學出版社的大力支持,纔使得這本教材(國內本用IBM RSA講解UML軟件建模技術的高校教材)得以早日面世。感謝惠州經濟職業技術學院信息工程學院院長薛曉萍教授的鼓勵、指導,纔使得惠州經濟職業技術學院軟件工程課程組勇於創新,在課程建設方面取得了初步的成績,本書就是課程組的教研成果之一。聯繫方式廣東省惠州市惠州經濟職業技術學院軟件工程繫高科華QQ: 527358657Email: khgao@126.com課程網站: http://120.76.149.170/uml/編者2017年2月



    媒體評論
    評論
    在線試讀
    第3章UML與面向對像開發方法


    知識目標 理解面向對像的概念;  掌握面向對像建模的基本步驟;  理解面向對像的分析與設計方法;  理解面向對像的實現方法;  理解UML對面向對像開發的支持。技能目標 能夠利用已有知識學習新知識。學習過面向對像程序設計語言(例如Java、C )的讀者對面向對像的概念已經有了一定的了解。本章將簡要復習面向對像的概念,並介紹面向對像分析與設計、面向對像建模等面向對像技術。3.1面向對像概念第3章UML與面向對像開發方法




    知識目標 理解面向對像的概念;  掌握面向對像建模的基本步驟;  理解面向對像的分析與設計方法;  理解面向對像的實現方法;  理解UML對面向對像開發的支持。技能目標 能夠利用已有知識學習新知識。學習過面向對像程序設計語言(例如Java、C )的讀者對面向對像的概念已經有了一定的了解。本章將簡要復習面向對像的概念,並介紹面向對像分析與設計、面向對像建模等面向對像技術。3.1面向對像概念
    20世紀60年代中期以來,基於計算機的繫統規模越來越大,繫統的復雜性也不斷增加,人們很難把握軟件開發過程,開發出來的軟件質量越來越難以保證,軟件生產率急劇下降。由於大型軟件開發的工程性和實際開發工作中手工性的不相適應,出現了軟件危機。為解決上述問題,在1968年的北大西洋公約學術會議上提出了軟件工程的思想,希望采用工程方法來開發軟件。四十多年來這一思想逐步為人們所重視,其發展迅速,並取得了令人矚目的成就。但這一時期該領域采用的方法主要是結構化的分析與設計方法,這種方法對現代日益復雜的軟件開發而言存在嚴重的不足,由此產生的軟件危機並未真正得到解決。因此,人們正設法尋找一種新的有效途徑來解決這一問題。面向對像概念自20世紀60年代出現至今,面向對像技術已成為一種完整的思想與方法體繫,並且在計算機領域中得到廣泛應用,如在程序設計中的面向對像程序設計、在人工智能中的面向對像知識表示、在數據庫中的面向對像數據庫、在人機界面中的面向對像圖形用戶界面、在計算機體繫結構中的面向對像結構體繫等都有突出表現。由於面向對像技術在軟硬件開發方面呈現出巨大的優越性,人們將其視為解決軟件危機的一個很有希望的突破口。面向對像的方法啟發我們從現實世界中客觀存在的事物出發構造軟件繫統,並在繫統構造過程中盡可能地運用人的自然思維方式。它強調直接以問題域中的事物為中心來思考問題、認識問題,並根據這些事物的本質特征把它們抽像為解空間中的對像,以對像作為繫統的基本構成單位。這樣可以使繫統直接映射問題域,限度地保持問題域中的事物及其相互關繫的本質,使得解空間和問題域能夠在結構上取得盡可能一致。這樣做就向著減少語義斷層的方向邁出了一大步,在許多繫統中解空間對像都可以直接模擬問題空間的對像,因此,這樣的程序易於理解和維護。面向對像方法比以往的方法更接近人類的自然思維方式。雖然結構化開發方法也采用了符合人類思維習慣的原則與策略,但是與傳統的結構化開發方法不同,面向對像方法更加強調運用人類在日常生活中的邏輯思維中采用的思想方法,並以其他人也能理解的方式將自己的思想表達出來。面向對像的軟件技術以對像(Object)為核心,用這種技術開發出的軟件繫統由對像組成。對像是對現實世界實體的正確抽像,它是由描述內部狀態、表示靜態屬性的數據,以及可以對這些數據施加的操作(表示對像的動態行為)封裝在一起所構成的統一體。對像之間通過傳遞消息互相聯繫,以模擬現實世界中不同事物彼此之間的聯繫。面向對像的設計方法與傳統的面向過程的方法有本質不同,這種方法的基本原理是,使用現實世界的概念抽像地思考問題從而自然地解決問題。它強調模擬現實世界中的概念而不強調算法,它鼓勵開發者在軟件開發的絕大部分過程中都用應用領域的概念去思考。在面向對像的設計方法中,計算機的觀點是不重要的,現實世界的模型纔是重要的。面向對像的軟件開發過程從始至終都圍繞著建立問題域的對像模型來進行。對問題域進行自然的分解,確定需要使用的對像和類,建立適當的類等級,在對像之間傳遞消息實現必要的聯繫,從而按照人們習慣的思維方式建立起問題域的模型,模擬客觀世界。傳統的軟件開發方法可以用“瀑布”模型來描述,這種方法強調自頂向下按部就班地完成軟件開發工作。事實上,人們認識客觀世界,解決現實問題的過程,是一個漸進的過程,人的認識需要在繼承以前的有關知識的基礎上,經過多次反復纔能逐步深化。在人的認識深化過程中,既包括從一般到特殊的演繹思維過程,也包括從特殊到一般的歸納思維過程。人在認識和解決復雜問題時使用的強有力的思維工具是抽像,也就是在處理復雜對像時,為了達到某個分析目的集中研究對像的與此目的有關的本質部分,忽略該對像的那些與此目的無關的部分。面向對像方法學的基本原則是按照人類習慣的思維方法建立問題域的模型,開發出盡可能直觀、自然的表現求解方法的軟件繫統。面向對像的軟件繫統中廣泛使用的對像,是對客觀世界中實體的抽像。對像實際上是抽像數據類型的實例,提供了比較理想的數據抽像機制,同時又具有良好的過程抽像機制(通過發消息使用公有成員函數)。對像類是對一組相似對像的抽像,類等級中上層的類是對下層類的抽像。因此,面向對像的環境提供了強有力的抽像機制,便於用戶在利用計算機軟件繫統解決復雜問題時使用習慣的抽像思維工具。此外,面向對像方法學中普遍進行的對像分類過程,支持從特殊到一般的歸納思維過程; 面向對像方法學中通過建立類等級而獲得的繼承特性,支持從一般到特殊的演繹思維過程。面向對像的軟件技術為開發者提供了隨著對某個應用繫統的認識逐步深入和具體化的過程,而逐步設計和實現該繫統的可能性,因為可以先設計出由抽像類構成的繫統框架,隨著認識的深入和具體化再逐步派生出更具體的派生類。這樣的開發過程符合人們認識客觀世界解決復雜問題時逐步深化的漸進過程。面向對像的軟件工程方法包括面向對像的分析(OOA)、面向對像的設計(OOD)、面向對像的編程(OOP)和面向對像的軟件維護(OOSM)等內容。在每一個開發階段,面向對像的方法都要求對繫統建立模型,為繫統在本階段的構建提供藍圖。不同階段的模型包含的內容是不同的,既可以包括詳細的計劃,也可以包括從很高的層次考慮繫統的總體計劃。一個好的模型包括那些有廣泛影響素,而忽略那些與給定的抽像水平不相關素。每個階段的模型都是一個在語義上閉合的繫統抽像。模型可以是結構性的,強調繫統的組織,例如繫統的靜態結構模型; 它也可以是行為性的,強調繫統的動態方面,例如繫統的交互協作模型。3.1.1對像和類面向對像概念是在20世紀60年代末期由使用SIMULA語言的人開始提出的,20世紀70年代初成為Xerox PARC開發的Smalltalk的重要組成部分。與此同時,對軟件的開發仍然采用功能分解法來解決設計與實現問題,很少討論面向對像的設計,更沒有對面向對像分析的討論。但自20世紀80年代以來,面向對像方法與技術日益受到計算機領域的專家、研究和工程技術人員的重視。20世紀80年代中期相繼出現了一繫列描述能力強、執行效率高的面向對像編程語言,標志著面向對像的方法與技術開始走向實用。自20世紀80年代末到20世紀90年代,面向對像方法與技術向軟件生命周期的前期階段發展,人們對面向對像方法的研究不再局限於編程而是從繫統分析和繫統設計階段就開始采用面向對像方法,這標志著面向對像方法已經發展成一種完整的方法論和繫統化的技術體繫,下面介紹一些面向對像的基本概念。1. 對像對像含義廣泛,難以精確定義,不同的場合有不同的含義。一般來說,任何事物均可看作對像。任何事物均有各自的自然屬性和行為,當考察其某些屬性與行為並進行研究時,它便成為有意義的對像。采用面向對像方法進行軟件開發時,需要區分三種不同含義的對像: 客觀對像、問題對像和計算機對像。客觀對像是現實世界中存在的實體; 問題對像是客觀對像在問題域中的抽像,用於根據需要完成某些行為; 計算機對像是問題對像在計算機繫統中的表示,它是數據和操作的封裝體。三種對像間的關繫如圖3.1所示。


    圖3.1三種對像間的關繫

    對像是理解面向對像技術的關鍵。可以發現現實世界中的對像具有共同點: 它們都有狀態和行為。圖3.2中的汽車對像有自己的狀態(有速度、油量等)及行為(如發動汽車、關閉發動機、剎車和加速等)。對像是封裝了數據結構及可以施加在這些數據結構上的操作的封裝體,這個封裝體可以地標識其名字,而且向外界提供一組服務(即公有的操作)。對像中的數據表示對像的狀態,一個對像的狀態隻能由該對像的操作來改變。每當需要改變對像的狀態時,隻能由其他對像向該對像發送消息。對像響應消息時,按照消息模式找出與之匹配的方法,並執行該方法。圖3.2中的汽車對像,它的狀態就隻能通過暴露出來的方法來修改。

    圖3.2汽車對像

    從上述對像概念的描述中,可以歸納出對像具有如下特點。(1) 自治性: 對像的自治性是指對像具有一定的獨立計算能力。給定一些輸入,經過狀態轉換,對像能產生輸出,說明它具有計算能力。對像自身的狀態變化是不直接受外界干預的,外界隻有通過發送的消息對它產生影響,從這個意義上說,對像具有自治性。(2) 封閉性: 對像的封閉性是指對像具有信息隱蔽的能力。具體說來,外界不直接修改對像的狀態,隻有通過向該對像發送消息來對它施加影響。對像隱蔽了其中的數據及操作的實現方法,對外可見的隻是該對像所提供的操作(即能接收和處理的消息)。(3) 通信性: 對像的通信性是指對像具有與其他對像通信的能力,具體說來,就是對像能接收其他對像發來的消息,同時也能向其他對像發送消息。通信性反映了不同對像間的聯繫,通過這種聯繫,若干對像可協同完成某項任務。(4) 被動性: 對像的被動性是指對像的存在和狀態轉換都是由來自外界的某種刺激引發的。對像的存在可以說是由外界決定的,而對像的狀態轉換則是在它接收到某種消息後產生的,盡管這種轉換實際是由其自身進行的。(5) 暫存性: 對像的暫存性有兩層含義。一是指對像的存在是可以動態地引發的,而不是必須在計算的一開始就存在; 二是指對像隨時可以消亡(而不是必須存在到計算結束)。雖然可以在計算過程中自始至終保存某些對像,但從對像的本質或作用來說,它具有暫存性。上面5個性質分別刻畫了對像的不同方面的特點。自治性、封閉性和通信性刻畫的是對像的能力; 被動性刻畫的是對像的活動; 暫存性刻畫的是對像的生存特性; 自治性反映了對像獨立計算的能力; 封閉性和通信性則說明對像是既封閉又開放的相對獨立體。2. 類對像是繫統中運行時刻的基本成分,它們在程序中又如何反映呢?事實上,繫統中往往存在多個具有共同特性的對像。例如,張三、李四、王五、趙六……都具有姓名、身份證號、性別和年齡等特性,而具有姓名、身份證號、性別和年齡等特性的抽像對像便是張三、李四、王五、趙六……對像的一個抽像。在語言中,這樣的抽像稱為“類”,類刻畫了一組具有共同特性的對像。比如,上述張三、李四、王五、趙六……可以抽像為一個具有姓名、身份證號、性別和年齡等特性的“人”的對像,稱為類“人”。類的作用可歸納為兩種: 一是作為對像的描述機制,刻畫一組對像的公共屬性和行為; 二是作為程序的基本單位,它是支持模塊化設計的設施,並且類上的分類關繫是模塊劃分的規範標準。與對像的組成部分相對應,類也有三個組成部分: 數據、操作和接口。數據刻畫對像的狀態,操作刻畫對像的行為,類中所有數據均為私有,接口使操作對外可見。從類自身的內容看,它描述了一組數據及其上的操作,這些數據為類所私有,隻有操作對外可見。類的概念可從下面4個方面去理解。(1) 類是對對像的進一步抽像。由現實世界中的張三、李四、王五、趙六……都具有姓名、身份證號、性別和年齡等特性我們獲得一個抽像的概念——對像,每一個對像都有自己的特性。描述這些對像的共同部分就是對這些對像的進一步抽像,由此得到類。類是靜態概念,對像是動態概念。(2) 類描寫了一組相似對像的共同特性。面向對像程序執行時體現為一組對像狀態的變化,這裡的對像便是由類來刻畫的。類刻畫了一組具有相似特性的對像,在運行時可根據類中的描述動態地創建對像。(3) 類既可以與具體的程序設計語言無關,也可以與具體的程序設計語言相關。與具體的程序設計語言無關的類稱為分析類; 與具體的程序設計語言相關的類稱為設計類或實現類。(4) 類的概念盡管來源於程序設計語言,但不限於程序設計語言。隨著面向對像方法與技術向軟件生命周期的前期階段的延伸,在軟件開發的各個階段都不同程度地會涉及類的概念。3.1.2消息與方法1. 消息
    上面介紹了對像是一個相對獨立的具有一定計算能力的自治體,對像之間不是彼此孤立而是互相通信的,面向對像程序的執行體現為一組相互通信的對像的活動。那麼面向對像程序是如何實施計算(運行)的呢?計算是由一組地位等同的稱作對像的計算機制合作完成的,合作方式是通信即相互交換信息,這種對像與對像之間所互相傳遞的信息稱為消息。消息可以表示計算任務,也可以表示計算結果。在面向對像計算中,每一項計算任務都表示為一個消息,實施計算任務的若干相關聯的對像組成一個面向對像繫統。提交計算任務即由任務提交者(繫統外對像)向承擔計算任務的面向對像繫統中的某對像發送表示該計算任務的消息。計算的實施過程是面向對像繫統接收到該消息後所產生的狀態變化過程,計算的結果通過面向對像繫統中的對像向任務提交者回送。消息一般由以下三個部分組成。(1) 接收消息的對像。(2) 接收對像應采用的方法。(3) 方法所需要的參數。計算任務通常先由某一對像“受理”(該對像接收到某種消息),然後通過對像間的通信,計算任務就分散到各個有關對像中,後再由某些對像給出結果(通過發送消息)。發送消息的對像稱為發送者,接收消息的對像稱為接收者。消息中包含發送者的要求,它告訴接收者需要完成哪些處理,但並不指示接收者如何完成這些處理。消息完全由接收者解析,接收者獨立決定采用什麼方式完成所需處理。一個對像能夠接收不同形式、不同內容的多個消息,相同形式的消息可以發往不同的對像,不同的對像對於形式相同的消息可以有不同的解析,並做出不同的反應。對於傳來的消息,對像可以返回相應的應答消息。對像可以動態地創建,創建後即可以活動。對像在不同時刻可處於不同狀態,對像的活動是指對像狀態的改變,它是由對像所接收的消息引發的。對像一經創建,就能接收消息,並向其他對像發送消息。對像接收到消息後,可能出現: ①自身狀態改變; ②創建新對像; ③向其他對像發送消息。從對像之間的消息通信機制可反映出面向對像計算具有如下特性。(1) 協同性。協同性表現在計算是由若干對像共同協作完成的。雖然計算任務可能首先由面向對像繫統中的某個特定對像“受理”(即接收到表示該任務的消息),但往往並不是由該對像獨立完成的,而是通過對像間的通信被分解到其他有關對像中,由這些對像共同完成,對像間的這種協同性使計算具有分布性。(2) 動態性。動態性表現在計算過程中對像依通信關繫組成的結構會動態地改變,新對像會不斷創建,老對像也會不斷消亡。面向對像繫統初由若干初始對像組成,一旦外界向這些初始對像發送了表示計算任務的消息,面向對像繫統即活動起來直至給出計算結果。在此過程中,面向對像繫統的組成因創建新對像而不斷地改變。(3) 封閉性。封閉性表現在計算是由一組相對封閉的對像完成的。從外界看一個對像,隻是一個能接收和發送消息的機制,其內部的狀態及其如何變化對外並不直接可見,外界隻有通過給它發送消息纔能對它產生影響。對像承擔計算的能力完全通過它能接收和處理的消息體現。(4) 自治性。自治性表現在計算是由一組自治的對像完成的。對像在接收了消息後,如何處理該消息(即自身狀態如何改變,需創建哪些新對像,以及向其他對像發送什麼消息),完全由該對像自身決定。在面向對像計算中,數據與其上的操作地位同等,兩者緊密耦合在一起形成對像,亦即數據及其上的操作構成對像。因此,在面向對像計算中,數據與其上的操作之間的聯繫處於首要地位,何時對何數據施行何種操作完全由相應數據所在對像所接收到的消息及該對像自身決定。由於對像的封裝性和隱蔽性,對像的消息僅作用於對像的接口,通過接口進一步影響和改變對像狀態。2. 方法方法反映對像的行為,是對像固有的動態表示,可審視並改變對像的內部狀態。一個對像往往可以用若干方法表示其動態行為,在計算機中,方法也可稱為操作。它的定義與表示包含兩部分: 一是方法的接口,它給出了方法的外部表示,包括方法的名稱、參數及結果類型; 二是方法的實現,它用一段程序代碼表示,這段代碼實現了方法的功能。把所有對像抽像成各種類,每個類都定義一組方法,代表允許作用於該類對像上的各種操作。方法描述了對像執行操作的算法,響應消息的方法。3.1.3面向對像的要素1. 繼承性
    類之間的繼承關繫是現實世界中遺傳關繫的直接模擬,它表示類之間的內在聯繫以及對屬性和操作的共享。繼承是類與類之間的一種關繫,它使程序人員可以在已有類的基礎上定義和實現新類。繼承是實現利用可重用軟件構件構造繫統的有效語言機制。繼承能有效地支持軟件構件的重用,使得當需要在繫統中增加新特征時所需的新代碼少,並且當繼承和多態動態綁定結合使用時,為修改繫統所需變動的源代碼少。

    圖3.3繼承描述

    繼承按照子類與父類的關繫,把若干個類組成一個類層次結構。在這種層次結構中,通常下層的派生類具有和上層的基類相同的特性(包括數據和方法)。繼承是子類自動地共享父類中定義的數據和方法的機制,一個直觀的描述如圖3.3所示。圖3.3中描述了類A和類B之間的繼承關繫。類B繼承了類A,因此它包含類A中的所有數據結構和方法。同時,類B也定義了自己的附加內容,形成了自己的、不同於父類的數據結構和方法,這是類B對父類的增量定義。當一個類隻允許有一個父類時,類的繼承是單繼承; 當允許一個類有多個父類時,類的繼承是多重繼承。判斷兩個類之間是否具有繼承關繫的一個重要準則是替換原理: 凡是父類可以勝任的場合,子類也一定可以勝任。再舉一個常用的例子是學校組成人員之間的關繫,本科生是一類特殊的學生,這一關繫很容易用如圖3.4所示的繼承關繫來刻畫。

    圖3.4學校組成人員間的繼承關繫

    作為學生的後繼,本科生具有學生的所有特征。另外,由於學生是人的後繼,本科生也繼承了人的特征。在抽像層上,所有學校組成人員都具有身份號、姓名、年齡和性別等屬性,也有一些相同的操作,這些特征在根類人中定義。學生類增加了成績、課程等屬性。由於繼承的關繫,因此本科生也具有身份號、姓名、年齡、性別、成績、課程等屬性。繼承的使用大大地減少了添加新特征所需的工作,同樣在面向對像開發過程中,繼承也有助於使用原型速成開發方法。繼承機制的強有力之處還在於它允許程序員重用一個未必完全符合要求的類,允許對該類進行修改而又不至於在該類的其他部分引起副作用。另外,在面向對像設計中,還注重在較高抽像層次上提取和封裝公共性質。如果把這些高層次的類保存在類庫中,那麼,對於用戶所需要的類,在類庫中都可能有一個更一般的類與之對應。如果一個軟件繫統是用面向對像方法進行分析和設計,並用面向對像程序設計語言實現的,那麼在分析階段所識別的對像和分類關繫就能在設計階段得到保留和豐富,而且可以直接用代碼實現,這種直接用代碼刻畫和封裝抽像結構的能力,代表了軟件技術上的進步。2. 抽像抽像同樣是一種人類認識客觀世界的方式。為了記憶或區分,人類常常把客觀世界的一些事物的基本特征、內在的屬性概念化,用邏輯模型表達出來,這樣的過程就是抽像。例如,在世界地圖上可以用一個點代表城市,用曲線來表示河流等,它們忽略了城市的大小和河流的寬度,卻保留了它們的主要信息——位置和長度。通過抽像,達到了簡化表達、突出重點的目的。面向對像提供的抽像表達能力,符合人類認識世界的規律,因而它是對面向過程的進化。可以說軟件工程的發展歷史就是人們不斷追求更高水平的抽像、封裝和模塊化的歷史。3. 封裝性對像不僅包含數據,同時也包含操作這些數據的方法。對像是進行數據處理的主體,必須發消息請求對像執行它的某個操作,處理它的私有數據,而不能從外界直接對它的私有數據進行操作。也就是說,一切從屬於該對像的私有信息,都被封裝在該對像類的定義中,就好像裝在一個不透明的黑盒子中一樣。封裝性和信息的隱蔽性是聯繫在一起的。軟件的內部構件都是具有良好外部邊界的。使其隱藏不應該被外部直接訪問的類成員,它們在外部是不可見的。而隻能通過類提供的方法或外部接口來進行訪問,從而將外部接口和內部實現分開。面向對像方法鼓勵隱藏信息,除了需要共享的結構和方法外,都要使用私有成員。這樣使類的接口盡可能簡單,減少類之間的相互依賴,從而達到高內聚,低耦合。封裝的基本單位是對像。例如,一個咖啡機被封裝起來,使用者無法看到咖啡機內部的工作細節。使用者隻需按下代表不同口味的咖啡的按鈕,就可以喝到咖啡了。封裝將使用者和設計者分開,隻需要使用對像暴露出來的方法就可以獲得相應的功能。這樣大大提高了軟件的可維護性。4. 多態性多態的一般含義是,某一領素可以有多種解釋,程序設計語言中的“一名多用”即是支持多態的設施。繼承機制是面向對像程序設計語言中所特有的另一種支持多態的設施。在面向對像的軟件技術中,多態是指在類繼承層次中的類可以共享一個行為的名字,而不同層次的類卻各自按自己的需要實現這個行為。當對像接收到發送給它的消息時,根據該對像所屬的類動態地選擇在該類中定義的行為實現。在面向對像程序設計語言中,一個多態的對像指引變量可以在不同的時刻,指向不同類的實例。由於多態對像指引變量可以指向多類對像,所以它既有一個靜態類型又有多個動態類型。多態對像指引變量的動態類型在程序執行中會不時地改變,在強類型的面向對像環境中,運行繫統自動地為所有多態對像指引變量標記其動態類型。多態對像指引變量的靜態類型由程序正文中的變量說明決定,它可以在編譯時確定,它規定了運行時刻可接受的有效對像類型的集合,這種規定是通過對繫統的繼承關繫圖進行分析得到的。在強類型的面向對像程序設計語言中,繼承所反映的概念包含關繫和多態的思想密切有關。如果類Y是類Z的後繼,則概念上Z包含Y,那麼在所有期望Z的實例的場合,都允許用Y的實例來代替。多態的特點在很大程度上提高了程序的抽像程度和簡潔性,限度地降低了類和程序模塊間的耦合性,提高了類模塊的封閉性,使得它們不需了解對方的具體細節就可以很好地共同工作,這對程序的設計、開發和維護都有很大的益處。5. 關聯在現實世界中,事物不是孤立的,而是彼此之間存在各種各樣的聯繫。關聯描述了繫統中對像之間的離散連接。例如,在一個學校中,有教師、學生和教室等事物,它們之間存在某種特定的聯繫。關聯在一個含有兩個或多個對像的序列中建立聯繫,序列中的對像允許重復。

    圖3.5聚合和組合關聯
    關聯有兩種比較特殊的類型: 聚合和組合。聚合表示部分與整體關繫的關聯。組合是更強形式的關聯,整體有管理部分的職責,比如為它們分配和釋放空間。一個對像多屬於一個組合關繫。表示部分的類與表示整體的類之間有單獨的關聯,但為方便起見,可以把連線結合在一起,如圖3.5所示表示了聚合和組合關聯。3.2面向對像建模
    眾所周知,在解決問題之前必須首先理解所要解決的問題。軟件開發項目失敗的一個主要原因是對所要解決的問題理解不夠,或者說沒有很好地識別用戶需求。在對目標繫統進行分析的初始階段,面對大量模糊的、涉及眾多專業領域的、錯綜復雜的信息,繫統分析員往往感到無從下手。模型提供了組織大量信息的一種有效機制。用面向對像方法成功地開發軟件的關鍵,同樣是對問題域的理解。面向對像方法基本的原則,是按照人們習慣的思維方式,用面向對像觀點建立問題域的模型,便於參入軟件開發的各方交流對問題的理解,對所要完成的軟件產品規格達成共識。3.2.1按模型的用途對模型分類用面向對像方法開發軟件,通常需要建立三種形式的模型,它們分別是描述繫統數據結構的對像模型,描述繫統控制結構的動態模型和描述繫統功能的功能模型。這三種模型都涉及數據、控制和操作等共同概念,隻不過每種模型描述的側重點不同。這三種模型從三個不同但又密切相關的角度模擬目標繫統,它們各自從不同側面反映了繫統的實質性內容,綜合起來則全面地反映了對目標繫統的需求。一個典型的軟件繫統組合了上述三方面內容: 它使用數據結構(對像模型),執行操作(動態模型),並且完成數據值的變化(功能模型)。為了全面地理解問題域,對任何大繫統來說,上述三種模型都是必不可少的。當然,在不同的應用問題中,這三種模型的相對重要程度會有所不同。但是,用面向對像方法開發軟件,在任何情況下,對像模型始終都是重要、基本、核心的。在整個開發過程中,三種模型一直都在發展、完善: 在面向對像分析過程中,構造出完全獨立於實現的應用域模型; 在面向對像設計過程中,把求解域的結構逐漸加入到模型中; 在實現階段,把應用域和求解域的結構都編成程序代碼並進行嚴格的測試驗證。(1) 對像模型。對像模型表示靜態的、結構化的繫統的“數據”性質。它是對模擬客觀世界實體的對像以及對像彼此間的關繫的映射,描述了繫統的靜態結構。面向對像方法強調圍繞對像而不是圍繞功能來構造繫統。對像模型為建立動態模型和功能模型提供了實質性的框架。在建立對像模型時,人們的目標是從客觀世界中提煉出對具體應用有價值的概念。為了建立對像模型,需要定義一組圖形符號,並且規定組織這些符號以表示特定語義的規則。也就是說,需要用適當的建模語言來表達模型,建模語言由記號(即模型中使用的符號)和使用記號的規則(語法、語義和語用)組成。一些著名的軟件工程專家在提出自己的面向對像方法的同時,也提出了自己的建模語言。但是,面向對像方法的用戶並不了解不同建模語言的優缺點,很難在實際工作中根據應用的特點選擇合適的建模語言,而且不同建模語言之間存在的細微差別也極大地妨礙了用戶之間的交流。面向對像方法發展的現實,要求在精心比較不同建模語言的優缺點和總結面向對像技術應用經驗的基礎上,把建模語言統一起來。(2) 動態模型。動態模型表示瞬時的、行為化的繫統的“控制”性質,它規定了對像模型中的對像的合法變化序列。一旦建立起對像模型之後,就需要考察對像的動態行為。所有對像都具有自己的生命周期(或稱為運行周期)。對一個對像來說,生命周期由許多階段組成,在每個特定階段中,都有適合該對像的一組運行規律和行為規則,用以規範該對像的行為。生命周期中的階段也就是對像的狀態。所謂狀態,是對對像屬性值的一種抽像。當然,在定義狀態時應該忽略那些不影響對像行為的屬性。各對像之間相互觸發(即作用)就形成了一繫列的狀態變化,人們把一個觸發行為稱作一個事件。對像對事件的響應,取決於接收該觸發的對像當時所處的狀態,響應包括改變自己的狀態或者又形成一個新的觸發行為。狀態有持續性,它占用一段時間間隔。狀態與事件密不可分,一個事件分開兩個狀態,一個狀態隔開兩個事件。事件表示時刻,狀態代表時間間隔。通常,用UML提供的狀態圖來描繪對像的狀態、觸發狀態轉換的事件以及對像的行為(對事件的響應)。每個類的動態行為用一張狀態圖來描繪,各個類的狀態圖通過共享事件合並起來,從而構成繫統的動態模型。也就是說,動態模型是基於事件共享而互相關聯的一組狀態圖的集合。(3) 功能模型。功能模型表示變化的繫統的“功能”性質,它指明了繫統應該“做什麼”,因此更直接地反映了用戶對目標繫統的需求。軟件工程早期,功能模型通常由一組數據流圖組成。在面向對像方法學中,數據流圖遠不如在結構化分析設計方法中那樣重要。一般說來,與對像模型和動態模型比較起來,數據流圖並沒有增加新的信息。但是,建立功能模型有助於軟件開發人員更深入地理解問題域,改進和完善自己的設計,因此,不能完全忽視功能模型的作用。通常,軟件繫統的用戶數量龐大(或用戶的類型很多),每個用戶隻知道自己如何使用繫統,但是沒有人準確地知道繫統的整體運行情況。因此,使用用例模型代替傳統的功能說明,往往能夠更好地獲取用戶需求,它所回答的問題是“繫統應該為每個(或每類)用戶做什麼”。3.2.2按軟件開發過程對模型分類功能模型、對像模型、動態模型是按模型的用途對模型的分類。在軟件開發過程中,在不同階段需要建立不同的模型,並且這些模型的目的是不同的。模型按軟件開發的階段性可以分為以下6種。(1) 業務模型: 展示業務過程、業務內容和業務規則的模型。參加創建業務模型的主要人員有領域專家和需求分析師,業務模型通常用對像模型表示。(2) 需求模型: 展示用戶要求和業務要求的模型。參入創建需求模型的主要人員有需求分析師和繫統設計師。需求模型通常由用例模型表示(用例模型主要由用例圖構成)。(3) 數據庫模型: 指物理數據模型,該模型是可選的。數據庫應用軟件需要創建數據庫模型。以數據庫設計人員為主,架構師提供指導,資深開發(設計)人員予以配合,共同設計該模型。(4) 分析模型: 繫統分析是繫統實現的步,其目的是在比較高的抽像層次上幫助理清需求和設計。分析模型和設計模型關心的都是繫統是如何被實現的,但是它們的側重點不同。(5) 設計模型: 包含架構模型和詳細設計模型。架構模型展示軟件繫統的宏觀結構; 詳細設計模型展示軟件繫統的微觀組成。架構師設計架構模型(架構模型通常由包圖組成)。詳細設計模型則以資深開發人員為主,架構師提供指導,共同設計(詳細設計模型通常用對像模型表示)。(6) 實現模型: 描述了軟件組件(該組件能夠運行)及其關繫(通常由構件圖或部署圖組成)。以資深開發人員(設計人員)為主,架構師提供總體指導共同設計完成該模型。3.2.3IBM RSA面向對像建模的主要步驟利用IBM Rational Software Architect對軟件繫統建模時,采用的就是以上的模型分類方法。基於IBM RSA的面向對像建模過程一般遵循如下主要步驟。(1) 識別繫統的用例和角色。在這一階段,可以利用RSA建立繫統的需求模型。首先對項目進行需求調研,依據項目的業務流程圖和數據流程圖以及項目中涉及的各級操作人員,通過分析,識別出繫統中的所有用例和角色; 接著分析繫統中各角色和用例間的聯繫。在分析模型中需要包括繫統的用例圖以及用戶與繫統交互的活動圖。它們從用戶的角度分別描述了繫統的功能和使用流程。借助需求模型可以解決“做什麼”的問題。(2) 進行繫統分析,並抽像出類。在這一階段,可以利用RSA建立分析模型。繫統分析的任務是找出繫統中所有需求並加以描述,同時為每一個用例提供相應的用例實現。通過對繫統的深入分析,要從中抽取出實體類、邊界類和控制類,並描述這些類之間的關繫。(3) 設計繫統和繫統中的類及其行為。這個階段需要建立的模型是設計模型。設計階段由結構設計和詳細設計組成。結構設計是高層設計,其任務是定義包(子繫統),包括包間的依賴關繫和主要通信機制。包有利於描述繫統的邏輯組成部分以及各部分之間的依賴關繫。詳細設計就是要細化包的內容,清晰描述所有的類,包括每個類的屬性和方法的定義。經過這個階段,就可以使用合適的面向對像語言來實現繫統了。UML的應用貫穿在繫統開發的每個階段。(1) 需求分析: UML的用例視圖可以表示客戶的需求。通過用例建模可以對外部的角色以及它們所需要的繫統功能建模。角色和用例是用它們之間的關繫、通信建模的。每個用例都指定了客戶的需求。不僅要對軟件繫統進行分析,對商業過程也要進行需求分析。(2) 分析: 分析階段主要考慮所要解決的問題,可用UML的邏輯視圖和動態視圖來描述。類圖描述繫統的靜態結構,協作圖、狀態圖、序列圖、活動圖描述繫統的動態特征。在分析階段隻為問題領域的類建模,不定義軟件繫統的解決方案的細節,如用戶接口的類、數據庫等。(3) 設計: 在設計階段把分析階段的結果擴展成技術解決方案。加入新的類來提供技術基礎結構——用戶接口、數據庫操作等。分析階段的領域問題類被嵌入在這個技術基礎結構中,設計階段的結果是構造階段的詳細的規格說明。(4) 構造: 在構造或程序設計階段,把設計階段的類轉換成某種面向對像程序設計語言的代碼。在對UML表示的分析和設計模型進行轉換時,好不要直接把模型轉化成代碼。因為在早期階段,模型是理解繫統並對繫統進行結構化的手段。(5) 測試: 對繫統的測試通常測試、集成測試、繫統測試和驗收測試幾個不同級測試是對幾個類或一組類的測試,通常由程序員進行; 集成測試集成組件和類,確認它們之間是否恰當地協作。繫統測試把繫統當作一個黑箱,驗證繫統是否具有用戶所要求的所有功能。驗收測試由客戶完成,與繫統測試類似,驗證繫統是否滿足所有的需求。不同的測試小組使用不同的UML圖作為他們工作的基測試使用類圖和類的規格說明,集成測試典型地使用組件圖和協作圖,而繫統測試使用用例圖來確認繫統的行為符合這些圖中的定義。3.3面向對像的分析與設計
    在20世紀60年代末期出現面向對像程序設計的同時,業界正在沿著諸如COBOL、FORTRAN之類的語言蹣跚而行,並用功能分解來解決設計與實現問題,極少討論到面向對像的設計,更不用說面向對像的分析了。過去幾十年軟件發展的4個重大變化,是促進面向對像分析與設計方法迅速發展的重要因素。(1) 軟件領域中面向對像方法的基本概念經歷了幾十年的成長道路,人們的注意力逐漸從編碼問題轉移到設計與分析問題。(2) 構造繫統的基本技術變得更加有力,設計思想受預想的如何編碼的思想影響,而編碼思想受人們可用的程序設計語言的強烈影響。當選用的語言是彙編語言和FORTRAN語言時考慮結構化程序設計是很困難的。使用Pascal、PL/1和ALGOL時,結構化程序設計就容易得多。類似地,當選用COBOL或C語言進行面向對像的程序設計時也是比較困難的,而用C 則比較容易。(3) 現代軟件繫統規模更大、更復雜也更多變,傳統的軟件分析與設計方法難以滿足要求,而面向對像的分析與設計方法將實現比較穩定的繫統。另外,現代軟件繫統更注重繫統用戶界面的開發,對於此類繫統采用面向對像方法進行分析、設計和編碼是一種非常自然的途徑。(4) 現代軟件繫統構造比20世紀70年代和80年代更加面向領域,對功能復雜性的關心比以前少,數據建模的優先程度較為適當,問題域模型的理解及繫統職能處於較高的優先地位。盡管面向對像語言取得了令人振奮的發展,但編程並不是軟件開發項目失敗的主要根源,需求分析與設計問題更為普遍並且更值得解決。因此,面向對像開發技術的焦點不應該隻注重編程階段,而應更全面地考慮軟件工程的其他階段。面向對像方法真正意義和深遠的目標是它適合於解決分析與設計期間的復雜性並實現分析與設計結果的重用。面向對像的開發不僅僅是編程,必須在整個軟件生命周期采用一種全新的方法,這一觀點已被人們所接受。3.3.1面向對像分析面向對像分析,就是抽取和整理用戶需求並建立問題域模型的過程。面向對像分析的關鍵是識別出問題域內的對像,並分析它們之間的關繫。面向對像分析的目的是認知客觀世界的繫統。面向對像分析的工作成果是繫統的分析模型。分析模型的作用有兩個方面: 一是用於在用例模型的基礎上進一步明確問題域的需求; 二是為參加軟件開發的各方提供一個協商的基礎。面向對像分析是面向對像方法從編程領域向分析領域發展的產物。通過面向對像分析可以加強開發人員對問題域的理解,改善與軟件開發有關的各類人員的交流。面向對像分析以用例模型作為輸入,將得到兩種輸出模型: 對像模型和功能模型。對像模型把繫統分解成相互協作的分析類,通過類圖、對像圖描述對像、對像的屬性和對像間的關繫。功能模型從用戶的角度描述繫統提供的服務,也就是描述繫統的動態行為。通過時序圖、協作圖描述對像的交互,揭示對像間如何協作完成每個具體的用例。單個對像的狀態變化或動態行為可以通過狀態圖表達。3.3.2面向對像設計如前所述,分析是提取和整理用戶需求,並建立問題域模型的過程; 設計則是把分析階段得到的需求轉變成符合成本和質量要求的、抽像的繫統實現方案的過程。從面向對像分析到面向對像設計,是一個逐漸擴充模型的過程。或者說,面向對像設計就是用面向對像觀點建立求解域模型的過程。盡管分析和設計的定義有明顯區別,但是在實際的軟件開發過程中二者的界限是很模糊的。許多分析結果可以直接映射成設計結果,而在設計過程中又往往會加深和補充對繫統需求的理解,從而進一步完善分析結果。因此,分析和設計活動是一個多次反復迭代的過程。面向對像方法學在概念和表示方法上的一致性,保證了在各項開發活動之間的平滑(無縫)過渡,領域專家和開發人員能夠比較容易地跟蹤整個繫統開發過程,這是面向對像方法與傳統方法比較起來所具有的一大優勢。生命周期方法學把設計進一步劃分成總體設計和詳細設計兩個階段,類似地,也可以把面向對像設計再細分為繫統設計和對像設計。繫統設計確定實現繫統的策略和目標繫統的高層結構。對像設計確定解空間中的類、關聯、接口形式及實現服務的算法。繫統設計與對像設計之間的界限,比分析與設計之間的界限更模糊。進行面向對像設計時需要遵循下面一些基本準則。(1) 模塊化。面向對像軟件開發模式,很自然地支持把繫統分解成模塊的設計原理,對像就是模塊。它是把數據結構和操作這些數據的方法緊密地結合在一起所構成的模塊。(2) 抽像。面向對像方法不僅支持過程抽像,而且支持數據抽像。類實際上是一種抽像數據類型,它對外開放的公共接口構成了類的規格說明(即協議),這種接口規定了外界可以使用的合法操作符,利用這些操作符可以對類實例中包含的數據進行操作。使用者無須知道這些操作符的實現算法和類素的具體表示方法,就可以通過這些操作符使用類中定義的數據。通常把這類抽像稱為規格說明抽像。此外,某些面向對像的程序設計語言還支持參數化抽像。所謂參數化抽像,是指當描述類的規格說明時並不具體指定所要操作的數據類型,而是把數據類型作為參數。這使得類的抽像程度更高,應用範圍更廣,可重用性更高。例如,C 語言提供的“模板”機制就是一種參數化抽像機制。(3) 信息隱藏。在面向對像方法中,信息隱藏通過對像的封裝性實現: 類結構分離了接口與實現,從而支持信息隱藏。對於類的用戶來說,屬性的表示方法和操作的實現算法都應該是隱藏的。(4) 低耦合。耦合是指一個軟件結構內不同模塊之間互連的緊密程度。在面向對像方法中,對像是基本的模塊,因此,耦合主要指不同對像之間相互關聯的緊密程度。低耦合是優秀設計的一個重要標準,因為這有助於使繫統中某一部分的變化對其他部分的影響降到程度。在理想情況下,對某一部分的理解、測試或修改,無須涉及繫統的其他部分。如果一個類對像過多地依賴其他類對像來完成自己的工作,則不僅給理解、測試或修改這個類帶來很大困難,而且還將大大降低該類的可重用性和可移植性。顯然,類之間的這種相互依賴關繫是緊耦合的。當然,對像不可能是完全孤立的,當兩個對像必須相互聯繫相互依賴時,應該通過類的協議(即公共接口)實現耦合,而不應該依賴於類的具體實現細節。(5) 高內聚。內聚衡量一個模塊素彼此結合的緊密程度。也可以把內聚定義為: 設計中使用的一個構件內素,對完成一個定義明確的目的所做出的貢獻程度。在設計時應該力求做到“低耦合、高內聚”。(6) 可重用。軟件重用是提高軟件開發生產率和目標繫統質量的重要途徑。重用基本上從設計階段開始,有兩方面的含義: 一是盡量使用已有的類(包括開發環境提供的類庫,及以往開發類似繫統時創建的類),二是如果確實需要創建新類,則在設計這些新類的協議時,應該考慮將來的可重復使用性。面向對像設計的具體內容主要有4個方面,即問題域設計、人機接口設計、任務管理設計和數據管理設計。(1) 問題域的設計: 通過面向對像分析得到的問題域模型,為設計問題域的解決方案打下了良好基礎,建立了完整框架。要盡可能地保持面向對像分析所建立的問題域結構。從實現角度對問題域模型做進一步補充或修改,增添、合並或分解類與對像、屬性,調整繼承關繫。當問題域過分復雜龐大時,應該把它進一步分解成若干較小的子繫統。設計在分析和實現之間充當橋梁作用,而問題域設計是關鍵。問題域設計的任務是確定軟件繫統的架構,盡量保持問題域設計成果的穩定性。設計的變與不變是相對的,隻要繫統的架構不變,就不會對軟件開發進度產生大的影響,確保按時提交符合質量要求的軟件產品。(2) 人機界面的設計: 人機界面突出人如何命令繫統以及繫統如何向用戶提交信息,人機界面構建是在問題域的上下文內實現,接口本身表示大多數現代應用的一個特別重要的子繫統。面向對像分析模型中包含的使用情景、用戶與繫統交互時扮演角色的描述等,這些都作為人機界面設計過程的輸入。(3) 任務管理的設計: 任務是進程的別稱,若干任務的並發執行叫多任務。對一些應用,任務能簡化總體設計和代碼。獨立的任務把必須並發進行的行為分離開,這種並發行為可以在多個獨立的處理機上模擬。任務特征的確定可通過了解任務是如何開始而實現,事件驅動和時鐘驅動是為常見的情況,兩者都是通過中斷激活,但前者接收來自外部資源的中斷,而後者則由繫統時鐘控制。除了任務的開始方式外,還需確定任務的優先級別和臨界狀態,高優先級別的任務必須具有立即存取繫統資源的能力,高臨界狀態的任務甚至在資源有效性減少或繫統處在一個低能操作狀態下仍必須繼續操作。在確定任務特征後,定義與其他任務協同和通信所需的對像屬性和方法。(4) 數據管理的設計: 數據管理部分提供了在數據管理繫統中存儲和檢索對像的基本結構。數據管理包括對兩個不同區域的考慮: 一個是對應用本身至關重要數據的管理,另一個是建立對像存儲和檢索的基礎。通常數據管理采用分層設計的方式,思想是從處理繫統屬性的高級需求中分離出操縱數據結構的低級需求。通常有三種主要的數據管理方法: 普通文件、關繫型數據庫管理繫統和面向對像數據庫管理繫統。從方法學上看,由於面向對像的分析和設計方法按適合人們的思考方式進行繫統的分析與設計,使得從面向對像的分析到設計不存在概念和表達的轉換問題。面向對像的分析與設計都是基於相同的面向對像基本概念,因此從面向對像的分析到面向對像的設計是一個累進的模型擴充過程。3.4面向對像實現
    面向對像實現就是用某種面向對像程序設計語言把面向對像設計成果轉化為用戶可使用的軟件產品。從1951年到2014年,人類一共發明了256種編程語言,每一種語言的出現都帶有某些新特征。1967年誕生的個面向對像語言Simula 67,是面向對像程序設計(Object Oriented Programming,OOP)的鼻祖,它提出了對像的概念並且支持類和繼承。隨後相繼出現了Smalltalk、C 、Java、C#等面向對像的編程語言。C 、Java對面向對像的程序設計思想的傳播起到了非常重要的作用。C#和ASP.NET、PHP、JavaScript、Python、Ruby、Groovy、Go等這些編程語言都聲稱支持面向對像編程。每一種語言都有它的特點和不足,沒有一種語言是的。本書不打算比較各種語言的孰優孰劣,僅給出幾個常用語言的應用領域。3.4.1C C 的應用領域主要集中在以下幾個方面。遊戲: C 具有超高效率,而且近年來C 憑借先進的數值計算庫、泛型編程等優勢,在遊戲領域應用很多。目前,除了一些網頁遊戲,很多遊戲軟件客戶端都是使用C 開發的。網絡軟件: C 擁有很多成熟的用於網絡通信的庫,其中有代表性的是跨平臺的、重量級的ACE庫,該庫可以說是C 語言重要的成果之一,在許多重要的企業、部門甚至是軍方都有應用。數字圖像處理: 這個也是發展很快的計算機領域,目前各種數字地球、數字城市、虛擬地理環境等方面,出現了大量的數字圖像處理,C 在數字圖像處理編程中具有很大的優勢。科學計算: 在科學計算領域,FORTRAN是使用多的語言之一。但是近年來,C 憑借先進的數值計算庫、泛型編程等優勢在這一領域也應用頗多。嵌入式繫統: 因為C 具有很高的效率,而且保持對C語言的兼容性,能使底層平臺有很高的效率,同時具有很大的靈活性,使得它在底層開發中具有優勢。繫統級軟件: 例如,操作繫統。在該領域,C語言是主要使用的編程語言。但是C 憑借其對C的兼容性、面向對像性質,也開始在該領域嶄露頭角。C 的應用範圍很廣,在某些對硬件、操作繫統或速度有要求的應用中,C 仍是。3.4.2JavaJava的應用領域很廣,它包含三個版本: Java ME、Java SE和Java EE。這三個版本對應於Java應用的三大領域。Java ME: 是一種高度優化的Java運行環境,主要針對消費類電子設備,例如蜂窩電話和可視電話、數字機頂盒、汽車導航繫統等。是為機頂盒、移動電話和PDA之類嵌入式消費電子設備提供的Java語言平臺,包括虛擬機和一繫列標準化的Java API。Java ME技術在1999年的JavaOne Developer Conference大會上正式推出,它將Java語言的與平臺無關的特性移植到小型電子設備上,允許移動無線設備之間共享應用程序。今天,不止是桌面上的計算機,手中的電話、汽車中的通信設備、家中的冰箱、洗衣機等都將連入互聯網,這是一個移動的互聯網。J2ME(Java2平臺微型版)就是Java程序在這些連接設備上的執行平臺和開發環境,其基本思想和J2SE類似,就是在各種設備上安裝適合它的Java虛擬機,應用程序則在虛擬機之上運行。Java SE: 用於開發和部署桌面、服務器以及嵌入設備和實時環境中的Java應用程序。Java SE包括用於開發Java Web服務的類庫,同時,Java SE為Java EE提供了基礎。Java SE是Java平臺的核心。Java EE: 用於開發和部署可移植、健壯、可伸縮且安全的服務器端Java應用程序。Java EE是在Java SE的基礎上構建的,它提供Web服務、組件模型、管理和通信API,可以用來實現企業級的面向服務體繫結構(ServiceOriented Architecture,SOA)和Web 2.0應用程序。目前流行的企業級B/S(Browser/Server,瀏覽/服務器)架構的應用主要是用Java EE/JSP和C#/ASP.NET開發的。3.4.3C#和ASP.NETC#是微軟公司發布的一種面向對像的、運行於.NET Framework之上的高級程序設計語言。C#看起來與Java有著驚人的相似; 它包括諸如單一繼承、接口、與Java幾乎同樣的語法和編譯成中間代碼再運行的過程。但是C#與Java有著明顯的不同,它借鋻了Delphi的一個特點,與COM(組件對像模型)是直接集成的,而且它是微軟公司.NET Windows網絡框架的主角。C#主要用於桌面應用程序的開發,它和ASP.NET一起,就像Java和JSP一樣,是Web應用程序開發的主力。3.4.4PHPPHP(Hypertext Preprocessor,超文本預處理器)是一種通用開源腳本語言。PHP語法吸收了C語言、Java和Perl的特點,易於學習,使用廣泛,主要適用於Web應用開發領域。PHP獨特的語法混合了C、Java、Perl以及PHP自創的語法。它可以比CGI或者Perl更快速地執行動態網頁。用PHP制作出的動態頁面與其他的編程語言相比,PHP是將程序嵌入到HTML(標準通用標記語言下的一個應用)文檔中去執行,執行效率比完全生成HTML標記的CGI要高許多; PHP還可以執行編譯後代碼,編譯可以達到加密和優化代碼運行,使代碼運行更快。3.4.5JavaScriptJavaScript是一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用於客戶端的腳本語言,早是在HTML(標準通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態功能。主要應用於Web應用開發領域。3.4.6PythonPython是一種面向對像、解釋型計算機程序設計語言,由Guido van Rossum於1989年發明,個公開發行版發行於1991年。Python具有豐富和強大的庫。它常被昵稱為膠水語言,能夠把用其他語言制作的各種模塊(尤其是C/C )很輕松地連接在一起。常見的一種應用情形是,使用Python快速生成程序的原型(有時甚至是程序的終界面),然後對其中有特別要求的部分,用更合適的語言改寫,比如3D遊戲中的圖形渲染模塊,性能要求特別高,就可以用C/C 重寫,而後封裝為Python可以調用的擴展類庫。3.4.7RubyRuby是一種簡單快捷的面向對像腳本語言,主要應用於Web應用開發領域。3.4.8GroovyGroovy是一種基於JVM(Java虛擬機)的敏捷開發語言,它結合了Python、Ruby和Smalltalk的許多強大的特性,Groovy代碼能夠與Java代碼很好地結合,也能用於擴展現有代碼。由於其運行在JVM上的特性,Groovy可以使用其他Java語言編寫的庫。Groovy是一種腳本語言,可以很好地與Java結合編程。該語言特別適合與Spring的動態語言支持一起使用,設計時充分考慮了Java集成,這使Groovy與Java代碼的互操作很容易。主要應用於Web應用開發領域。3.4.9GoGo語言是谷歌公司2009年發布的第二款開源編程語言。Go語言專門針對多處理器繫統應用程序的編程進行了優化,使用Go編譯的程序可以媲美C或C 代碼的速度,而且更加安全、支持並行進程。它是一種通用型的語言,可以用來開發任何軟件——從普通應用到繫統編程。雖然這種語言還不成熟,各種語言特征和規格還在變化,但程序員如今已經用它來進行軟件開發工作了。能否像一些技術分析家所說的那樣——“Go將終完全替代Java”,我們將拭目以待。3.5UML對面向對像開發的支持
    按照軟件的生命周期,可以把面向對像軟件開發過程分為: 需求分析、面向對像分析、面向對像設計、面向對像實現4個主要階段。UML提供了對需求分析、面向對像分析、面向對像設計的支持。軟件開發實踐中仍然存在“重實現,輕建模”的現像。這個現像產生的原因,一是除了實現的工作以外,又增加了建模的工作,工作量加大了; 二是建模和實現沒有能夠很好地銜接。IBM RSA是基於Eclipse的,提供了從建模到實現的較好銜接,並且支持模型驅動的開發。3.5.1用例模型用例模型描述的是外部執行者所理解的繫統功能。用例模型用於需求分析階段,它的建立是繫統開發者和用戶反復討論的結果,表明了開發者和用戶對需求規格達成的共識。首先,它描述了待開發繫統的功能需求; 其次,它將繫統看作黑盒,從外部執行者的角度來理解繫統; 第三,它驅動了需求分析之後各階段的開發工作,不僅在開發過程中保證了繫統所有功能的實現,而且被用於驗證和檢測所開發的繫統,從而影響到開發工作的各個階段和UML的各個模型。用例模型從用戶角度描述繫統功能,並指出各功能的操作者。用例模型描述了一個繫統的功能需求,主要包括繫統要實現的功能(用例)、環境(參入者)以及用例與參加者之間的關繫。用例與參加者之間的關繫可以用用例圖來表示,用例圖中可以包含事件流的文字說明,以及參入者和繫統之間的交互信息等。對於一些比較復雜的繫統,還可以使用活動圖來表示用例中的事件流。3.5.2分析模型分析模型描述了正在建模的繫統或應用程序的結構。它包括描述用例模型中所確定的功能需求的邏輯實現的類和序列圖。分析模型確定出繫統中的主要類,並且包含一組描述繫統如何構建的用例實現。類圖通過利用原型對繫統的功能部分建模,對繫統的靜態結構進行描述。序列圖通過描述用例中事件執行時的流對用例進行實現。這些用例實現對繫統的一些部分如何在具體用例環境中交互進行建模。分析模型描述了繫統的邏輯結構,因而它是設計模型的基礎。3.5.3設計模型設計模型是基於分析模型的,它向繫統的實際實現中添加了詳細信息。設計模型通過使用各種圖(包括時序圖、狀態機圖、組件圖和部署圖),詳細地描述了應用程序是如何構成,以及如何實現的。它還描述了程序設計構想及技術,例如那些用於持久性、部署、安全,及記錄的內容。思考題
    1. 什麼是面向對像方法學?與其他軟件開發方法相比較,它有什麼特點?2. 什麼是對像?它與傳統的數據有何異同?3. 什麼是類、繼承和多態?4. 什麼是模型?開發軟件為什麼要建模?5. 簡述面向對像分析的基本過程。6. 簡述面向對像設計的基本過程。7. 簡述面向對像程序設計的基本特征。8. 簡述常用面向對像分析和設計方法的異同。9. 簡述UML與面向對像分析與設計的關繫。
    書摘插畫
    插圖
    插圖

    插圖

    插圖

    插圖
    網友評論  我們期待著您對此商品發表評論
     
    相關商品
    在線留言 商品價格為新臺幣
    關於我們 送貨時間 安全付款 會員登入 加入會員 我的帳戶 網站聯盟
    DVD 連續劇 Copyright © 2024, Digital 了得網 Co., Ltd.
    返回頂部