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