ソフトウェア工学とは何ですか? 定義、基本、特徴
ソフトウェアエンジニアリングとは
ソフトウェア エンジニアリングは、ユーザーの要件を分析し、それらの要件を満たすソフトウェア アプリケーションを設計、構築、テストするプロセスとして定義されます。
ソフトウェアエンジニアリングのさまざまな定義を見てみましょう。
- IEEE は、標準 610.12-1990 で、ソフトウェア エンジニアリングを、ソフトウェアの開発、運用、保守のための体系的かつ規律ある計算可能なアプローチの適用と定義しています。
- フリッツ・バウアーはそれを「確立」と定義し、標準的な工学原則を使用しました。 これは、信頼性が高く、実機上で効率的に動作するソフトウェアを経済的に入手するのに役立ちます。
- Boehm はソフトウェア エンジニアリングを、「科学的知識をコンピュータ プログラムの創造的な設計と構築に実際に応用すること。また、開発、運用、保守に必要な関連ドキュメントも含まれます」と定義しています。
なぜソフトウェアエンジニアリングなのか? ソフトウェア危機とその解決策
ソフトウェア危機とは何でしたか?
- 多くのソフトウェア プロジェクトが失敗したのは 1960 年代後半のことでした。
- 多くのソフトウェアが予算をオーバーしてしまいました。 出力は、保守に費用がかかる信頼性の低いソフトウェアでした。
- 大規模なソフトウェアは保守が難しく、非常に高価でした。
- 多くのソフトウェアは、顧客の増大する要求を満たすことができません。
- ハードウェアの能力が増加すると、ソフトウェア プロジェクトの複雑さも増加しました。
- 新しいソフトウェアの需要は、新しいソフトウェアを生成する能力に比べて急速に増加しました。
上記の問題はすべて「ソフトウェア危機」につながります。
ソリューション
この問題の解決策は、組織化されていないコーディング作業をソフトウェア エンジニアリングの分野に変換することでした。これらのエンジニアリング モデルは、企業が業務を合理化し、顧客の要件を満たすソフトウェアを提供するのに役立ちました。
- 1970 年代後半には、ソフトウェア エンジニアリングの原則が広く使用されるようになりました。
- 1980 年代には、ソフトウェア エンジニアリング プロセスの自動化と (CASE) コンピューター支援ソフトウェア エンジニアリングの成長が見られました。
- 1990 年代には、ISO 9001 のような品質とプロセスのプロジェクト標準の「管理」側面がますます重視されるようになりました。
なぜソフトウェアエンジニアリングが人気があるのでしょうか?
ソフトウェア エンジニアリングの人気の背後にある重要な理由は次のとおりです。
- 大規模なソフトウェア – 私たちの現実の生活では、家や建物を建てるよりも壁を建てるほうがずっと快適です。 同様に、ソフトウェアのサイズが大きくなると、ソフトウェア エンジニアリングがソフトウェアの構築に役立ちます。
- スケーラビリティ- ソフトウェア開発プロセスが科学的および工学的概念に基づいている場合、既存のソフトウェアを拡張するために新しいソフトウェアを再作成することが容易になります。
- 適応性: ソフトウェア プロセスが科学と工学に基づいている場合は常に、ソフトウェア エンジニアリングの助けを借りて新しいソフトウェアを再作成するのは簡単です。
- コスト- ハードウェア業界は技術力を発揮し、大規模な製造によりコンピューターや電子ハードウェアのコストが下がりました。
- ダイナミックな自然– ソフトウェアは常に成長し、適応する性質を持っています。これは、ユーザーが作業する環境によって異なります。
- 品質管理: 高品質のソフトウェア製品を提供するための、より優れたソフトウェア開発方法を提供します。
ソフトウェア工学と他の分野との関係
ここでは、ソフトウェア エンジニアリングが他の分野とどのように関係しているかを説明します。
- コンピュータサイエンス: 電気工学は主に物理学に依存するため、ソフトウェアに科学的基礎を与えます。
- 経営科学: ソフトウェア エンジニアリングは、技術的管理と管理的管理の両方が必要な労働集約的な作業です。 したがって、経営科学で広く使用されています。
- 経済: この分野では、ソフトウェア エンジニアリングがリソースの見積もりとコストの管理に役立ちます。 一定の予算内でコンピューティング システムを開発し、データを定期的に維持する必要があります。
- システムエンジニアリング: ほとんどのソフトウェアは、より大きなシステムのコンポーネントです。 たとえば、産業監視システムのソフトウェアや飛行機の飛行ソフトウェアなどです。 この種のシステムの研究にはソフトウェア工学手法を適用する必要があります。
ソフトウェアエンジニアリングの課題
ソフトウェア エンジニアが直面する重要な課題をいくつか紹介します。
- 宇宙、航空、原子力発電所などの安全性が重要な分野では、人命が危険にさらされるため、ソフトウェアの障害によるコストは膨大になる可能性があります。
- 迅速な納期に対する市場の需要の高まり。
- 新しいアプリケーションに対するソフトウェアのニーズの増大する複雑性に対処します。
- 多様なソフトウェア システムは相互に通信する必要があります。
ソフトウェア製品の属性
ソフトウェア製品の特性には、製品がインストールされて使用されるときに製品によって表示される機能が含まれます。
これらは製品によって提供されるサービスではありません。 代わりに、それらは製品の動的な動作と製品の使用に関連しています。
これらの属性の例は次のとおりです。
Efficiency, reliability, robustness, maintainability, etc.
ただし、これらの特性の相対的な重要性はソフトウェア システムによって異なります。
製品の特徴 | 詳細説明 |
---|---|
保守性 | ソフトウェアは、クライアントの変化する要求に応じて進化する必要があります。 |
信頼性 | ディペンダビリティにはさまざまな特性が含まれます。 信頼できるソフトウェアは、システム障害時に物理的または経済的損害を引き起こしてはなりません。 |
効率化 | ソフトウェア アプリケーションは、メモリやプロセッサ サイクルなどのシステム リソースを過剰に使用する必要があります。 |
使いやすさ | ソフトウェア アプリケーションには、特定の UI とドキュメントが必要です。 |
上記の属性を最適化することは非常に困難です。 たとえば、より優れた UI を提供すると、システム効率が低下する可能性があります。
優れたソフトウェアの特徴
どのようなソフトウェアも、そのソフトウェアが提供するものと、その使用に役立つ方法を考慮して判断する必要があります。
すべてのソフトウェアは次の属性を満たす必要があります。
- 作業
- 過渡的
- メンテナンス
ソフトウェアの専門家によって開発された優れたソフトウェアの重要な特徴をいくつか紹介します。
作業
この特性により、ソフトウェアが操作においてどの程度うまく機能するかを知ることができ、次の点を測定できます。
- 予算
- 効率化
- 使いやすさ
- 信頼性
- 正しさ
- Functionality
- 安全性
- セキュリティ
過渡的
これは、ソフトウェアをあるプラットフォームから別のプラットフォームに移動するときに重要な側面です。
- 相互運用性(インターオペラビリティ)
- 再利用性
- 携帯性
- 適応性
メンテナンス
この側面は、ソフトウェアが急速に変化する環境に適応する能力をどの程度備えているかを示しています。
- 柔軟性
- 保守性
- モジュール性
- 拡張性
製品概要
- ソフトウェア エンジニアリングは、ユーザーの要件を分析し、その要件を満たすソフトウェア アプリケーションを設計、構築、テストするプロセスです。
- ソフトウェア エンジニアリングを使用する重要な理由は、1) 大規模なソフトウェア、2) スケーラビリティ、3) 適応性、4) コスト、5) 動的な性質です。
- 1960 年代後半、多くのソフトウェアが予算を超えてしまいました。 したがって、保守に費用がかかる信頼性の低いソフトウェアが提供されます。
- 1970 年代後半には、ソフトウェア エンジニアリングの原則が広く使用されるようになりました。
- ソフトウェア工学の概念 1) コンピュータサイエンス 2) 経営科学 3) システム工学 4) 経済学
- 迅速なターンアラウンドタイムに対する市場の要求の高まりは、ソフトウェアエンジニアリング分野の最大の課題です。
- 1) 保守性、2) 信頼性、3) 効率、4) 使いやすさは、ソフトウェア製品の最も重要な属性です。
- 優れたソフトウェアの 1 つの最も重要な特徴は次のとおりです。XNUMX) Opera2) 移行期 3) メンテナンス。