Arşivde ‘Bilgisayar++’ KategorisiKategori: Bilgisayar++ *(SEI: Software Engineering Institute, Yazılım Mühendisliği Enstitüsü) *(CMM-Capability Maturity Level, Yetenek Olgunluk Seviyesi) Proje yönetimi, gereksinimlerin yönetimi sürecinin verimliliğini ölçebilir. Bunun için şu ölçütler kullanılabilir: Her gereksinimin durumu, gereksinimlerin toplam kümülatif değişim sayısı, efor ve gereksinimlerin yönetiminde harcanan bütçe. Gereksinimlerin yönetimi sürecinin başarısızlığa uğraması direkt olarak proje yönetimini de etkileyeceği için detaylı bir �gereksinimlerin yönetimi planı� yapılmasında fayda vardır. AmaçlarYazılıma atanmış olan gereksinimleri, yazılım mühendisliği ve yönetim için bir temel referans olmaları için kontrol etmek.Yazılıma atanmış sistem gereksinimleri ile yazılım planları, ürünleri, aktiviteleri tutarlı tutabilmek. Bu amaçlara göre; 1 � Proje, yazılıma atanmış sistem gereksinimleri için yazılı ve kurumsal bir anlaşmayı takip etmelidir.
Gerekli YeteneklerYetenek �1 Her proje için sistem gereksinimlerini analiz etme ve bunları yazılım, donanım ve diğer sistem bileşenlerine dağıtma sorumluluğu tanımlanmaSistem gereksinilerinin analizi ve atamalarının yapılması yazılım mühendisliği grubunun sorumluluğu değildir fakat işleri için bir önkoşuldur. Sorumluluk şunları kapsar: 1. Gereksinimlerin yönetimi ve belgelendirilmesi ve bunların proje yaşam döngüsü boyunca dağıtımını yapma 2. Sistem gereksinimlerindeki değişiklikleri ve dağıtımlarını etkilemek, yönlendirme Yetenek � 2 Atanmış gereksinimleri belgeleme/raporlama, yazıya dönüştürmeAtanmış gereksinimler aşağıdakileri içerir: 1.Yazılım projesinin aktivitesini belirleyen teknik olmayan gereksinimler (anlaşmalar, koşullar, anlaşma ile ilgili terimler).
2.Yazılımın teknik gereksinimleri.
3.Yazılım ürünlerinin atanmış gereksinimleri karşılayıp karşılamadığını ölçmek için kullanılacak olan kabul edilebilirlik kriterleri. Yetenek � 3 Atanmış gereksinimler yönetiminin yapılabilmesi için kaynak ve bütçe sağlanması1. Uygulama alanında ve yazılım mühendisliğinde yeterli tecrübesi olan kişilerin gereksinimleri yönetmek için atanması. 2. Gereksinim yönetimi için gerekli olan araçların sağlanması. Örnek araçlar:
Yetenek 4 � Yazılım mühendisliği grubu üyeleri ve diğer yazılm ile ilgili grupların üyelerinin kendi gereksinim yönetim aktivitelerini yapabilmeleri için eğitimiÖrnek olarak:
Yapılacak AktivitelerAktivite � 1 Yazılım mühendisliği grubu tarafından, gereksinimler yazılım projesine geçirilmeden önce atanmış gereksinimleri inceleme1. Tamamlanmamış ve unutulmuş gereksinimler düzeltilir. 2.Atanmış gereksinimlerin:
3. Gereksinimleri atamaktan ve analiz etmekten sorumlu olan grup tarafından potansiyel olarak sorun teşkil edecek gereksinimler gözden geçirilir ve gerekli değişiklikler yapılır. 4. Atanmış gereksinimlerden etkilenen gruplar ile görüşmeler yapılır. Etkilenen grup örnekleri:
Aktivite � 2 Yazılım mühendisliği grubu, atanan gereksinimleri, yazılım planını, ürünü, aktiviteler için temel olarak kullanmakAtanmış gereksinimler: 1. Kontrol edilebilir, yönetilebilirdir. (Herhangi bir anda, ürünün hangi versiyonu olduğu bilinmektedir ve ne gibi değişiklikler yapıldığı bilinmektedir.) 2. Yazılım planı için referans olur 3. Yazılım gereksinimleri geliştirme için referans olur. Aktivite � 3 Atanmış gereksinimlere yapılan değişiklikler incelenir ve yazılım projesine dahil edilir.1. Kurum dışı gruplarla tayin edilen gereksinimler üst düzey yöneticiler tarafından gözden geçirilir, kurum içi gruplara tayin edilen gereksinimler etkilenen gruplar tarafından gözden geçirilir. 2. Atanmış gereksinimlerdeki değişikler yüzünden plan, ürün, aktivitelerde yapılması gereken değişiklikler
Ölçümleme & AnalizAtanmış gereksinimleri yönetmek için kullanılan aktivitelerin durumlarını belirlemek için ölçümlemeler kullanılırÖlçümleme örnekleri:
Gerçekleştirimde DoğrulamaDoğrulama � 1 Atanmış gereksinimlerin yönetimi, periyodik aralıklarla üst düzey yönetim tarafından kontrol edilirBelirli aralıklarla yapılan bu kontrollerin amacı yazılım sürecine belirli bir soyutlama ile bakarak yanlışlıkların farkında olmaktır. Kontroller arasındaki zaman, raporlamalar ve yeni gelişmeler için yeterli olmalıdır. Doğrulama �2 Atanmış gereksinimlerin yönetimi, periyodik ve olay-tabanlı olarak proje yöneticisi tarafından kontrol edilirDoğrulama � 3 Yazılım kalite güvence grubu iş ürünlerini ve diğer sonuçları kontrol ederBu kontroller aşağıdakileri doğrular: 1. Atanmış gereksinimlerdeki problemlerin, tutarsızlıkların yazılım mühendisliği grubu onları ele almadan önce çözülmesi 2. Atanmış gereksinimlerin değişiminde iş planlarının, ürünlerinin, aktivitelerinin doğru olarak gözden geçirilmesi
NEDEN GEREKSİNİMLERİN YÖNETİMİ?Bu soruyu verilecek en güzel yanıt şudur: �Tahminlerinizden çok, müşterinin istekleri doğrultusunda bir yazılım üretebilmek için�. Belirsizlik, tüm proje risklerinin kökünü oluşturur. Belirsizliğin büyük bir bölümünü de yetersiz gereksinimler analizi oluşturur. Gereksiz veya tekrarlanmış gereksinimler, projenin kapsamının, maliyetinin ne olacağının belirlenmesini engeller. Dahası, projeyi durdurma noktasına getirir. Gereksinimlerdeki eksikleri gidermek, tasarım sırasında 10 kat, gerçekleştirim sırasında ise 100 kat daha fazla maliyettedir. İyi Gereksinim Yönetimi Nedir?
Başarılı bir proje dikkatlice oluşturulmuş ve belgelendirilmiş gereksinimlerle başlar. İyi oluşturulmuş bir gereksinimlerin yönetimi süreci proje takımına tüm projeler boyunca yardımcı olur. GEREKSİNİMLERİN YÖNETİMİNDE KULLANILAN ARAÇLARAşağıda, gereksinim yönetiminde kullanılan araçları görmektesiniz. Şunu unutmayın ki, kullanılan araç ne kadar iyi olursa olsun, kötü belirlenmiş gereksinimleri yönetmek zordur, maliyeti arttırır, çizelgeyi aşmanıza sebep olur. İnternetteki GY Araçları: Active!Focus: www.xapware.com AnalystPro: analysttool.com/ Caliber-RM: www.borland.com/caliber/index.html C.A.R.E. 2.0: www.sophist.de Catalyze: www.chiaracorp.com/requirements.htm CORE: www.vtcorp.com Cradle: www.threesl.com DOORS: www2.telelogic.com/doors/index/cfm EasyRM: www.easy-rm.com/easyrm.php3 Focal Point: www.focalpoint.se IRqA (Integral Requisite Analyzer): www.irqaonline.com Mac A&D and Win A&D: www.excelsoftware.com Projectricity: www.projectricity.com/specification_tool.htm Prosareq Requirements Manager: www.prosa.fi/eng/pr2Req.htm Qualica QFD: qualica.de/english/requirements_mgmt.htm RDD-100: www.holagent.com/new/products/modules.html RDT: igatech.com/rdt/rdtwalkthrough.html Reconcile: compuware.com/products/reconcile.html Requirement Tracing System: www.bandwood.com/cms_exec_summary.htm Requirements Manager: toolforsystems.com/ Requisite Pro: www.rational.com/products/reqpro/index.jsp RMTrak: www.rmtrak.com RTM Workshop: www.chipware.com SLATE: www.eds.com/products/plm/teamcenter/slate SpeedReq: www.speedev.com Team-Trace: www.team-trace.com TrueReq: www.truereq.com Vital Link: www.complianceautomation.com XTie-Requirements Tracer: tbe.com/products/xtie Kaynaklar: Brackett, J.W. “Software Requirements.” Curriculum Module SEI-CM-19-1.2, Software Engineering Institute, Carnegie Mellon University, Pittsburgh, Pa., Jan 1990. This paper can be downloaded from the web at http://www.asset.com/WSRD/abstracts/ABSTRACT_1715.html. Romback, H. D. “Software Specification: A Framework.” Curriculum Module SEI-CM-11-2.1, Software Engineering Institute, Carnegie Mellon University, Pittsburgh, Pa., Jan. 1990. This paper can be downloaded from the web at http://www.asset.com/WSRD/abstracts/ABSTRACT_1709.html. McConnell, Steve “Software Project Survival Guide: How to Be Sure Your First Important Project Isn�t Your Last.” Redmond, WA: Microsoft Press, 1998. Jones, Do-While “Repeatable Software Development, Part I: Quality Assurance.” Software Developement, May 1995. Jones, Do-While “Repeatable Software Development, Part II: Configuration and Requirements Management.” Software Developement, June 1995. A Field Guide to Effective Requirements Management Under SEI�s Capability Maturity Model CMM Key Practices for Level 2 - Requirements Management LTInsights Managing Requirements for Successful Software Projects Requirements Management Policies and Procedures Requirements Management Using Tables Software Program Managers Network - 16 Critical Software Practices TM Kategori: Bilgisayar++ Bugünkü makalemizde, bir arayüzü uygulayan sınıf nesnelerinden faydalanarak, bir Sql tablosundan nasıl veri okuyacağımızı ve değişiklikleri veritabanına nasıl göndereceğimizi incelemeye çalışacağız. Geliştireceğimiz örnek, arayüzlerin nasıl oluşturulduğu ve bir sınıfa nasıl uygulandığını incelemekle yetinmeyecek, Sql veritabanımızdaki bir tablodaki belli bir kayda ait verilerin bu sınıf nesnelerine nasıl aktarılacağını da işleyecek. Kısacası uygulamamız, hem arayüzlerin hem sınıfların hemde Sql nesnelerinin kısa bir tekrarı olucak. Öncelikle uygulamamızın amacından bahsedelim. Uygulamamızı bir Windows uygulaması şeklinde geliştireceğiz. Kullanacağımız veri tablosunda arkadaşlarımızla ilgili bir kaç veriyi tutuyor olacağız. Kullanıcı, Windows formunda, bu tablodaki alanlar için Primary Key niteliği taşıyan bir ID değerini girerek, buna karşılık gelen tablo satırına ait verilerini elde edicek. İstediği değişiklikleri yaptıktan sonra ise bu değişiklikleri tekrar veritabanına gönderecek. Burada kullanacağımız teknik makalemizin esas amacı olucak. Bu kez veri tablosundan çekip aldığımız veri satırının programdaki eşdeğeri, oluşturacağımız sınıf nesnesi olucak. Bu sınıfımız ise, yazmış olduğumuz arayüzü uygulayan bir sınıf olucak. Veriler sınıf nesnesine, satırdaki her bir alan değeri, aynı isimli özelliğe denk gelicek şekilde yüklenecek. Yapılan değişiklikler yine bu sınıf nesnesinin özelliklerinin sahip olduğu değerlerin veri tablosuna gönderilmesi ile gerçekleştirilecek. Şekil 1. Form tasarımımız. Kullanıcı bilgilerini edinmek istediği kişinin ID�nosunu girdikten sonra, Getir başlıklı butona tıklayarak ilgili satırın tüm alanlarına ait verileri getirecek. Ayrıca, kullanıcı veriler üzerinde değişiklik yapabilecek ve bunlarıda Güncelle başlıklı butona tıklayarak Sql veritabanındaki tablomuza aktarabilecek. Sql veritabanında yer alan Kisiler isimli tablomuzun yapısı aşağıdaki gibidir. Şekil 2. Tablomuzun yapısı. Şimdi gelelim işin en önemli ve anahtar kısımlarına. Program kodlarımız. Öncelikle arayüzümüzü tasarlayalım. Arayüzümüz, sonra oluşturacağımız sınıf için bir rehber olucak. Sınıfımız, veri tablomuzdaki alanları birer özellik olarak taşıyacağına göre arayüzümüzde bu özellik tanımlarının yer alması gerektiğini söyleyebiliriz. Ayrıca ilgili kişiye ait verileri getirecek bir metodumuzda olmalıdır. Elbette bu arayüze başka amaçlar için üye tanımlamalarıda ekleyebiliriz. Bu konuda tek sınır bizim hayal gücümüz. İşin gerçeği bu makalemizde hayal gücümü biraz kısdım konunun daha fazla dağılmaması amacıyla
Şimdide bu arayüzümüzü uygulayacağımız sınıfımızı oluşturalım. Sınıfımız IKisi arayüzünde tanımlanan her üyeyi uygulamak zorundadır. Bu bildiğiniz gibi arayüzlerin bir özelliğidir.
Artık IKisi arayüzünü uygulayan, CKisi isimli bir sınıfımız var.Şimdi Formumuzun kodlarını yazmaya başlayabiliriz. Öncelikle module düzeyinde bir CKisi sınıf nesnesi tanımlayalım.
Bu nesnemiz veri tablosundan çektiğimiz veri satırına ait verileri taşıyacak. Kullanıcı Getir başlıklı button kontrolüne bastığında olucak olayları gerçekleştirecek kodları yazalım.
Şimdide Doldur metodumuzun kodlarını yazalım.
Evet görüldüğü gibi artık aradığımız kişiye ait verileri formumuzdaki kontrollere yükleyebiliyoruz. Şimdi TextBox kontrollerimizin TextChanged olaylarını kodlayacağız. Burada amacımız, TextBox�larda meydana gelen değişikliklerin anında, CKisi sınıfından türettiğimiz Kisi nesnesinin ilgili özelliklerine yansıtılabilmesi. Böylece yapılan değişiklikler anında nesnemize yansıyacak. Bu nedenle aşağıdaki kodları ekliyoruz.
Görüldüğü gibi kodlarımız gayet basit. Şimdi güncelleme işlemlerimizi gerçekleştireceğimiz kodları yazalım. Kullanıcımız, TextBox kontrollerinde yaptığı değişikliklerin veritabanınada yansıtılmasını istiyorsa Guncelle başlıklı button kontrolüne tıklayacaktır. İşte kodlarımız.
İşte uygulama kodlarımız bu kadar. Şimdi gelin uygulamamızı çalıştırıp deneyelim. Öncelikle KisiID değeri 1000 olan satıra ait verileri getirelim. Şekil 3. KisiID=1000 Kaydına ait veriler Kisi nesnemize yüklenir. Şimdi verilerde bir kaç değişiklik yapalım ve güncelleyelim. Ben Ad alanında yer alan “S.” değerini “Selim” olarak değiştirdim. Bu durum sonucunda yapılan değişikliklerin veritabanına yazılıp yazılmadığını ister programımızdan tekrar 1000 nolu satırı getirerek bakabiliriz istersekde Sql Server�dan direkt olarak bakabiliriz. İşte sonuçlar. Şekil 4. Güncelleme işleminin sonucu. |
Son Yorumlar
Kategoriler |