Selasa, 04 Agustus 2009

Software Engineering

Introduction to Software Engineering


  • Evaluasi Software


  • Tentang Software

    • Karakteristik Software

    • Komponen Software

    • Aplikasi Software


  • Sejarah Software


  • Mengapa Software engineering?


  • Apa yang dimaksud software engineering?


  • Siapa yang melakukan software engineering?





Evolution of Software


-beberapa tahun lalu:

- Batch orientation

- Limited distribution

- Custom software

-era tahun ke -2:

- Multiuser

- Real-time

- Database

- Product software

-era tahun ke - 3:

- Distributed systems

- Embedded “intelligence”

- Low cost hardware

- Consumer impact

-era tahun ke - 4:

- Powerful desk-top systems

- Object-oriented technologies

- Expert systems

- Artificial neural networks

- Parallel computing

- Network computers


Karakteristik Software


  • Software memiliki fungsi ganda. Software dapat disebut sebagai produk, tetapi juga dapat disebut sebagai sarana yang dapat mengantarkan produk itu sendiri


  • Software bersifat logical dibanding elemen fisik dari sistem


  • Software memiliki beberapa karakteristik yang dapat membedakan dari hardware


  • Software dikembangkan atau dibangun, tetapi tidak menghasilkan classical sense


  • Banyak software yang sudah bisa digunakan secara langsung atau bersifat custom built, tetapi ada pula yang masih menggabungkan antar beberapa komponen.


Aplikasi Software


System Software - Kumpulan dari beberapa program yang dibuat untuk memberikan servis terhadap program lainnya pada setiap level. Contohnya : compiler, operating sistem


Real-time Software - Program yang dapat memonitor/menganalisa/mengontrol kejadian nyata yang terjadi di dunia ini


Business Software - Program yang dapat mengakses, menganalisa dan memproses informasi bisnis.


Engineering and Scientific Software - Software yang menggunakan algoritma “number crunching” untuk membedakan science dan applications. Sistem simulation, computer-aided design.


Embedded Software - Software terletak pada read only memory dan digunakan untuk mengontrol produk dan sistem yang akan dikirimkan untuk konsumen dan industrial markets.


Artificial Intelligence (AI) Software - program yang digunakan untuk teknik AI dan metodenya digunakan untuk memecahkan masalah yang kompleks. Contohnya : expert sistem, pengenalan pola, games.


Internet Software - program yang mensupport pengaksesan internet. Contohnya : search engine, browser, e-commerce software,authoring tools.


Software Tools and CASE environment - tools dan program yang dapat membantu pembuatan aplikasi software dan sistem.contohnya : test tools dan version control tools.


Software Crisis


Dalam dunia industri, ada istilah “crisis”


Arti : “Crisis”

Waktu yang menentukan atau krusial.



Software crisis

  • Sekumpulan masalah yang ditemui dalam membuat sofware

    • Masalah pengembangan software

    • Masalah dalam perawatan yang semakin banyak untuk software yang ada


Contoh ciri-ciri software “crisis” :

- Build a wrong product.

- Project schedule problems

- Cost estimation problems


Software Myths (I)


Banyak penyebab pada kegagalan software disebabkan oleh mitos yang timbul pada sejarah awal pengembangan software.

-- mitos software disebarkan dengan penjelasan yang salah dan membingungkan.

-- Manager software dibawah tekanan untuk menentukan anggaran, menyusun jadwal dan meningkatkan kualitas


Myths --> Pendirian yang menyesatkan orang ---> masalah serius dalam produksi software

Management Myths:


Kita cukup memiliki buku yang menyediakan standar dan prosedur untuk mengembangkan software. Tanpa perlu menyediakan orang untuk mempelajarinya.”


“Jika kita tidak menepati jadwal, kita dapat menambah programmer”


Software Myths (II)


Customers dari software mungkin berasal dari :

- di luar perusahaan yang telah merequest software dibawah kontrak

- seseorang yang berasal dari dalam (in house group)

- marketing atau sales group.


Customer Myths:


pernyataan umum adalah memulai dengan menulis program secukupnya kemudian kita dapat memberikan penjelasan dengan detail”


“project requirement secara langsung berubah, tetapi perubahan dengan mudah dapat ditampung karena software bersifat fleksibel”


Software Myths (III)


Pelaksana Software:

Planing group - System analysts, system architects

Development group - Software engineers

Verification group - Test engineers, quality assurance group

Support group - Customer supporters, technical supports

Marketing/sales - Marketing people and product sales


Practitioner’s Myths:


pertama kali kita menulis program dan kemudian mendapatkan pekerjaan, sehingga pekerjaan kita selesai”


sampai pada akhirnya program dapat di running, sampai benar-benar yakin bahwa program tidak ada cara untuk meningkatkan quality”


“software dapat diserahkan apabila telah berhasil (telah sukses)”


Major task dari pembuatan software adalah teknik penulisan program.


“Schedule dan requirement merupakan hal yang penting ketika kita menulis program”


What is Software Engineering?


Walaupun ratusan pengarang telah mengembangkan definisi tersendiri tentang software engineering, definisi ini diusulkan oleh Fritz Bauer[NAU 69] yang menyediakan basis :


[Software engineering adalah] prinsip yang digunakan pada sound engineering yang digunakan untuk mendapatkan software yang bersifat ekonomis dan dapat bekerja secara efisien pada real machines”


The IEEE [IEE93] telah mengembangkan definisi yang lebih lengkap dengan pernyataan :


Software Engineering : (1) aplikasi yang bersifat sistematik, disipilin dengan mendekati metode pengembangan, operasi, dan maintemaintenance dari software; (2) studi dengan pendekatan pada definisi nomor (1)”


Pressman’s view:

“Software engineering is a layered technology (Figure 2.1)”





Software methods:

Metode Software engineering menyediakan teknik “how to” untuk membangun software. Metode --> meliputi bagaimana menyelesaikan task :

- requirement analisis, design, coding, testing dan maintenance



Software process:

Proses Software engineering mendekatkan dengan :

- teknologi bersama

- memungkinkan secara rational dan pengenbangan secara bertahap

dari software komputer


Proses Software engineering merupakan set framework dari area key process.

Yang dibentuk dari basis untuk :

- project management, budget, dan schedule control

- teknik metode aplikasi

- kualitas produk control


Software tools:

  • Program menyediakan sistem otomatis atau semi otomatis untuk proses dan metode.

  • Program yang memberikan dukungan pada engineers untuk menyelesaikan

masing-masing task.


What is Software Engineering?
- A Generic View


Engineering --> analysis, design, construction, verification, and management

of technical (or social) entities.


Tiga phase dalam production software

- phase definition

- phase development

- phase maintenance


Phase definition : (dilakukan dalam tahap pendefinisian dan perencenaan dari software sistem)

Phase definition terfokus pada apa yang terjadi dalam software sistem.

- informasi apa yang harus diproses pada sistem?

- fungsi apa saja yang harus disediakan oleh sistem?

- performance sistem dan kriteria yang diperlukan oleh sistem?

- apa yang diperlukan pada sistem behavior?

- dengan cara apa requirement akan direpresentasikan?


Tiga tugas utama pada phase definisi :

- sistem atau informasi engineering]

- software project planning

- requirement analisis



Phase Development : (terjadi selama proses pengembangan dari software sistem)


Phase development terfokus pada bagaimana.

- bagaimana sistem menjadi terstruktur?

- bagaimana data-data yang ada menjadi terstruktur?

- bagaiman informasi dapat diproses?

- bagaimana fungsi dapat diimplementasikan?

- bagaiamana karakteristik dari interface?

- bagaimana design dapat menjadi lebih spesifik?

- bagaimana testing dapat ditunjukkan?


Terdapat tiga tipe task dari phase development :

- software design

- code generation, dan

- software testing


Phase maintenance : -> evaluasi dari produk software setelah sistem testing.

Phase maintenance mengulang kembali langkah-langkah pada phase definisi dan pengembangan


Phase development terfokus pada perubahan software sistem.


  • Error correction – apabila ini terjadi maka dilakukan perubahan software sehingga software menjadi benar.


  • Adaptation – memodifikasi software untuk mengakomodasi perubahan yang terjadi terhadap lingkungan.


  • Enhancement – mengembangkan software dengan melakukan penambahan fungsi-fungsi yang baru untuk customer/user.

-Prevention - preventive maintenance, called software reengineering.

dengan membuat perubahan pada software sehingga dapat lebih mudah dikoreksi, ditangani.


Why Software Engineering?


Objectives:


  • Mengidentifikasi masalah baru dan solusi dari produk software

  • Mempelajari sistematik metode terbaru, prinsip, pendekatan untuk sistem analisis, design, implementasi, testing, maintenance.

  • Menyediakan teknik kontrol terbaru, manage, dan monitor proses software

  • Membangun tools software terbaru dan environment untuk mendukung software engineering.




Major Goals:


  • Untuk meningkatkan produktivitas dan kualitas

  • Untuk meningkatkan efektivitas dari kontrol schedule software dan planning. --- Untuk mengurangi cost dari development proses

-Untuk memenuhi keinginan dan requirements dari customer.

-Untuk menangani konduksi dari proses software engineering.

-Untuk meningkatkan practice software engineering.

-Untuk memberikan dukungan pada engineers terhadap aktivitas yang sistematik dan lebih efisien.

3 komentar: