現代軟體工程 第一章 【概論】練習與討論

來源:互聯網
上載者:User

標籤:io   os   使用   ar   strong   資料   sp   div   art   

1.像阿超那樣,花二十分鐘寫一個能自動產生小學四則運算題目的“軟體”,和同學們比較一下各自程式的功能、實現方法的異同等等。 #include<stdio.h>#include<math.h>#include<stdlib.h>#include<time.h>int moshi;int count;void plus(int first,int second){int result;    printf("%d + %d =",first,second);scanf("%d",&result);if(result == first+second){  printf("Right!\n");}else{  printf("wrong!\nThe correct answer is:%d\n",first+second);}}void minus(int first,int second){int result;    printf("%d - %d =",first,second);scanf("%d",&result);if(result == first-second){  printf("Right!\n");}else{  printf("wrong!\nThe correct answer is:%d\n",first+second);}}void multiply(int first,int second){int result;      //運算結果    printf("%d * %d =",first,second);scanf("%d",&result);if(result == first*second){  printf("Right!\n");}else{  printf("wrong!\nThe correct answer is:%d\n",first*second);}}void divide(int first,int second){float result;      //運算結果float temp;second = rand()%100;    printf("%d / %d =",first,second);if(second==0){  printf("Error!\n");  return;}scanf("%f",&result);temp=result*100 - ((float)first/(float)second)*100;if(abs(temp)<0.01){  printf("Right!\n");}else{  printf("wrong!\nThe correct answer is:%f\n",(float)first/(float)second);}}int  main(){printf("小提示:\n每種模式預設運行5次就得重新選擇,中途退出直接按Ctrl+c!\n");p:  printf("請選擇模式:\n\n");printf("----------1:練習模式\n");    printf("----------2:計算模式\n");count=0;scanf("%d",&moshi);switch(moshi){case 1:  {  int n;  int first,second;//儲存兩個運算的數字  while(true)  {    n=first%4;    //除以4取餘數,隨機確定調用函數    srand(time(NULL));    first = rand()%100;        second = rand()%100;    if(count==5)      goto p;      switch(n)    {    case 0:    {      plus(first,second);      count++;      break;    }    case 1:    {      minus(first,second);      count++;      break;    }    case 2:    {      multiply(first,second);      count++;      break;    }    case 3:    {      divide(first,second);      count++;      break;    }    default:    {      count++;      break;    }    }//switch  }//while  }//case1case 2:  {  int first,second;        char c,c1;  //儲存運算子        while(true)  {    scanf("%d%c%d%c",&first,&c,&second,&c1);    if(count==5)      goto p;    switch(c)    {    case ‘+‘:    {      printf("%d+%d=%d\n",first,second,first+second);      count++;      break;    }    case ‘-‘:    {      printf("%d-%d=%d\n",first,second,first-second);      count++;      break;    }    case ‘*‘:    {      printf("%d*%d=%d\n",first,second,first*second);      count++;      break;    }    case ‘/‘:    {      printf("%d/%d=%f\n",first,second,(float)first/(float)second);      count++;      break;    }    default:    {      count++;      break;    }    }//switch  }//while  }//case2default:  {  break;  }}    return 0;}  2.列舉你在使用軟體的時候觀察到的“特殊”現象,它們能說明軟體的某些本質特性麼? a)在使用軟體的時候,因為現在作業系統包括應用程式都有著可視化介面,所以沒有辦法看到原始碼,這個驗證了軟體的不可見度;b)目前大多數軟體都有一個更新設定,常用軟體以及受歡迎的軟體幾乎每個月都要產生一個新的版本,這個就是軟體的易變性;c)很多流行的應用程式往往是多平台的,比如微軟的onenote;  3.上網調查一下目前流行的來源程式版本管理軟體和專案管理軟體都有哪些, 各有什麼優缺點? TFS(Team Foundation Server )是一個工作流程協作的引擎,它允許一個團隊使用他們自訂的流程,並使用在項目曆史中即時收集起來的一個集中的資料倉儲。優點:整合性。版本控制系統和工作項目儲存空間在註冊時整合在一起。當註冊時,可以將其與一個或多個工作項目關聯。新概念:擱置集 GitHub:Ruby社區的程式員使用Git以後,找不到好的Git託管網站,於是就開發了Github出來。優點:重視社區活動,在GitHub,使用者可以十分輕易地找到海量的開原始碼。 Trac是一個為軟體開發項目需要而整合了Wiki和問題跟蹤管理系統的應用平台,是一個開源軟體應用。優點:力求不影響現有團隊的開發過程,良好的擴充性,以裡程碑的方式進行專案管理。 Bugzilla:是一款具有追蹤系統的軟體。優點:開源免費,缺陷跟蹤。強大的檢索功能。 xcode整合了svn原始程式碼控制用戶端。優點:分支管理系統,易於管理,集中式伺服器更能保證安全性,管理方便,邏輯明確,符合一般人思維習慣.  4.軟體工程是不是教那些不怎麼會寫程式的人開發軟體? 你怎麼看? 個人認為是,而且軟體工程不僅是教不會寫程式的人開發軟體,更是再教已經懂得開發語言的程式員如何更好地開發軟體。  5.你所在的學校有電腦科學專業和軟體工程專業嗎?相關專業的教學計劃和畢業出路有什麼不同?閱讀有關軟體工程和電腦科學的區別的文章,談談你的看法。 有。教學計劃比較雜亂,比如說程式設計語言在畢業以後經常使用的也就一兩種(必須精通熟練),但是在學校裡各種語言都要學,導致都不精通,不能適應企業要求。 個人覺得軟體工程本身是實踐性很強的學科,而目前高校電腦專業的課程設定以理論知識為核心
  1. 軟體工程永遠不會成為一個嚴格的經過驗證的結果,因為它涉及到人類活動。
  2. 論文是自我實現。如果解決了嚴格的軟體工程的一些地區,你可以重新定義軟體工程。
  3. 軟體工程中的統計結果已經證明了論文。
  4. 我們應該停止試圖證明軟體工程結果
6.有學生提到,在大學選課的時候,可以寫一個“刷課機”的程式,利用學校選課系統的弱點或漏洞,協助某些人選到某些課程。或者協助使用者刷購票網站,先買到火車票。這些軟體合法嗎?符合道德規範嗎?是在“軟體工程”的研究範圍嗎? 請大家討論。 不合法,應該禁止。但是如果是在封閉網路內做網路安全研究,個人認為是可行的。  7.有人認為,“中文編程”, 是解決中國程式員編程效率一個秘密武器,請問它是一個 “銀彈” 麼? 中文編程技術關鍵不是簡單程式編寫漢字標識使用,而是程式碼的編譯技術必須自己掌握,編程與編譯必須互為統一發展。個人認為做得好必然是一個銀彈。  11.請問 “軟體” 和 “軟體工程” 這些詞彙是如何出現的 - 何時、何地、何人1958 年Turkey在論文"The Teaching of Concrete Mathematics"中提出。最早見於Richard R. Carhart,1953年軟體工程,1968 年北大西洋公約組織在前聯邦德國開會提出的

現代軟體工程 第一章 【概論】練習與討論

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.