程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

Python-Level2-day18:軟件項目開發;GIT和GitHub

編輯:Python

綜合項目及工具

1. 軟件項目開發

1.1 軟件項目開發流程

需求分析 ----> 概要設計 ---> 項目計劃 ----> 詳細設計---> 編碼測試 -----> 項目測試 ----> 調試修改 ---> 項目發布----> 後期維護
  • 需求分析 : 確定用戶的真實需求

  1. 確定用戶的真實需求,項目的基本功能

  2. 確定項目的整體難度和可行性分析

  3. 需求分析文檔,用戶確認

  • 概要設計:對項目進行初步分析和整體設計

  1. 確定整體架構

  2. 進行技術可行性分析

  3. 確定技術整體思路和使用框架模型

  4. 形成概要文檔指導開發流程

 

 

  • 項目計劃 : 確定項目開發的時間軸和流程

  1. 確定開發工作的先後順序

  2. 確定時間軸 ,事件裡程碑

  3. 確定人員分工

  4. 形成甘特圖和思維導圖等輔助內容

 

 

  • 詳細設計 : 項目的具體實現

  1. 構建具體模塊的編程邏輯

  2. 形成詳細設計文檔 : 思路分析,邏輯流程,功能說明,技術點說明,數據庫設計,數據結構說明,重點代碼說明,等等

  • 編碼測試 : 按照預定計劃實現代碼編寫,並且做基本檢測

  1. 根據詳細設計完成代碼編寫

  2. 寫測試程序樣例

  3. 進行技術難點攻關

  • 項目測試 : 對項目按照功能進行測試

  1. 根據測試方案完成項目測試

  2. 完成測試報告

  3. 根據測試報告進行代碼修改

  • 項目發布

1.項目交付用戶進行發布

2.編寫項目說明文檔

  • 後期維護

1.維護項目正常運轉

2.進行項目的迭代升級

1.2 開發注意事項

  • 按時完成項目是開發過程中的紅線

  • 項目實施人員之間的沖突

1.3 項目管理工具

  • 編寫文檔: word ppt excel markdown

  • 項目流程圖 : xmind visio

  • 項目管理 : project

  • 代碼管理 : svn git

2. GIT和GitHub

2.1 GIT概述

  • 什麼是GIT

    GIT是一個開源的分布式版本控制系統,用於高效的管理各種大小項目和文件。

  • 代碼管理工具的用途

    • 防止代碼丟失,做備份

    • 項目的版本管理和控制,可以通過設置節點進行跳轉

    • 建立各自的開發環境分支,互不影響,方便合並

    • 在多終端開發時,方便代碼的相互傳輸

  • GIT的特點

    • git是開源的,多在*nix下使用,可以管理各種文件

    • git是分布式的項目管理工具(SVN是集中式的)

    • git數據管理更多樣化,分享速度快,數據安全

    • git 擁有更好的分支支持,方便多人協調

  • Linux下GIT安裝

sudo apt install git

2.2 GIT使用

 

 

  • 基本概念

    • 工作區:項目所在操作目錄,實際操作項目的區域

    • 暫存區: 用於記錄工作區的工作(修改)內容

    • 倉庫區: 用於備份工作區的內容

    • 遠程倉庫: 遠程主機上的GIT倉庫

注意: 在本地倉庫中,git總是希望工作區的內容與倉庫區保持一致,而且只有倉庫區的內容才能和其他遠程倉庫交互。

2.2.1 初始配置

  • 配置命令: git config --global [選項]

  • 配置文件位置: ~/.gitconfig

  1. 配置用戶名

e.g. 將用戶名設置為Tedu
sudo git config --global user.name Tedu
  1. 配置用戶郵箱

e.g. 將郵箱設置為[email protected]
git config --global user.email [email protected]
  1. 查看配置信息

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]
    注意: 這兩個操作會修改工作區內容,同時將操作記錄提交到暫存區。

2.3 版本控制

  • 退回到上一個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 分支管理

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操作提交

  • 總結

    • 盡量在項目中降低耦合度,不同的分支只編寫自己的模塊。

    • 如果必須修改原來父級分支的文件內容,那麼做好分工,不要讓多個分支都修改同一個文件。

2.5 GitHub使用

  • 遠程倉庫

    遠程主機上的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

注意:

  1. 獲取到本地的項目會自動和GitHub遠程倉庫建立連接。且獲取的項目本身也是個git項目。

  2. 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

3. 綜合項目案例

3.1 在線詞典

  • 功能說明

用戶可以登錄和注冊

* 登錄憑借用戶名和密碼登錄
* 注冊要求用戶必須填寫用戶名,密碼,其他內容自定
* 用戶名要求不能重復
* 要求用戶信息能夠長期保存

可以通過基本的圖形界面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熟悉
     在線詞典 最少完成網絡協議創建


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved