品質要件編集
開発へのアプローチが何であれ、最終的なプログラムはいくつかの基本的な特性を満たさなければ 以下のプロパティが最も重要です:
- 信頼性:プログラムの結果が正しい頻度。 これは、アルゴリズムの概念的正しさ、およびリソース管理のミス(バッファオーバーフローや競合状態など)や論理エラー(ゼロ除算やオフバイワンエラーなど)などのプログラミングミスの最小化に依存する。,
- 堅牢性:プログラムがエラー(バグではない)による問題をどれだけうまく予測しているか。 これには、誤った、不適切な、または破損したデータ、メモリ、オペレーティングシステムサービス、ネットワーク接続などの必要なリソースが使用できない、ユーザーエラー、
- ユーザビリティ:プログラムの人間工学:人がその意図された目的のために、またはいくつかのケースでも予期しない目的のためにプログラムを使 などの課題を成功にも関わらず問題になりました。, これには、プログラムのユーザーインターフェイスの明快さ、直観性、凝集性、完全性を向上させる幅広いテキスト、グラフィカル、そして時にはハードウェア要素が含まれます。
- 携帯性の範囲のコンピュータのハードウェアとオペレーティングシステムプラットフォームのソースコードのプログラムで作成/解釈されるようにしました。, これは、ハードウェアとオペレーティングシステムのリソース、ハードウェアとオペレーティングシステムの期待される動作、およびソースコードの言語に対するプ
- 保守性:改善やカスタマイズを行うために、現在または将来の開発者によってプログラムを変更したり、バグやセキュリティホールを修正したり、新しい環境に適応させたりするために、プログラムを簡単に変更できます。, 初期開発時のグッドプラクティスは、この点で違いを生じます。 この品質などは明らかにエンドユーザーがすでに大幅な影響を与えるの運命のプログラムが、長期的に
- 効率/パフォーマンス:プログラムが消費するシステムリソースの尺度(プロセッサ時間、メモリ空間、ディスクなどの遅いデバイス、ネットワーク帯域幅、ある これも慎重な経営資源、例えば清掃一時ファイルをメモリ解放されます。, これはしばしば議論の影で選択されたプログラミング言語. 言語は確かにパフォーマンスに影響しますが、Pythonのような遅い言語でさえ、人間の視点から即座にプログラムを実行できます。 システムにボトルネックを与えるプログラムにとっては、速度、リソース使用量、およびパフォーマンスが重要ですが、プログラマーの時間の効率的な使用も重要であり、コストに関連しています。,
ソースコードの読みやすさeedit
コンピュータプログラミングにおいて、読みやすさとは、ソースコードの目的、制御フロー、操作を人間の読者が理解できる容易さ これは、移植性、使いやすさ、そして最も重要な保守性を含む、上記の品質の側面に影響を与えます。
プログラマは、新しいソースコードを書くのではなく、既存のソースコードを理解し、変更しようとすると、読んで自分の時間の大半を費やすので、読みやすさ で文字化けにつながることが多いバグ、非効率性と重複コードです。, することができることともにいくつかの簡単な読みやすさが変換したコードの短縮と大幅に減少し時間が理解します。
一貫性のあるプログラミングスタイルに従うことは、しばしば可読性 しかし、読みやすさによるグです。 コンピュータがコードを効率的にコンパイルして実行する能力とはほとんど、あるいは何も関係がない多くの要因が、可読性に寄与します。 これらの要因のいくつかは次のとおりです。
- 異なるインデントスタイル(空白)
- 分解
- オブジェクトの命名規則(変数、クラス、プロシージャなど)。,)
これのプレゼンテーションの側面(インデント、改行、色の強調表示など)は、多くの場合、ソースコードエディタによって処理されますが、コンテンツの側面は、プログラマの才能とスキルを反映しています。
さまざまな視覚プログラミング言語も、コード構造と表示に非伝統的なアプローチを採用することによって可読性の問題を解決することを目的として開発されている。 統合開発環境(Ide)を統合などです。 技術のようなコードリファクタリングの強化できる可読性,
Algorithmic complexityEdit
学術分野とコンピュータプログラミングの工学的実practiceは、与えられたクラスの問題に対して最も効率的なアルゴリズムを発見し、実装することに大きく関わっている。 この目的のために、アルゴリズムは、実行時間やメモリ消費などのリソースの使用を入力のサイズで表す、いわゆるBig O表記を使用して順序に分類され, 専門家のプログラマーは、確立されたさまざまなアルゴリズムとそれぞれの複雑さに精通しており、この知識を使用して状況に最も適したアルゴリズ
例としてのチェスアルゴリズム編集
“Programming a Computer for Playing Chess”は、アルゴリズムの複雑さの歴史の一部である”ミニマックス”アルゴリズムを評価した1950年の論文であり、IBMのDeep Blue(チェスコンピュータ)に関するコースは、スタンフォード大学のコンピュータサイエンスカリキュラムの一部である。,
MethodologiesEdit
ほとんどの正式なソフトウェア開発プロセスの最初のステップは、要件分析であり、その後、値のモデリング、実装、および障害除去(デバッグ)を決定するためのテストが続きます。 これらのタスクごとに多くの異なるアプローチが存在します。 その際の一つのアプローチで人気のための要求分析で使用の場合。 多くのプログラマは、正式なソフトウェア開発のさまざまな段階が、数年ではなく数週間かかる短いサイクルに統合されたアジャイルソフトウェア, ソフトウェア開発プロセスには多くの方法があります。
一般的なモデリング技術には、オブジェクト指向解析および設計(OOAD)およびモデル駆動アーキテクチャ(MDA)が含まれます。 統一モデリング言語(UML)は、OOADとMDAの両方で使用される表記法です。
データベース設計に使用される同様の手法は、エンティティ関係モデリング(ERモデリング)です。
実装技術には、命令型言語(オブジェクト指向型または手続き型)、関数型言語、および論理言語が含まれます。,
言語usageEditを測定
最も人気のある現代のプログラミング言語が何であるかを判断することは, プログラミング言語の人気を測定する方法には、言語に言及した求人広告の数、販売された書籍の数、言語を教えるコースの数(これは新しい言語の重要性を過大評価する)、言語で書かれた既存のコード行の数の見積もり(これはCOBOLのようなビジネス言語のユーザー数を過小評価する)が含まれる。
いくつかの言語は、特定の種類のアプリケーションに非常に人気がありますが、いくつかの言語は、多くの異なる種類のアプリケーションを書くため, たとえば、COBOLは、大規模なメインフレームコンピュータ上の企業データセンター、エンジニアリングアプリケーションのFortran、Web開発のスクリプト言語、組み込みソフト 多くのアプリケーショ 新しい言語は、一般的に、新しい機能が追加された以前の言語の構文を中心に設計されています(例えば、C++はCにオブジェクト指向を追加し、JavaはC++にメモリ管理とバイトコードを追加しますが、結果として効率と低レベル操作の能力を失います)。,
DebuggingEdit
コンピュータで問題を引き起こした最初の既知の実際のバグは、ハーバード大学のメインフレーム内に閉じ込められた蛾であり、September9,1947のログブックエントリに記録されている。 “バグ”は、このバグが見つかったとき、すでにソフトウェアの欠陥の一般的な用語でした。
プログラムに欠陥があると、ユーザーに重大な影響を与える可能性があるため、デバッグはソフトウェア開発プロセスにおいて, いくつかの言語は、その仕様が他の言語と同じくらい多くのチェックを実行するためにコンパイラを必要としないので、いくつかの種類の障害 静的コード分析ツールを使用すると、いくつかの可能性のある問題を検出できます。 通常、デバッグの最初のステップは、問題の再現を試みることです。 これは、並列プロセスやいくつかの珍しいソフトウェアのバグなど、自明でないタスクです。 また、特定のユーザー環境や使用履歴により、問題を再現することが困難になる可能性があります。,
バグが再現された後、デバッグを容易にするためにプログラムの入力を単純化する必要があるかもしれません。 たとえば、コンパイラのバグが大きなソースファイルを解析するときにクラッシュする可能性がある場合、元のソースファイルから数行しかないテストケースを単純化することで、同じクラッシュを再現することができます。 試行錯誤/分割と征服が必要です:プログラマは元のテストケースのいくつかの部分を削除し、問題がまだ存在するかどうかを確認しようとします。, GUIで問題をデバッグするとき、プログラマは元の問題の説明からいくつかのユーザー操作をスキップし、残りのアクションがバグが表示されるのに十分 スクリプトとブレークポイントもこのプロセスの一部です。
デバッグは、Eclipse、Visual Studio、Xcode、Kdevelop、NetBeans、Code::BlocksなどのIdeで行われることがよくあります。 GDBのようなスタンドアロンのデバッガも使用され、これらは通常、コマンドラインを使用して、視覚的な環境の少ない提供します。 Emacsのようないくつかのテキストエディタでは、視覚的な環境を提供するためにGDBを呼び出すことができます。,