Segmentという単位に分割して記述する方法を提唱している。前述した方法をプログラマーが一から記述することは大変である。よるプログラミング手法の例を示す。本文はここから始まる\section{歴史的経緯}本研究室では、並列タスク管理フレームワークCeriumの管理を行なっているが、その設計と実装を行うにあたり、並列プログラミングと分散プログラミングは本質的には同じことを行なっていることが分かった。特異な環境は、分散プログラミング環境と告示している。それらを踏まえて、Ceriumのタスク管理手法を分散に応用できないかと考えた。Ceriumに置いても、タスクとそれの入出力データの取り扱いは難しい課題である。データを操作するAPIを考えて、タスクを自然に記述し、効率良く実行する方法を考えてきた。そこで考えられた手法が、データをDataSegment、タスクをCodeSegmentという単位に分割して記述する方法である。開発を通して得られた知見を生かされている。設計はシングルスレッドで行われている。近年ではマルチコアのマシンが主流となっている。将来的にはメニーコアのマシンが主流になってくると考えられるそのような背景を踏まえてAliceはマルチスレッド向けに設計されている。Segmentという単位でデータと処理を細かく分割し、それぞれの依存関係を記述して分散プログラムを作成する。他のマシンとの接続トポロジーの構成の機能も有しているのでユーザーはトポロジー構成後の処理を記述するだけでよい。Semgnetをデータベースとして利用している。KeyValueStoreで実装されており、キーごとにリストを持っている。APIを用いることで、リストにデータを追加、削除を適宜行うことができる。Managerである。Segmentを整理する。各キーごとにキュー構造を持っている。APIを用いて操作する。"take")時に、希望のデータがなかった場合、ブロッキングを行う機能を持つ。ブロッキングといってもそこで同期するわけではない。非同期でデータを通信する。違い、レスポンスが発生する。これらを用いてデータの送受信を行う。内のキューに対してエンキューする。