役割」カテゴリーアーカイブ

データベースを設計する仕事

WEBの仕事の投稿でも書きましたが、一般的にWEBサイトを構築する仕事をする場合データベースの知識が不要ということはありえません。みなさん必ずデータベースの勉強はしています。
ある程度の規模のプロジェクトの場合、DB設計はその担当者が行い、WEBアプリ開発者は、サーバ上で実行されるプログラムと画面上で実行されるJavaScript部、および画面の開発をします。
サーバ上で実行されるプログラムの主要部は、データベースを内容を読み込んでクライアントに送る画面内容作る処理と、クライアントから送られてきた情報をデータベースに登録する形に編集してデータベースに登録するという処理になります。
したがってWEBアプリ開発者はデータベースの操作ができることが必須の条件となわけです。

一方で、データベースのテーブルやテーブル内のカラムをどう設計するかは、特に大規模なシステムになるとなかなか難しく、高度な知識や経験がものを言います。システムの運用を始めたころはサクサク動いたが、ある程度のデータ量になってくるとシステムが重すぎるというような場合、データベースのインデックスを見直したりします。そうしたことを最初から見込んでDB設計する必要もあります。こうした高度なデータベース技術を持つデータベース設計、チューニングを主とした仕事とするデータベース技術者も存在します。
データベースを保守運用するという観点でのDBA(データベース管理者)という言葉もあります。
DBスペシャリストという意味でDBAという言葉が使われる場合もあります。

テスターとは

テスターとはテストする人のことです。テスト計画を立てる人ではなく、テストを行う人です。
開発者がテストする役割も兼ねることが多いです。
テスト工程には、デバッグを除くと、単体テスト、結合テスト、システムテスト、統合テストなどどいう区別があります。
単体テストレベルまでは、主に開発者みずから行う場合が多く、それ以外は、別の人がおこなうことも多いです。
結合テスト、システムテスト、統合テストなどは解釈が違う場合もあると思いますが、いづれもモジュール分割されたソフトウェアを結合し、全体としてのシステムの挙動をテストするものです。
各テストは、さらに細分化されます。
システムで行う業務を模擬してテストシナリオを用意してテストするテストはここに含まれます。
こうしたテストは、テストの場合だけアルバイトなどでテスト担当者を増員しておこなったりする場合があります。
テストを管理、計画する担当者は、こうしたアルバイトなどの開発したシステムに明るくない人にやり方を正しく伝え、管理する仕事があることになりますので、コミュニケーション能力も必要になります。

ITコンサルタントとは

ITコンサルタントは、「consult」(相談)の名が示すように、相談される人です。
主としてシステムエンジニアが行う「ソフトウェアの設計」作業とは、どのようなシステムを作るのかが決まった後、そのシステムを実現できるソフトウェアの設計を行うことです。
どのようなシステムを作るのかを決めるたからには、決めた人がいます。
この「どのようシステムを作ればよいか」ということを考えることを企業から依頼されることがシステムコンサルタントの仕事の1つです。
つまり、システムのソフトウェアの設計をする以前に、企業の業務を分析し、システムを提案するのです。したがって、企業の業務にも詳しく、コンピュータシステムにも詳しいというスペックが要求されます。
これは、ソフトウェア開発の前の段階の仕事になります。

ソフトウェア開発の後段階の仕事もあり、システムが十分な成果を上げているか分析し、改造、新規システムへの置き換えの提案などを行ったります。

また、システム開発の発注、工程管理をすることもあります。

非常に高い知識、経験、能力が要求されますので、報酬が高いです。

 

プログラマーとは

ソフトウェア開発の現場で「プログラマー」といえば、その名のとおりプログラムをする人です。以降、最後の棒は略して「プログラマ」と表記します。

プログラマ(略して「PG」)という言葉は、システムエンジニア(SE)との役割を区別する局面で多く使われます。この意味で、SEは設計する人、PGは、設計された図面(設計書)に基づいて、そのとおりの内容をプログラミング言語で書く作業(コーディングという、またはこれをプログラミングと言う)を行います。
この作業が終わると、期待通りに動くのかというテストを行います。 テストといってもデバッグ、単体テスト、結合テスト、統合テストなどがあり、規模が大きいシステムではテストで専門の役割の人(テスター)が存在する場合があります。
テストについては、いずれ別の記事で書きたいと思います。

PGは設計ではなく、プログラミングする人だと書きましたが、設計にはいくつかの種類、段階があり、「詳細設計」(Detailed Design、略してDD)という設計があります。読んで字のごとく、細かな設計です。DDより前段階(上流工程)の設計をSEが行い、詳細設計はPGの仕事である場合が多いです。そういう意味では、PGは下流工程の設計をする人でもあります。

このように、プログラマの仕事としては「詳細設計」「コーディング、デバッグ」「単体テスト」が主要な仕事ということになります。単体テスト以降のテストにもかかわることはあります。

プロジェクトマネージャとプロジェクトリーダー

一般の会社では、社長、部長、課長、係長などの役職がありますよね。
ソフトウェア開発の現場では、管理する立場の人を「プロジェクトマネージャ」「プロジェクトリーダ」などど呼びます。
最後の横棒を略すかどうかは統一せず、筆者の感覚で「プロジェクトマネージャ」「プロジェクトリーダー」と表記しておきます。

プロジェクトマネージャは「PM」、プロジェクトリーダーは「PL」と略されます。
規模が大きいプロジェクトではPLの下にサブリーダーが存在する場合もあります。

PM、PLどちらも管理する役割を持つので、そういう意味ではマネージャです。なにしろPLに必要は要素は管理能力であると言われています。

厳密な定義はありませんが、PM、PL両方が存在しているプロジェクトでは、PMはPLより上の立場となるのが一般的かと思います。
そのような場合、PLは、実際にソフトウェアを作る(設計、開発(プログラミング工程)、テスト)仕事に関して管理をする人、PMは人材を集めたり、お金関係を処理したりという具体的なソフトウェア作成の外側の仕事をする、PLの管理をするといったことになるでしょう。

システムエンジニアとは

仕事の分類としては、DB関係の仕事をする人、WEB画面のデザインをする人など技術的な分類があります。
システム開発の仕事を管理する役割をする人といった立場による分類もあります。

よく聞く言葉として、「システムエンジニア」という言葉があります。
Wikiを引用すると「プログラムの設計図たる仕様書の作成者として使われる例が多い」とあります。筆者の経験でもおおよそそのような意味で使われていました。

では設計とは何かを言えば、「このような機能のIT的製品、商品(コンピュータ上で動作するプログラム、基本プラグラム(OS)やアプリ(アプリケーションプログラム)を作りたい」という要求に対して、その機能を実現するためにどういうプログラムを作るのかを「設計」していく作業です。
どのようなコンピュータ、機材を使うのかも決めなければならないので、その選定も必要ですが、ここではプログラム(ソフトウェア)の設計について説明します。

ソフトウェアの設計については別の記事で紹介します。