下午念什麼
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Write
        • Owners
        • Signed-in users
        • Everyone
        Owners Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Help
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Write
Owners
  • Owners
  • Signed-in users
  • Everyone
Owners Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # 第1章 消化知識 * 作者描述如何進行PCB 專用軟體的工具的設計 * ![](https://i.imgur.com/GaBQ2A1.png) * net 導線 * ![](https://i.imgur.com/2Vh6jaJ.png) * 物件交換圖(object interaction diagram) * 加入 signal * ![](https://i.imgur.com/d5yFUCW.png) * 用net來接腳 * 開始討論特定功能,探針模擬(probe simulation) * 追蹤信號的傳播,以便檢測在設計中可能出現特定類型問題的位置 * ![](https://i.imgur.com/4RNgqdd.png) * 透過特定的Pin 將信號經由元件推送到其他特定的Pin * ![](https://i.imgur.com/ijuNROq.png) * 信號每經過一個Net, 稱為1跳 * 每個元件的推動 行爲都是一樣 * ![](https://i.imgur.com/yoI7k4z.png) * 元件的類型決定了推動行為 * ![](https://i.imgur.com/0cXOm4A.png) > 最後放棄了探測模擬,因為它不是一項重要的開發任務 > 但模型幫助理解"如賀透過元件推動信號,以及如何計算跳數" > ## 有效建模的要素 1. 模型與實作的綁定( Binding the model and the implementation) 2. 建立了一種以模型為基礎的語言( Cultivating a language based on the model) 3. 開發一個蘊含豐富知識的模型( Developing a knowledge-rich model) 4. 提煉模型( Distilling the model) 5. 腦力激盪和實驗 ( Brainstorming and experimenting) ## 知識消化 * 資訊的原始資料來自 * domain expert * 現有系統的使用者 * 技術團隊以前在 "相關遺留系統" 或 "同領域的其他專案" * 傳統 Waterfall 因為沒有回饋所以總是失敗(因為知識只是朝一個方向流動,沒有累積) * 因為 SA 負責建立 prototype 依據業務專家的意見 * 但 SA沒有向 programmer學習也沒有得到早期版本的經驗 * 有迭代過程的專案 * 透過重構,可以持續保持軟體的簡潔 * 假如programmer沒有去了解"領域"背後的原理,專案不會從"原有的特性"自然地快展出更強大的"新特性" * 好的Progrmamer 會自然地抽象並開發出一個"可以完成更多工作的模型" * 在建模時需要技術人員搭配domain expert, 否則只是做基本工作,無法反應domain expert的思考方式 * 模型 在不斷改進時,成為組織專案資訊流的工具 ## 持續學習 * 看來沒有技術難度的領域可能是一種錯覺 * 沒有意識到"不知道的東西"有多少,這種無知往往會導致我們做出錯誤的假設 * 無法傳遞知識,例如一些外包的關鍵子系統,只交回程式碼 * 用典型的設計方法時,程式碼和文件不會透過有用形式表示"這些得來不易的知識",大部分透過口頭傳遞知識 * 開發人員同時"增進技術知識","培養一般的領域建模技巧"和"特定領域的知識" * 擅長自學的團員可以處理為關鍵領域的開發任務 * 領域專家也更清楚了解應用程式的目標 * 早期的知識消化過程,讓團隊成員/開發人員/領域專家 * 開始使用共同語言 ## 知識豐富的設計 * 貨櫃航運專案 * 知識消化產生的模型可以反映出對知識深層理解 * 模型改變,開發人員進行重構,反映出模型的變化,知識合併到應用程式 * 領域專家,反覆研究所有規則 / 解決規則之間的矛盾 / 用常識彌補規則的不足 ## 深層模型 * 一開始建立可以描述貨物(cargo)和運貨航線(itinerary)的模型 * 領域專家不接受,因為他們有自己考慮業務的方式 * 透過幾個月的知識消化後 * 從"貨櫃在各個地點之間傳輸"改為"貨運責任在各個實體之間傳遞" * 透過瞭解"作業(operations)"與"責任(responsibilities)"的重要關係而開發 ## 參考 * [領域驅動設計:軟體核心複雜度的解決方法 (Domain-Driven Design: Tackling Complexity in the Heart of Software) - 讀書會](https://hackmd.io/nPeeBHuESmeUtOjIif6PBg) * 持續學習(Kerievsky 2003), Refactoring to Patterns * https://www.tenlong.com.tw/products/9789861814025 * https://www.tenlong.com.tw/products/9789865021832?list_name=sp

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully