結對做業

結隊做業
GitHub項目地址 https://github.com/1402120950/PairProgramming
隊友博客地址 https://www.cnblogs.com/zlang/
做業連接 http://www.javashuo.com/article/p-noqnzypb-ga.html)

一.PSP表格

PSP2.1 Personal Software Process Stages 預估耗時(分鐘) 實際耗時(分鐘)
Planning 計劃 20 30
·Estimate · 估計這個任務須要多少時間 840 900
Development 開發 720 810
· Analysis · 需求分析 (包括學習新技術) 60 120
· Design Spec · 生成設計文檔 10 10
· Design Review · 設計複審 (和同事審覈設計文檔) 10 10
· Coding Standard · 代碼規範 (爲目前的開發制定合適的規範) 10 10
· Design · 具體設計 30 60
· Coding · 具體編碼 360 360
· Code Review · 代碼複審 60 60
· Test · 測試(自我測試,修改代碼,提交修改) 180 180
Reporting 報告 130 190
· Test Report · 測試報告 60 120
· Size Measurement · 計算工做量 10 10
· Postmortem & Process Improvement Plan · 過後總結, 並提出過程改進計劃 60 60
合計 870 1030

二.計算模塊接口的設計與實現過程

1.設計

  這個項目由數據庫和C#語言完成,將學生信息存儲在數據庫中,再由C#語言將數據庫中的學生信息提取出來,並實現點名功能,並在新設計了登錄的功能。
這些功能整體由這幾個部分組成:
(1)WinLogin(登錄窗體)
(2)Form1(加載學生窗體)
(3)Form2(實現點名窗體)
(4)connect(和數據庫相鏈接和查詢語句的類)
(5)Demo(存儲帳號和密碼以及學生基本信息的數據庫)
大體結構以下:
在這裏插入圖片描述html

2.如何體現原則的

(1)Design By Contract(契約式設計):
契約式設計就是按照某種規定對一些數據等作出約定,若是超出約定,程序將再也不運行,例如要求輸入的參數必須知足某種條件。
如何體現:咱們的數據庫沒法實現共享。因此只能利用每一個人本人本地數據庫,數據庫的名稱都是Demo。
(2)Information Hiding(信息隱藏):
信息隱藏指在設計和肯定模塊時,使得一個模塊內包含的特定信息(過程或數據),對於不須要這些信息的其餘模塊來講,是不可訪問的。
如何體現:咱們的項目都是兩我的一塊兒設計,編碼的,並無對對方設計一些影藏的東西,同時也方便了操做。
(3)Interface Design(接口設計):
對接口的名字,功能,接口與接口間的繼承關係進行設計;好的接口設計能夠加強代碼可讀性,易用性,可更改性。
如何體現:沒有設計接口,只有系統自帶的接口,確定是符合原則的。
(4)Loose Coupling 鬆耦合:
軟件系統結構中各模塊間相互聯繫緊密程度的一種度量。模塊之間聯繫越緊密,其耦合性就越強,模塊的獨立性則越差。模塊間耦合高低取決於模塊間接口的複雜性、調用的方式及傳遞的信息。
如何體現:因爲並無設計接口,因此沒有辦法去經過增長接口去提供模塊間的耦合。git

三.代碼複審過程

1.代碼規範

參考:C#代碼規範github

2.代碼互審狀況、發現的問題

由於咱們是同一個寢室,因此咱們的代碼在邊開發,邊審改,咱們均可以隨時看到對方的工做狀況,有什麼問題都能隨時指出,只是在每次在不一樣的機子上面測試代碼的時候,咱們須要更改連接數據庫的連接語句,出現的問題也主要集中在開發人員的性格上面,可是都不至於影響配合。sql

四.代碼說明

(1)登錄代碼,與數據庫鏈接起來,並使用查詢語句查詢出數據庫設置的帳號和密碼數據庫

private void btmLogin_Click(object sender, EventArgs e)
        {
            string sql = string.Format("select * from tbluser where username='{0}' and userpwd='{1}'", txtName.Text, txtPwd.Text);
            DataSet ds = connect.querysql(sql);
            if (ds.Tables[0].Rows.Count > 0)
            {
               Form1 f = new Form1();
                f.Show();
                this.Hide();
            }
            else
            {
                MessageBox.Show("帳號或密碼錯誤");
            }
        }

(2)加載數據,使用查詢語句,將數據庫的學生信息加載到相應窗體編程

private void timerCallName_Tick(object sender, EventArgs e)
        {   
            string sql = string.Format("select * from tblStu");
            DataSet ds = connect.querysql(sql);
            dataGridView1.DataSource = ds.Tables[0];   
        }

(3)點名,從Tables[0]隨機生成姓名的關鍵代碼安全

Label1.Text = Convert.ToString(ds.Tables[0].Rows[i]["stuName"])

五.附加功能

咱們的隨機點名程序與數據庫相鏈接,能夠在數據庫裏直接進行對數據的增長、刪除、編輯,方便咱們對學生進行管理,而且咱們增長了登錄功能,對點名程序增長了安全性。ide

六.計算模塊部分單元測試展現

1.單元測試思路:

定義一個數據庫查詢語句,再將查詢到的結果返回到ds,定義一個字符串A,將指定的結果放在A中,再斷言他的結果是否正確。單元測試

2.單元測試代碼
public class Form2Tests
    {
        [TestMethod()]
        public void timerCallName_TickTest()
        {
            string sql = string.Format("select * from tblStu");
            DataSet ds = connect.querysql("select * from tblStu");
            string A = Convert.ToString(ds.Tables[0].Rows[0]["stuName"]);
            StringAssert.Contains("曾琅", A);
            //Assert.Fail();
           
        }
    }
3.單元測試結果以及代碼覆蓋率

在這裏插入圖片描述

七.結對的過程及結對照片

1.結對過程:

咱們結對成功後,首先想到的就是要經過鏈接數據庫來實現點名的功能,因此一開始就由我來設計界面,同時他來創建數據庫表格,而後再來一步一步的進行代碼的編寫,每一個人負責本身的那部分代碼,在遇到大的問題的時候,又進行合做來解決,過程基本上能夠說是比較順利的。學習

2.結對照片:

在這裏插入圖片描述

八.解決項目的心路歷程與收穫,以及結對感覺

結對編程在必定程度上確實效率比較高,可是其弊端也很明顯,特別是對於這種小型的項目,結對編程在必定程度上浪費了一小部分資源,可是整體而言,仍是比一我的的效率更高的多,所謂當局者迷,黨一我的遇到困難時,隊友經常可以給出頗有建設性的意見。還有就是GitHub的使用上,對於兩我的,進行簡單的項目而言,GitHub就能夠說沒有一點兒優點,只能平添瑪法,可是可以想象到當遇到多人協做的大項目的時候,GitHub的優點就能很好的凸顯出來。

相關文章
相關標籤/搜索