Software-engineering-overview

提供:Dev Guides
移動先:案内検索

ソフトウェアエンジニアリングの概要

最初に、ソフトウェアエンジニアリングの意味を理解しましょう。 この用語は、ソフトウェアとエンジニアリングという2つの単語で構成されています。

  • ソフトウェア*は単なるプログラムコードではありません。 プログラムは実行可能なコードであり、何らかの計算目的に役立ちます。 ソフトウェアは、実行可能なプログラミングコード、関連するライブラリ、およびドキュメントのコレクションと見なされます。 ソフトウェアは、特定の要件に合わせて作成された場合、*ソフトウェア製品*と呼ばれます。

一方、*エンジニアリング*は、明確に定義された科学的な原則と方法を使用した製品の開発に関するものです。

ソフトウェアエンジニアリング

  • ソフトウェアエンジニアリング*は、明確に定義された科学的原則、方法、手順を使用したソフトウェア製品の開発に関連するエンジニアリングブランチです。 ソフトウェアエンジニアリングの結果は、効率的で信頼性の高いソフトウェア製品です。

定義

IEEEは、ソフトウェアエンジニアリングを次のように定義しています。

'__ (1)ソフトウェアの開発、運用、保守に対する体系的で、規律化された、定量化可能なアプローチの適用。つまり、ソフトウェアへのエンジニアリングの適用です。

(2)上記のようなアプローチの研究。 '__

ドイツのコンピューター科学者であるFritz Bauerは、ソフトウェアエンジニアリングを次のように定義しています。

'_ソフトウェアエンジニアリングは、信頼性が高く、実際のマシンで効率的に動作するソフトウェアを経済的に入手するための、健全なエンジニアリングの原則の確立と使用です。_

ソフトウェアの進化

ソフトウェアエンジニアリングの原則と方法を使用してソフトウェア製品を開発するプロセスは、*ソフトウェアの進化*と呼ばれます。これには、ソフトウェアの初期開発とその保守および更新が含まれます。

ソフトウェアの進化

進化は、要件収集プロセスから始まります。 その後、開発者は目的のソフトウェアのプロトタイプを作成し、ソフトウェア製品開発の初期段階でフィードバックを得るためにユーザーに提示します。 ユーザーは変更を提案しますが、それにはいくつかの連続した更新とメンテナンスも変更され続けます。 このプロセスは、目的のソフトウェアが完成するまで、元のソフトウェアに変更されます。

ユーザーが手元にあるソフトウェアを望んだ後でも、進歩する技術と変化する要件により、ソフトウェア製品はそれに応じて変化します。 ソフトウェアをゼロから再作成し、要件に応じて1対1に移行することは現実的ではありません。 実行可能で経済的な唯一のソリューションは、既存のソフトウェアを最新の要件に一致するように更新することです。

ソフトウェア進化の法則

リーマンは、ソフトウェアの進化に関する法律を制定しています。 彼はソフトウェアを3つの異なるカテゴリーに分けました。

  • * S-type(static-type)-*これは、定義された[.underline] #specifications and solutions。#に従って厳密に機能するソフトウェアです。#ソリューションとそれを達成する方法は、コーディング前にすぐに理解されます。 s-typeソフトウェアは変更の影響を受けにくいため、これが最も簡単です。 たとえば、数学計算用の計算プログラム。
  • * P-type(practical-type)-*これは、[。underline]#procedures。#のコレクションを持つソフトウェアです。#これは、プロシージャが実行できる内容によって正確に定義されます。 このソフトウェアでは、仕様を記述できますが、解決策はすぐにはわかりません。 たとえば、ゲームソフトウェア。
  • * E-type(embedded-type)-*このソフトウェアは、実際の[.underline]#environment。#の要件として密接に機能します。#このソフトウェアは、法律、税金などにさまざまな変更があるため、高度に進化しています。 現実世界の状況で。 たとえば、オンライン取引ソフトウェア。

E-Typeソフトウェアの進化

リーマンは、E-Typeソフトウェアの進化に関して8つの法律を定めています-

  • 継続的な変更- Eタイプのソフトウェアシステムは、現実の世界の変化に適応し続ける必要があります。そうしないと、徐々に有用性が低下します。
  • 複雑さの増加- Eタイプのソフトウェアシステムが進化するにつれて、保守または削減のための作業を行わない限り、その複雑さは増加する傾向があります。
  • *親しみやすさの保存-*ソフトウェアへの親しみ、またはソフトウェアの開発方法、その特定の方法で開発された理由など。 システムの変更を実装するために、いかなるコストでも保持する必要があります。
  • *継続的な成長-*何らかのビジネス上の問題を解決することを目的としたEタイプシステムの場合、ビジネスのライフスタイルの変化に応じて、変更を実装するサイズが大きくなります。
  • *品質の低下-*変化する運用環境に厳密に維持され、適応されない限り、Eタイプソフトウェアシステムの品質は低下します。
  • フィードバックシステム Eタイプソフトウェアシステムは、マルチループ、マルチレベルフィードバックシステムを構成し、正常に変更または改善するには、そのように扱う必要があります。
  • 自己規制- Eタイプのシステム進化プロセスは、製品およびプロセスの測定値が通常に近い状態で自己調整します。
  • *組織の安定性-*進化するEタイプシステムの平均的な有効なグローバルアクティビティレートは、製品の耐用年数にわたって変化しません。

ソフトウェアのパラダイム

ソフトウェアパラダイムは、ソフトウェアの設計中に行われる方法と手順を指します。 現在提案されている多くの方法があり、現在作業中ですが、これらのパラダイムがソフトウェアエンジニアリングのどこに位置するかを確認する必要があります。 これらはさまざまなカテゴリに組み合わせることができますが、それぞれが互いに含まれています。

ソフトウェアの進化

プログラミングパラダイムは、ソフトウェア開発パラダイムのサブセットであるソフトウェア設計パラダイムのサブセットです。

ソフトウェア開発パラダイム

このパラダイムは、ソフトウェア開発に関するすべてのエンジニアリング概念が適用されるソフトウェアエンジニアリングパラダイムとして知られています。 ソフトウェア製品の構築に役立つさまざまな調査と要件の収集が含まれます。 で構成されます–

  • 要件収集
  • ソフトウェア設計
  • プログラミング

ソフトウェア設計パラダイム

このパラダイムはソフトウェア開発の一部であり、次のものが含まれます。

  • 設計
  • メンテナンス
  • プログラミング

プログラミングのパラダイム

このパラダイムは、ソフトウェア開発のプログラミングの側面と密接に関連しています。 これも -

  • コーディング
  • テスト
  • 統合

ソフトウェアエンジニアリングの必要性

ユーザーの要件とソフトウェアが動作している環境の変化率が高いため、ソフトウェアエンジニアリングの必要性が生じます。

  • *大規模なソフトウェア-*ソフトウェアのサイズが大きくなると、家や建物よりも壁を構築するのが簡単になります。
  • *スケーラビリティ-*ソフトウェアプロセスが科学的および工学的概念に基づいていない場合、既存のソフトウェアをスケーリングするよりも新しいソフトウェアを再作成する方が簡単です。
  • *コスト-*ハードウェア業界がそのスキルを示し、巨大な製造業がコンピューターと電子ハードウェアの価格を引き下げました。 しかし、適切なプロセスが適応されない場合、ソフトウェアのコストは高いままです。
  • *動的な性質-*ソフトウェアの常に成長し適応する性質は、ユーザーが作業する環境に大きく依存します。 ソフトウェアの性質が常に変化している場合、既存の機能を新たに強化する必要があります。 これは、ソフトウェアエンジニアリングが重要な役割を果たす場所です。
  • *品質管理-*ソフトウェア開発のプロセスを改善することで、ソフトウェア製品の品質が向上します。

優れたソフトウェアの特徴

ソフトウェア製品は、それが提供するものとそれがどれだけうまく使用できるかによって判断できます。 このソフトウェアは、次の理由で満たす必要があります。

  • 運用中
  • 過渡的
  • メンテナンス

適切に設計され、細工されたソフトウェアには、次の特性が期待されます。

運用中

これは、ソフトウェアが運用でどれだけうまく機能するかを示しています。 以下で測定できます。

  • 予算
  • 使いやすさ
  • 効率
  • 正しさ
  • 機能性
  • 信頼性
  • セキュリティ
  • 安全性

過渡的

この側面は、ソフトウェアがあるプラットフォームから別のプラットフォームに移動する場合に重要です。

  • 移植性
  • 相互運用性
  • 再利用性
  • 適応性

メンテナンス

この側面では、変化し続ける環境でソフトウェアがそれ自体を維持する能力をどれだけ備えているかについて簡単に説明します。

  • モジュール性
  • 保守性
  • 柔軟性
  • スケーラビリティ

要するに、ソフトウェアエンジニアリングはコンピューターサイエンスの一部門であり、効率的で耐久性があり、スケーラブルな予算内および期限内のソフトウェア製品を生産するために必要な明確に定義されたエンジニアリングコンセプトを使用します。