ソフトウェア開発とは、ソフトウェアの作成、設計、展開、およびサポートのプロセスに特化した一連のコンピューター・サイエンス活動のことです。
ソフトウェア自体は、コンピューターに何をすべきかを指示する一連の命令、あるいはプログラムです。 ハードウェアに依存せず、コンピューターをプログラム可能にします。 3つの基本タイプがあります:
システム・ソフトウェアは、オペレーティング・システム、ディスク管理、ユーティリティー、ハードウェア管理、その他の運用上の必需品などのコア機能を提供します。
プログラミング・ソフトウェアは、コードを作成するためのテキスト・エディター、コンパイラー、リンカー、デバッガー、その他のツールなどのツールをプログラマーに提供します。
アプリケーション・ソフトウェア(アプリケーションやアプリが)は、ユーザーがタスクを実行するのに役立ちます。 Officeの生産性スイート、データ管理ソフトウェア、メディア・プレーヤー、セキュリティー・プログラムなどがその例です。 アプリケーションには、Amazon.comでの買い物、Facebookとの交流、Instagramへの写真の投稿に使用されるようなWebやモバイルのアプリケーションもあります。1
4番目の可能性のあるタイプは、埋め込み式ソフトウェアです。 組み込みシステムソフトウェアは、通常はコンピューターとは見なされない機械やデバイス(通信ネットワーク、自動車、産業用ロボットなど)を制御するために使用されます。 これらのデバイスとそのソフトウェアは、モノのインターネット(IoT)の一部として接続できます。2
ソフトウェア開発は、主にプログラマー、ソフトウェア・エンジニア、ソフトウェア開発者によって行われます。 これらの役割は相互作用して重複し、それらの間のダイナミクスは開発部門やコミュニティーによって大きく異なります。
プログラマー、またはコーダーは、データベースのマージ、オンライン注文の処理、通信のルーティング、検索の実行、テキストやグラフィックの表示などの特定のタスクのためにコンピューターをプログラムするためのソースコードを記述します。 プログラマーは通常、ソフトウェア開発者やエンジニアからの指示を解釈し、C ++ や Java などのプログラミング言語を使用してそれらを実行します。
ソフトウェア・エンジニアは、エンジニアリングの原則を適用して、問題を解決するためのソフトウェアとシステムを構築します。 彼らは、モデリング言語やその他のツールを使用して、特定のインスタンスやクライアントを単に解決するのではなく、一般的な方法で問題に適用できるソリューションを考案します。 ソフトウェア・エンジニアリング・ソリューションは科学的方法に準拠しており、橋やエレベーターのように現実の世界で機能する必要があります。 マイクロプロセッサー、センサー、ソフトウェアの追加により製品がますますインテリジェントになるにつれて、彼らの責任は大きくなりました。 市場の差別化のためにソフトウェアに依存する製品が増えているというだけでなく、そうしたソフトウェア開発は、製品の機械的および電気的開発作業と調整する必要があります。
ソフトウェア開発者はエンジニアほど正式な役割を持たず、コードの記述など、特定のプロジェクト領域に密接に関与する可能性があります。 同時に、機能チーム全体で要件を機能に変換する作業、開発チームとプロセスの管理、ソフトウェアのテストとメンテナンスの実施など、ソフトウェア開発のライフサイクル全体を推進します。3
ソフトウェア開発の作業は、コーダーや開発チームに限定されていません。 科学者、デバイス製作者、ハードウェア・メーカーなどの専門家も、主にソフトウェア開発者ではありませんが、ソフトウェア・コードを作成します。 また、ソフトウェアや半導体ビジネスなどの従来の情報技術産業に限定されるものでもありません。 実際、ブルッキングス研究所(ibm.comの外部へのリンク)によれば、こうした企業が「ソフトウェア開発を行っている企業の半分未満を占めています」。
重要な違いは、商用ソフトウェア開発とは対照的なカスタム・ソフトウェア開発だということです。 カスタム・ソフトウェア開発は、特定のユーザー、機能、または組織のセット向けにソフトウェアを設計、作成、展開、および保守するプロセスです。 対照的に、市販の既製のソフトウェア(COTS)は、幅広い要件に対応するように設計されているため、パッケージ化して、商業的に販売および配布することができます。
開発ソフトウェアには、通常、次の手順が含まれます。
ソフトウェア開発プロセスのステップは、 アプリケーションのライフサイクル管理 (ALM)に適合します。 IBM Engineering Managementソリューションは、ALMのスーパーセットであり、機械、電気、およびソフトウェアの並行開発の管理を可能にします。
ソフトウェア開発プロセスのステップは、ライフサイクルのフェーズにグループ化できますが、ライフサイクルの重要性は、リサイクルして継続的な改善を可能にすることです。 例えば、メンテナンスとサポートのフェーズで表面化するユーザーの問題は、次のサイクルの開始時に要件になる可能性があります。
ソフトウェア開発は、広く行き渡っているからという意味でも重要です。 IBMの副社長でありブロガーでもあるDibbe Edwards氏は、次のように指摘しています:「ソフトウェアは、自動車から洗濯機、サーモスタットに至るまで、多くの製品の主要な差別化要因として浮上してきました。モノのインターネットがそれらを接続するようになりました。」
いくつかの例:
ソフトウェア開発を使用してブランドを差別化し、 競争上の優位性を獲得するには、ソフトウェアの展開、品質、および有効性を加速できる技術とテクノロジーに習熟している必要があります。
より高品質のソフトウェアとシステムをより迅速に提供するのに役立つ、モデリングと設計活動のための実証済みのソリューションです。
ソフトウェア・バージョン管理、ワークスペース管理、分散ソース管理、個人とチームを対象とする並列開発サポートは、成果物への変更を自動的に追跡することによって生産性を向上させます。 このソフトウェアは、ほぼ無制限の中断/再開機能を使用して、作業の中断に対処します。
ソフトウェアのバージョン管理を管理するために、IBM Engineering Lifecycle ManagementツールとGit、GitLib、GitHubなどのサードパーティー・ツールとの間の接続を提供します。