背景
ソフトウェアエンジニアリングは、ソフトウェアの設計、開発、運用、保守への体系的で規律のある、定量化可能なアプローチの適用と、これらのアプローチの研究です。つまり、ソフトウェアへのエンジニアリングの適用です。
私の講師は、この定義を説明するときに、「体系的」、「規律」、「定量化可能」という用語は、さまざまな解釈の中で「次々、構造化」、「繰り返し可能」、「測定可能」を意味することを教えてくれました。しかし、それは私を混乱させる定義の2番目の部分です。 「操作」が何を意味するかについて話すとき、彼はそれを次のように説明しました: "これは、ソフトウェアの一部を更新またはパッチするなど、ソフトウェアを維持するプロセスです。以前は、ソフトウェア全体を削除し、ソースを変更し、再コンパイルして、インストールし直してください。この定義の部分は、多かれ少なかれ歴史的な重要性です-機械工学のような他の分野で工学が考えられていた方法です。 "
質問
定義がSEについて何を意味するのか、私は本当に混乱しています。
SEの本当の意味を教えてください。ありがとうございました!
「操作」は、ソフトウェアの展開、構成、開始/停止、および監視に関係しています。たとえば、私のショップでは、開発によってアプリケーションのtarballが作成され、本番サーバーの特定の場所にステージングされます。別のグループはtarballを受け取り、それをターゲットディレクトリに展開し、Kerberos資格情報を設定し、いくつかのデータベースにエントリを追加します。アプリケーションを監視するユーティリティがいくつかあります。統計を収集する、アプリケーションがダウンした場合にアラートを発行する、接続が切断された場合、または新しいKerberosチケットを取得する必要がある場合にアプリをバウンスする、1つはログファイルをアーカイブしてローテーションする、1つはコアファイルを探して識別するなど。IPアドレスまたはポート番号が変更された場合、またはアプリケーション固有の構成パラメーターを有効/無効にする必要がある場合などに更新できる構成ファイルもあります。
これらのどれもありませんには、ソースコードへのアクセスが含まれるため、メンテナンスや開発とは別のアクティビティです。これらのアクティビティにはすべて、明確に定義されたプロセスと手順があります1 それらに関連付けられています。
ソフトウェアエンジニアリングは、コードを記述することではありません。ソフトウェアエンジニアリングは、コードの記述と実行の動作をより信頼性が高く、再現性のあるものにするプロセスと手順を開発することです。
編集
メンテナンス(少なくとも私の頭の部分)には、アプリケーションの存続期間中のアプリケーションの管理に関連するすべての非コーディングアクティビティが含まれます。これには、欠陥とインシデントのレポートの管理、次のパッチで修正される欠陥の決定、パッチのスケジュールとステージングなどが含まれます(これらに限定されません)。私のショップの他のいくつかの例は、あるサーバーから別のサーバーへのアプリケーションの移行、顧客の移行ですあるバックエンドアプリケーションから別のバックエンドアプリケーションに、パフォーマンスとトラフィック分析を行い、追加のインスタンスを生成して、増加したトラフィックを処理したり、応答時間を最小化したりします。
開発(ここでも、「公式」の定義は異なる場合があります)は、新しいコードを最初から作成する場合でも、既存のコードにパッチを適用する場合でも、コードに関係するすべてのものです。