需求分析 ----> 概要設計 ---> 項目計劃 ----> 詳細設計---> 編碼測試 -----> 項目測試 ----> 調試修改 ---> 項目發布----> 後期維護
需求分析 : 確定用戶的真實需求
確定用戶的真實需求,項目的基本功能
確定項目的整體難度和可行性分析
需求分析文檔,用戶確認
概要設計:對項目進行初步分析和整體設計
確定整體架構
進行技術可行性分析
確定技術整體思路和使用框架模型
形成概要文檔指導開發流程
項目計劃 : 確定項目開發的時間軸和流程
確定開發工作的先後順序
確定時間軸 ,事件裡程碑
確定人員分工
形成甘特圖和思維導圖等輔助內容
詳細設計 : 項目的具體實現
構建具體模塊的編程邏輯
形成詳細設計文檔 : 思路分析,邏輯流程,功能說明,技術點說明,數據庫設計,數據結構說明,重點代碼說明,等等
編碼測試 : 按照預定計劃實現代碼編寫,並且做基本檢測
根據詳細設計完成代碼編寫
寫測試程序樣例
進行技術難點攻關
項目測試 : 對項目按照功能進行測試
根據測試方案完成項目測試
完成測試報告
根據測試報告進行代碼修改
項目發布
1.項目交付用戶進行發布
2.編寫項目說明文檔
後期維護
1.維護項目正常運轉
2.進行項目的迭代升級
按時完成項目是開發過程中的紅線
項目實施人員之間的沖突
編寫文檔: word ppt excel markdown
項目流程圖 : xmind visio
項目管理 : project
代碼管理 : svn git
什麼是GIT
GIT是一個開源的分布式版本控制系統,用於高效的管理各種大小項目和文件。
代碼管理工具的用途
防止代碼丟失,做備份
項目的版本管理和控制,可以通過設置節點進行跳轉
建立各自的開發環境分支,互不影響,方便合並
在多終端開發時,方便代碼的相互傳輸
GIT的特點
git是開源的,多在*nix下使用,可以管理各種文件
git是分布式的項目管理工具(SVN是集中式的)
git數據管理更多樣化,分享速度快,數據安全
git 擁有更好的分支支持,方便多人協調
Linux下GIT安裝
sudo apt install git
基本概念
工作區:項目所在操作目錄,實際操作項目的區域
暫存區: 用於記錄工作區的工作(修改)內容
倉庫區: 用於備份工作區的內容
遠程倉庫: 遠程主機上的GIT倉庫
注意: 在本地倉庫中,git總是希望工作區的內容與倉庫區保持一致,而且只有倉庫區的內容才能和其他遠程倉庫交互。
2.2.1 初始配置
配置命令: git config --global [選項]
配置文件位置: ~/.gitconfig
配置用戶名
e.g. 將用戶名設置為Tedu sudo git config --global user.name Tedu
配置用戶郵箱
e.g. 將郵箱設置為[email protected] git config --global user.email [email protected]
查看配置信息
git config --list
2.2.2 基本命令
初始化倉庫
git init 意義:將某個項目目錄變為git操作目錄,生成git本地倉庫。即該項目目錄可以使用git管理
查看本地倉庫狀態
git status 說明: 初始化倉庫後默認工作在master分支,當工作區與倉庫區不一致時會有提示。 未跟蹤的文件:工作區下添加過了,但沒有向暫存區做記錄
將工作內容記錄到暫存區
git add [files..] e.g. 將文件 file1 ,file2 記錄到暫存區 git add file1 file2 e.g. 將所有文件(不包含隱藏文件)記錄到暫存區 git add *
取消文件暫存記錄
git rm --cached [file]
設置忽略文件
在GIT項目中可以在項目根目錄添加.gitignore文件的方式,規定相應的忽略規則,用來管理當前項目中的文件的忽略行為。.gitignore 文件是可以提交到公有倉庫中,這就為該項目下的所有開發者都共享一套定義好的忽略規則。在.gitignore 文件中,遵循相應的語法,在每一行指定一個忽略規則。
.gitignore忽略規則簡單說明 file 表示忽略file文件 *.a 表示忽略所有 .a 結尾的文件 !lib.a 表示但lib.a除外 build/ 表示忽略 build/目錄下的所有文件,過濾整個build文件夾;
將文件同步到本地倉庫
git commit [file] -m [message] 說明: -m表示添加一些同步信息,表達同步內容,不加file表示同步所有暫存記錄的文件 e.g. 將暫存區所有記錄同步到倉庫區 git commit -m '第一次提交內容'
查看commit 日志記錄
git log
將暫存區或者某個commit點文件恢復到工作區
git checkout [commit] -- [file] e.g. 將a.jpg文件恢復,不寫commit表示恢復最新保存的文件內容 git checkout -- a.jpg
移動或者刪除文件
git mv [file] [path] git rm [files] 注意: 這兩個操作會修改工作區內容,同時將操作記錄提交到暫存區。
退回到上一個commit節點
git reset --hard HEAD^ 說明: 一個^表示回退1個版本,依次類推。當版本回退之後工作區會自動和當前commit版本保持一致
退回到指定的commit_id節點
git reset --hard [commit_id]
查看所有操作記錄
git reflog 注意:最上面的為最新記錄,可以利用commit_id去往任何操作位置
創建標簽
標簽: 在項目的重要commit位置添加快照,保存當時的工作狀態,一般用於版本的迭代。
git tag [tag_name] [commit_id] -m [message] 說明: commit_id可以不寫則默認標簽表示最新的commit_id位置,message也可以不寫,但是最好添加。 e.g. 在最新的commit處添加標簽v1.0 git tag v1.0 -m '版本1'
查看標簽
git tag 查看標簽列表 git show [tag_name] 查看標簽詳細信息
去往某個標簽節點
git reset --hard [tag]
刪除標簽
git tag -d [tag]
2.4.1 基本概念
定義: 分支即每個人在原有代碼(分支)的基礎上建立自己的工作環境,完成單獨開發,之後再向主分支統一合並工作內容。
好處
各自開發互不干擾
防止誤操作對其他開發者的影響
2.4.2 基本操作
查看現有分支
git branch 說明: 前面帶 * 的分支表示當前工作分支
創建分支
git branch [branch_name] 說明: 基於a分支創建b分支,此時b分支會擁有a分支全部內容。在創建b分支時最好保持a分支"干淨"狀態。
切換工作分支
git checkout [branch] 說明: 2,3可以同時操作,即創建並切換分支
注意: git checkout -b [branch_name] 可以同時完成創建分支和切換分支的工作
合並分支
git merge [branch]
注意:分支的合並一般都是子分支向父分支中合並
刪除分支
git branch -d [branch] 刪除分支 git branch -D [branch] 刪除沒有被合並的分支
2.4.3 分支沖突問題
定義: 當分支合並時,原來的父分支發生了變化,在合並過程中就會產生沖突問題,這是合並分支過程中最為棘手的問題。
沖突情形1—— 原來的分支增加了新文件或者原有文件發生了變化
此時合並可能會出現:
此時只要先摁 ctrl-o 寫入,然後回車,再摁ctrl-x 離開就可以了。
也可能出現提示讓直行commit合並,那麼此時只需要直行commit操作就可以了。這種沖突比較好解決。
沖突情形2—— 子分支和父分支修改了相同的文件
此時會出現:
這種沖突不太好解決需要自己進入文件進行修改後,再直行add ,commit操作提交
總結
盡量在項目中降低耦合度,不同的分支只編寫自己的模塊。
如果必須修改原來父級分支的文件內容,那麼做好分工,不要讓多個分支都修改同一個文件。
遠程倉庫
遠程主機上的GIT倉庫。實際上git是分布式結構,每台主機的git倉庫結構類似,只是把別人主機上的git倉庫稱為遠程倉庫。GitHub可以幫助我們建立一個遠程倉庫。
GitHub介紹
GitHub是一個開源的項目社區網站,擁有全球最多的開源項目。開發者通過可以注冊網站賬戶,在GitHub建立自己的項目倉庫(我們可以視作一個遠程倉庫),GitHub規定GIT為它的唯一代碼管理工具。
GitHub網址:github.com
2.5.1 獲取項目
在左上角搜索欄搜索想要的獲取的項目
選擇項目後復制項目git地址
在本地使用git clone方法即可獲取
git clone https://github.com/xxxxxxxxx
注意:
獲取到本地的項目會自動和GitHub遠程倉庫建立連接。且獲取的項目本身也是個git項目。
GitHub提供兩種地址鏈接方式,http方式和SSH方式。通常訪問自己的項目可以使用SSH方式,clone別人的項目使用http方式。
2.5.2 創建自己的項目倉庫
添加SSH密鑰
# 先建立秘鑰信任 1. 將自己要連接github的計算機的ssh公鑰內容復制 2. github上選擇頭像下拉菜單,settings-》SSH and GPG keys-》new SSH key
找到自己的公鑰位置:
添加到賬號中
點擊右上角加號下拉菜單,選擇新的倉庫
填寫相應的項目信息即可
github倉庫相對本地主機就是一個遠程倉庫通過remote連接
在本地使用ssh連接倉庫
# 後續操作每次上傳內容都需要輸入密碼,比較麻煩,一般用於臨時計算機的連接使用 git remote add origin [email protected]:/tarena/aid.git 注意: 如果連接遠程時 git remote add origin 後用https地址,那麼以後每次上傳內容都需要輸入用戶名密碼
查看連接的遠程倉庫名稱
git remote
斷開遠程倉庫連接
git remote rm [origin]
如果是自己的倉庫需要刪除,則選擇自己的倉庫選擇settings,在最後可以選擇刪除倉庫。
2.5.3 遠程倉庫操作命令
將本地分支推送給遠程倉庫
# 將master分支推送給origin主機遠程倉庫,第一次推送分支使用-u表示與遠程對應分支 建立自動關聯 git push -u origin master git push origin [:branch] # 刪除向遠程倉庫推送的分支
推送代碼到遠程倉庫
# 如果本地的代碼有修改項推送給遠程倉庫 git push
推送舊的版本
# 用於本地版本比遠程版本舊時強行推送本地版本 git push --force origin
從遠程獲取代碼
git pull
功能說明
用戶可以登錄和注冊
* 登錄憑借用戶名和密碼登錄 * 注冊要求用戶必須填寫用戶名,密碼,其他內容自定 * 用戶名要求不能重復 * 要求用戶信息能夠長期保存
可以通過基本的圖形界面print以提示客戶端輸入。
* 程序分為服務端和客戶端兩部分 * 客戶端通過print打印簡單界面輸入命令發起請求 * 服務端主要負責邏輯數據處理 * 啟動服務端後應該能滿足多個客戶端同時操作
客戶端啟動後即進入一級界面,包含如下功能:登錄 注冊 退出
* 退出後即退出該軟件 * 登錄成功即進入二級界面,失敗回到一級界面 * 注冊成功可以回到一級界面繼續登錄,也可以直接用注冊用戶進入二級界面
用戶登錄後進入二級界面,功能如下:查單詞 歷史記錄 注銷
* 選擇注銷則回到一級界面 * 查單詞:循環輸入單詞,得到單詞解釋,輸入特殊符號退出單詞查詢狀態 * 歷史記錄:查詢當前用戶的查詞記錄,要求記錄包含name word time。前10條即可。
前情回顧
1. HTTP協議
請求格式
請求行 : GET /xxxx HTTP/1.1
請求頭 : 每個鍵值對一行
空行 : \r\n
請求體 : post
響應格式
響應行 : HTTP/1.1 200 OK (404)
響應頭 : Content-Type:text/html
空行
響應體 : 給客戶端的數據內容
2. webserver
編寫一個功能性的類步驟 (類接口)
仿照已經用過的類
確定使用方法
確定需要用戶決定的內容 設計參數
IO多路復用模型
3. 高並發
並發的衡量指標
4. 軟件開發流程
在線詞典
需求分析
用戶使用圖 ?
技術點設計
數據存儲 : mysql數據庫
並發模型 : 多進程 tcp 並發
兩個界面怎麼設計 demo.py ?
數據庫設計
使用dict數據庫
words : id word mean
其他表怎麼設計 建立?
網絡通信協議設計
請求 ?
響應 ?
劃分模塊 劃分功能
登錄
注冊
查單詞
歷史記錄
代碼封裝,整體設計 ?
每個功能的具體邏輯設計
框架搭建 ?
登錄
注冊
查單詞
歷史記錄
作業: git熟悉
在線詞典 最少完成網絡協議創建