著者
酒井 政裕 今井 健男
出版者
日本ソフトウェア科学会
雑誌
コンピュータ ソフトウェア (ISSN:02896540)
巻号頁・発行日
vol.32, no.1, pp.1_103-1_119, 2015-01-26 (Released:2015-02-11)

SAT問題は,命題論理式の充足可能性問題,すなわち命題変数を含む論理式に対し,その論理式を真にするような命題変数への値の割り当てが存在するかを決定する問題である.SATは古典的なNP完全問題であり,計算量的には難しい問題であるものの,近年のアルゴリズムの改良とハードウェアの進化によって著しい高性能化が実現された結果として,様々な分野への応用が行われている.本稿ではSATにまつわる研究で現在活発な領域として,関連する問題クラスへの応用やそれにまつわる研究分野との間の交流について,調査し,紹介する.
著者
石川 冬樹 今井 健男 丸山 宏 吉岡 信和
雑誌
ウィンターワークショップ2018・イン・宮島 論文集
巻号頁・発行日
vol.2018, pp.1-3, 2018-01-11

近年の深層学習を軸とした機械学習の発展に伴い,機械学習を利用するソフトウェアは急速に社会に浸透しつつある.しかしその一方で,従来型のソフトウェア工学は機械学習の前に全くと言っていいほど通用していない.機械学習ソフトウェアの開発 ・ テスト ・ 運用の方法論は未だに確立できておらず,開発現場では試行錯誤に依っている状況である.この現状を踏まえ,機械学習ソフトウェアに対しては 「機械学習工学」 ともいうべき,新たなパラダイムの確立 ・ 体系化が必要である.以上の認識に立って,本セッションでは,機械学習エンジニア,ソフトウェアエンジニア双方の立場から,機械学習システムに対する問題提起や研究報告,参加者からの取り組み,あるいはこれから取り組んでみたいという思いについて議論したい.
著者
今井 健男 酒井 政裕 萩谷 昌己
出版者
日本ソフトウェア科学会
雑誌
コンピュータ ソフトウェア (ISSN:02896540)
巻号頁・発行日
vol.30, no.2, pp.2_207-2_226, 2013-04-25 (Released:2013-08-25)

本稿では,プログラムの事前条件推定を行う新たな手法を提案する.本手法では,プログラムのテキストから生成した述語の集合とプログラムに相当する論理式,および事後条件の否定の連言を作り,そのMinimal Unsatisfiable Core(MUC)から事前条件を求める.MUCは一般的に複数存在するが,本手法ではまずMUCを列挙し,その中から事前条件として適格で,かつ最も弱い条件を選択する.こうして得られる事前条件は理想的な最弱条件ではないが,与えられた述語群の組み合わせの中で最も弱いという点で,我々はこれを「準最弱」な事前条件と呼ぶ.我々は,C言語向け有界検査ツールCForgeを援用し,上記手法を実現するツールSMUCEを試作した.その上で,教科書的なアルゴリズムを実装するC言語関数9個に,2種類の事後条件と共に適用し,人手で求めた事前条件との比較による評価を行った.結果,延べ18個中10個において,人手で求めた事前条件と同等か,より弱い条件が推定され,提案手法が原理上,実用的な事前条件を推定できることが確認できた.
著者
丸地 康平 今井 健男 太田 暁率 片岡 欣夫
雑誌
研究報告ソフトウェア工学(SE)
巻号頁・発行日
vol.2009-SE-166, no.18, pp.1-8, 2009-10-29

派生開発では,既存のテスト資産を活用しテストケースを作成する.ゆえに,テスト工程の質を保証するには,テスト資産のテストケースの不足や冗長を見つけるテストケース評価技術が重要となる.ミューテーションテストはテスト評価技術であり,テスト削減に有効であることが知られる.しかし,時間コストを要する技術であり,システムテストへの適用は困難である.本稿では,派生開発のシステムテストに対し,ミューテーションテストの適用方法を提案する.適用実験により,提案方法がミューテーションテスト自体に要する時間の削減や,テストケース不足の発見に有用であることを示す.
著者
今井 健男 山本 泰宇 遠藤 敏夫 田浦 健次朗 米澤 明憲
出版者
一般社団法人情報処理学会
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.40, no.1, pp.42-56, 1999-02-15

我々は C++に分散オブジェクトと分散ごみ集め(分散GC)機構を導入した 分散記憶型並列計算機向け拡張言語DisCを開発する. 我々はまず 分散オブジェクトをC/C++上で扱うためのライブラリ(GCライブラリ)を開発する. これは オブジェクトがどのプロセッサ上にあるのかの判定 あるいは遠隔参照の明示的な作成等 分散オブジェクトの基礎的な機能を実現する. そしてこのライブラリに対し 動的にゴミとなった分散オブジェクトを回収する分散ごみ集めの機能を導入する. このごみ集め機構は特定の通信ライブラリに依らないため 広範な環境での動作が可能である. 次に 上記のGCライブラリを暗黙的に呼び出してリモートメソッド呼び出し等の抽象度の高い機能を 構文仕様の変更なしに実現するフロントエンドを構築する. ここでは自己反映言語OpenC++を用いる事により実装を簡便にし 保守性と移植性を確保している. そして このフロントエンドとGCライブラリを既存のC++処理系に組み合わせる事で 既存の処理系に手を加えない形でのC++の拡張を行なう. プログラマは 通常のC++プログラムでのオブジェクトの操作と同様の記述を用いて 分散オブジェクトの機能を暗黙的に使用できる. DisCは 分散GC機構を備えている他に 1)構文仕様の変更が一切なく 通常のC++と同様の記述で分散オブジェクト・プログラミングができ また 2)様々な計算機環境への高い移植性を持つ という特長がある. これにより 分散記憶型計算機上で動くプログラムの開発と保守 及び異なる分散記憶計算機間でのソフトウエア資産の共有が容易になる. 本稿では 上記ライブラリ及び言語処理系の設計及び実装手法について述べ さらに応用プログラムを作成し 実際に分散記憶型計算機上で動かして拡張言語の性能を評価する.We develop DisC, an extension of C++ that supports distributed objects and distributed garbage collection on distributed memory parallel computers. We first develop a library for C/C++, which includes basic functions to manage distributed objects. This library includes a function that tells whether an object is local or remote, functions that explicitly make remote references. It also provides a distributed garbage collection facility that reclaims objects that are no longer used. The facility is portable because of its independency from communication libraries. We also develop an front-end processor that implicitly invokes functions or the library described above, and brings higher abstractions such as remote method invocation, with no changes to the syntax of C++. We use a reflective language Open C++ to implement the processor, we achieve simple implementation and acquire its portability and maintainability. Programmers can invoke methods of distributed objects in our language as if they were normal C++ objects. Besides the distributed garbage collection facility, there are two major advantages in our language: 1)its extension involves no syntactic changes and the users can write programs with distributed objects as if they write programs in original C++, and 2) it is highly portable to various distributed parallel computers or environments, which have diverse interfaces for inter-processor communication. These advantages makes it easier to develop or maintain parallel software that are portable across various distributed-memory parallel environments. We also evaluate our extended C++ with some experiments using several parallel applications.