UML系統(tǒng)分析與設計教程(第2版) 課件 第15章 嵌入式系統(tǒng)設計_第1頁
UML系統(tǒng)分析與設計教程(第2版) 課件 第15章 嵌入式系統(tǒng)設計_第2頁
UML系統(tǒng)分析與設計教程(第2版) 課件 第15章 嵌入式系統(tǒng)設計_第3頁
UML系統(tǒng)分析與設計教程(第2版) 課件 第15章 嵌入式系統(tǒng)設計_第4頁
UML系統(tǒng)分析與設計教程(第2版) 課件 第15章 嵌入式系統(tǒng)設計_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

UML系統(tǒng)分析與設計SystemAnalysis&Design冀振燕北京交通大學

第十五章嵌入式系統(tǒng)設計系統(tǒng)需求需求分析靜態(tài)結構模型動態(tài)行為模型物理模型UML系統(tǒng)分析與設計第2版ZhenyanJi2系統(tǒng)需求便攜式心電記錄儀是一種消費電子儀器,用來實時記錄心臟病人的心電波形,心電記錄儀的顯示器還可以回放所記錄的心電波形。心電數(shù)據(jù)由心電記錄儀的傳感器采集后,轉變?yōu)閿?shù)字信號,然后存儲在記錄儀的存儲器中。用戶可以通過心電記錄儀的顯示器,在任何時候快速回放所存儲的任何一個時間段的心電波形。心電記錄儀應該具有體積小、重量輕、易使用、可省電(可以由電池提供電源)等特點。UML系統(tǒng)分析與設計第2版ZhenyanJi3系統(tǒng)需求按鈕“記錄”用來啟動心電信號記錄;按鈕“回放”用來回放所記錄的心電信號;按鈕“停止”用來停止系統(tǒng)的記錄或回放活動;按鈕“刪除”用來刪除所記錄的心電信號;按鈕“菜單”用來激活系統(tǒng)菜單,按鈕“上”、“下”、“左”、“右”用來選擇菜單項,按鈕“OK”用來確定選項。UML系統(tǒng)分析與設計第2版ZhenyanJi4系統(tǒng)需求主要功能可以存儲20個心電波(ECGWave),每個心電波的長度由內存的大小來決定。具有屏幕菜單,使用方便可以設置鬧鈴,提示用戶時間到。具有LCD顯示器可以顯示心電波形、心電波形的記錄時間和記錄日期、當前時間和當前日期。當前的時間和日期總是出現(xiàn)在顯示器上。顯示器還顯示電池使用情況指標。當電池電量不足時,系統(tǒng)發(fā)出蜂鳴聲提醒用戶。具有待用模式(Stand-byMode),這樣可以節(jié)省能量。當不用時,系統(tǒng)關閉外設;當用戶隨便按一個按鈕時,系統(tǒng)激活,返回正常工作狀態(tài)。UML系統(tǒng)分析與設計第2版ZhenyanJi5需求分析識別參與者系統(tǒng)的參與者只有一個,即User(用戶)。UML系統(tǒng)分析與設計第2版ZhenyanJi6參與者“User”的描述需求分析識別用例記錄心電信號(RecordECG)。當用戶按下“記錄”按鈕,記錄儀開始記錄心電信號;用戶按下“停止”按鈕或者內存用完時,記錄儀停止記錄心電信號?;胤判碾娦盘枺≒laybackECG)。用戶可以從目錄表中選擇所要回放的心電信號,按下“回放”按鈕,心電信號片段開始在顯示器上回放,直到結束(或者當用戶按下“停止”按鈕時,回放停止)。UML系統(tǒng)分析與設計第2版ZhenyanJi7識別用例刪除心電信號(DeleteECG)。用戶可以從目錄表中選擇某個心電信號片段,然后按下“刪除”按鈕,則該心電信號片段從內存中被刪除,其所占用的內存空間被釋放。設置鬧鈴時間(SetAlarmTime)。用戶可以打開或關閉鬧鈴,并設置鬧鈴的時間。打開或關閉鬧鈴以及設置鬧鈴的時間是通過選擇系統(tǒng)菜單的不同選項進行的。UML系統(tǒng)分析與設計第2版ZhenyanJi8需求分析識別用例設置時鐘時間(SetClockTime)。用戶可以設置時鐘時間,或者調整時鐘的時間。顯示時間(DisplayTime)。系統(tǒng)在開機狀態(tài)下應該一直在顯示器上顯示當前的時間和日期,用戶可以查看當前時間和日期。顯示電池狀態(tài)(DisplayBatteryStatus)。系統(tǒng)在開機狀態(tài)下應該一直在顯示器上顯示電池狀態(tài)。當電量不足時,系統(tǒng)發(fā)出蜂鳴聲,電池狀態(tài)則顯示為警告狀態(tài)。UML系統(tǒng)分析與設計第2版ZhenyanJi9需求分析系統(tǒng)的用例圖UML系統(tǒng)分析與設計第2版ZhenyanJi10需求分析回放心電信號當用戶User按下“回放”按鈕,即發(fā)送消息“PlayECG”(回放心電信號)給系統(tǒng)時,系統(tǒng)System發(fā)送消息“StartplayingECG”(開始回放心電信號)給顯示器,系統(tǒng)通過顯示器回放心電信號,同時顯示回放進度給用戶(Showprogressindicator)。一秒過后(Nextsecond),系統(tǒng)更新顯示時間(Shownewtime),并繼續(xù)顯示回放進度(Showprogressindicator)。當用戶按下“停止”按鈕,即發(fā)送消息“Stop”(停止)給系統(tǒng)時,顯示器停止回放心電信號(StopplayingECG)。圖中的注釋說明了響應時間的限制(響應時間的限制最好用兩個消息間的約束來描述,但由于本人所采用的UML建模軟件不支持消息間的約束,所以就用注釋來描述了),第一個“0.5s”表示按下“回放”按鈕和系統(tǒng)開始回放心電信號的間隔不超過0.5s;第二個“0.5s”表示按下“停止”按鈕和系統(tǒng)停止回放心電信號的間隔不超過0.5s。UML系統(tǒng)分析與設計第2版ZhenyanJi11“回放心電信號”順序圖UML系統(tǒng)分析與設計第2版ZhenyanJi12需求分析進入待用模式和從待用模式蘇醒系統(tǒng)如果在2min內沒有任何活動,系統(tǒng)就關閉顯示器和揚聲器(Switchoff),從而進入待用模式。當有警報發(fā)生時(Alarm),系統(tǒng)就打開顯示器和揚聲器(Switchon),即系統(tǒng)從待用模式恢復,然后通過揚聲器報警(Playalarm)。1s過后(Nextsecond)或電池沒電(Nopower)時,系統(tǒng)停止通過揚聲器報警(Stopplayingalarm),系統(tǒng)重新關閉顯示器和揚聲器(Switchoff)。UML系統(tǒng)分析與設計第2版ZhenyanJi13“進入待用模式和從待用模式蘇醒”順序圖UML系統(tǒng)分析與設計第2版ZhenyanJi14需求分析產生警報用戶發(fā)送消息“PlayECG”(回放心電信號)給系統(tǒng)System,系統(tǒng)發(fā)送“StartplayingECG”(開始回放心電信號)的消息給顯示器,系統(tǒng)通過顯示器回放心電信號,同時顯示回放進度給用戶(Showprogressindicator)。1s過后(Nextsecond),系統(tǒng)更新顯示時間(Shownewtime),并繼續(xù)顯示回放進度(Showprogressindicator)。這時有警報產生(Alarm),系統(tǒng)通過揚聲器報警(Playalarm),并顯示報警信號(Showalarmindicator),其中顯示報警信號和報警產生之間的間隔不超過0.5s。然后,用戶按下按鈕“停止”,即發(fā)送消息“Stop”(停止)給系統(tǒng),顯示器停止回放心電信號(StopplayingECG),并停止報警(Stopplayingalarm)。UML系統(tǒng)分析與設計第2版ZhenyanJi15“產生警報”順序圖UML系統(tǒng)分析與設計第2版ZhenyanJi16靜態(tài)結構模型識別出類可以從系統(tǒng)中抽象出以下主要的類,包括類Battery、類Alarmclock、類Keyboard、類Display、類GUI、類Controller、類ECGOutput、類ECGMemory、類ECGSegment、類ECGInput、類Sensor。UML系統(tǒng)分析與設計第2版ZhenyanJi17系統(tǒng)類圖UML系統(tǒng)分析與設計第2版ZhenyanJi18系統(tǒng)包圖UML系統(tǒng)分析與設計第2版ZhenyanJi19靜態(tài)結構模型下面分別對每個子系統(tǒng)進行詳細的介紹。(1)ECG子系統(tǒng)。由于每個心電波是由多個心電信號片段組成,因此在類ECGWave和類ECGSegment之間存在聚合關系,即ECGSegment是ECGWave的一部分,1個ECGWave可以由0個或多個ECGSegment組成,而1個ECGSegment只屬于1個ECGWave。另外,每個心電信號片段又由多個心電周期樣本組成,所以,類ECGSample與類ECGSegment之間存在聚合關系,ECGSample是ECGSegment的一部分,1個ECGSegment可以由0個或多個ECGSample組成,而1個ECGSample只屬于1個ECGSegment。為了節(jié)省內存空間,采集到的心電數(shù)據(jù)需要壓縮后存儲,壓縮后的心電周期抽象為類CompressedECGBlock,類CompressedECGBlock是類ECGSegment的子類。UML系統(tǒng)分析與設計第2版ZhenyanJi20ECG子系統(tǒng)的類圖UML系統(tǒng)分析與設計第2版ZhenyanJi21靜態(tài)結構模型順序圖描述了回放心電信號過程中對象之間的交互作用。GUI的對象發(fā)送消息playECGWave()給Controller對象,Controller對象發(fā)送消息getECGSegment()給ECGWave的對象,ECGWave返回壓縮后的心電信號給Controller,然后Controller發(fā)送消息playCompressed-ECGSegment()給ECGOutput對象。ECGOutput對象發(fā)送消息playSample()給顯示器Display,心電數(shù)據(jù)開始回放,心電片段由n個心電周期樣本組成,第一個片段回放后,對于Controller重復獲取心電片段并回放的行為,直到心電片段播放完畢或者用戶按“停止”按鈕時為止。UML系統(tǒng)分析與設計第2版ZhenyanJi22UML系統(tǒng)分析與設計第2版ZhenyanJi23靜態(tài)結構模型(2)Memory子系統(tǒng)。類ECGMemory管理心電記錄儀的存儲空間,它保存了所記錄的所有心電波數(shù)據(jù),并分配空間給新的心電波數(shù)據(jù),還可以刪除某個心電波數(shù)據(jù)。Memory子系統(tǒng)的類圖如圖15.11所示。類ECGMemory是類Controller的一部分,它們之間存在著聚合關系,每個Controller對象有1個ECGMemory對象,每個ECGMemory只屬于1個Controller對象。類ECGSegment與類ECGMemory之間存在著關聯(lián)關系,每個ECGMemory可以存儲0個或n個ECGSegment,每個ECGSegment只屬于1個ECGMemory。類ECGWave與類ECGSegment之間也存在著聚合關系,每個ECGSegment只屬于1個ECGWave,1個ECGWave由0個或n個ECGSegment組成。類ECGWave與類ECGMemory之間也存在著關聯(lián)關系,每個ECGMemory最多可以存儲20個ECGWave,每個ECGWave只屬于1個ECGMemory。UML系統(tǒng)分析與設計第2版ZhenyanJi24Memory子系統(tǒng)的類圖UML系統(tǒng)分析與設計第2版ZhenyanJi25靜態(tài)結構模型類GUI可以通過類ECGMemory來獲取所記錄的心電波列表,但類GUI不能修改它,只有類Controller可以通過類ECGMemory來修改所記錄的心電波。如果類GUI想刪除心電波,它需要調用類Controller的方法delECGWave(),而不是直接訪問對象ECGMemory。這樣做是為了防止在控制器回放或記錄心電波時,用戶界面刪除該心電波。UML系統(tǒng)分析與設計第2版ZhenyanJi26UML系統(tǒng)分析與設計第2版ZhenyanJi27靜態(tài)結構模型(3)Alarm_Clock子系統(tǒng)。類AlarmClock可以提供系統(tǒng)當前的時間、日期和鬧鈴定時時間。類AlarmClock通過計時器Timer來計時,每過去1s,就使用方法nextSecond()更新一次時間的內部表示。當24h過去時,使用類Date的nextDay()方法更新日期。UML系統(tǒng)分析與設計第2版ZhenyanJi28Alarm_Clock子系統(tǒng)類圖UML系統(tǒng)分析與設計第2版ZhenyanJi29靜態(tài)結構模型(4)UserInterface子系統(tǒng)。類GUI管理用戶與系統(tǒng)的交互。它接受用戶的鍵盤輸入,并通過顯示器反饋給用戶。類Keyboard是硬件鍵盤的軟件接口,類Display是硬件顯示器的軟件接口。在類GUI與類Keyboard之間存在關聯(lián)關系。類GraphicContext提供了圖形上下文,可以在顯示器上顯示點、線、字符串,以及各種圖形,每個圖形上下文都代表了顯示器的矩形區(qū)域。類GraphicContext與類Display之間也存在關聯(lián)關系。類View調用GraphicContext的方法,在顯示器上顯示時間、菜單等,類View和類GraphicContext是關聯(lián)關系。類View有3個子類,即類ClockView、類TaskView和類MenuView。類View又是類GUI的一部分,即在類View和類GUI之間存在著聚合關系,每個View都屬于1個GUI,每個GUI都可以有1個或多個View。UML系統(tǒng)分析與設計第2版ZhenyanJi30UserInterface子系統(tǒng)類圖UML系統(tǒng)分析與設計第2版ZhenyanJi31動態(tài)行為模型狀態(tài)機圖(1)Controller(控制器)對象。Controller對象可以用來記錄心電信號、播放心電信號或報警。Controller對象有4個狀態(tài)。通常,Controller對象處于“Idle”(空閑)狀態(tài),如果“記錄”按鈕被按下,則事件“record”(記錄)發(fā)生,對象進入“Recording”狀態(tài),當事件“stop”(停止)發(fā)生,系統(tǒng)停止記錄,對象返回“Idle”狀態(tài);如果“回放”按鈕被按下,事件“playback”(回放)發(fā)生,對象進入“Playing”(播放)狀態(tài),當事件“stop”(停止)發(fā)生時,系統(tǒng)停止回放,對象返回“Idle”狀態(tài);如果警報發(fā)生,即事件“alarm”(警報)發(fā)生時,對象進入“Alarming”狀態(tài),當事件“stop”(停止)發(fā)生時,系統(tǒng)停止回放,對象返回“Idle”狀態(tài)。UML系統(tǒng)分析與設計第2版ZhenyanJi32動態(tài)行為模型Controller對象的狀態(tài)機圖UML系統(tǒng)分析與設計第2版ZhenyanJi33動態(tài)行為模型(2)ECGInput(心電輸入)對象。ECGInput對象控制心電輸入通道,該對象通過Sensor(傳感器)對象來記錄心電數(shù)據(jù)。值得注意的是,采樣得到的心電數(shù)據(jù)要經過壓縮再存儲。ECGInput對象有3個狀態(tài)。通常,ECGInput對象處于“Idle”(空閑)狀態(tài),如果事件“recordCompressedECGSegment(ecg:ECGSegment)”(獲取壓縮心電數(shù)據(jù))發(fā)生,對象進入“Record”狀態(tài),開始記錄心電數(shù)據(jù),在進入該狀態(tài)時,需執(zhí)行入口動作“StartDMA”(啟動DMA)協(xié)助記錄。當事件“DMAEndOfTransfer”(數(shù)據(jù)傳輸結束)發(fā)生時,對象進入“Compress”狀態(tài),壓縮心電數(shù)據(jù),壓縮完成后,ECGInput對象返回“Idle”狀態(tài)。UML系統(tǒng)分析與設計第2版ZhenyanJi34動態(tài)行為模型ECGInput對象的狀態(tài)機圖UML系統(tǒng)分析與設計第2版ZhenyanJi35動態(tài)行為模型(3)ECGOutput(心電輸出)對象。ECGOutput對象控制心電輸出通道,它可以通過顯示器來回放心電數(shù)據(jù)。ECGOutput對象有3個狀態(tài),通常ECGOutput對象處于“Idle”(空閑)狀態(tài),如果事件“PlayCompressedECGSegment(ecg:ECGSegment)”(回放壓縮的心電數(shù)據(jù))發(fā)生,對象進入“Expand”(展開)狀態(tài),開始對心電數(shù)據(jù)解壓縮,在進入該狀態(tài)時,需執(zhí)行入口動作“StartDMA”(啟動DMA)協(xié)助回放。解壓縮完成后,ECGOutput對象進入“Play”(回放)狀態(tài),回放心電數(shù)據(jù),回放結束后,ECGOutput對象返回“Idle”狀態(tài)。如果在ECGOutput對象處于“Idle”狀態(tài)時,事件“PlayECGSegment(ecg:ECGSegment)”(回放心電數(shù)據(jù))發(fā)生,則ECGOutput對象直接進入“Play”狀態(tài),回放心電數(shù)據(jù),回放結束后,ECGOutput對象返回“Idle”狀態(tài)。UML系統(tǒng)分析與設計第2版ZhenyanJi36動態(tài)行為模型

ECGOutput對象的狀態(tài)機圖UML系統(tǒng)分析與設計第2版ZhenyanJi37動態(tài)行為模型(4)Sensor(傳感器)對象。Sensor對象是物理傳感器的接口。傳感器可以采集數(shù)據(jù)。當SwichOn發(fā)生(打開電源)后,Sensor對象進入“Idle”(空閑)狀態(tài),如果事件“startsampling”(開始采樣)發(fā)生,對象進入“Sampling”(采樣)狀態(tài),對心電數(shù)據(jù)進行采樣,事件“intervalpassed”(采樣間隔時間過去)引起的躍遷是自躍遷,在事件發(fā)生時,執(zhí)行動作getSample()進行采樣。如果事件“stopsampling”(停止采樣)發(fā)生,對象返回“Idle”狀態(tài)。UML系統(tǒng)分析與設計第2版ZhenyanJi38動態(tài)行為模型Sensor對象的狀態(tài)機圖UML系統(tǒng)分析與設計第2版ZhenyanJi39動態(tài)行為模型(5)Display(顯示器)對象。Display對象是物理顯示器的軟件接口。當SwichOn發(fā)生(電源開通)后,Display對象進入“Idle”(空閑)狀態(tài),如果事件“PlayECG”(播放心電圖)發(fā)生,對象進入“PlayingECGWave”狀態(tài),顯示器播放心電圖。如果事件“StopPlay”(停止播放)發(fā)生,對象返回“Idle”狀態(tài)。UML系統(tǒng)分析與設計第2版ZhenyanJi40動態(tài)行為模型Display對象的狀態(tài)機圖UML系統(tǒng)分析與設計第2版ZhenyanJi41動態(tài)行為模型(6)Speaker(揚聲器)對象。Speaker對象是物理揚聲器的軟件接口。當SwichOn發(fā)生(電源開通)后,Speaker對象進入“Idle”(空閑)狀態(tài),如果事件“AlarmHappen”(警報發(fā)生)發(fā)生,對象進入“PlayingAlarm”(播放警報)狀態(tài),揚聲器播放警報。如果事件“AlarmIsOver”(警報結束或停止)發(fā)生,對象返回“Idle”狀態(tài)。UML系統(tǒng)分析與設計第2版ZhenyanJi42動態(tài)行為模型Speaker對象的狀態(tài)機圖UML系統(tǒng)分析與設計第2版ZhenyanJi43動態(tài)行為模型(7)Timer(計時器)對象。Timer對象是物理計時器的軟件接口。Timer對象只有1個狀態(tài)“Timing”(計時狀態(tài)),事件“HardwareTimerInterrupt”(硬件時鐘中斷)引起的躍遷是自躍遷。UML系統(tǒng)分析與設計第2版ZhenyanJi44動態(tài)行為模型(8)用戶界面。MenuUserMode(菜單用戶模式)對象。MenuUserMode是用戶界面的主要用戶模式。用戶可以通過“上”、“下”、“左”、“右”4個按鈕來遍歷菜單項,以選擇所想要的選項?!吧稀?、“下”按鈕可以用來選擇上一個菜單選項或下一個菜單選項,“OK”按鈕用來選中所需要的選項,而“左”、“右”按鈕用來選中前一個菜單或下一個菜單。UML系統(tǒng)分析與設計第2版ZhenyanJi45MenuUserMode對象的狀態(tài)機圖UML系統(tǒng)分析與設計第2版ZhenyanJi46動態(tài)行為模型SettingTimeUserMode(設置時鐘用戶模式)對象。設置時鐘用戶模式用于改變當前時間或鬧鈴時間。其中,“左”、“右”按鈕用來切換激活代表秒、分鐘和小時的域,“上”、“下”按鈕用來修改激活域的值。UML系統(tǒng)分析與設計第2版ZhenyanJi47SettingTimeUserMode對象狀態(tài)機圖UML系統(tǒng)分析與設計第2版ZhenyanJi48動態(tài)行為模型SettingDateUserMode(設置日期用戶模式)對象。設置日期用戶模式用于改變當前的日期。其中,“左”、“右”按鈕用來切換激活代表日、月、年的域,“上”、“下”按鈕用來修改激活域的值。SettingDateUserMode對象的狀態(tài)機圖如圖15.25所示。首先,SettingDateUserMode對象處于“Idle”(空閑)狀態(tài),當日期用戶模式被激活時,對象進入“ActiveSettingDateUserMode”狀態(tài),即日期用戶模式激活狀態(tài)。SettingDateUserMode對象的“ActiveSettingDateUserMode”狀態(tài)是一個組合狀態(tài),它含有3個子狀態(tài)。對象開始進入“ModifyDay”(修改日期)狀態(tài),即“日期”域激活。當對象SettingDateUserMode處于“ModifyDay”狀態(tài)時,單擊“上”按鈕時,即事件“press(Up)”發(fā)生,日期增加,該事件每發(fā)生1次,日期增加1天;單擊“下”按鈕時,即事件“press(Down)”發(fā)生,日期減少,該事件每發(fā)生1次,日期減少1天;單擊“右”按鈕時,即事件“press(Right)”發(fā)生,對象進入“ModifyMonth”(修改月份)狀態(tài),即激活域切換到“月”域。UML系統(tǒng)分析與設計第2版ZhenyanJi49SettingDateUserMode對象狀態(tài)機圖UML系統(tǒng)分析與設計第2版ZhenyanJi50動態(tài)行為模型通信圖如下頁圖所示通信圖描述了Scheduler對象與它的客戶之間的協(xié)作。Scheduler對象為依賴于時間的對象(例如,對象AlarmClock)提供了準確的計時和調度。對象AlarmClock“預訂”了對象Scheduler的事件,即時間每過去一秒,對象Scheduler都會通知對象AlarmClock一秒鐘過去了。UML系統(tǒng)分析與設計第2版ZhenyanJi51定期喚醒對象的通信圖UML系統(tǒng)分析與設計第2版ZhenyanJi52動態(tài)行為模型幻燈片54頁圖所示的通信圖描述了SettingTimeUserMode對象、AlarmClock對象、Keyboard對象、ClockView對象等之間的協(xié)作,該協(xié)作用來設置便攜式心電記錄儀的時間?;脽羝?5頁圖所示的通信圖描述了GUI對象、Controller對象、ECGOutput對象、ECGWave對象等之間的協(xié)作,該協(xié)作用來描述回放心電波的過程?;脽羝?6

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論