英語版 Wikipedia の Software Engineering の第1段落を解説してみた

https://en.wikipedia.org/wiki/Software_engineering

Software engineering is the systematic application of engineering approaches to the development of software. Software engineering is a sub-field of computing science.

方針として，語順の通りに解釈するというのが英語学習において大事です。よくある後ろから訳すという方針では，英語学習の妨げになることが多いです。

したがって，Software engineering is the systematic application から訳していきます。これは SVC (主語+動詞+補語) の構文です。すなわち，S である software engineering と C である the systematic application が等しいことを意味しています。

# systematic

systematic というのは，英英辞典 (New Oxford American Dictionary) を引いてみると，

(adjective) done or acting according to a fixed plan or system; methodical

とあります。

* adjective は形容詞です。
* done は，ここでは形容詞として働き，「完了した(状態)」を意味します。
* done と acting が or で結合しているので，done と acting が同じ位置付けにあること，done と acting のどちらかであることを意味します。
* acting は act の現在進行形，「行動している(状態)」を意味します。

以上から，"done or acting" で，「完了した(状態)，もしくは行動している(状態)」を意味します。

according to は，報告・調査・人などの情報源を示して，「〜によれば」という意味です。あるいは英英辞典を引くと as stated by or in ということなので，「〜に述べられているように」というような意味です。

したがって，"done or acting according to" という表現で，「〜に示されているように完了した，もしくは行動している状態」という意味になります。

* a fixed plan は「ある確固たる計画」という意味です。
* or は前述の通りで，ここでは plan と system が同じ位置付けにあり，どちらかであることを意味します。
system は，ここでは「体系」という意味です。
a fixed plan or system で「ある確固たる計画もしくは体系」という意味になります。

したがって，全体として，「ある確固たる計画もしくは体系に示されているように完了した，もしくは行動している状態」という意味になります。要するに，「計画的な方法で，体系的な方法で」というような意味となります。

; (セミコロン) より後の単語は，systematic を言い換えた言葉，すなわち類語を示します。

すなわち，systematic を言い換えると，methodical という言葉になります。

まとめると，systematic という概念が内包しているのは，理論的ということだと思います。

# application

application を英英辞典で引いてみるといくつかの意味が出てきますが，ここでは次の意味合いになります。(いくつかの意味の中で，どうしてこれを選ぶか，というのは説明が難しいですね)

the action of putting something into operation

application は，まず the action です。ここでは「活動」が近い意味です。

どんな活動かというと，"of putting something into operation" です。

* of はここでは「ofの前にあるもの(ここでは the action) がofの後に続くもの(ここでは putting〜)の一部である」ということを意味します。
* put のイメージは「目的語 (ここでは something) を副詞(句) (ここでは into operation) の位置や状態にする」という感じです。
* something は「何か」です。すなわちここでは application の対象を意味します。
* into のイメージは，「その後に続くもの(ここでは operation)の内部へ」というような感じです。
* operation も意味が複数あるのですが，ここでは「実務」というような意味合いが一番近いです。

したがって，"of putting something into operation" で「何かを実務の中へ位置付けることの一部であるような」というような意味になります。

全体として，「何かを実務の中へ位置付けることの一部であるような活動」ということになります。要するに，「応用」というような意味になります。

application という概念が内包しているのは，実践です。

# the systematic application

以上をまとめると，the systematic application は，「ある確固たる計画もしくは体系に示されているように完了した，もしくは行動している状態であるような，何かを実務の中へ位置付けることの一部であるような活動」ということ，すなわち，「(場当たり的ではない)体系的な方法で，何かを応用しようとすること」という意味になります。

そういうわけで，software engineering は，まず第一に「(場当たり的ではない)体系的な方法で，何かを応用しようとすること」だということになります。概念として，理論と実践が内包されています。

# the systematic application of engineering approaches

次に，"the systematic application of engineering approaches" というようにつながっています。

of は前述のように， 「ofの前にあるもの(ここでは the systematic application) がofの後に続くもの(ここでは engineering approaches)の一部である」ことを示します。

## engineering 

engineering を英英辞典で引いてみると，the branch of science and technology concerned with the design, building, and use of engines, machines, and structures とあります。

* branch の元々の意味は「枝」ということですが，そこから転じて，「学問などの分野」という意味になります。(この意味を選んだ理由は，その後に science and technology と続くからです)
* of は前述のように， 「ofの前にあるもの(ここでは the branch) がofの後に続くもの(ここでは science and technology)の一部である」ことを示します。
* science and technology は科学技術ですね。

したがって，"the branch of science and technology" は，「科学技術の分野」という意味になります。

* concerned with は「〜に関係する」という意味です。
* the design は「設計」という意味ですね。
* building は，ここでは「建築」という意味です。
* and は，ここでは design, building, use が，対等な位置づけにあり，それらが並列している状態です。
* use は「使用」という意味です。
  * of は前述のように，「ofの前にあるもの(ここでは use) がofの後に続くもの(ここでは engines, machines, and structures)の一部である」
  * engines は「エンジン」ですね。
  * machines は「機械」です。
  * and は前述のように，ここでは engines, machines, structures が対等な位置づけにあり，それらが並列している状態です。
  * structures は「構造」です。
* use of engines, machines, and structures で，「エンジン，機械，構造の使用」という意味になります。

以上をまとめると，engineering とは，「設計，建築や，エンジン，機械，構造の使用に関連する科学技術の分野」ということになります。だから「工学」という意味になるのですね。この点でも理論が内包されています。

## approaches

approach はいくつか意味がありますが，ここでは a way of dealing with something という意味です。

* a way は「一つの方法」です。
* of は前述のように 「ofの前にあるもの(ここでは a way) がofの後に続くもの(ここでは dealing with〜)の一部である」
* dealing with something は「何かを処理する」という意味です。

したがって，approach は「何かを処理する一つの方法」，すなわち「方法」という意味になります。

## engineering approaches

engineering approaches で，「工学的な(数々の)方法」という意味になります。


# the systematic application of engineering approaches

以上をまとめると，"the systematic application of engineering approaches" で，「工学的な数々の方法の一部であるような，(場当たり的ではない)体系的な方法で，何かを応用しようとすること」という意味になります。理論と実践ということですが，特に理論が強調されているように思います。

# approaches to the development of software

* approaches to で，「〜へのアプローチ」「〜をするための方法」ということになります。

## the development of software

the development of software を見ていきます。


### development, develop

development を英英辞典で引くといくつか意味がありますが，まず，the process of developing or being developed です。すなわち「develop している過程もしくは develop された状態」ということになります。

develop を改めて引くといくつか意味がありますが，まず，grow or cause to grow and become more mature, advanced, or elaborate です。

* grow は「成長させる」
* or は前述のように，ここでは grow, cause to 〜が対等に並んでいて，どちらかであることです。
* cause to のイメージは，〜になるような結果を引き起こすということです。
* grow and become で「成長して〜になる」というような意味です
* become more 〜で，「ますます〜になる」というような意味です。
    * mature は「成熟した」
    * advanced は「進んだ」
    * or はここでは mature, advanced, elaborate が対等に並んでいて，どれかであることを意味します。
    * elaborate は「精巧な」

したがって，全体として，「成熟した，進んだ，精巧な状態に成長すること，もしくは成長して成熟した，進んだ，精巧な状態になったこと」を意味します。なので，「開発する」というような意味になるのですね。

### software

software はソフトウェアという意味ですが，英英辞典で引くと，the programs and other operating information used by a computer です。

* the programs はプログラムです。
* other operating information は「その他の操作情報」というような意味ですね。データが近い意味でしょうか。
* used by a computer は「コンピュータで使われる」ということになります。

したがって，software は，「コンピュータで使われる，プログラムとその他操作情報(データ)」という意味です。

## the development of software

the development of software は，一言で言うと「ソフトウェア開発」なのですが，詳しく意味を見ていくと，「ソフトウェアを成熟させる，進んだ状態にする，精巧にすること」ということなのですね。したがって，時間の進行とともに，大規模になったり，複雑化したり，安定化したり，というようなイメージになってきます。

# まとめ

Software engineering is the systematic application of engineering approaches to the development of software. をまとめると，次のようになります。

software engineering とは，ソフトウェア開発，すなわち「ソフトウェアを成熟させたり，進んだ状態にしたり，精巧にしたりすること」に立ち向かうための，工学的な数々の方法の一部であるような，(場当たり的ではない)体系的な方法で，何かを応用しようとすることである

この定義からわかるように，**software engineering は場当たり的ではないということが重要になってきます。すなわち，勘と経験に基づいたものだとしても，その理由や根拠が説明可能であることが大事です。**そして，**ソフトウェアを大規模化，複雑化，安定化していくようにするための方法論**であるとも言えます。

Software engineering is a sub-field of computing science. はさらりと流しますが，software engineering は computing science の一分野である，ということです。

このことからも，**software engineering は，science すなわち科学であるということが大事**で，やはり単なる勘と経験だけではなく，**理論が大事**になってくることを示唆しています。