Senin, 07 April 2014

PENGUJIAN DAN IMPLEMENTASI WIRELESS SENSOR NETWORK

Desain Pengujian
Pengujian dilakukan pada 3 buah komputer dengan susunan sbb :

HOST A :
Merupakan Wireless Sensor yang membaca data analog dan mengirimkan data pada HOST B.
HOST B :
Menerima data dari HOST A dan memberikan datanya pada HOST C dengan protokol yang berbeda.
HOST C :
Menerima data dari HOST B dan menuliskannya pada database.

Pemrograman
Beberapa bahasa pemrograman yang digunakan untuk pengujian ini diantaranya adalah Dynamic C dan Perl. Dynamic C digunakan untuk memprogram microcontroller dan Perl digunakan sebagai bahasa pemprograman yang digunakan untuk menerima data dari microcontroller, mengirim data pada concentrator database server dengan protokol SOAP, dan menampilkannya dalam bentuk tampilan grafik. Sementara untuk menerima data dengan protokol SOAP dan menuliskannya pada database, digunakan bahasa pemrograman PHP.
Dynamic C adalah sebuah bahasa pemprograman yang dibuat oleh Rabbit , inc yang khusus digunakan untuk memprogram microcontroller RCM 3700. Dynamic C ini dilengkapi beberapa library dan dilengkapi sebuah IDE (integrated development environment) sehingga coding, debugging, compiling, flashing, dan downloading sebuah microcontroller RCM 3700 dapat dilakukan cukup pada sebuah software saja.
Pada dasarnya, garis besar program yang dibuat adalah sebagai berikut :
1. Menerima data masukkan dari input analog
Kode yang digunakan :
float read_analog_input ()
{
dataRaw = anaIn(inputnum, SINGLE, GAINSET);
return (dataRaw*20/2048) ;
}


2. Secara aktif membuka koneksi soket ke komputer penerima data (tidak harus merupakan sebuah database server)
Kode yang digunakan :
if (!tcp_open(&my_socket, 0, host, port, NULL))
{
printf("Failed to open\n");
return -1 ;
}
else while (!sock_established(&my_socket))
{
if(!tcp_tick(&my_socket))
{
printf("Failed to Establish\n"); break ;
}
}


3. Secara aktif mengirimkan data hasil pembacaan input analog yang telah dikonversi menjadi besaran biner kepada komputer penerima melalui soket TCP/IP yang sama dengan nomor 2.
Kode yang digunakan :
if(sock_established(&my_socket))
{
char * buff;
sprintf(buff,"%d",mesg);
if((sock_write(&my_socket, buff, sizeof(buff)))< 0 )
{
printf("Error Sending Data...");
return -1 ;
}
sock_close(&my_socket);
return 1 ; //return ok
}

4. Menampilkan pesan error ketika pembukaan socket tidak berhasil dilakukan, atau pengiriman data tidak berhasil, atau ketika pembacaan analog input gagal dilakukan.

Perl adalah bahasa scripting yang secara resmi keluar pada tahun 1987. Kode perl tidak perlu dicompile agar bisa dijalankan, itulah mengapa perl disebut bahasa scripting, bukan bahasa pemrograman. Dokumentasi dan informasi mengenai perl dapat diperoleh dari http://www.perl.org/ .
Pada Dasarnya, program perl yang dibuat pada pengujian ini mempunyai garis besar perilaku sbb :
Pada Host Penerima (HOST B) :
1. Secara Pasif membuka dan me-Listen socket TCP/IP pada port tertentu.
Kode yang digunakan :
my $sock = IO::Socket::INET->new(
LocalHost => $host,
LocalPort => $port,
Proto => 'tcp',
Listen =>1,
ReuseAddr => 1
);

2. Secara Pasif menerima input data dari koneksi socket TCP/IP dari komputer pengirim, kemudian mengirimkannya pada database server menggunakan protokol SOAP secara aktif.
Kode yang digunakan :
while(1) {
my $sockAccept = $sock->accept();
while ($pesan = <$sockAccept>)
{
$rrd -> update (temp => $pesan);
# updating database MS SQL melalui web services
my $soapRes = $soap->insertData($pesan);
unless ($soapRes->fault)
{
print "$pesan berhasil ditulis" ;
}
else
{
print join ', ',
$soapRes->faultcode,
$soapRes->faultstring,
$soapRes->faultdetail;
}

}
}


3. Menuliskan data pada sebuah grafik PNG sehingga terlihat grafik besaran suhu vs waktu.
Kode yang digunakan :
while(1) {
$rrd -> graph(
destination => "/var/www/netmon.tf.itb.ac.id",
basename => "temperature",
timestamp => "both",
periods => [qw(hour)],
sources => [qw(temp)],
source_colors => [qw(ff0000)],
source_labels => [("Temperatur")],
source_drawtypes => [qw(AREA)],
line_thickness => 2,
extended_legend => 1,
title => "Water Temperature",
vertical_label => "Kelvin",
interlaced => ""
);
print "graph updated\n";
# wait for 200 seconds
sleep(200);
}

Php adalah bahasa pemrograman web / scripting web yang sangat terkenal. Secara umum, program php yang dibuat mempunyai behaviour sbb :
Pada Host Database server (HOST C) :
1. Secara Pasif menerima input data dari HOST B dengan metode SOAP.
Kode yang digunakan :
require_once('lib/nusoap.php');

$server = new soap_server;

$server->register('insertData');
……..

$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);

?>

2. Menuliskan data pada database server. Software Database Server yang digunakan adalah MySQL
Kode yang digunakan :
function insertData($temperature)
{
$timeStamp = date('Y-m-d H-i-s');
mysql_connect('localhost','username','password') or die(mysql_error());
mysql_select_db('coba') or die(mysql_error());
mysql_query('INSERT INTO test VALUES ("'.$timeStamp.'","'.$temperature.'")') or die(mysql_error());
return 'berhasil'.$temperature ;
}


Keseluruhan Kode yang dibuat adalah sbb :
Kode Dynamic C yang dibuat :
#define RCM3700_PROTOBOARD
#define TCPCONFIG 9
#use "dcrtcp.lib"
#define ADDRESS "167.205.44.10"
#define PORT "8989"
#define inputnum 0
#define GAINSET GAIN_1

int send_packet(char * mesg)
{
tcp_Socket my_socket ;
word status ;
word port ;
longword host ;
if(!(host=resolve(ADDRESS)))
{
printf("Could not resolve host\n");
return -1;
}
port = atoi (PORT);
sock_init();
if (!tcp_open(&my_socket, 0, host, port, NULL))
{
printf("Failed to open\n");
return -1 ;
}
else while (!sock_established(&my_socket))
{
if(!tcp_tick(&my_socket))
{
printf("Failed to Establish\n"); break ;
}
}
if(sock_established(&my_socket))
{
char * buff;
sprintf(buff,"%d",mesg);
if((sock_write(&my_socket, buff, sizeof(buff)))< 0 )
{
printf("Error Sending Data...");
return -1 ;
}
sock_close(&my_socket);
return 1 ; //return ok
}
}
float read_analog_input ()
{
dataRaw = anaIn(inputnum, SINGLE, GAINSET);
return (dataRaw*20/2048) ;
}
main()
{
float dataInputFlt ;
char [8] dataInputStr ;
while(1)
{
costate
{
dataInputFlt = read_analog_input();
sprintf(dataInputStr,"%d", dataInputFlt);
//send_packet(&dataInputStr);
}
}
}

Kode Perl pada komputer penerima data (HOST B) yang dibuat :
#!/usr/local/bin/perl -w
# program untuk membuat daemon sederhana yang melisten di port 8989
# input program : data stream dari microcontroller
# output program : file rrd
# ditambahkan fungsi untuk mengupdate database melalui webservice
# load required modules

use strict;
use POSIX qw(setsid);
use LWP::Simple;
use RRD::Simple ();
use IO::Socket ;
use SOAP::Lite ;

# set costants

my $host = '167.205.44.10';
my $port = '8989';
my $png = '/var/www/netmon.tf.itb.ac.id';
my $rrdfile = '/var/tmp/temperature.rrd';
my $log = '/var/tmp/coba.log';
my $soap = SOAP::Lite
-> uri('http://netmon.tf.itb.ac.id/coba/server.php')
-> proxy('http://netmon.tf.itb.ac.id/coba/server.php');

# flush the buffer
$| = 1;

# daemonize the program
&daemonize;

# rrd initialization
my $rrd = RRD::Simple->new (file => "$rrdfile");

$rrd -> create ($rrdfile, temp => "GAUGE");

# creating listen socket
my $sock = IO::Socket::INET->new(
LocalHost => $host,
LocalPort => $port,
Proto => 'udp',
Listen =>1,
ReuseAddr => 1
);
die "socket listening failed" unless $sock ;
my $pesan ;
# our daemon process
while(1) {
my $sockAccept = $sock->accept();
while ($pesan = <$sockAccept>)
{
$rrd -> update (temp => $pesan);
# updating database MS SQL melalui web services
my $soapRes = $soap->insertData($pesan);
unless ($soapRes->fault)
{
print "$pesan berhasil ditulis" ;
}
else
{
print join ', ',
$soapRes->faultcode,
$soapRes->faultstring,
$soapRes->faultdetail;
}

}
}

sub daemonize {
chdir "/var/tmp" or die "Can't chdir to /: $!";
open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
open STDOUT, ">>$log" or die "Can't write to $log: $!";
open STDERR, ">>$log" or die "Can't write to $log: $!";
defined(my $pid = fork) or die "Can't fork: $!";
exit if $pid;
setsid or die "Can't start a new session: $!";
umask 0;
}

Kode PHP untuk menulis ke database pada HOST C yang dibuat :
require_once('lib/nusoap.php');

$server = new soap_server;
// Register the method to expose

$server->register('insertData');
// Define the method as a PHP function

function insertData($temperature)
{
$timeStamp = date('Y-m-d H-i-s');
mysql_connect('localhost','username','password') or die(mysql_error());
mysql_select_db('coba') or die(mysql_error());
mysql_query('INSERT INTO test VALUES ("'.$timeStamp.'","'.$temperature.'")') or die(mysql_error());
return 'berhasil'.$temperature ;
}
// Use the request to (try to) invoke the service
$HTTP_RAW_POST_DATA = isset($HTTP_RAW_POST_DATA) ? $HTTP_RAW_POST_DATA : '';
$server->service($HTTP_RAW_POST_DATA);

?>

http://wsnsistel.blogspot.com/2009/05/pengujian-dan-implementasi-wireless.html

Referensi di Perl

Saat ini Anda sudah mengenal tiga jenis tipe variabel di Perl, yaitu skalar, array, dan hash. Namun Perl juga mengenal suatu tipe skalar yang khusus yang dinamakan dengan referensi. Jika suatu variabel menampung suatu nilai, maka referensi berisi alamat atau penunjuk ke suatu nilai. Jika dianalogikan dengan sebuah buku, variabel berisi nilai seperti sebuah halaman buku berisi informasi di dalamnya, sedangkan referensi merupakan petunjuk, seperti sebuah halaman buku yang hanya berisi “lihat halaman 2706”.
Tapi apa gunanya referensi? Berguna sekali. Di Perl, kita tidak bisa membentuk struktur data rumit tanpa adanya referensi. Saya akan membahas referensi untuk struktur data yang rumit di edisi yang lain, untuk saat ini saya hanya akan menunjukkan apa itu referensi dan kegunaannya dalam subrutin yang memerlukan pass by reference.
Anda akan lebih mudah memahami referensi dari contoh:
$nama = "feynman";
$n = \$nama;
print $n;
Hasil program di atas, mungkin seperti ini:
SCALAR(0x8104b8c)
Angka di dalam kurung tidak selalu sama, tergantung lokasi memori variabel $nama di proses program Perl. Variabel $n berisi alamat (dan tipe) dari variabel $nama. Operator untuk mengambil alamat suatu variabel adalah \ (backslash). Untuk mengakses nilai yang ditunjuk oleh $nama, kita melakukannya dengan:
print ${$n};
atau bisa juga dengan:
print $$n;
Jika kita mengubah nilai $$n, ternyata kita juga mengubah nilai $nama, contoh:
$nama = "feynman";
$n = \$nama;
print "Sebelum: ${$n}\n";
$$n="richard";
print "Sesudah: $nama\n";
potongan kode di atas akan mencetak tulisan:
Sebelum: feynman
Sesudah: richard
Kenapa itu bisa terjadi? Akan saya coba jelaskan dengan menggunakan analogi buku tadi. Jika Anda hanya memberikan salinan variabel seperti ini:
$a = 1982;
$b = $a;
maka $b akan berisi nilai $a, sama seperti Anda memberikan salinan sebuah halaman buku ke seseorang. Maka jika Anda mengubah nilai $b, seperti ini:
$b = 1980;
nilai $a tetap 1982, karena yang diubah adalah salinan variabel (seperti jika salinan halaman buku itu diubah, halaman aslinya tidak akan berubah). Tapi jika yang diberikan ke orang lain adalah petunjuk di mana informasi tersebut berada (referensi), misalnya halaman 1705, maka orang yang diberi informasi bisa mengubah isi halaman buku tersebut karena tahu letaknya.
Referensi tidak hanya menunjuk ke variabel skalar, tapi juga ke variabel array atau hash. Untuk array, Anda bisa melakukan ini:
@superhero = ("spiderman", "superman", "batman");
$super = \@superhero;
Jika Anda hanya perlu referensi ke suatu array, Anda tidak perlu membuat dulu variabel arraynya, Anda bisa menggunakan notasi [ isi list ] jadi yang di atas bisa disingkat menjadi:
$super = ["spiderman", "superman", "batman"];
untuk mengakses nilai array tersebut, Anda bisa melakukannya seperti ini:
@hero = @$super;
untuk mengakses elemennya, Anda bisa menggunakan salah satu cara ini:
$spiderman = ${$super}[0];
$superman = $super->[1];
Kita lewatkan dulu pembahasan mengenai array dua dimensi untuk edisi ini. Dan mari melangkah ke hash. Anda bisa melakukan hal yang sama terhadap hash, seperti yang Anda lakukan terhadap array. Bedanya adalah kalau untuk array kita memakai operator [...], maka untuk membuat referensi ke hash tidak bernama (anonim), Anda melakukannya dengan notasi {...} seperti ini:
$warna = {
    "bunga" => "merah",
    "bola"  => "putih"
};
Dan tentunya referensi ke hash diakses dengan:
%lili = %{$bcd};
Dan bahkan referensi ke suatu subrutin dapat dibuat, seperti ini:
sub test {
    print "test";
}
$a = \&test;
untuk memanggil subrutin tersebut:
&$a();
Pass by Value dan Pass by Reference
Anda sudah belajar bahwa di Perl, parameter untuk suatu subrutin diakses dengan array @_. Namun di edisi yang lalu saya hanya memberi contoh jika parameter yang dilewatkan ke subrutin adalah nilai skalar. Jika nilai yang dilewatkan adalah list atau hash, hasilnya mungkin tidak akan seperti yang Anda harapkan, lihat contoh ini:
sub hello {
    my ($greet, $name) = @_;
    print "Selamat $greet, $name\n";
}
hello("Pagi", "Donna");
@l = ("Malam", "Lala");
hello(@l);
hello("Siang", @l);
$waktukerja{"yuni"}="malam";
hello(%waktukerja);
Output program tersebut adalah:
Selamat Pagi, Donna
Selamat Malam, Lala
Selamat Siang, Malam
Selamat yuni, malam
Seperti yang Anda lihat, Perl akan “mendangkalkan” list ketika dilewatkan ke suatu subrutin.
@l=("romeo”, ”juliet");
hello(@l);
sama saja dengan
hello($l[0], $l[1]);
Semua parameter akan diberikan ke @_ secara berurutan. Hal ini berlaku baik untuk hash, array, skalar, ataupun gabungan dari semua itu. Lalu masalahnya? Masalahnya adalah Anda tidak bisa memberikan array atau hash ke suatu subrutin dalam bentuk yang sebenarnya.
Perl hanya mendukung parameter subrutin berupa skalar, namun seperti yang kita ketahui, ada suatu tipe skalar khusus yang disebut referensi, kita bisa menggunakan sifat referensi untuk membuat subrutin yang bisa mengakses dan memodifikasi array atau hash yang kita berikan. Cara melewatkan parameter seperti itu (memakai referensi) disebut pass by reference, sedangkan jika yang dilewatkan hanya nilainya maka disebut pass by value.
Lihat contoh ini:
sub add_me {
    my ($arr) = @_;
    push @$arr, "me";
}
@a = qw(joe nitnotz);
add_me(\@a);
print join(" ", @a);
Subrutin add_me akan menambahkan elemen “me” ke array, sehingga output program adalah:
joe nitnotz me
Jika Anda membuka kembali tutorial bagian 2, Anda akan mendapati bagaimana cara mendapatkan daftar user di Unix. Sebagai latihan Anda bisa memanfaatkan kode itu untuk membuat subrutin yang akan mengisikan daftar user yang ada pada sistem ke sebuah list. Sehingga Anda bisa melakukan seperti ini:
get_user_list(\@users);
foreach (@users) {
    #lakukan sesuatu di sini
}
Subrutin semacam itu bisa Anda pakai di berbagai program yang berhubungan dengan administrasi sistem.

http://www.master.web.id/mwmag/issue/06/content/tutorial-perl-5/tutorial-perl-5.html

Konsep Siklus Hidup Produk (Product Life Cycle – PLC)


Dalam menentukan strategi pemasaran terhadap suatu produk, maka perlu dianalisis mengenai siklus hidup produk (Product Life Cycle – PLC) dari produk sejenis yang dibuat, hal ini disebabkan karena :
1.      Produk, pasar (permintaan konsumen), dan pesaing akan berubah sepanjang siklus hidup produk.
2.      Produk memiliki umur yang terbatas.
3.      Penjualan produk akan melalui berbagai tahap yang khas, dan masing-masing memberikan tantangan, peluang, dan masalah yang berbeda bagi penjualnya.
4.      Laba akan naik dan turun pada berbagai tahap yang berbeda selama siklus hidup produk.
5.      Produk memerlukan strategi pemasaran, keuangan, manufaktur, pembelian, dan sumber daya manusia yang berbeda dalam tiap tahap siklusnya.

Kebanyakan kurva siklus hidup produk digambarkan berbentuk lonceng, dimana  kurva tersebut umumnya terbagi menjadi empat tahap sebagai berikut :
1.  Tahap perkenalan (introduction)
Merupakan periode pertumbuhan penjualan yang lambat saat produk itu diperkenalkan ke pasar. Pada tahap ini tidak ada laba karena besarnya biaya-biaya untuk memperkenalkan produk.
2.  Tahap pertumbuhan (growth)
Merupakan periode penerimaan pasar yang cepat dan peningkatan laba yang besar.
3.  Tahap kematangan (maturity)
Merupakan periode penurunan pertumbuhan penjualan karena produk itu telah diterima oleh sebagian besar calon pembeli. Laba akan stabil atau menurun karena persaingan yang meningkat.
4.  Tahap penurunan (decline)
Merupakan periode saat penjualan menunjukkan arah yang menurun dan laba yang menipis.

Terkait dengan siklus hidup produk, beberapa strategi yang umumnya diterapkan pada masing-masing tahapan yaitu:

1.      Produk yang baru diperkenalkan di pasar (introduction), strateginya:
-  Berusaha selalu memperbaiki penampilan produknya.
-  Menyebarkan barang sebanyak-banyaknya ke seluruh toko.
-  Melakukan sell out.

2.      Produk yang sudah dikenal (growth), strateginya:
      - Berusaha terus mencari segmen baru, menambah jumlah tenaga penjual,  menambah armada pengangkutan.
      -   Selalu memperbaiki mutu produk
      -  Mempertimbangkan strategi menurunkan harga untuk barang-barang yang harganya tinggi.

3.   Pasar yang sudah matang/ jenuh (masa maturity), strateginya:
-  Berusaha mencari segmen-segmen kecil yang belum terisi.
-  Menciptakan produk dengan kemasan besar.
-  Memperbaiki penampilan produk dengan sesuatu yang baru.

4.  Jika strategi ini tidak berhasil, maka akan timbul masa penurunan (decline). Strategi yang diterapkan:
-  Jika gejala sudah parah, anggaran promosi harus dihentikan
-  Pusatkan perhatian pada pasar yang masih ada harapan, untuk pasar yang lain dihentikan.
- Menghentikan pemasaran produk secara menyeluruh dan menciptakan produk .

http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=Konsep+Siklus+Hidup+Produk+%28Product+Life+Cycle+%E2%80%93+PLC%29

Program Batch File Membuat Direktori.


Batch file adalah sekumpulan instruksi/perintah DOS yang diracik menjadi satu bagian sehingga menjadi sebuah program. Dan untuk membuat program sederhana dari batch file tidak terlalu sulit karena pemrograman dari batch file ini bersifat sederhana dan mudah di pelajari di banding dengan bahasa pemrograman lainnya, seperti java, c, c++, pascal, php dan lainnya.
Kali ini penulis ingin sedikit berbagi source program batch file, yaitu program untuk membuat direktori dan untuk membuatnya silahkan copas pada notepad atau ketik jika tidak malas karena scriptnya tidak banyak dan simpan file tadi dengan format .bat.

@echo off
:awal
echo Membuat direktori
echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
set /P nama= Masukkan nama folder/direktori :
:desktop
echo.
echo berhasil membuat direktori di desktop dengan nama "%nama%"
md "%nama%"
goto :pilih
:pilih
set /P pilihan= buat lagi(b) atau keluar(k) ? : 
cls
if /I "%pilihan%"=="b" GOTO :awal
if /I "%pilihan%"=="k" GOTO :keluar
echo.
:keluar
exit

http://kemajuan-diri.blogspot.com/2011/12/program-batch-file-membuat-direktori.html

Peran MIS dalam Meningkatkan pengambilan keputusan


Preliminarily, manyatakan, pengambilan keputusan merupakan bagian integral dari setiap bisnis (The maniak, nd). Hal ini karena mayoritas operasi dalam suatu organisasi berkisar sekitar keputusan yang dibuat oleh manajemen dan pemangku kepentingan lainnya dalam organisasi. Dan agar keputusan yang akan dibuat memadai, untuk itu sangat penting sistem informasi yang baik karena keputusan didasarkan pada informasi yang tersedia.

Dalam hubungan ini, Jahangir (2005) menyatakan bahwa berdasarkan peran Informasi yang signifikan sangat penting dalam pengambilan keputusan yang akan dibuat, organisasi harus memastikan bahwa mereka memiliki sistem informasi manajemen yang baik.

Sebagai pertimbangan utama, Sistem Informasi Manajemen sangat kompleks dan halus, yang membutuhkan ketelitian dalam pengambilan keputusan yang harus diambil oleh manajer. Hal ini menjadi alasan bahwa suatu organisasi untuk dapat memastikan bahwa telah memilih individu yang tepat untuk mengontrol sistem informasi. Orang yang  berhati-hati dan profesional adalah,  orang yang dapat menjamin prospek positif dalam SIM berkaitan dengan pengambilan keputusan dan lain yang terkait di bidang bisnis (Lingham, 2006).

Beberapa argumen ilmiah, fakta, pendapat dan pengamatan yang dilakukan oleh berbagai makro ekonomi berkaitan dengan peran Sistem Informasi manajemen dalam meningkatkan pengambilan keputusan, sebagai berikut:
http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=Peran+MIS+dalam+Meningkatkan+pengambilan+keputusan
SIM menyediakan platform yang cocok untuk pengambilan keputusan yang baik (Kumar, 2006). Pada dasarnya, tanpa system informasi yang untuk mendapatkan informasi, akan sangat sulit bagi organisasi untuk membuat suatu keputusan.

Selain itu, hal ini sangat penting karena membantu dalam menjaga bisnis, sehingga memastikan bahwa hanya keputusan yang telah terbukti yang digunakan, sementara yang belum dicoba adalah akan digagalkan. Lebih penting lagi, kapasitas untuk memandu pengambilan keputusan memfasilitasi kemajuan dan peningkatan operasi di sebuah perusahaan (Lingham, 2006; Chambers, 1964, hal.15-20).

Penting bagi perusahaan dalam generasi modern, di mana setiap kesalahan kecil dalam pengambilan keputusan dapat menyebabkan kerugian yang sangat besar (Allen, et al., 2010).

Dengan pemrograman Sistem Informasi Manajemen yang rutin, bisnis pasti akan membuat kemajuan positif dan sumber daya dapat dengan mudah disalurkan ke jalur bisnis yang sah (Allen, et al., 2010).

Sebagai titik fundamental, SIM yang digunakan saat ini dapat melakukan banyak tugas pada waktu yang sama. Ini potensi untuk multitask meningkatkan efisiensi dalam suatu perusahaan karena beberapa operasi bisnis dapat dilakukan secara bersamaan. Dengan hal khusus pengambilan keputusan, kemampuan untuk multitask memastikan bahwa keputusan dibuat cepat bila dibandingkan dengan sistem yang hanya dapat menangani satu tugas pada satu waktu.

Erat terkait dengan titik di atas, Jahangir (2005) mengatakan bahwa SIM memungkinkan beberapa pengguna untuk mengakses konten yang sama pada waktu yang sama tanpa ada perbedaan. Potensi ini meningkatkan akuntabilitas dari pelaku usaha karena beberapa orang dapat mengakses dan memverifikasi apakah SIM tersebut konsisten atau tidak.

Dalam berkontribusi terhadap argumen mengenai peran SIM dalam meningkatkan pengambilan keputusan, Rhodes (2010) juga menambahkan bahwa: Sistem Informasi Manajemen memberikan manajer akses cepat ke informasi. Ini bisa termasuk interaksi dengan sistem pendukung keputusan lainnya, permintaan informasi, cross- referensi dari informasi eksternal dan potensi data teknik pertambangan. Sistem ini juga dapat membandingkan tujuan strategis dengan keputusan praktis, sehingga manajer dapat mengambil suatu keputusan yang sesuai dengan strategi organisasi. Singkatnya, Rhodes hanya percaya bahwa sistem informasi manajemen adalah suatu faktor dalam mendapatkan informasi yang layak bagi organisasi.

Akhirnya, Sistem Informasi Manajemen memainkan peran penting dalam menyediakan berbagai pilihan efisien dari para pengambil keputusan agar mampu membuat pilihan-pilihan yang mereka sukai, Vittal & Shivraj (2008, p.359-361). Vital, ini memastikan bahwa apapun pilihan yang dibuat oleh pengambil keputusan, hasilnya, lebih sering positif dari pada tidak.

Sebenarnya, adalah alasan mengapa banyak pembuat keputusan cenderung lebih suka menggunakan SIM ketika menemui keputusan-keputusan yang sulit untuk diambil. Dan sebagai konsep memiliki pilihan keputusan yang layak untuk diputuskan dalam bisnis (Vittal & Shivraj, 2008, hal.360-365, Jawadekar, 2006, p.356-359).

 http://www.google.com/search?ie=UTF-8&oe=UTF-8&sourceid=navclient&gfns=1&q=Peran+MIS+dalam+Meningkatkan+pengambilan+keputusan