以前做過程序員,這次看到網(wǎng)上關(guān)于河南省有一部分人群被賦予了紅碼,各種說法都有,我不評價這些,只從程序員的角度聊聊這個話題。
一個軟件設(shè)計的初始依據(jù),就是用戶需求。客戶需要什么樣的東西,程序員敲鍵盤為客戶實現(xiàn)所需要的功能。
下面談三方面的問題,一是軟件的數(shù)據(jù)處理邏輯,二是軟件的用戶角色,三是聊聊出現(xiàn)這種情況可能是什么情況造成的。
軟件的數(shù)據(jù)處理邏輯
數(shù)據(jù)的處理基本上就是三段,數(shù)據(jù)輸入、數(shù)據(jù)處理、數(shù)據(jù)輸出。最簡單的一個例子,1、數(shù)據(jù)輸入:某甲的核酸檢測結(jié)果是陽性;2、數(shù)據(jù)處理邏輯:如果核酸檢測結(jié)果是陽性,賦紅碼,如果是陰性,賦綠碼;3、數(shù)據(jù)輸出:給某甲賦予紅碼。
上面的例子是最最簡單的邏輯關(guān)系,實際上會復雜很多,比如某甲的核酸檢測報告為陽性,隔離一段時間或治療后檢測結(jié)果為陰性了,是不是立即賦予綠碼呢,可能還不行,需要幾天的觀察,再多次檢測陰性才能賦予綠碼。某乙的檢測結(jié)果是陰性,但他是某甲的密切接觸者,比如家屬、一個辦公室的同事等等,雖然是陰性,不排除是新冠病毒潛伏期的可能性,為了預(yù)防,先把某乙也先賦予紅碼以便管控起來。數(shù)據(jù)輸入:某甲陽性,某乙陰性,某乙是某甲的密切接觸者;數(shù)據(jù)處理邏輯:判斷某乙和某甲密切接觸程度;數(shù)據(jù)輸出:某乙也賦予紅碼。
所謂數(shù)據(jù)處理,無論多么復雜,最終分解成邏輯判斷語句:if……then……else……,也就是說,預(yù)置了很多賦紅碼的條件,只要觸發(fā)了條件,就是紅碼,沒有觸發(fā),就是綠碼。簡單化了,沒有考慮黃碼的情形,也就是多幾條if語句。
軟件的用戶角色
說起用戶角色,換句話就是使用軟件的權(quán)限,以健康碼為例,為什么你乘坐公交車、進大超市等場所,有人要查驗?zāi)愕慕】荡a?因為他自己沒有查看你健康碼的權(quán)限,只能你出示給他看,這就是“讀”數(shù)據(jù)的權(quán)限,你有讀自己數(shù)據(jù)的權(quán)限而他沒有,同樣你也沒有權(quán)限去讀那個工作人員的數(shù)據(jù),除非他出示給你看。這是一對一的情形,假如因為防疫工作需要,一個社區(qū)工作人員被授權(quán)時,就可以查看本社區(qū)居民的健康碼狀態(tài),一目了然,同理,市防疫辦工作人員可能可以看到全市的健康碼狀態(tài)。
下一個問題,你如果紅碼了,出行不方便,能不能自己修改一下,變成綠碼呢?顯然是不行的,因為你沒有更改數(shù)據(jù)的權(quán)限。這就是“寫”數(shù)據(jù)的權(quán)限。這時“寫”數(shù)據(jù)不一定是直接去更改數(shù)據(jù)(當然直接更改也是一種方式),比如核酸檢測人員他只是輸入了某甲的檢測結(jié)果是陽性,某乙的檢測結(jié)果是陰性,最終顯示紅碼或綠碼,是軟件經(jīng)過運算后得出的結(jié)果。再如某外省市民因為河南傳遞來的數(shù)據(jù)被賦紅碼。這里要指出的是,和讀數(shù)據(jù)類似,寫數(shù)據(jù)更需要嚴格控制,需要得到授權(quán),如果這個權(quán)限被濫用,后果可能比較嚴重。
就健康碼這個軟件而言,應(yīng)該是每個市民都被授權(quán)讀取自己的健康碼數(shù)據(jù),有一些工作人員被授權(quán)讀取符合條件的某一些人群的健康碼數(shù)據(jù),一些工作人員被授權(quán)寫入數(shù)據(jù),直接或間接改變了健康碼的數(shù)據(jù)信息。
用戶角色的授權(quán),是一項非常嚴肅的工作,一般又專門的部門或人員來完成,這些人,我們一般稱為“管理員”。
河南紅碼事件的技術(shù)原因和管理原因
一個程序員或程序員團隊,他們的初衷一定是交付滿足用戶需求的軟件,但是因為各種因素,比如程序員個人的技術(shù)水平,對軟件應(yīng)用環(huán)境考慮不周全,可以說沒有一個軟件敢說是完美無缺的,即使世界上最頂尖的微軟公司的程序員團隊,也不定期公布Windows系統(tǒng)的補丁,也就是修改以外的錯誤。這是正常的事情,所以說早期曾經(jīng)有個說法,紅碼事件是數(shù)據(jù)錯亂造成的,從技術(shù)層面來說,不能排除這種可能性,但是隨著更深入的報道,賦予紅碼可以說是精準的,那么我個人要為設(shè)計開發(fā)河南健康碼軟件的程序員團隊說句話,至少這個事件,這些程序員沒有責任。
管理方面,說白了就是軟件使用的管理的事情了,有多少人被授權(quán)了更改數(shù)據(jù)的權(quán)限?是哪一個人還是哪一些人更改了這部分數(shù)據(jù)?從技術(shù)角度來看是非常簡單的事情,被授權(quán)更改數(shù)據(jù)的部門或人員,一分鐘就可以列個清單出來了。這部分數(shù)據(jù)分別是什么時間、哪臺計算機、哪個操作員進行操作的,也是短時間可以列出清單的,除非最早用戶需求中沒有數(shù)據(jù)可追溯性的要求。
紀委已經(jīng)介入了,相信很快就有結(jié)論了。