Sunday, September 22, 2013

how to make software engineering

Postingan kali ini menjelaskan bagaimana langkah-langkah kita membuat perangkat lunak yang secara terstruktur. pertama kita buat suatu proses yang digambarkan di konteks diagram kemudian di ubah ke bentuk flow map. adapun konteks diagramnya adalah sebagai berikut.
jika kita pelajari lebih lanjut, Konteks diagram itu merupakan bagian dari flow map, yang mana konteks diagram penjelasan prosesnya lebih lengkap dibanding dengan flow map. untuk memahaminya berikut ini adalah flow map dari konteks diagram diatas.
Adapun prosesdur kerja dari flow map diatas adalah sebagai berikut.
1. Customer memesan barang
2. Sistem mengecek pada bagian material stocks
3. jika tidak ada, kembalikan konfirmasi reject ke customer
4. jika ada, customer bayar
5. pembayaran dilayani oleh sistem
6. management keuangan menerima masukan keuangan, dan report.
7. kemudian management melakukan validasi pembayaran secara manual,
8. Jika tidak ssesuai maka kembali ke pengecekan pembayaran sudah pas belum bayarnya
9. jika sesuai maka acc, dan bkin dokumentasi bon penjualan yang dikirim ke customer.
10. jika barang pada material stocks kekurangan barang, maka disuplai oleh supplier
11. jika pengadaan tidak valid, kembali ke pembayarannya.
12 jika pengadaan valid, maka shipment dan dibuatkan faktur.
13. faktur disimpan sebagai bukti pengadaan

DFD (Data Flow Diagram) adalah diagram yang menggambarkan bagaimana sebuah data mengalir kemudian diproses hingga disimpan pada data store. Sebelum kita membuat DFD, kita harus membuat diagram konteks terlebih dahulu. Yang mana diagram konteks merupakan gambaran proses sebuah sistem secara general. Dari Konteks diagram diatas jika spesifikasikan lagi ke bentuk DFD level 0 khususnya pada proses Purchase order ke Supplier maka bisa digambarkan sebagai berikut.

Jika kita sudah membuat DFD maka untuk memperjelas aliran data harus ada kamus datanya. Kamus data ini untuk mendeklarasikan data yang dialirkan pada DFD. 

Kamus Data 

Arus Data

id_barang = kode_barang + nama_barang + jumlah_barang + harga_per_barang
item_barang =id_barang=New_List_Barang=List_Barang
jml_barang = kode_barang + jumlah_barang + harga_total
PO = kode_beli + kode_customer + nama_customer + Alamat + email + harga_total  + tgl_beli + { kode_barang + jumlah_barang + harga_per_barang } 
id_supplier = kode_supplier + nama_supplier + tgl_supplai + jumlah_barang_supplai
Re-id_supplier = id_supplier
pesanan = kode_beli + tgl_beli + kode_customer + nama_customer + Alamat + email  + harga_total + {kode_barang + jumlah_barang + harga_per_barang 

Data Store

Barang = @kode_barang + nama_barang + jumlah_barang + harga_per_barang
supplier = @kode_supplier + nama_supplier + tgl_supplai + jumlah_barang_supplai
pemesanan = @kode_beli + tgl_beli + kode_customer + nama_customer + harga_total  + Alamat + email + {id_barang + jumlah_barang + harga_per_barang}
   
kode_barang = kode_beli = kode_customer = kode_supplier = 1{character}5
nama_barang = nama_supplier = nama_customer = 1{character} 30
jumlah_barang = harga_total = harga_per_barang = jumlah_barang_supplai = 1{number}10
tgl_beli = tgl_supplai = *dd/mm/yyyy* = date
email = 1{character}20
Alamat = 1{character}20
character = [A-Z|a-z|0-9|.|,|@| |]
number = [0-9]

Setelah kita membuat DFD dan flowmap maka kita harus membangun database. Untuk membangun database ini butuh yang namanya Entitas Diagram Relationship (ERD). Adapun ERD dari sistem ini adalah sebagai berikut,



Sekarang kita tinggal membuat rancangan antarmuka aplikasinya yaitu sebagai berikut.


sekarang kita tinggal melakukan tes percobaan balck box dan white box. adapun hasil tesnya adalah sebagai berikut.

       Pengujian Black box
     1. Identifikasi         = PDHUPL-11
Nama Butir Uji   = Penambahan data barang
Tujuan                = Untuk mengetahui apakah data barang baru bisa direkam.
Kondisi Awal      =
-          Tabel barang sudah ada
-          User sudah masuk menu barang.
Tgl_pengujian   = 23 Mei  2013
Penguji                 = Akip
Skenario
Ø  Ketikan data yang akan direkam.
Ø  Klik tombol simpan jika data sudah diisi secara lengkap.
Hasil
Data yang diberikan
Yang diharapkan
Pengamatan
Kesimpulan
Kode_barang = G102
Nama_barang = Pulpen
Harga = 1000
Jumlah  = 2
Data terekam kedalam table barang
-field lain tidak bisa diisi jika field kode barang masih kosong.
- data tidak akan diterima oleh sistem jika masih ada field yang   kosong.
Ok.

      2. Identifikasi          = PDHUPL-12
Nama Butir Uji   = Menambahkan Supplier
Tujuan                = Untuk mengetahui apakah data Supplier baru bisa direkam.
Kondisi Awal      =
-          Jika Ada data barang baru, maka masukan dulu ke fungsionalitas input barang.
-          User sudah masuk menu supplier.
Tgl_pengujian   = 23 Mei  2013
Penguji                 = Akip
Skenario
Ø  Ketikan data yang akan direkam.
Ø  Klik tombol simipan jika data sudah diisi secara lengkap.
Hasil
Data yang diberikan
Yang diharapkan
Pengamatan
Kesimpulan
Kode_supplier = G10
Nama_Supplier  = Sinar
Data supplier baru terekam kedalam table barang yang ada pada database.
-harus mengisi kode_supplier dan nama_supplier
- kode_Supplier terdiri dari 3 character
Ok.
        3.  Identifikasi         = PDHUPL-13
Nama Butir Uji   = Pembuatan Purchase Order
Tujuan                = untuk mengetahui apakah saat mencetak hasil faktur langsung diprint out.
Kondisi Awal     =
-          Sudah memilih barang yang akan dipesan
-          Sudah memasukan data Supplier
Tgl_pengujian   = 23 Mei  2013
Penguji                 = Akip
Skenario
Ø  Ketikan kode_Supplier untuk memastikan barang akan disupplai dari mana.
Ø  Klik tombol cetak
Hasil
Data yang diberikan
Yang diharapkan
Pengamatan
Kesimpulan
- sudah memilih barang yang ada pada list table
- memasukan data supplier, Kode Supplier
- klik cetak
Setelah diceta bukti diharapkan bisa diprint out
-Faktur tidak akan bisa dicetak jika belum memasukan kode_supplier dan belum memilih barang mana yang akan dipesan.
Ok.


    Pengujian White box
     1. Penginputan barang
   


       2. Penginputan supplier

      3. Pembuatan PO

Dari sistem pembuaatan PO diatas sudah dijelaskan bagaiamana diagram ERD, antarmuka interface hingga pada pengujian. sekarang saya akan menggambarkan Diagram Usecase, Kelas diagram , Sequence dan State dari Sistem Pembuatan PO. Untuk memahaminya berikut ini adalah usecase Diagramnya 

UseCase Diagram
      Diagram kelas adalah diagram yang menggambarkan diagram hubungan antar kelas yang ada pada sistem. Adapun untuk kelas diagramnya adalah sebagai berikut.


      Sequence Diagram adalah diagram yang mengambarkan interaksi antar objek dalam urutan waktu tertentu. adapun sequence diagram dari pembuatan PO, insert Barang, dan insert Supplier adalah sebagai berikut.

       Pembuatan PO



      Sekarang kita memahamin state diagram. state diagram adalah diagram yang menggambarkan status sistem saat dilakukan suatu fungsionalitas. untuk memahami state diagram dari beberapa fungsionalitas yang sudah dijelaskan dari sequence diagram adalah sebagai berikut. 

P





       Setelah kita memahami diagram diatas, semoga kalian bisa membangun sebuah perangkat lunak yang benar dan effisien. saya harap postingan ini bisa menjadi referensi sebaik-baiknya.  Terima kasih atas perhatian anda. 



Read morehow to make software engineering

Wednesday, May 22, 2013

ERD dan Interface dari DFD level 0

Menindak lanjuti postingan sebelumnya, saya ingin membuat merancang sebuah ERD dan Interface. Yang mana akan diterapkan pada perancangan perangkat lunak. Untuk lebih jelasnya mari simak Entitas Relationship Diagram berikut ini.
Adapun untuk perancangan antarmuka aplikasinya adalah sebagai berikut.

Tunggu Postingan selanjutnya untuk memahami bagaimana langkah-langkah merancang perangkat lunak.

Read moreERD dan Interface dari DFD level 0

Friday, May 17, 2013

Membuat Kamus Data dari DFD level 0

DFD (Data Flow Diagram) adalah diagram yang menggambarkan bagaimana sebuah data mengalir kemudian diproses hingga disimpan pada data store. Sebelum kita membuat DFD, kita harus membuat diagram konteks terlebih dahulu. Yang mana diagram konteks merupakan gambaran proses sebuah sistem secara general. disini saya langsung menampilkan DFD level 0 dari sebuah sistem pembelian hingga diproses menjadi sebuah struk/faktur pembelian. untuk memahaminya silahkan simak DFD level 0 di bawah ini.


Jika kita sudah membuat DFD maka untuk memperjelas aliran data harus ada kamus datanya. Kamus data ini untuk mendeklarasikan data yang dialirkan pada DFD. 

Kamus Data 

Arus Data

id_barang = kode_barang + nama_barang + jumlah_barang + harga_per_barang
item_barang =id_barang=New_List_Barang=List_Barang
jml_barang = kode_barang + jumlah_barang + harga_total
PO = kode_beli + kode_customer + nama_customer + Alamat + email + harga_total  + tgl_beli + { kode_barang + jumlah_barang + harga_per_barang } 
id_supplier = kode_supplier + nama_supplier + tgl_supplai + jumlah_barang_supplai
Re-id_supplier = id_supplier
pesanan = kode_beli + tgl_beli + kode_customer + nama_customer + Alamat + email  + harga_total + {kode_barang + jumlah_barang + harga_per_barang 

Data Store

Barang = @kode_barang + nama_barang + jumlah_barang + harga_per_barang
supplier = @kode_supplier + nama_supplier + tgl_supplai + jumlah_barang_supplai
pemesanan = @kode_beli + tgl_beli + kode_customer + nama_customer + harga_total  + Alamat + email + {id_barang + jumlah_barang + harga_per_barang}
kode_barang = kode_beli = kode_customer = kode_supplier = 1{character}5
nama_barang = nama_supplier = nama_customer = 1{character} 30
jumlah_barang = harga_total = harga_per_barang = jumlah_barang_supplai = 1{number}10
tgl_beli = tgl_supplai = *dd/mm/yyyy* = date
email = 1{character}20
Alamat = 1{character}20
character = [A-Z|a-z|0-9|.|,|@| |]
number = [0-9]



Read moreMembuat Kamus Data dari DFD level 0

Sunday, May 12, 2013

Flow Map Distribution System

Postingan kali ini menjelaskan bagaiman suatu proses yang digambarkan di konteks diagram kemudian di ubah ke bentuk flow map. adapun konteks diagramnya adalah sebagai berikut.
jika kita pelajari lebih lanjut, Konteks diagram itu merupakan bagian dari flow map, yang mana konteks diagram penjelasan prosesnya lebih lengkap dibanding dengan flow map. untuk memahaminya berikut ini adalah flow map dari konteks diagram diatas.


Adapun prosesdur kerja dari flow map diatas adalah sebagai berikut.
1. Customer memesan barang
2. Sistem mengecek pada bagian material stocks
3. jika tidak ada, kembalikan konfirmasi reject ke customer
4. jika ada, customer bayar
5. pembayaran dilayani oleh sistem
6. management keuangan menerima masukan keuangan, dan report.
7. kemudian management melakukan validasi pembayaran secara manual,
8. Jika tidak ssesuai maka kembali ke pengecekan pembayaran sudah pas belum bayarnya
9. jika sesuai maka acc, dan bkin dokumentasi bon penjualan yang dikirim ke customer.
10. jika barang pada material stocks kekurangan barang, maka disuplai oleh supplier
11. jika pengadaan tidak valid, kembali ke pembayarannya.
12 jika pengadaan valid, maka shipment dan dibuatkan faktur.
13. faktur disimpan sebagai bukti pengadaan

Semoga postingan ini bisa digunakan untuk referensi kedepannya.

Read moreFlow Map Distribution System

Saturday, March 31, 2012

main program Multi LInked List

#include <stdio.h>
#include <stdlib.h>
#include "tp5.c"

int main()
{
    int pil;
    InfoParent x,cari;
    InfoChild y;
    char dump;
    List A;
    addressParent p;
    addressChild q;
    CreateList(&A);

    do
    {
        system("cls");
        printf("Menu Multi List\n");
        printf("1. Insert First\n");
        printf("2. Insert Child\n");
        printf("3. Delete Parent\n");
        printf("4. View\n");
        printf("5. Exit\n");
        printf("PILIHAN <1-5> : ");
        scanf("%d",&pil);
        scanf("%c",&dump);
        switch(pil)
        {
            case 1 :
                        printf("Masukan Parentnya : ");
                        scanf("%s",&x);
                        p=alokasiParent(x);
                        InsertFirstParent(&A,p);
                        break;
            case 2 :
                        printf("Masukan Parentnya : ");
                        scanf("%s",&cari);
                        p=search(A,cari);
                        if(first(A)==nil)
                        {
                            printf("List Kosong");
                        }
                            else
                            {
                                if(p==nil)
                                {
                                    printf("Parent tidak ada");
                                }
                                    else
                                    {
                                        printf("Masukan Childnya : ");
                                        scanf("%s",&y);
                                        q=alokasiChild(y);
                                        InsertFirstChild(&p,q);
                                    }
                            }
                        break;
            case 3 :
                        DeleteFirstParent(&A);
                        break;
            case 4 :
                        system("cls");
                        View(A);
                        break;
            case 5 :

                        printf("Terima Kasih");
                        break;
            default :
                        printf("Keyword Salah");
        }getche();
    }while(pil!=5);
    return 0;
}
Read moremain program Multi LInked List

. c Multi Linked List

#include "tp5.h"


addressParent alokasiParent(InfoParent x)
{
    addressParent p;
    p=(addressParent)malloc(sizeof(ElmtListparent));
    if(p!=nil)
    {
        strcpy(info(p),x);
        next(p)=nil;
        prev(p)=nil;
        child(p)=nil;
    }
        else
        {
            printf("Pengalokasian gagal");
        }
    return p;
}

addressChild alokasiChild(InfoChild x)
{
    addressChild q;
    q=(addressChild)malloc(sizeof(ElmtListchild));
    if(q!=nil)
    {
        strcpy(info(q),x);
        next(q)=nil;
        prev(q)=nil;
    }
        else
        {
            printf("Pengalokasian Gagal");
        }
    return q;
}

void CreateList(List *L)
{
    first(*L)=nil;
    last(*L)=nil;
}

void InsertFirstParent(List *L,addressParent P)
{
    if((first(*L)==nil)&&(last(*L)==nil))
    {
        first(*L)=P;
        last(*L)=P;
        printf("insert parent berhasil");
    }
        else
        {
            next(P)=first(*L);
            prev(first(*L))=P;
            first(*L)=P;
            printf("insert parent berhasil");
        }
}

void InsertFirstChild(addressParent *P, addressChild Q)
{

    if(child(*P)==nil)
    {
        child(*P)=Q;
        printf("Insert Child Berhasil");
    }
        else
        {
            next(Q)=child(*P);
            prev(child(*P))=Q;
            child(*P)=Q;
            printf("Insert Child Berhasil");
        }
}

void View(List L)
{
    addressParent p;
    addressChild q;
    if(first(L)==nil)
    {
        printf("Maaf List Kosong");
    }
        else
        {
            p=first(L);
            do
            {
                printf("Parentnya : %s\n",info(p));
                if(child(p)!=nil)
                {
                    q=child(p);
                    do
                    {
                        printf("   Childnya : %s\n",info(q));
                        q=next(q);
                    }while(q!=nil);
                }
                p=next(p);
            }while(p!=nil);
        }
}

addressParent search(List L, InfoParent x)
{
    addressParent p;
    p=first(L);
    if (first(L)==nil)
    {
        return nil;
    }
        else
        {
            while((next(p)!=nil)&&(strcmp(info(p),x)!=0))
            {
                p=next(p);
            }
            if(strcmp(info(p),x)==0)
            {
                return p;
            }
                else if((strcmp(info(p),x)!=0)&&(next(p)==nil))
                {
                    return nil;
                }
        }
}

void DeleteFirstParent(List *L)
{
    addressParent p;
    if(first(*L)==nil)
    {
        printf("List Kosong");
    }
        else
        {
            if(first(*L)==last(*L))
            {
                p=first(*L);
                first(*L)=nil;
                last(*L)=nil;
                child(p)=nil;
                free(p);
                free(child(p));
            }
                else
                {
                    p=first(*L);
                    first(*L)=next(p);
                    next(p)=nil;
                    prev(first(*L))=nil;
                    child(p)=nil;
                    free(p);
                    free(child(p));
                }
            printf("Data Berhasil Di hapus");
        }
}


Read more. c Multi Linked List

.h Multi Linked List

#ifndef TP5_H_INCLUDED
#define TP5_H_INCLUDED
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#define nil NULL
#define info(p) (p)->info
#define next(p) (p)->next
#define prev(p) (p)->prev
#define child(p) (p)->child
#define first(L) ((L).first)
#define last(L) ((L).last)

typedef char InfoParent[15];
typedef char InfoChild[15];

typedef struct tElmtParent *addressParent;
typedef struct tElmtChild *addressChild;
typedef struct tElmtParent
{
    InfoParent info;
    addressParent next;
    addressParent prev;
    addressChild child;
}ElmtListparent;

typedef struct tElmtChild
{
    InfoChild info;
    addressChild next;
    addressChild prev;
}ElmtListchild;

typedef struct
{
    addressParent first;
    addressParent last;
}List;

addressParent search(List L, InfoParent x);
int createInfoParent(InfoParent x);//memasukansuatuinputankesebuahInfotypeParent
int createInfoChild(InfoChild y);//memasukansuatuinputankesebuahInfotypeChild
addressParent ParentalokasiParent(InfoParent x);//mengalokasikan sebuah InfoParent kedalam sebuah AddressParent
addressChild ChildalokasiChild(InfoChild x);//mengalokasikan sebuah InfoChild kedalam sebuah AddressChild
void CreateList(List *L);//membuat list baru
void InsertFirstParent(List *L,addressParent P);//menambahkan Element P ke Element Pertama di List Parent
void InsertFirstChild(addressParent *P,addressChild Q); // );//menambahkan Element P ke Element Pertama di List Child
void DeleteFirstParent(List *L); // );//menghapus Element dari Element Pertama di List Parent
void View(List L);//menampilkan semua info pada List

#endif // TP5_H_INCLUDED
Read more.h Multi Linked List