Wednesday, August 27, 2008

Software Development Life Cycle Models

I was asked to put together this high-level and traditional software life cycle information as a favor for a friend of a friend, so I thought I might as well share it with everybody.

The General Model

Software life cycle models describe phases of the software cycle and the order in which those phases are executed. There are tons of models, and many companies adopt their own, but all have very similar patterns. The general, basic model is shown below:

Each phase produces deliverables required by the next phase in the life cycle. Requirements are translated into design. Code is produced during implementation that is driven by the design. Testing verifies the deliverable of the implementation phase against requirements.

Requirements

Business requirements are gathered in this phase. This phase is the main focus of the project managers and stake holders. Meetings with managers, stake holders and users are held in order to determine the requirements. Who is going to use the system? How will they use the system? What data should be input into the system? What data should be output by the system? These are general questions that get answered during a requirements gathering phase. This produces a nice big list of functionality that the system should provide, which describes functions the system should perform, business logic that processes data, what data is stored and used by the system, and how the user interface should work. The overall result is the system as a whole and how it performs, not how it is actually going to do it.

Design

The software system design is produced from the results of the requirements phase. Architects have the ball in their court during this phase and this is the phase in which their focus lies. This is where the details on how the system will work is produced. Architecture, including hardware and software, communication, software design (UML is produced here) are all part of the deliverables of a design phase.

Implementation

Code is produced from the deliverables of the design phase during implementation, and this is the longest phase of the software development life cycle. For a developer, this is the main focus of the life cycle because this is where the code is produced. Implementation my overlap with both the design and testing phases. Many tools exists (CASE tools) to actually automate the production of code using information gathered and produced during the design phase.

Testing

During testing, the implementation is tested against the requirements to make sure that the product is actually solving the needs addressed and gathered during the requirements phase. Unit tests and system/acceptance tests are done during this phase. Unit tests act on a specific component of the system, while system tests act on the system as a whole.

So in a nutshell, that is a very basic overview of the general software development life cycle model. Now lets delve into some of the traditional and widely used variations.

Waterfall Model

This is the most common and classic of life cycle models, also referred to as a linear-sequential life cycle model. It is very simple to understand and use. In a waterfall model, each phase must be completed in its entirety before the next phase can begin. At the end of each phase, a review takes place to determine if the project is on the right path and whether or not to continue or discard the project. Unlike what I mentioned in the general model, phases do not overlap in a waterfall model.

Advantages

  • Simple and easy to use.
  • Easy to manage due to the rigidity of the model – each phase has specific deliverables and a review process.
  • Phases are processed and completed one at a time.
  • Works well for smaller projects where requirements are very well understood.

Disadvantages

  • Adjusting scope during the life cycle can kill a project
  • No working software is produced until late during the life cycle.
  • High amounts of risk and uncertainty.
  • Poor model for complex and object-oriented projects.
  • Poor model for long and ongoing projects.
  • Poor model where requirements are at a moderate to high risk of changing.

V-Shaped Model

Just like the waterfall model, the V-Shaped life cycle is a sequential path of execution of processes. Each phase must be completed before the next phase begins. Testing is emphasized in this model more so than the waterfall model though. The testing procedures are developed early in the life cycle before any coding is done, during each of the phases preceding implementation.

Requirements begin the life cycle model just like the waterfall model. Before development is started, a system test plan is created. The test plan focuses on meeting the functionality specified in the requirements gathering.

The high-level design phase focuses on system architecture and design. An integration test plan is created in this phase as well in order to test the pieces of the software systems ability to work together.

The low-level design phase is where the actual software components are designed, and unit tests are created in this phase as well.

The implementation phase is, again, where all coding takes place. Once coding is complete, the path of execution continues up the right side of the V where the test plans developed earlier are now put to use.

Advantages

  • Simple and easy to use.
  • Each phase has specific deliverables.
  • Higher chance of success over the waterfall model due to the development of test plans early on during the life cycle.
  • Works well for small projects where requirements are easily understood.

Disadvantages

  • Very rigid, like the waterfall model.
  • Little flexibility and adjusting scope is difficult and expensive.
  • Software is developed during the implementation phase, so no early prototypes of the software are produced.
  • Model doesn’t provide a clear path for problems found during testing phases.

Incremental Model

The incremental model is an intuitive approach to the waterfall model. Multiple development cycles take place here, making the life cycle a “multi-waterfall” cycle. Cycles are divided up into smaller, more easily managed iterations. Each iteration passes through the requirements, design, implementation and testing phases.

A working version of software is produced during the first iteration, so you have working software early on during the software life cycle. Subsequent iterations build on the initial software produced during the first iteration.

Advantages

  • Generates working software quickly and early during the software life cycle.
  • More flexible – less costly to change scope and requirements.
  • Easier to test and debug during a smaller iteration.
  • Easier to manage risk because risky pieces are identified and handled during its iteration.
  • Each iteration is an easily managed milestone.

Disadvantages

  • Each phase of an iteration is rigid and do not overlap each other.
  • Problems may arise pertaining to system architecture because not all requirements are gathered up front for the entire software life cycle.

Spiral Model

The spiral model is similar to the incremental model, with more emphases placed on risk analysis. The spiral model has four phases: Planning, Risk Analysis, Engineering and Evaluation. A software project repeatedly passes through these phases in iterations (called Spirals in this model). The baseline spiral, starting in the planning phase, requirements are gathered and risk is assessed. Each subsequent spirals builds on the baseline spiral.

Requirements are gathered during the planning phase. In the risk analysis phase, a process is undertaken to identify risk and alternate solutions. A prototype is produced at the end of the risk analysis phase.

Software is produced in the engineering phase, along with testing at the end of the phase. The evaluation phase allows the customer to evaluate the output of the project to date before the project continues to the next spiral.

In the spiral model, the angular component represents progress, and the radius of the spiral represents cost.

Advantages

  • High amount of risk analysis
  • Good for large and mission-critical projects.
  • Software is produced early in the software life cycle.

Disadvantages

  • Can be a costly model to use.
  • Risk analysis requires highly specific expertise.
  • Project’s success is highly dependent on the risk analysis phase.
  • Doesn’t work well for smaller projects.

The Seven Pillars of Coffee Brewing Wisdom


1. Boiling causes bitterness, so never boil coffee.
It should be brewed between 90°C - 96°C.
2. Do not reheat coffee.
Make it fresh each time you serve it, and make only as much as you
plan to drink. Coffee holds its flavor best 86°C.
3. Use freshly drawn, cold water.
Water is 98 % of every cup; consider using a water filter or bottled
water if your water tastes peculiar.
4. Do not reuse grounds.
What remains are the unpleasant bitter component of the coffee.
5. Use the correct grind for your coffeemaker.
Too fine a grind will cause overextraction and bitterness, or clog your
brewer. Too coarse a grind will cause watery coffee.
For drip brewers, the appropriate grind should allow the coffee to
finish dripping in several minutes.
6. For the best results, we recommand using 10 g of ground coffee for
each 180 mL of water.

Keep these proportions consistent, regardless of the quantity you
make. To moderate your's coffee strength, simply add hot water after
brewing.
7. Coffee can be kept warm over a burner for only about 20 minutes
before the flavor becomes unpleasant.

An air pot or vacuum server will keep coffee hot and delicious for
much longer periods of time.


Note : For The Coffee Lover

Tuesday, August 26, 2008

Aristo Munandar Berdiri pada Sisi Rakyat

Di Sisi Rakyat

Aristo Munandar Berdiri pada Sisi Rakyat
Oleh H.St. Zaili Asril,

PU Padek Sebagian pejabat politik/pemerintah di daerah (pimpinan/anggota DPRD, gubernur dan bupati/walikota, dan sekretaris/kepala instansi teknis daerah) ternyata masih memiliki semangat/mindset dan pengambilan posisi serta pola/cara kerja rezim Orde Baru. Menyusun sendiri apa yang menurut pejabat baik dilakukan untuk rakyat, belum merealisasikan apa keinginan/harapan rakyat. Bupati Aristo Munandar mungkin termasuk di antara sedikit yang sudah reformis/demokratis/otonomis!?

SEMANGAT dan pengambilan posisi serta pola/cara kerja para pejabat politik/pemerintahan di daerah (gubernur dan bupati/walikota) dan pejabat politik (pimpinan/anggota DPRD) di era reformasi/demokratisasi dan otonomi daerah ini — paling tidak dalam pemahaman Cucu Magek Dirih, memang jauh berbeda dengan semangat dan pengambilan posisi serta pola/cara kerja di era rezim Orde Baru. Sebagian pimpinan/anggota DPRD dan kepala daerah/pejabatnya kelihatan sudah cenderung mengubah semangat dan pengambilan posisi serta pola/cara kerja mereka, tapi, sebagian lainnya masih melakukan dengan semangat/mindset dan pengambilan posisi serta pola/sara kerja Orde baru. Mungkin mereka tidak sepenuhnya menyadari dan tahu/mengerti apa yang salah/keliru— tidak tahu apa yang harus diubah!? Gubernur dan sebagian bupati/walikota masih membuat/menyusun sendiri kebijakan/regulasi dan mensosialisasikan. Tak dipertimbangkan kalau apa-apa kebijakan/regulasi yang dibuat/susun ternyata bukanlah harapan/keinginan rakyat/masyarakat — mereka yang terkait/terkena kebijakan/regulasi. Di masa rezim Orde Baru, pemerintah dan kepala daerah/pejabat (sekretaris daerah dan pimpinan instansi teknis) membuat/menyusun apa mereka sangka baik bagi rakyat/masyarakat. Rakyat/masyarakat mereka posisikan harus/dipaksa menerima bersih. Peduli apa, rakyat suka atau tidak/sesuai atau tidak. Yang dibuat demi rakayat!? Aspirasi hanya gonggongan — drama politik dimainkan. Menggonggonglah anjing/kafilan akan lewat — gonggong anjing hanya untuk memperindah drama politik!? Ada kepala daerah (gubernur dan bupati/walikota dan wali nagari) yang punya semangat/mindset dan berposisi serta bekerja reformis/demokratis/otonomis, tapi, sebagian pejabatnya (sebagian sekretaris daerah) masih belum berubah dan masih dengan semangat/mindset dan berposisi serta bekerja layak rezim Orde Baru!. Mereka memerintah/berkuasa daripada melayani/memfasilitasi dan mencerdaskan — walau mereka berpidato/berceramah/berwacana good local governance!? Seretaris daerah harus melayani/memfasilitasi/melancarkan hubungan kepala daerah dengan kepala dinas/badan/kantor dan sebaliknya, dan atau antara kepala daerah dengan rakyat/masyarakat dan sebaliknya — ada yang merasa jadi atasan kepala dinas/badan/kantor dan bahkan merasa “lebih menentukan” daripada kepala daerah! Saat menyampaikan orasi budaya/refleksi tahun 2006/2007 di Galanggang Hawa, nagari Lasi, kecamatan IV Angkat candung, kabupaten Agam — hampir ke puncak gunung Merapi, Minggu (31/12), dan bersama Bupati Agam Aristo Munandar — gubernur diwakili Kepala Biro Umum Yumler Lahar, pengurus dan anggota Persindo, dan masyarakat Lasi, Cucu Magek Dirih menyingung soal semangat/mindset dan pengambilan posisi serta pola/cara kerja sebagian pejabat politik/pemerintahan atau khsususnya kepala daerah dan para pejabat yang masih rezim Orde Baru tersebut. Cucu mengharapkan kepala/sekretaris daerah mengubah semangat/minset dan pengambilan posisi serta pola/cara kerja menjadi reformis/demokratis/otonomis. Karena, itu adalah konsekuensi logis dari reformasi/demokratisasi/otonomi daerah! Dalam konteks reformasi/demokratisasi/otonomi daerah, seharusnya kepala daerah dan pejabat pelayanan/fasilitasi serta kepala dinas/badan/kantor harus mengubah semangat/mindset dan pegambilan posisi serta pola/cara kerja mereka. Secara semangat/minset harus mengambil kebijakan/membuat regulasi mengacu kebutuhan/kepentingan rakyat. Mereka harus memandang dari posisi rakyat/masyarakat berada dan menjaring kehendak/harapan rakyat dengan mencer daskan dan merealisasikan. Pola/cara kerja kepala/sekretariat daerah dan kepala dinas/kantor/badan mestilah berbentuk/bersifat melayani dan memfasilitasi serta mencerdaskan rakyat/masyarakat. Mereka mutlak meninggalkan bentuk-bentuk/sifat-sifat/cara-cara berkuasa/memerintah, dan menyusun sendiri kebijakan/regulasi, baru kemudian mensosialisasikan. BUPATI Agam Aristo Munandar, mungkin termasuk sedikit kepala daerah yang sudah berubah semangat/mindset dan pengambilan posisi serta pola/cara kerjanya menjadi reformis/demokratis/otonomis. Merespon Cucu Magek Dirih di tengah sengatan hawa dingin pada detik-detik menjelang tahun 2007 itu, ia menceritakan bagaimana kodrat kepemimpinan selaku kepala daerah/bupati di kabupaten Agam — kepemimpinan Bupati Aristo dapat dinisbahkan berendah hati dan melayani serta mencermati keinginan/harapan rakyatnya — kemudian berusaha merealisasikan. Mungkin itu sebab ia terpilih secara langsung untuk periode ke-2 (2005-2010). Ia seorang pekerja keras dan mendatangi rakyatnya walau harus berjalan kaki berkilometer/mendaki bukit terjal. Ia menjadikan masjid pemberdayaan ekonomi kerakyatan/pengentasan keluarga miskin Secara gamblang Aristo menyebut kodratnya melayani kepentingan/memenuhi kebutuhan rakyat/masyarakat. Ia tahu memang demikian posisinya sebagai kepala daerah pilihan rakyat. Ia menceritakan, bagaimana ia selalu berada di sisi/memandang dari posisi rakyat/masyarakatnya. Dengan begitu, ia tahu apa yang menjadi harapan/keinginan rakyat/masyarakatnya. Memang adakala ia harus menecerdaskan dulu rakyat/masyarakatnya untuk memperjelas apa sesungguhnya yang menjadi harapan/kehendak rakyat/masyarakatnya. Ia pun berterusterang menjelaskan bahwa kemampuan/ketersediaan dana pemerintah sanat terbatas. Jadi, tidak semua harapan/kehendak rakyat/masyarakatnya dapat direalisasikan segera — dengan begitu rakyat/masyarakat jadi paham! Aristo menandaskan, untuk membuat pemerintah daerah kabupaten Agam mencapai progress/performance yang baik, harus terlebih dahulu memperkuat pemerintahan nagari — juga dengan melibatkan stake holders di nagari. Aristo membantu pemerintah nagari menyusun program pembangunan nagari dengan mendampingi mereka. Ia meminta stafnya (sekretariat daerah dan kepala dinas/kantor/badan/lembaga kabupaten) serta membahas dana untuk nagari bersama nagari/persatuan wali-wali nagari (Perwana). Agenda pemberdayaan ekonomi kerakyatan/pengentasan keluarga (KK) miskin menggunakan masjid sebagai sentra. Di masjid, kata Buoati Aristo, semua komponen masyarakat berkumpul. Tidak hanya pengurus, tapi, juga ninik-mamak/alimulama/cerdik pandai berkumpul — dengan semangat kekitaan/keberagamaan pula. Begitulah Aristo menyadari — mungkin sekaligus filosofi kepemimpian dalam masyarakat Minangkabau bahwa pemimpin didahulukan salangkah/ditinggikan sarantiang. Sebagai kepala daerah pilihan rakyat, ia adalah pemimpin di era reformasi/demokrasi/otonomi daerah, yang diharapkan mamou menjaring apa yang menjadi keinginan/harapan rakyatnya dan berusaha merealisasikannya secara bertahap. Ia menyadari kondratnya harus berdiri di sisi masyarakatnya dan memandang kebutuhan/kepentingan dan masalah serta perkembanan sebagaimana mayarakatnya memandang. Dari situ Aristo Munandar dapat merumuskan/memformulasikan tujuan/sasaran/target dan kebijakan/regulasi strategi/program/pendekatannya. Mungkin itu sebabnya, Aristo tidak hanya mendapat dukungan dari staf, tapi, terutama justeru dari masyarakatya. SUNGGUH, tidak mudah untuk mengubah semangat/mindset dan pengambilan posisi serta pola/cara kerja menjadi reformis/demokratis/otonomis karena kita memiliki pimpinan daerah/birokrasi yang sudah terlanjur terbentuk selama tiga dasawarsa dengan semangat/mindset dan pengambilan posisi serta pola/cara kerja rezim Orde baru. Harus ada sikap dan keberanian serta kejujuran pada diri sendiri untuk menyadari apa dan mana yang salah/keliru dalam penataan penyelenggaraan pemerintahan/pembangunan dan kesediaan mengubahnya — bukan tidak bisa! Apalagi perubahan tidak hanya sebatas wacana/retorika dan dalam kenyataan pejabat politik/pemerintahan daerah yang berbusa menyebut perubahan itu masih memiliki semangat/mindset dan pengambilan posisi serta poola/cara kerja masih rezim Orde Baru! Di Galanggang Hawa, nagari Lasi, kecamatan IV Angkek Canduang, kabupaten Agam, hampir ke puncak gunung Marapi, di antara desiran angin gunung yang dingin menjelang detik-detik pergantian tahun 2006 ke 2007, Bupati Aristo kelihatan inspiratif berbicara tentang kodrad pemerintahan daerah kabupaten agam di era reformasi/demokratisasi/otonomi daerah. Kelihatan ia sadar/yakin sepenuhnya akan posisi — dan influensi/konsekuensi/implikasi logis sebagai kepala daerah pilihan rakyat. Ia memang masih menyebut beberapa tantangan — kebelumsamaan persepsi penyelenggara pemerintahan/pembangunan, tapi, hal itu memang memerlukan kesabaran dalam proses perubahan/kesabaran membeli waktu. Bukankah, kalau perubahan dilakukan dengan cepat/keras, itu revolusi namanya!*** zailiasril@yahoo.com