ソフトウェア工学コースに関連するいくつかのポイント

目录

みなさんは,現在ソフトウェア工学について勉強していて, ソフトウェアシステムの設計・生産・管理する基本的な方法論と, 実践的な技術について学んでいると思います。

今回は,これらのことに関して, その周りのいくつかのポイントについて紹介した上, 皆さんはソフトウェア設計などに対する興味を引き出し, このコースの勉強とこれからソフトウェア開発のチームワークに役立てれば幸いです。

また,将来仕事に繋がっていく時に, たとえIT関連の仕事にならなかったとしても, 現在の時代ではどの産業においても必ずシステムに関する運用がありますので, システム開発の周りをしておくといつか必ず役に立つと思います。

それでは,まず,ソフトウェア開発のプロセスから見てみましょう。

ソフトウェア開発のプロセスについて

プロジェクト開発する際に,どのようなソフトウェア開発手法を使っているかにもよりますが, 例えば,伝統的なウォーターフォール型開発手法の場合は, 開発プロセスが,需要分析,ソフトウェア設計,実装,テスト,メンテナンスになります。

これによって,大学一年から身につけていたプログラミングの能力, それから,今期のソフトウェア工学の講義で勉強されているソフトウェア設計の基準と方法, また,それ以外も多くの授業から学んできたITに関連する知識など, どんどん活用すると皆さんのプロジェクトの周りの能力も高まります。

プロジェクトよって他のアジャイル開発手法などが採用される場合はプロセスが異なりますが, 開発者やプロジェクトマネージャーに対して要求される能力はそれほど変わらないと思います。

また,技術の発展が迅速であり,プロジェクト開発の際に, 授業を受けて勉強した知識以外も色んな技術が必要とされる時がたくさんあります。 その時に,必要に応じてプロジェクト開発と同時に, 興味を持って新しい技術を自分で勉強する必要があります。

そんな時に,

  • なんのために勉強する(Why)

  • 何を勉強する(What)

  • どのように効率よく勉強できる(How)

を考えながら勉強することが大事になります。

以下では,自分のある経験から,プロジェクト開発の際に, 必要とされる能力や気をつけた方が良いポイントについて話します。

TODO プロジェクトのバージョン管理

(また具体的な内容を追加)

プロジェクトを始める前に,プロジェクトの需要やチームワークの構成によって, 開発言語を何にするか,開発に何のフレームワークを使うか, 何のデータベースを使うかなどを最初に決めなければなりません。

これらを決めれば,実際にいろいろをやる前に, 共同開発・統一管理のできる環境を構築する必要があります。

バージョン管理とは

まずは,「バージョン管理システム」についてウィキペディアに以下のように定義されています。

バージョン管理システム(英: version control system、VCS)とは、 コンピュータ上で作成および編集されるファイルの変更履歴を管理するためのシステム。 特にソフトウェア開発においてソースコードの管理に用いられることが多い。 - ウィキペディア1

すなわち,バックアップに似ているものです。 ただし,バックアップだけの作業よりは,バージョン管理のほうがもっと繊細なもので, 誰が変更を行ったのか,いつに何を変更をしたのか,なぜ変更をしたかなどまできちんと記録されます。 これは,ソフトウェア開発のライフサイクルにおいても,とても重要なものです。

バージョン管理のツールとしてよく知られているのはGitです。 Github,Gitlab或いはBitbucketなどを一度使ったことがあれば,多分Gitを触ったことがあるかと思います。 チームワークにおいてよくGitを利用できれば, チーム全体の開発作業がよくスムーズに進めると思われます。

TODO バージョン管理の必要性

バージョン管理はなぜ重要なのかと言いますと, プロジェクト開発する際にチームワークの知的財産である コードの有効的な管理・安全性を確保することができるからです。

規模の小さいプロジェクトやプログラミング練習だけならば, バージョン管理をしなくても良いと思われるかもしれませんが, 確かに場合によってしなくても達成する目的には影響を及ぼしませんが, プロジェクトの規模を問わずバージョン管理をして, 習慣として身に付けておくと, 実際のプロジェクトにおいてはスムーズに運用できます。

TODO プログラミングについて

ドキュメントを活用する

皆さんは,C言語などのプログラミング言語は学部一年の時に勉強したことがあると思います。 C言語でなんかのプログラムを書いたら, コンパイルが失敗したとかエラーになったとかの経験は誰でもあると思います。

その時に,とてもシンプルな方法としては,そのエラーをネットで検索することで, 答えやヒントが得られる場合はあります。 ただし,ネットで調べても,なかなか自分のエラーに特定できない場合もあります。

そんな時に,使われている言語のドキュメントにある関連な関数の定義・クラスの定義などを読むことで, 技術的にもどんどん重ねていき,問題の解決にも近づけます。

ソフトウェア開発やプロジェクト開発においては, 必ずたくさんのツールやフレームワークを使うことになります。

また,技術の迅速な発展に伴い,ツールやフレームワークを入れ替える時も常にあります。 この時に,ネットで検索しても,あなたがその問題に遭遇した最初の一人である可能性もあり, なかなか問題の解決にたどり着けない場合があります。 誰かに聞くか,開発者のコミュニティに質問を出すなども一つの方法ですが, これ以外もう一つ重要なのは,公式のドキュメントをうまく利用することです。

ドキュメントを活用する習慣を身に着けると, 実際に開発の問題を解決することだけでなく, オープンソースへも自分の力を貢献できます。 なぜかと言いますと,エラーになったのは,必ずあなたが書いたコードの間違いではありません。 もしかしたらフレームワークのバグによるもので, この時に,使われているフレームワークがオープンソースで公開されているのであれば, このオープンソースプロジェクトチームの協力者の一員として活躍できます。 将来,会社で働いたら,会社に対しても貴重なチームワークの経験になります。

TODO 注釈を書く習慣をつける

コードを書くときに注釈を書くことが重要です。 良いプロジェクトの開発者たちは,通常では高凝集・低結合の理念で仕事を分けています。 これで,ソフトウェアがひとつひとつのモジュールに分割できて, それぞれの開発とメンテナンス作業ができます。 また,システムをアップグレードするときに, 古いモジュールや継続な開発しにくいモジュールを新しいもので入れ替えても全体に影響を及ぼすことはありません。 しかし,どうしても代替品がなく,古いモジュールの上で開発を続く必要がある場合があります。

この時,コードを書いたメンバーがすでに離職や連絡を取れない場合でも, 他のチームメンバーが続いて開発できるようにするのは注釈です。 現在あるプロジェクトをアップグレードするときに, すべてのコードを理解する必要がありませんが, 重要なアルゴリズムや関数の箇所の修正は必ずコードを読んで理解した上で行う必要があります。

コードを書くときに常に注釈をつけることが面倒だと思うのかもしれませんが, プロジェクトの将来のメンテナンスを考慮すると, つけたほうが将来が楽になりますし,チームワークにとっても効率的です。

TODO プログラミング言語

プログラミング言語がたくさんあります。 人によっては,興味のある言語と得意な言語,あるいはあまり慣れていない言語は必ず存在します。 しかし,ソフトウェア工学とプロジェクトの開発において, 言語の得意さにはそれほど気になる必要はありません。

学部一年で学んできたC言語の基礎があれば, あとはプログラミング言語をツールとして使い, ソフトウェア工学を生かせることです。

TODO サーバーの運用

TODO 自分のパソコンからサーバーのイメージを立てる

TODO セキュリティについて

TODO ウェブ開発

TODO ユーザインタフェース

TODO ユーザーフレンドリーについて

TODO バックエンドへの繋がり

プロジェクト開発ツールを活用する

開発環境に関するツール

開発環境としては,現在統合開発環境(IDE)2の製品がたくさんあります。 マイクロソフトのVisual Studio,あるいはよく知られているEclipseなどがあります。

また,エディターにいろんなアドオンをインストールすることで, いろんなプログラミング言語のためのIDEにもなります。

どんなIDEを使うは別として,開発を行う時にIDEがいろんな機能を提供してくるので, 慣れたら効率よくソフトウェア開発ができます。

しかし,IDEに依存しすぎても良くないと思われます。 IDEは,プログラミング言語で書いたコードに対して, コンパイル・ビルド・デバッグの一連なことができます。

その中に,コンパイルに対して,何のコンパイラーを内部で使われているか, ビルドに対して,何の設定で行なっているか, デバッグに対して,想定される動きになっているのかなどについては, IDEを使う場合は,わからないままに終わっている可能性があります。

もちろん内部で何があったのかは分からなくても, 書いたプログラムがちゃんと働く場合が多いと思いますが, 問題はなんかあった場合です。

例えば,チームメンバーが異なるバージョンのIDEを使っているとします。 IDEにデフォルトでインストールされているプログラミング言語のコンパイラーも異なるバージョンの場合は, プログラミング言語の公式サイトで,すでに現在プロジェクトに使われているたくさんの関数をアップデートしたら, チームのメンバーの開発に支障が出てくる可能性が非常に高いです。

これによって,チームワークにおいて開発環境を最新バージョンに統一するか, IDEが内部を行なっていることを理解した上,適切な設定を行う必要があります。 開発環境を揃えてうまく活用するとプロジェクトの開発効率がよくなりますが, 環境に依存しすぎてもダメです。 エディターとコンパイラーを分けて,それぞれ適切に管理するのもおすすめです。

IDEやエディターは他のチームメンバーに使われているものを参照して選んでもよいですが, 個人の好みで自分が好きなものを使っても良いです。 この辺は例えばEmacsやVimなどがあります。

TODO その他

  • WindowsやmacOSのGUIだけではなくLinuxのコマンドも日常で触ること

  • 一連の作業を自動化するためのスクリプトを作成してみること

  • ショットカットをカスタマイズ・活用すること

  • プロジェクトの進捗を何かのツールで管理すること

  • プロジェクト開発の際に遭遇された問題点などログとして保存すること

  • クラウドサービスを活用すること

  • バックアップやバージョン管理を習慣として身につけること

Xin Li
Xin Li
讲师

主要研究方向为机器学习、深度学习与人工智能在各个领域的应用,特长为针对非均匀数据及偏移数据的优先采样及学习算法。了解更多

下一页