コンピューティングとソフトウェアエンジニアリングの仕事3

コンピューティングとソフトウェアエンジニアリングの仕事3

運用要件 https://edu.cnblogs.com/campus/jssf/infor_computation17-31/homework/10454
コースの目的 単に適応が多様化する需要のポートフォリオを達成するために、既存のコードに応じて達成することができ、コードの脆弱性を特定し、修正する、シンプルなソフトウェア機能の開発を完了
パフォーマンスの面で私の目標を達成するために、現在の作業プログラム コードのテストは、全体のコード、信頼性を確保するためのコードの制御を達成することができます。私はコードの脆弱性の一部のテストと修復を完了ヘルプ
リファレンス https://www.cnblogs.com/njzy123456/p/9755642.html https://www.cnblogs.com/wolfrickwang/p/3767306.html https://blog.csdn.net/duoduo18up/article/details/ 79526659 https://www.cnblogs.com/xinz/archive/2011/11/20/2255830.html https://www.cnblogs.com/SivilTaram/p/software_pretraining_cpp.html
ジョブのテキスト https:////www.cnblogs.com/yangqiuyan/p/12434874.html

前のクラス読んだ段階:

スキルの1反対-キューブとは真似
本当に一定の実務で必要とされるスキルを習得したい、教師はメタファーだったルービックキューブの非常に簡単な例を使用し、スキルに本当の把握を、これらの低レベルの問題が解決され、なりません。脳の自動運転した後、その後、高レベルの問題を解決するための時間と脳の力を持っています。本当に本当に盗作基準、スキルレベルを向上させていない実際には、技術革新の本質を把握する必要があり、さらに目立つ真に「異なる」するためです。
2.現代のソフトウェア工学-ソフトウェアエンジニア自己評価フォームへの機能
のソフトパワーの側面とスキルを高めるために:割れ窓理論を受け、高い基準をしませ維持し、問題を解決するためのイニシアチブ、多くの場合、より多くの実践を学ぶために、あなたのバッテリーを充電するために、繰り返さないでください。排除関連するモジュール間の影響;割り当てに費やす推定時間、事故を避けるために、
一般的なデザインパターンの理解と選択し、使用することを知っています。コードエディタの多くは、非常に熟練して1があります。

宿題の段階:

A.コードデザイン

1.要求分析及び特定の要件
(クラス/関数の実装で)最大指定された配列及び部分配列を得るためには、
情報の三種類を返す必要がある
1)。最大のサブアレイ及び
2)。添字出発最大サブアレイ
3)を最大に配列添字のサブ端
2.特定の効果ショット(コードのコード・リンク・クラウドおよび付録に与えられたテキストの最後を参照)を達成

3.分析の結果を
上記の要件を達成するために、三つの主要なアルゴリズムが存在する:暴力を解決するには、実行時間がn²ある分割統治戦略実行時間はnlognた。貪欲アルゴリズムは、実行時間がn個です。明らかに貪欲アルゴリズムは利点と大きな運用効率を持っています。上記の機能の機能をテストするために、ユニットの次の部分は、私は、ファイルに対して試験しました。

II。ユニットテスト

1.テストオブジェクトとバックグラウンド
階層緯度、3つの試験に分割することができる
1)試験ユニット。
)2統合テスト。
3)性能試験
-ユニットテスト(ユニットテスト)による機能レベルのための試験であります書き込みの開発者は、機能または複数の機能をテストします。ヘルプが開発効率を向上させるので、それほど頻繁にモックフレームワークに依存する必要があり、他の地元の食材で、そのようなデータベース、キャッシュ、およびその他のサードパーティのサービスとして:ユニットテスト環境は、一般的に実行されている他のサービスに依存しない、および実行を設定するために簡単なはずです。ユニットテストは、通常は70から80パーセントの範囲について、報道に焦点を当てたシーンのほとんどを満たすために傾向があります。
統合テスト(統合テスト)は、開発者/テスター、テスト一つ以上のAPI関数によって書かれたAPIレベルについてテストケースが、正常である、複数の構成要素間の協調が正しく動作します。比較的複雑な構築するための統合テスト環境、それは通常我々が共有、データベース、キャッシュ、およびその他のサードパーティのサービスに依存してもよいです。
パフォーマンステスト(性能試験)は、主など、パフォーマンスをテストパフォーマンスのボトルネックを分析するために使用され、それは高レベルの試験と同様です。パフォーマンスは、この小さな拡張では、アプリケーションばらつくのさまざまな方法をテストし、多くの条件によって影響を受けます。
プロジェクトのコードの量が多いほど、より多くのテストケースは、その品質を保護する必要があります。各コミットの影響によってもたらされる不確実性大きい、ロジックに精通一層難しいことを意味する符号の多い量、。典型的には、各々がXianpaoパスをテストユニットテストと統合した後に送信することができる要求をマージする必要がありコミット。あなたがオンラインで公開するたびに、ユニットテストと統合テストを通じて確認リリースを行い、いくつかのアプリケーションでも、パフォーマンステストを介して実行する必要があります。
2.試験手順と要件
1)プロセス:すべてのユニットテストは、コードカバレッジを通過するまで、テストが失敗始まるすべてのユニットで、正しいロジックを追加試験ユニットを介して参照し、コードカバレッジの増加を見るために改良されたプロセスを繰り返します満足のいく結果。
2)要件:このクラスは、最初は空で、例えば0テストは、テストファイルは、計算に読み込まれると、単純な戻り値です。
3.特定の実装やエフェクトショット(コードコードリンク雲と付録に与えられたテキストの末尾を参照)


。4.結果の分析
・は、工程の簡略化:ユニットテストが完了すると、メインプロジェクト内の溶液中でUnitTestMainに名前を追加するためのユニットテストプロジェクトをUnitTestMainファイルのプロジェクトが含まれているディレクトリに移動し、その後、ソリューションエクスプローラで、UnitTestMainプロジェクトのプロパティを右クリック- > VC ++ディレクトリ- >変更内容を含むディレクトリ、およびUnitTestMainプロジェクトunittest1.cpp編集を。
問題:テスト用のcppファイルを実行しているときに書かれたテストコードの先頭には、以下のようにプロパティを設定しなければならない情報へのアクセスのテスト(赤線を指定されたヘッダファイル)を達成することができませんでした。

III。ブログの求人

・レビューの研究の三年間:新入生は、単純なコンピュータのアプリケーションソフト(MSオフィス)や関数、クラス、ストリーミングとファイル操作のクラスについて学んだ基本的なC ++プログラミング言語、との接触に入って来ました。単語、PPTのうち、より多くの熟練した使用をExcel、およびコードは単純なアルゴリズムをソートする50行の中に単純なアルゴリズムの符号量をバブリングプログラムされます。年生、いくつかのシンプルなグラフィカルインタフェースを行います、それはJava言語とC ++言語に似てプログラムすることができ、より高度なコンピュータ言語、Java言語を学習し、さらなる研究のデータ構造はもちろん、あなたがコードの変更を提供するために応じていくつかの比較的複雑な要件を行うことができます実装は、コンピュータデータの基礎を学びました。ジュニアは、データベース、オペレーティングシステム、ASP、MATLAB科学技術計算のコースコンピュータコードの書き込み動作のより具体的な理解を学びます。サイトを構築するためのスキルを学ぶ、サイトには、光ディスクライブラリ融資制度の創設、オンラインチャットルームに似た、より複雑なを完了するために、基本的な操作を実現します。数学的な計算のニーズを満たすために、より多くの学習Matlabのは、統計との比較を容易にするであろういくつかの数学的アルゴリズムは、我々は、データベースを構築する大規模なデータの背景の基本的な操作を完了します書きます。貪欲アルゴリズム、銀行家のアルゴリズム、古典的なハッシュアルゴリズムのようなコンピュータアルゴリズムを理解します。
・未来:私は、簡単なソフトウェア開発を支援することができます自分自身の学習と教師で、この計算学期とソフトウェア工学のカリキュラムを学び、比較的大規模なソフトウェア開発プロジェクトを完了することができます理解したり、ソフトウェア開発プロセス後の協力の本当の意味にしたいです。あなたは、彼が以前に学習したシリーズの基本的なコースを学ぶと、自分のロジックとコードの脆弱性を修正する能力を行使する能力をコードプログラミング能力を向上させることができます。

IV。配布資料のプレビュー

(A)コードの仕様
コーディングスタイルの原則は次のとおりです。シンプルで読みやすい、明確な。
コード仕様:
(1)コードスタイル仕様。以下の観点から改善することができる:インデント、線幅、ブラケット、空白行{}、分岐、名前、下線付き問題と破線、問題の場合、コメント(コメント複雑な関数は、ヘッダを配置しなければならない)
(2)仕様コードのデザイン。以下の観点から改善することができる:機能、GOTO、エラー処理(パラメータ処理、アサート)、C ++のクラスをどのように扱うか
*キー:C ++クラスの処理
1)クラス:オブジェクト指向の概念と複数をカプセル化するクラスを使用して状態(多型)。エンティティの値型を渡す避けるためには、ポインタを渡す必要があります。つまり、単純なデータ型のために、クラスを達成する必要はありません。彼らは作成され、排除されたとき、あなたが知っていることはありませんので、明示的なコンストラクタとデストラクタについては、世界的な実体を作成しないでください。必要な場合のみ、のみ使用して「クラスを。」
2)仮想関数(仮想関数):仮想関数はポリモーフィズム(多態性を達成するために)。必要な場合のみ、唯一の仮想関数を使用します。型は、多型を達成する場合、基底クラス(基本クラス)にデストラクタは仮想関数であるべきです。
3)コンストラクタコンストラクタ:DOはコンストラクタで複雑な操作をしないで、単純にすべてのデータメンバーがすることができ、初期化します。
コンストラクタは、(実際に戻すことはできません)エラーを返すべきではありません。HrInit()またはFINITに可能エラー操作()です。
4)デストラクタ:デストラクタ上のすべてのクリーンアップ作業。リリースのデストラクタの前にいくつかのリソースは、これらのメンバーをリセットするために覚えていれば0またはNULLです。デストラクタは間違ってはいけません。
5)タイプの継承(クラス継承)必要な場合、継承の種類のみを使用します。CONSTは(代わりに、パラメータ自体の読み取り専用データへのパラメータ・ポイント)、読み取り専用のパラメータをマーク。constがデータを変更しない関数で表さ。
(B)コードレビュー
目的:エラーコードを識別するために、論理エラーを発見、探索アルゴリズムのエラー、潜在的なエラーと回帰エラーを特定、改善のための可能な分野を見つけ、教育(相互教育)の開発者、指導経験、より多く作ります実用的な知識とアプリケーション依存に精通しながら多くのメンバーは、プロジェクトの各部分のコードに精通しています。
ステップ:ことを確認したコードが正常にコンパイルされなければならないことを、プログラマはコードテストしている必要があります。レビューの顔には、プログラマは新しいコードを提供しなければならない、とファイルの差分解析ツールを、一般的には、原因と修正の影響について、開発者の制御プロセスです。しかし、評価は、任意の時点で物語を中断する権利があり、彼らは前方に自分の意見を入れて、校閲一つ一つのフィードバックを与える必要があり、審査の結果、双方が合意に達する必要があります。
(C)ペアプログラミング
- ;ナビゲーター(ナビゲーター)のパイロット、役割のリマインダーを果たしドライバ(ドライバ)の人々のキーボード入力を制御することです:プログラミングの結び目は、2つの役割を持っています。
利点:1)開発のレベル、ペアプログラミングは、より優れた設計品質とコードの品質を提供することができ、そして、彼らは問題を解決するための強力な能力を持って取り組んでいます。2)自ら開発者に、もっと自信を持ってペアワークは、高品質の出力は、より高い満足感につながることができます。3)心理的に、あなたは恥ずかしい、恥ずかしい馬鹿を捨てたときに同じことを行うには、あなたとあなたのチームメイトの周りの他の人がいるとき。4)企業管理レベルで、一対の人の移動を処理するより良いことができ、互いに転送経験から学ぶ、より効果的に通信することができます。人の知識は他の人に共有されているため。
方法:アサーション、橋、説得、
(d)のアドバイスメソッドを与える
「インパクト+フィードバック」
最外層(行動との結果)、中間層(習慣とモチベーション)最内層(本質と基本的なプロパティ):三層のために

V.コードホスティング

新しいホスティングちょうど2つのcppファイルは、個々の倉庫に直接提出しました。

クラウドリンクコード:

https://gitee.com/yang_qiu_yan/ruangong

付録コード

//maxarray.cpp
#include<iostream>
#include<cstdlib>
using namespace std;
int getmax(int array[],int length)
{
    int sum = 0;    
    int max = 0;   
    int startIndex = 0; //记录子数组的起始位置
    int endIndex = 0;   //记录子数组的终止位置
    int newStartIndex = 0;  
    for (int i = 0; i < length; i++)    //遍历整个目标数组
    {
        if (max < 0)  
        {
            max = array[i];    
            newStartIndex = i;  
        }
        else
        {
            max += array[i];   
        }
        if (sum < max) //如果此时 sum < temp;
        {
            sum = max; 
            startIndex = newStartIndex; 
            endIndex = i;   
        }
    }
    return max;
}

int getstartIndex(int array[],int length)
{
    int sum = 0;    
    int max = 0;   
    int startIndex = 0; 
    int endIndex = 0;   
    int newStartIndex = 0;  
    for (int i = 0; i < length; i++)    
    {
        if (max < 0)   
        {
            max = array[i];    
            newStartIndex = i; 
        }
        else
        {
            max += array[i];   
        }
        if (sum < max) 
        {
            sum = max;
            startIndex = newStartIndex; 
            endIndex = i;   
        }
    }
    return startIndex;
}
int getendIndex(int array[],int length)
{
    int sum = 0;    
    int max = 0;   
    int startIndex = 0;
    int endIndex = 0;   
    int newStartIndex = 0;  
    for (int i = 0; i < length; i++)    
    {
        if (max < 0)  
        {
            max = array[i];    
            newStartIndex = i;  
        }
        else
        {
            max += array[i];   
        }
        if (sum < max) 
        {
            sum = max; 
            startIndex = newStartIndex; 
            endIndex = i;  
        }
    }
    return endIndex;
}


int main()
{
    int array[]={-32,-10,33,-23,32,-12,41,-12,1,3,5,-98,70,-21,10,-9,61};
    int length=17;
    cout<<"Sum of the largest subarray:"<<getmax(array,length)<<endl;
    cout<<"Maximum subarray end superscript(strart):"<<getstartIndex(array,length)<<endl;
    cout<<"Maximum subarray end subscript(end):"<<getendIndex(array,length)<<endl;
    system("pause");
    return 0;
}
//unittest1.cpp
#include "stdafx.h"
#include "CppUnitTest.h"
#include "maxarray.cpp"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace UnitTest1
{       
    TEST_CLASS(UnitTest1)
    {
    public:
        
        TEST_METHOD(TestMethod1)
        {
            // TODO: 在此输入测试代码
            int a[]={-32,-10,33,-23,32,-12,41,-12,1,3,5,-98,70,-21,10,-9,61};
            Assert::AreEqual(111,getmax(a,17));
        }
        TEST_METHOD(getstartIndex_Test)
        {
            // TODO: 在此输入测试代码
            int a[]={-32,-10,33,-23,32,-12,41,-12,1,3,5,-98,70,-21,10,-9,61};
            Assert::AreEqual(12,getstartIndex(a,17));
        }
        TEST_METHOD(getendIndex_Test)
        {
            // TODO: 在此输入测试代码
            int a[]={-32,-10,33,-23,32,-12,41,-12,1,3,5,-98,70,-21,10,-9,61};
            Assert::AreEqual(16,getendIndex(a,17));
        }
    };
}

おすすめ

転載: www.cnblogs.com/yangqiuyan/p/12434874.html