HarmonyOS 實戰項目

来源:https://www.cnblogs.com/depeng8899/archive/2023/11/16/17837363.html
-Advertisement-
Play Games

本章將介紹如何在 HarmonyOS 上進行實際項目開發。我們將從項目需求分析開始,逐步完成項目的設計、開發、測試和上線過程。 ...


引言

本章將介紹如何在 HarmonyOS 上進行實際項目開發。我們將從項目需求分析開始,逐步完成項目的設計、開發、測試和上線過程。

目錄

  1. 項目需求分析
  2. 項目設計
  3. 項目開發
  4. 項目測試
  5. 項目上線
  6. 總結

1. 項目需求分析

項目需求分析是項目開發的關鍵階段之一,它有助於確定項目的範圍、目標和功能,為項目的設計和開發提供清晰的方向。

1. 定義項目目標

在項目需求分析的早期,你需要明確定義項目的主要目標。這些目標應該是具體和可測量的,以便後續的開發工作能夠根據這些目標進行衡量和評估。

示例目標:

  • 構建一個線上購物應用,允許用戶瀏覽和購買商品。
  • 創建一個社交媒體平臺,用戶可以發佈和分享照片、視頻和帖子。
  • 開發一個天氣預報應用,提供實時天氣信息和預測。

2. 功能需求

功能需求是項目中各個功能和特性的詳細描述。它們描述了應用程式應該具備的各種功能和用戶體驗。在此階段,你需要列出所有的功能需求,併為每個功能需求指定清晰的描述。

示例功能需求:

  • 用戶登錄和註冊功能,包括用戶名和密碼驗證。
  • 商品瀏覽功能,包括商品列表、商品詳情和搜索功能。
  • 購物車功能,用戶可以將商品添加到購物車併進行結算。
  • 社交媒體應用中的帖子發佈和評論功能。
  • 天氣預報應用中的實時天氣數據顯示功能。

3. 用戶需求

用戶需求是關於最終用戶期望從應用中獲得的體驗和價值的描述。在此階段,你需要瞭解目標用戶的需求、偏好和期望。這可以通過用戶調研、訪談和反饋收集來獲得。

示例用戶需求:

  • 用戶希望購物應用具有直觀的界面,易於瀏覽和購買商品。
  • 社交媒體用戶期望能夠輕鬆分享照片和視頻,並與朋友互動。
  • 天氣預報應用用戶需要準確的實時天氣信息,以便計劃活動。

4. 非功能需求

除了功能需求外,還需要考慮一些非功能需求,這些需求涉及到應用的性能、安全性、可用性和可擴展性等方面。

示例非功能需求:

  • 應用需要在手機、平板和電視等不同設備上運行流暢。
  • 數據傳輸和存儲應該具有安全性,以防止數據泄漏。
  • 應用需要具有高可用性,確保隨時可用。
  • 應用應該具備良好的擴展性,以支持未來的功能擴展。

5. 優先順序和時間表

為了管理項目的進展,需要為每個需求分配優先順序,並創建一個時間表,以確定項目的交付時間。這有助於確保項目在預定時間內完成。

示例優先順序:

  • 必須實現的核心功能具有高優先順序。
  • 次要功能具有中等優先順序,可以在後續版本中實現。
  • 非功能需求如性能優化和安全性可以作為項目的持續改進工作。

6. 需求文檔

最後,將項目需求整理成一份詳細的需求文檔,該文檔將成為項目開發的指導文件。需求文檔應包括所有的功能需求、用戶需求、非功能需求、優先順序和時間表,以及其他相關信息。

項目需求分析是項目成功的第一步,它有助於確保項目團隊對項目的目標和要求有清晰的理解,從而更容易規劃和執行後續的項目設計和開發工作。

2. 項目設計

項目設計是項目開發的關鍵階段之一,它涉及到應用程式的整體架構、用戶界面設計以及數據模型設計。以下是項目設計的詳細解釋:

1. 架構設計

在項目設計階段,你需要決定應用的整體架構,即如何組織應用的代碼和模塊。合理的架構設計有助於代碼的組織和維護,並確保應用的可擴展性。

  • 選擇應用架構: 選擇合適的應用架構,例如 MVC(Model-View-Controller)、MVVM(Model-View-ViewModel)等,以便有效地組織代碼和分離關註點。

  • 模塊劃分: 將應用拆分為各個模塊,每個模塊負責特定的功能或業務邏輯。模塊之間應該具有清晰的介面和依賴關係。

  • 分散式架構: 如果應用需要與其他設備或服務進行協作,考慮採用分散式架構,確保設備之間的通信和數據共用。

2. 用戶界面設計

用戶界面設計是用戶與應用互動的關鍵部分,一個良好的用戶界面可以提升用戶體驗並增加用戶滿意度。

  • 界面佈局: 設計應用的界面佈局,確保界面元素的排列和尺寸合理,易於導航。

  • 顏色和樣式: 選擇合適的顏色和樣式,以確保界面美觀和一致性。遵循 HarmonyOS 的設計準則,以保持一致的外觀。

  • 交互設計: 設計用戶界面的交互方式,包括按鈕、菜單、手勢等。確保用戶可以輕鬆地與應用進行互動。

3. 數據模型設計

數據模型設計涉及到應用數據的組織、存儲和管理。這一步是確保應用能夠有效地處理和存儲數據的關鍵。

  • 資料庫設計: 如果應用需要存儲數據,設計資料庫結構,包括數據表、欄位、關係等。選擇合適的資料庫引擎,如 SQLite。

  • 數據模型: 定義應用中的數據模型,包括數據對象、數據屬性和數據關係。確保數據模型與應用的功能需求相匹配。

  • 數據存儲和訪問: 確定數據的存儲位置和訪問方式。使用合適的存儲技術,如文件存儲、資料庫存儲或雲存儲。

4. 安全性設計

安全性設計是不容忽視的一部分,確保應用的數據和用戶信息受到充分的保護。

  • 身份驗證和授權: 設計用戶身份驗證和授權機制,確保只有授權用戶能夠訪問敏感數據和功能。

  • 數據加密: 使用數據加密技術,保護數據在存儲和傳輸過程中的安全性。

  • 安全審計: 添加安全審計機制,記錄用戶活動和安全事件,以便及時檢測和響應潛在的安全問題。

5. 性能設計

性能設計涉及到應用的性能優化和資源管理,以確保應用能夠在不同設備上運行流暢。

  • 性能優化: 優化代碼、減少資源占用、使用合適的數據結構和演算法,以提高應用的響應速度和效率。

  • 資源管理: 管理記憶體、網路和CPU資源的使用,避免資源泄漏和濫用。

  • 響應式設計: 採用響應式設計,以適應不同解析度和設備屏幕尺寸。

項目設計是項目開發的關鍵,它為項目提供了堅實的基礎,確保項目在後續階段能夠按計劃推進。合理的設計可以提高代碼的可維護性、用戶體驗和安全性,因此在項目設計階段要投入足夠的精力和時間。

3. 項目開發

項目開發是項目生命周期中最重要的階段之一,它涉及到將項目的設計和需求轉化為實際可運行的應用程式。

1. 編碼

在項目開發的早期,開發者將根據項目設計和需求開始編寫應用程式的代碼。這個階段包括以下關鍵活動:

  • 編寫代碼: 根據項目設計中的架構和用戶界面設計,開始編寫應用程式的代碼。開發人員應該遵循編碼規範和最佳實踐。

  • 模塊開發: 開發人員將代碼分為各個模塊,每個模塊負責特定的功能或任務。模塊之間應該有清晰的介面和依賴關係。

  • 版本控制: 使用版本控制系統(如Git)來管理代碼的版本和協作開發。這有助於多人協作和代碼管理。

2. 單元測試

單元測試是在代碼編寫過程中進行的測試,用於確保各個功能模塊的正確性。開發人員編寫測試用例來驗證每個模塊的功能。

  • 測試用例編寫: 為每個功能模塊編寫測試用例,包括正常情況和邊界情況的測試。

  • 單元測試執行: 運行單元測試來檢查每個模塊是否按預期工作。如果有問題,需要修複代碼並重新運行測試。

3. 集成測試

集成測試是在不同模塊之間進行的測試,目的是確保各個模塊在集成到應用中時能夠正常協作。

  • 模塊集成: 將各個模塊集成到應用程式中,確保它們能夠正確地協作和交互。

  • 集成測試執行: 運行集成測試,測試不同模塊之間的集成點。檢查功能是否正常工作,並處理可能的問題。

4. 用戶界面開發

在用戶界面開發階段,開發人員將項目設計中的用戶界面設計轉化為可交互的用戶界面。

  • 界面實現: 根據用戶界面設計的規範和視覺樣式,實現用戶界面的各個屏幕、頁面和元素。

  • 用戶交互: 添加用戶交互邏輯,使用戶能夠與界面進行交互,如按鈕點擊、數據輸入等。

  • 界面測試: 測試用戶界面的各個部分,確保界面元素的排列和功能正常。

5. 功能開發

功能開發是應用程式的核心部分,包括實現項目需求中定義的各種功能和特性。

  • 功能實現: 根據功能需求,在應用程式中實現各種功能,例如用戶登錄、數據查詢、數據處理等。

  • 功能測試: 針對每個功能模塊進行功能測試,確保它們按照需求規範正常工作。

6. 質量保證

質量保證是確保項目交付高質量應用的重要步驟。

  • 測試覆蓋: 確保測試覆蓋所有功能和使用情境,包括正常使用、邊界情況和異常情況。

  • 性能測試: 測試應用在不同設備上的性能,包括響應時間、資源占用等。

  • 安全測試: 進行安全測試,檢查應用是否受到潛在的安全漏洞和攻擊的影響。

7. 集成與系統測試

在項目開發的後期,進行集成和系統測試,以確保整個應用程式的功能和性能。

  • 集成測試: 測試不同模塊之間的集成點,確保模塊之間的協作正常。

  • 系統測試: 測試整個應用程式,模擬用戶實際使用情境,確保應用的整體性能和穩定性。

8. 修複和改進

在測試過程中,可能會發現問題和缺陷。開發人員需要及時修複這些問題,併進行改進。

  • 問題跟蹤: 記錄和跟蹤發現的問題和缺陷,以便進行處理。

  • 修複和改進: 根據問題報告進行代碼修複,確保問題得到解決。同時,根據測試和反饋進行改進和優化。

9. 文檔編寫

在項目開髮結束之前,編寫項目文檔,包括用戶文檔、開發文檔和維護文檔。這些文檔有助於用戶瞭解應用的使用方法,以及開發人員和維護人員瞭解應用的內部結構和配置。

項目開發是一個複雜的過程,需要團隊合作、質量保證和不斷改進。良好的開發實踐和有效的開發工具是確保項目按計劃成功交付的關鍵因素。

4. 項目測試

項目測試是確保應用程式質量、穩定性和安全性的關鍵步驟。在項目測試階段,測試團隊將應用程式暴露給各種測試情境,以驗證其功能是否按照規格要求工作,並檢查性能、安全性和相容性等方面。

1. 功能測試

功能測試是驗證應用程式的各個功能和特性是否按照需求規格書中的描述正常工作的測試過程。

  • 功能覆蓋: 確保測試用例覆蓋所有功能模塊,包括正常情況、邊界情況和異常情況。

  • 測試用例編寫: 根據功能需求編寫測試用例,每個測試用例描述了一個特定的功能測試情境。

  • 功能驗證: 執行測試用例,驗證每個功能是否按照規格要求工作。如果出現問題,記錄問題報告並通知開發團隊進行修複。

2. 性能測試

性能測試旨在評估應用程式在不同負載和條件下的性能表現。這包括以下類型的測試:

  • 負載測試: 模擬大量用戶同時訪問應用程式,以評估其在高負載情況下的性能。測量響應時間、吞吐量和資源占用。

  • 穩定性測試: 測試應用程式的穩定性,包括長時間運行測試、記憶體泄漏檢測和崩潰測試。

  • 併發性能測試: 測試應用程式在多用戶同時使用的情況下的性能表現,包括併發用戶數、事務吞吐量等。

3. 安全性測試

安全性測試旨在發現並修複應用程式中的潛在安全漏洞和風險。這包括以下測試:

  • 漏洞掃描: 使用自動工具掃描應用程式以檢測常見的漏洞,如跨站腳本(XSS)和SQL註入。

  • 授權和身份驗證測試: 驗證應用程式的身份驗證和授權機制,確保只有授權用戶能夠訪問敏感功能和數據。

  • 數據加密和隱私測試: 測試數據的傳輸和存儲是否安全,並檢查應用程式的隱私政策是否得到遵守。

4. 相容性測試

相容性測試確保應用程式在不同設備、操作系統和瀏覽器上正常工作。這包括:

  • 設備相容性測試: 測試應用程式在不同型號和解析度的設備上的相容性,包括手機、平板電腦、電視等。

  • 操作系統相容性測試: 測試應用程式在不同操作系統版本上的相容性,如 Android、iOS、HarmonyOS 等。

  • 瀏覽器相容性測試: 如果應用程式是一個 Web 應用,測試在不同瀏覽器上的相容性,如 Chrome、Firefox、Safari 等。

5. 用戶驗收測試(UAT)

用戶驗收測試是由最終用戶執行的測試,旨在驗證應用程式是否滿足其需求和期望。用戶驗收測試包括:

  • 用戶參與: 邀請一組真實用戶執行測試用例,模擬實際使用情境。

  • 問題反饋: 用戶報告問題、缺陷和建議,測試團隊記錄並通知開發團隊進行修複。

6. 回歸測試

回歸測試是在應用程式經歷了變更或修複後執行的測試,以確保已有功能沒有受到新更改的影響。

  • 測試套件維護: 維護一組回歸測試用例,涵蓋了應用程式的核心功能。這些測試用例在每次更改後都會運行,以檢查是否引入了新問題。

  • 自動化回歸測試: 使用自動化測試工具來執行回歸測試,以節省時間和減少人工測試的工作。

7. 最終驗收

最終驗收是項目測試的最後一步,確認應用程式已滿足所有需求,並準備好發佈。

  • 驗收標準: 根據項目需求和規格書中的驗收標準,驗證應用程式是否滿足所有要求。

  • 驗收測試: 執行最終驗收測試,確保應用程式通過了所有驗收標準。

項目測試是確保應用程式質量的關鍵步驟,需要系統性地執行各種類型的測試,包括功能、性能、安全性和相容性測試。測試團隊應該密切與開發團隊協作,確保發現的問題得到及時修複,以便按計劃發佈高質量的應用程式。

5. 項目上線

項目上線是將應用程式或項目部署到生產環境,使其可供最終用戶訪問和使用的關鍵步驟。這個過程需要仔細規劃和執行,以確保順利和高效。以下是項目上線的詳細解釋:

1. 生產環境準備

在將應用程式上線之前,需要確保生產環境已經準備就緒。這包括以下任務:

  • 伺服器和基礎設施配置: 確保伺服器和基礎設施滿足應用程式的要求,併進行必要的配置。

  • 資料庫設置: 配置資料庫伺服器,包括創建資料庫、表格和設置訪問許可權。

  • 功能變數名稱和 DNS 配置: 如果應用程式使用功能變數名稱進行訪問,確保功能變數名稱已註冊並配置了正確的 DNS 記錄。

  • 安全性設置: 設置防火牆、入侵檢測系統和其他安全性措施,以保護生產環境。

2. 上線計劃和策略

制定上線計劃和策略是確保上線過程順利的關鍵步驟。這包括:

  • 上線日期和時間: 選擇一個合適的日期和時間進行上線,通常在低流量時段進行,以最小化用戶影響。

  • 備份和回滾策略: 制定數據備份和系統回滾策略,以便在出現問題時迅速還原系統。

  • 通信計劃: 準備通信計劃,通知相關利益相關者(團隊成員、客戶、用戶等)應用程式即將上線。

  • 監控和報警設置: 設置監控系統,以便及時檢測和響應生產環境中的問題。

3. 部署應用程式

部署應用程式是將應用程式從開發環境遷移到生產環境的過程。這包括:

  • 代碼部署: 將應用程式的代碼部署到生產伺服器上,確保代碼完整和正確。

  • 資料庫遷移: 將資料庫中的測試數據遷移到生產資料庫中,確保數據一致性。

  • 配置設置: 在生產環境中配置應用程式的參數、環境變數和連接字元串。

  • 文件上傳: 如果應用程式依賴於文件存儲,確保文件上傳到生產環境。

4. 測試和驗證

在上線之前,必須進行測試和驗證,以確保應用程式在生產環境中正常工作。

  • 功能測試: 驗證應用程式的各個功能是否在生產環境中按照規格要求工作。

  • 性能測試: 在生產環境中執行性能測試,確保應用程式在負載下表現正常。

  • 安全性測試: 進行最後一輪安全性測試,確保應用程式沒有潛在的漏洞。

5. 監控和性能優化

一旦應用程式上線,需要實時監控其性能和穩定性,併進行必要的性能優化。

  • 監控工具設置: 設置監控工具,以跟蹤應用程式的性能指標、錯誤和異常。

  • 日誌記錄和分析: 記錄應用程式的日誌,以便在出現問題時進行故障排除。

  • 性能優化: 根據監控數據進行性能優化,如調整伺服器資源、資料庫查詢優化等。

6. 功能變數名稱解析和流量切換

如果應用程式使用功能變數名稱進行訪問,需要確保功能變數名稱解析到正確的伺服器地址,並切換流量至生產環境。

  • 功能變數名稱解析: 確保功能變數名稱解析記錄已更新,將功能變數名稱指向生產伺服器的IP地址。

  • 流量切換: 將流量切換至生產環境,以便用戶可以訪問應用程式。

7. 最終驗證和監控

一旦應用程式上線,進行最終的驗證和監控:

  • 最終驗證: 再次驗證應用程式在生產環境中的功能、性能和安全性。

  • 實時監控: 實時監控應用程式的性能、用戶活動和錯誤情況。

8. 應用程式發佈

最後,應用程式正式發佈,並通知相關利益相關者。這包括:

  • 發佈通知: 通知用戶和客戶應用程式已上線,提供相關信息和更新。

  • 文檔更新: 更新用戶文檔和技術文檔,以反映最新的生產環境配置。

項目上線是項目交付的最後一步,需要仔細規劃和執行,以確保應用程式能夠順利在生產環境中運行,並提供高質量的服務。隨著時間的推移,需要不斷監控和維護生產環境,以確保應用程式的穩定性和安全性。

6. 總結

本章介紹了實戰項目的各個階段,包括需求分析、設計、開發、測試和上線。通過認真執行每個階段的任務,你可以成功地完成 HarmonyOS 項目,並提供高質量的應用給用戶。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前言 看過不少關於 await 的原理的文章,也知道背後是編譯器給轉成了狀態機實現的,但是具體是怎麼完成的,回調又是如何銜接的,一直都沒有搞清楚,這次下定決心把源碼自己跑了下,終於豁然開朗了 本文的演示代碼基於 VS2022 + .NET 6 示例 public class Program { st ...
  • 哈嘍大家好,我是鹹魚 最近這段時間比較忙,將近一周沒更新文章,再不更新我那為數不多的粉絲量就要庫庫往下掉了 T﹏T 剛好最近在學 Kafka,於是決定寫篇跟 Kafka 相關的文章(文中有不對的地方歡迎大家指出) 考慮到有些小伙伴可能是第一次接觸 Kafka ,所以先簡單介紹一下什麼是 Kafka ...
  • 零基礎快速上手STM32開發(手把手保姆級教程) 1. 前言 作為一名嵌入式工程師,STM32 是必須要學習的一款單片機,同時這款單片機資料足夠多,而且比較簡單,非常適合初學者入門。 STM32 是一款由 STMicroelectronics 公司開發的 32 位微控制器,由於其強大的處理能力和廣泛 ...
  • 簡介 SQL(Structured Query Language)是一種用於訪問和操作關係型資料庫的標準語言。它是一個功能強大的語言,用於執行各種資料庫操作,包括檢索數據、插入新記錄、更新記錄、刪除記錄、創建資料庫、創建新表、設置許可權以及執行存儲過程和視圖等。以下是 SQL 的一些重要方面: SQL ...
  • sql server 2005安裝包sql server 2005 SP4補丁包(非常難找,留作備用) 鏈接: https://pan.baidu.com/s/1j5OOX-iV8gLrmSNqNLE-kg 提取碼: jvtr 複製這段內容後打開百度網盤手機App,操作更方便哦 背景: 在windo ...
  • 嘗試用node編寫一個簡單的登錄介面,結果啟動服務後請求介面出現了該錯誤。 其問題就是訪問的工具身份驗證協議過於落後,在node內安裝的2.18.1 mysql包。 解決: 先登錄資料庫。 use mysql;(mysql為資料庫名) 提示Database changed; 查詢表中信息 ; sel ...
  • 本文以GaussDB資料庫為平臺,將詳細介紹SQL中DROP、TRUNCATE和DELETE等語句的含義、使用場景以及註意事項,幫助讀者更好地理解和掌握這些常用的資料庫操作命令。 ...
  • 作為一款火山引擎推出的雲原生數據倉庫,ByteHouse基於開源ClickHouse構建,併在位元組跳動內外部場景的檢驗下,對OLAP引擎能力、性能、運維、架構進一步升級。除此之外,ByteHouse也在Serverless方向探索,基於cloud-native 雲原生的理念構建了全新一代的數據倉庫,... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...