亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Django的學(xué)生公寓門禁系統(tǒng)敏捷開發(fā)

        2020-02-04 02:03:24張盛天郭文俊
        電子技術(shù)與軟件工程 2020年20期
        關(guān)鍵詞:頁面數(shù)據(jù)庫微信

        張盛天 郭文俊

        (山西大同大學(xué)計(jì)算機(jī)與網(wǎng)絡(luò)工程學(xué)院 山西省大同市 037009)

        1 引言

        本文以山西省大同大學(xué)復(fù)學(xué)為背景,在學(xué)校公寓缺乏智能硬件門禁設(shè)備的情況下,提出了基于敏捷開發(fā)和Django 技術(shù)框架的學(xué)生公寓門禁軟件開發(fā)方案,并在一個(gè)月的時(shí)間內(nèi)完成了軟件的構(gòu)建和部署,成為了學(xué)校防疫的重要工具。

        文章第2 節(jié)對(duì)敏捷開發(fā)思想和Django 框架技術(shù)進(jìn)行了闡述,指出了其對(duì)本次系統(tǒng)開發(fā)的重要性;第3 節(jié)系統(tǒng)地介紹了敏捷開發(fā)下的軟件設(shè)計(jì)方案;第4 節(jié)是軟件的具體實(shí)現(xiàn)及相關(guān)功能的展示;第5 節(jié)提出了對(duì)系統(tǒng)的完善計(jì)劃;最后總結(jié)了該學(xué)生公寓門禁系統(tǒng)在疫情期間所起到的作用。

        2 技術(shù)路線的選擇

        由于留給項(xiàng)目實(shí)施的時(shí)間緊迫,傳統(tǒng)的基于文檔溝通的瀑布模型無法滿足項(xiàng)目快速開發(fā)部署的需求,更高效的開發(fā)模式在此應(yīng)用場(chǎng)景下被需要。敏捷開發(fā)是一種輕量級(jí)的開發(fā)模式,其強(qiáng)調(diào)與用戶面對(duì)面的溝通,通過迭代的方式,來盡快響應(yīng)用戶的需求[1]。同時(shí),敏捷開發(fā)提倡使用輕量級(jí)軟件架構(gòu),降低項(xiàng)目開發(fā)過程中的技術(shù)難度[2]。此外,敏捷開發(fā)支持項(xiàng)目小批量持續(xù)發(fā)布,在交付周期內(nèi),軟件只需做到“剛剛好”的程度[3]。敏捷開發(fā)的迭代流程如圖1所示。敏捷開發(fā)的這些特點(diǎn)使其適合交付時(shí)間緊迫、需求不穩(wěn)定的小規(guī)模軟件項(xiàng)目,非常符合山西大同大學(xué)學(xué)生公寓門禁系統(tǒng)的開發(fā)場(chǎng)景。

        Django 是Python語言下的一個(gè)開源、輕量級(jí)的Web 框架,采用了基于模型(Model)、視圖(View)和模板(Template)的MVT 軟件設(shè)計(jì)模式。其中,模型主要負(fù)責(zé)網(wǎng)站后臺(tái)數(shù)據(jù)層的相關(guān)處理;模板對(duì)應(yīng)后臺(tái)業(yè)務(wù)邏輯處理;視圖實(shí)現(xiàn)了表現(xiàn)層的相關(guān)功能,其通過代碼邏輯控制網(wǎng)頁前端與后臺(tái)的交互[4]。MVT 軟件設(shè)計(jì)模式使得Django 具有高內(nèi)聚低耦合的特性,提升了軟件框架的穩(wěn)定性及處理效率[5]。除此之外,Django 采用ORM 對(duì)象關(guān)系映射,提高了數(shù)據(jù)模型設(shè)計(jì)與交互的效率,增強(qiáng)了數(shù)據(jù)庫的可選擇性[6]。鑒于Django框架所呈現(xiàn)的以上諸多優(yōu)點(diǎn),其可作為本次項(xiàng)目開發(fā)的核心代碼框架,結(jié)合敏捷開發(fā)的軟件開發(fā)模式,使短期內(nèi)交付較高可用性的軟件項(xiàng)目成為可能。

        3 敏捷開發(fā)下的軟件設(shè)計(jì)方案

        3.1 系統(tǒng)的需求分析

        由于學(xué)校防疫策略的不斷變化,該系統(tǒng)的需求存在著不穩(wěn)定、變化快等特點(diǎn),采用敏捷開發(fā)方式來周期性的收集需求成為更可靠的選擇。敏捷開發(fā)強(qiáng)調(diào)程序員團(tuán)隊(duì)與業(yè)務(wù)人員進(jìn)行緊密的協(xié)作、高頻率的面對(duì)面溝通,將人的交流作用發(fā)揮到最大,使得系統(tǒng)開發(fā)能夠快速適應(yīng)需求的變化[7]。整個(gè)系統(tǒng)開發(fā)期間,與學(xué)校相關(guān)負(fù)責(zé)人進(jìn)行了三次周期性面對(duì)面溝通及多次電話交流,得到了系統(tǒng)所需的功能要求,如表1所示。

        3.2 系統(tǒng)的總體設(shè)計(jì)

        圖1:敏捷開發(fā)的迭代流程

        圖2:系統(tǒng)的迭代式架構(gòu)設(shè)計(jì)

        與傳統(tǒng)軟件開發(fā)不同的是,基于敏捷開發(fā)的軟件架構(gòu)設(shè)計(jì)不是一成不變的,其隨著需求的周期性變化而不斷改變。在第一次迭代周期里,借助Django 的MVT 軟件設(shè)計(jì)模式及軟件重構(gòu)思想,設(shè)計(jì)出輕量級(jí)、強(qiáng)拓展的系統(tǒng)初始架構(gòu)。結(jié)合學(xué)校所提供的需求,在后續(xù)的兩次迭代周期里,拓展系統(tǒng)功能,不斷完善系統(tǒng)的架構(gòu)。系統(tǒng)的迭代式架構(gòu)設(shè)計(jì)如圖2所示。

        經(jīng)過三次迭代周期后,最終的表現(xiàn)層模塊主要由身份識(shí)別入口頁面及學(xué)生信息頁組成。為了讓學(xué)生借助手機(jī)快速訪問到頁面,可將頁面網(wǎng)址轉(zhuǎn)化成二維碼,學(xué)生只需使用微信的掃碼功能,便可在微信內(nèi)置瀏覽器中打開相應(yīng)頁面。同時(shí),為了避免其它瀏覽器所帶來的信息泄露問題,系統(tǒng)加入了瀏覽器userAgent 信息判斷,如果得到的userAgent 與微信信息不符,則禁止網(wǎng)頁打開,從而限制了頁面只能在微信內(nèi)置瀏覽器中打開。對(duì)于身份識(shí)別入口頁面,不同樓宇采用了不同的進(jìn)入接口,即不同的二維碼。學(xué)生在第一次掃碼進(jìn)入對(duì)應(yīng)樓宇頁面后,需提供自己的學(xué)號(hào),系統(tǒng)通過與后臺(tái)數(shù)據(jù)庫中數(shù)據(jù)進(jìn)行比對(duì),來判斷該生是否屬于所要進(jìn)入樓宇。如果識(shí)別通過,系統(tǒng)使用Cookie 機(jī)制將學(xué)號(hào)存于鍵值對(duì)中,并保存在微信的內(nèi)置瀏覽器里。借助Cookie 機(jī)制,以后學(xué)生進(jìn)公寓掃碼時(shí),內(nèi)置瀏覽器會(huì)在發(fā)送給服務(wù)端的請(qǐng)求中附加對(duì)應(yīng)鍵值對(duì)信息,服務(wù)端通過讀取鍵值對(duì)的信息來實(shí)現(xiàn)自動(dòng)身份識(shí)別[8]。身份識(shí)別通過后,頁面從身份識(shí)別入口頁跳轉(zhuǎn)至學(xué)生信息頁。學(xué)生信息頁展示了學(xué)生的姓名、學(xué)院、班級(jí)、宿舍號(hào)、頭像照片等內(nèi)容,以供宿舍管理人員察看。同時(shí),在學(xué)生信息頁中可輸入體溫值,通過提交按鈕,將體溫值寫入到學(xué)生的基本信息中。如果身份識(shí)別不通過,頁面反饋提示信息,并停留在身份識(shí)別入口頁。

        業(yè)務(wù)邏輯層模塊主要實(shí)現(xiàn)了身份識(shí)別判斷邏輯、數(shù)據(jù)訪問讀取邏輯、體溫?cái)?shù)據(jù)寫入邏輯及時(shí)間記錄邏輯。

        數(shù)據(jù)處理層模塊采用Django 的ORM 對(duì)象關(guān)系映射,實(shí)現(xiàn)了與MYSQL 數(shù)據(jù)庫的交互。MYSQL 數(shù)據(jù)庫是開源免費(fèi)的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),適用于小型數(shù)據(jù)庫的管理[9]。由于本次軟件項(xiàng)目所需數(shù)據(jù)規(guī)模僅有兩萬余條,采用MYSQL 數(shù)據(jù)庫足以實(shí)現(xiàn)相應(yīng)的數(shù)據(jù)存儲(chǔ)與處理。

        雖然學(xué)校采用了分年級(jí)、分批次的開學(xué)策略,但是在開學(xué)初期,學(xué)生便已分布于大多數(shù)學(xué)生公寓中,因此軟件系統(tǒng)需要部署于二十二個(gè)學(xué)生公寓中,系統(tǒng)的訪問量較大。為了保證系統(tǒng)的高并發(fā)性能,部署時(shí)可采用Nginx 和uWSGI 技術(shù)。uWSGI 作為系統(tǒng)部署的Web 服務(wù)器,可使系統(tǒng)運(yùn)行更加穩(wěn)定;Nginx 作為反向代理服務(wù)器實(shí)現(xiàn)了負(fù)載均衡,大幅度提升了系統(tǒng)的并發(fā)性能[10]。

        表1:系統(tǒng)功能列表

        4 系統(tǒng)實(shí)現(xiàn)

        基于敏捷開發(fā)思想,系統(tǒng)的開發(fā)也是經(jīng)過多次迭代周期后完成的。在第一次迭代周期中,由架構(gòu)師和開發(fā)人員搭建好系統(tǒng)的初始架構(gòu),實(shí)現(xiàn)當(dāng)前迭代要完成的功能。在后續(xù)的迭代周期中,根據(jù)需求和架構(gòu)設(shè)計(jì)的變化,架構(gòu)師需對(duì)架構(gòu)進(jìn)行升級(jí)維護(hù),并由開發(fā)人員完成剩余功能代碼的編寫。除此之外,在敏捷開發(fā)中,系統(tǒng)的開發(fā)與測(cè)試沒有嚴(yán)格的邊界劃分,所以開發(fā)與測(cè)試工作可交叉同步進(jìn)行,以此進(jìn)一步加快系統(tǒng)實(shí)施的速率。

        該系統(tǒng)的頁面采用了HTML5、CSS3、Javascript、JQuery 等主流前端技術(shù)。HTML5 具有離線存儲(chǔ)功能,如:Web Storage、Indexed DB、Application Cache 等,這些功能使得網(wǎng)頁擁有更短的響應(yīng)時(shí)間[11]。CSS3 提供了豐富的樣式屬性和動(dòng)畫效果,使得頁面的交互性、自適應(yīng)性得到大幅度提高[12]。前端與后臺(tái)的交互通過Javascript、Jquery 以及Ajax 來完成。Ajax 采用異步交互方式,使得用戶無需等待響應(yīng),繼續(xù)其他的Web 交互,從而提高了頁面的交互能力[13]。以初次進(jìn)入頁面的身份識(shí)別前端邏輯為例,實(shí)現(xiàn)的代碼如下:

        系統(tǒng)后臺(tái)以Django 框架為基礎(chǔ),借助MVT 軟件設(shè)計(jì)模式,實(shí)現(xiàn)了頁面、業(yè)務(wù)處理邏輯以及數(shù)據(jù)庫之間的交互。系統(tǒng)部分運(yùn)行效果如圖3所示。

        圖3(a)是學(xué)生用微信掃碼后,初次進(jìn)入身份識(shí)別頁面的效果。

        圖3(b)為學(xué)生身份識(shí)別成功后,系統(tǒng)進(jìn)入的學(xué)生基本信息頁。該頁面除了體溫值可進(jìn)行重新編輯外,其余信息借助HTML 標(biāo)簽屬性限制,不可修改。

        5 系統(tǒng)的完善計(jì)劃

        系統(tǒng)投入使用后,所存在的最大問題是沉重的運(yùn)維工作?;诿艚蓍_發(fā)思想,該系統(tǒng)需要持續(xù)集成持續(xù)交付,其中所帶來的集成部署過程較為煩瑣,影響了整個(gè)系統(tǒng)開發(fā)的實(shí)施進(jìn)度。為了提高運(yùn)維效率,項(xiàng)目可引入DevOps 技術(shù)。DevOps 集成了許多自動(dòng)化測(cè)試、自動(dòng)化部署以及項(xiàng)目管理工具,可很好的支持系統(tǒng)的持續(xù)集成持續(xù)交付[14]。DevOps 能實(shí)現(xiàn)系統(tǒng)的開發(fā)環(huán)境、測(cè)試環(huán)境以及生產(chǎn)實(shí)踐環(huán)境高相似度,以此適應(yīng)系統(tǒng)的高變動(dòng)性、高可用性、高可靠性要求[15]。鑒于DevOps 所提供的諸多好處,計(jì)劃將在該系統(tǒng)開發(fā)的第四次迭代周期中引入DevOps。

        6 結(jié)語

        本文基于敏捷開發(fā)和Django 技術(shù),設(shè)計(jì)并開發(fā)了適用于山西省大同大學(xué)復(fù)學(xué)場(chǎng)景的學(xué)生公寓防疫門禁系統(tǒng)。該系統(tǒng)操作簡(jiǎn)單、頁面交互性良好,有效地減少了學(xué)生公寓管理人員的工作量,為學(xué)校防疫工作做出了貢獻(xiàn)。在后續(xù)的系統(tǒng)完善中,可將DevOps 技術(shù)引入到項(xiàng)目中,以此進(jìn)一步提升系統(tǒng)的可用性、可靠性。

        猜你喜歡
        頁面數(shù)據(jù)庫微信
        大狗熊在睡覺
        刷新生活的頁面
        微信
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        微信
        微信
        微信
        毛片大全真人在线| 高清国产一级毛片国语| 操B小视频国产| av天堂一区二区三区精品| 全国一区二区三区女厕偷拍| 亚洲乱码av乱码国产精品| 国产精品亚洲а∨无码播放不卡| 欧美精品中文字幕亚洲专区| 亚洲欧洲精品成人久久曰不卡| av天堂一区二区三区精品| 国产一区亚洲二区三区| 人妻夜夜爽天天爽一区| 亚洲香蕉成人AV网站在线观看| 无遮挡粉嫩小泬| 婷婷色精品一区二区激情| 亚洲av无码成h在线观看| 欧妇女乱妇女乱视频| 国产亚洲美女精品久久久| 欧美伊人亚洲伊人色综| 国产一区二区三区最新视频| 中文字幕一区二区三区日日骚| 久久久久99精品成人片直播| 国产乱子伦精品无码码专区| 中文字幕久久精品波多野结百度 | 成人国产激情自拍视频 | 性无码免费一区二区三区在线| 国产自国产在线观看免费观看| 久久与欧美视频| 91l视频免费在线观看| 国产午夜毛片v一区二区三区| 18禁超污无遮挡无码免费游戏 | 国产美女主播视频一二三区| 国产精品嫩草影院av| 国产精品欧美韩国日本久久| 99久久婷婷亚洲综合国产| 人妻中文字幕无码系列 | 极品av在线播放| 精品女同一区二区三区免费战| 麻豆果冻传媒在线观看| 无码不卡高清毛片免费 | 国产69精品久久久久9999apgf|