Tag Archives: রিদওয়ান বিন শামীম

অ্যাপ এম এল ক্লায়েন্ট (The AppML Client)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

পরবর্তী অধ্যায়গুলোতে আমরা ওয়েব ব্রাউজারে ওয়েব এপ্লিকেশন তৈরি করব।

 

অ্যাপ এম এল ক্লায়েন্ট

অ্যাপ এম এল ক্লায়েন্ট হল একধরনের জাভাস্ক্রিপ্ট যা যেকোনো ওয়েব ব্রাউজারে চলতে পারে।

এটি এক লাইনের কোডের মাধ্যমেই যেকোনো এইচটিএমএল পেজে যোগ করা যায়,


<scriptsrc="http://www.w3schools.com/appml/2.0.3/appml.js"></script>


 

অ্যাপ এম এল ক্লায়েন্ট এইচটিএমএল এট্রিবিউট ব্যবহার করে যেকোনো এইচটিএমএল উপাদানে এক্সটারনাল ডাটা যোগ করার সুবিধা দেয়।


<tableappml-data="customers.js">


 

 

এটির বিল্ট ইন একটি সুবিধা হল, এটি এইচটিএমএলের যেকোনো জায়গায় ডাটা প্রদর্শন করতে পারে।


<td>{{CustomerName}}</td>


 

 

{{ ... }} হল অ্যাপ এম এল ডাটার সংস্থাপন চিহ্ন।

 

এটির বিল্ট ইন আর একটি সুবিধা হল ডাটার ভেতর থাকা কোনও অ্যারি ব্যবহার করে এইচটিএমএলের উপাদানকে পুনরাবৃত্তি করা যায় ।


 <tr appml-repeat="records">
 ..
 .
 </tr>

 

 

অ্যাপ এম এল ক্লায়েন্ট সিএসএস বা এইচটিএমএলের সাথে কোনও সমস্যা করে না, এটি সিএসএসের সাথে ভাল সমন্বয় করতে পারে, আমরা উদাহরণে বুটস্ট্রেপ ব্যবহার করেছি।

 

অ্যাপ এম এল ওয়েব এপ্লিকেশন

অ্যাপ এম এল ওয়েব এপ্লিকেশন বানানোর জন্য খুবই উপযোগী, এর সবচেয়ে বড় গুন হল ব্রাউজারে ডাটাবেস সিআরইউডি এপ্লিকেশনসহ প্রোটোটাইপ বানানোর ক্ষমতা, এবং কোনও ওয়েব সার্ভারেরও দরকার হয় না।


সিআরইউডি বা CRUD: Create, Read, Update, Delete.


 

 

অ্যাপ এম এল সার্ভার

অ্যাপ এম এল দুটি সার্ভার টাইপ ব্যবহার করে, পিএইচপি ও ডটনেট।

অ্যাপ এম এল সার্ভার স্ক্রিপ্ট ব্যবহার করে এসকিউএল ডাটাবেসে যেমন মাইএসকিউএল ও এসকিউএল ডাটাবেসে প্রবেশ করা যায়। এই সার্ভার স্ক্রিপ্ট অত্যন্ত শক্তিশালী, যেকোনো পিএইচপি ও ডটনেট সার্ভারে ইন্সটল করা যায়।

 

অ্যাপ এম এল ওয়েব এসকিউএল

দ্রুত ওয়েব এপ্লিকেশন ডেভলাপমেন্ট ও প্রোটোটাইপিঙের জন্য অ্যাপ এম এল ওয়েব এসকিউএল ব্যবহার করে ব্রাউজারে ওয়েব সার্ভারকে নকল করতে পারে। ওয়েব এসকিউএল হল একধরণের ওয়েবপেজ এপিআই যা এসকিউএল ব্যবহার করে ব্রাউজারে ডাটা সংরক্ষণের কাজ করে। এই এপিআই গুগল ক্রোম, অপেরা, সাফারি ও এনড্রয়েড ব্রাউজারে সমর্থিত। শুধু ব্রাউজারে নিচের স্ক্রিপ্ট সংযোজন করতে হবে,


<scriptsrc="http://www.w3schools.com/appml/2.0.3/appml_sql.js"></script>


 

 

অ্যাপ এম এল কেস (AppML Cases)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

এই কেস স্টাডিগুলোর মাধ্যমে বোঝানোর চেষ্টা করা হবে কীভাবে অ্যাপ এম এল ব্যবহার করে ইন্টারনেট এপ্লিকেশন তৈরি করা যায়।

 

১ম পার্টঃ ইন্টারনেট ফাইলে ঢুকা

  • টেক্সট ফাইলে ঢুকা
  • এক্সএমএল ফাইলে ঢুকা
  • জেএসওএন ফাইলে ঢুকা

 

২য় পার্টঃ ইন্টারনেট ডাটাবেসে ঢুকাঃ

  • ডাটাবেস ডাটা লিস্টিং করা,
  • ডাটাবেস ডাটা ফিল্টারিং করা,
  • ডাটাবেস ডাটা এডিট করা।

 

অ্যাপ এম এল ব্রাউজার ও অ্যাপ এম এল সার্ভার

এই কেস স্টাডিতে, ব্রাউজার (appml.js) ও সার্ভার (appml.php) দুটিতেই অ্যাপ এম এল চলতে পারে।

 

পরবর্তী অধ্যায়গুলোতে জানা যাবে কিভাবে কোনও সার্ভারকে ব্রাউজারে নকল করা যাবে।

 

টেক্সট ফাইলে ঢুকা

টেক্সট ফাইলে ঢুকার জন্য আমরা যে ধরণের ফাইল ব্যবহার করি,

d_catalog.txt


 Empire Burlesque,Bob Dylan,USA,Columbia,10.90,1985
 Hide your heart,Bonnie Tyler,UK,CBS Records,9.90,1988
 Greatest Hits,Dolly Parton,USA,RCA,9.90,1982
 Still got the blues,Gary Moore,UK,Virgin records,10.20,1990

 

এক্সএমএল ফাইলে ঢুকা

এক্সএমএল ফাইলে ঢুকার জন্য আমরা যে ধরণের ফাইল ব্যবহার করি,

cd_catalog.xml


<?xml version="1.0" encoding="ISO-8859-1"?>
 <CATALOG>
 <CD>
   <TITLE>Empire Burlesque</TITLE>
   <ARTIST>Bob Dylan</ARTIST>
   <COUNTRY>USA</COUNTRY>
   <COMPANY>Columbia</COMPANY>
   <PRICE>10.90</PRICE>
   <PUBLISHED>1985</PUBLISHED>
 </CD>
 <CD>
   <TITLE>Hide your heart</TITLE>
   <ARTIST>Bonnie Tyler</ARTIST>
   <COUNTRY>UK</COUNTRY>
   <COMPANY>CBS Records</COMPANY>
   <PRICE>9.90</PRICE>
   <PUBLISHED>1988</PUBLISHED>
 </CD>


জেএসওএন ফাইলে ঢুকা

জেএসওএন ফাইলে ঢুকার জন্য আমরা যে ধরণের ফাইল ব্যবহার করি,

cd_catalog.js


{
 "cd" : [
 { "title" : "Empire Burlesque", "artist" : "Bob Dylan", "price" : "10.90" },
 { "title" : "Hide your heart", "artist" : "Bonnie Tyler", "price" : "9.90" },
 { "title" : "Greatest Hits", "artist" : "Dolly Parton", "price" : "9.90" },
 { "title" : "Still got the blues", "artist" : "Gary Moore", "price" : "10.20" },

ডাটাবেস

টেস্ট ডাটাবেস এধরনের অনেকগুলো টেবিল ব্যবহার করে,

কাস্টমার

গ্রাহক ঠিকানা শহর দেশ
Around the Horn 120 Hanover Sq. London UK
Berglunds snabbkjøp Berguvsvägen 8 Luleå Sweden
Blauer See Delikatessen Forsterstr. 57 Mannheim Germany
Blondel père et fils 24, place Kléber Strasbourg France
Bólido Comidas preparadas C/ Araquil, 67 Madrid Spain
Bottom-Dollar Markets 23 Tsawassen Blvd. Tsawassen Canada

 

সরবরাহকারী

সরবরাহকারী ঠিকানা শহর দেশ
Exotic Liquid 49 Gilbert St. London UK
New Orleans Cajun Delights P.O. Box 78934 New Orleans USA
Grandma Kelly's Homestead 707 Oxford Rd. Ann Arbor USA
Tokyo Traders 9-8 SekimaiMusashino-shi Tokyo Japan
Cooperativa de Quesos 'Las Cabras' Calle del Rosal 4 Oviedo Spain
Mayumi's 92 Setsuko Chuo-ku Osaka Japan
Pavlova, Ltd. 74 Rose St. Moonie Ponds Melbourne Australia
Specialty Biscuits, Ltd. 29 King's Way Manchester UK
PB Kn ckebr d AB Kaloadagatan 13 G teborg Sweden
Refrescos Americanas LTDA Av. das Americanas 12.890 S o Paulo Brazil

 

পণ্য

পণ্য প্রতি এককের মাপ একক মূল্য স্টকে একক
Chai 10 boxes x 20 bags 18 39
Chang 24 - 12 oz bottles 19 17
Aniseed Syrup 12 - 550 ml bottles 10 13
Chai 10 boxes x 20 bags 18 39
Chef Anton's Gumbo Mix 36 boxes 21 0
Grandma's Boysenberry Spread 12 - 8 oz jars 25 120
Uncle Bob's Organic Dried Pears 12 - 1 lb pkgs. 30 15
Northwoods Cranberry Sauce 12 - 12 oz jars 40 6
Mishi Kobe Niku 18 - 500 g pkgs. 97 29
Ikura 12 - 200 ml jars 31 31

 

 

অ্যাপ এম এল এপিআই (AppML API)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

অ্যাপ এম এল এপিআই অ্যাপ এম এল এর প্রক্রিয়া ও বৈশিষ্ট্য প্রকাশ করে থাকে।

 

প্রক্রিয়া ও বৈশিষ্ট্য দ্বারা কি কি সম্ভব?

প্রক্রিয়া ও বৈশিষ্ট্যের মাধ্যমে-

  • অ্যাপ এম এল এপ্লিকেশন তৈরি করা সম্ভব,
  • এপ্লিকেশনকে ডাটা দ্বারা সমৃদ্ধ করা সম্ভব,
  • ওয়েবপেজে ব্যবহারের জন্য এপ্লিকেশন ডাটা সন্ধান করা সম্ভব

 

উদাহরণঃ

new AppML() দ্বারা নতুন অ্যাপ এম এল অবজেক্ট তৈরি করা সম্ভব,

dataSource অ্যাপ এম এল অবজেক্টের ডাটা সোর্স নির্ণয় করে,

data.records ডাটা রেকর্ড সংরক্ষণ করে।

 

রেকর্ড সংরক্ষণ করে এইচটিএমএল উপাদানে অবজেক্ট দেখা সম্ভব।

উদাহরণ


// Create an AppML object and fetch the data
 obj = new AppML();
 obj.dataSource = "http://www.w3schools.com/appml/customers.php";
 obj.getData();
 
 // Locate the data records
 myArr = obj.data.records;
 len = myArr.length;
 
 // Display the records
 for (i = 0; i < myArr.length; i++) {
     txt += myArr[i].CustomerName + "<br>";
 }
 document.getElementById("demo").innerHTML = txt;

 

 

ফলাফলঃ


 Alfreds Futterkiste
 Berglunds snabbköp
 Centro comercial Moctezuma
 Ernst Handel
 FISSA Fabrica Inter. Salchichas S.A.
 Galería del gastrónomo
 Island Trading
 Königlich Essen
 Laughing Bacchus Wine Cellars
 Magazzini Alimentari Riuniti
 North/South
 Paris spécialités
 Rattlesnake Canyon Grocery
 Simons bistro
 The Big Cheese
 Vaffeljernet
 Wolski Zajazd

 

 

অ্যাপ এম এল এর কিছু প্রক্রিয়া

 

প্রক্রিয়া বর্ণনা
new AppML() নতুন AppML অবজেক্ট তৈরি করে
run() একটি এপ্লিকেশন অবজেক্ট রান করায়
appml("name") appml অবজেক্টকে নির্ধারিত নামসহ পুনরাবৃত্ত করে
displayMessage(text) নির্ধারিত ম্যাসেজ প্রদর্শন করে
setError(no, description) ভুল এবং ভুলের বিবরণ প্রদর্শন করে

 

অ্যাপ এম এল এর কিছু বৈশিষ্ট্য

বৈশিষ্ট্য বর্ণনা
appName আইডিসহ এপ্লিকেশনের নাম
container এপ্লিকেশনের কন্টেইনার উপাদান
controller এপ্লিকেশনের কন্ট্রোলার
data এপ্লিকেশনের ডাটা অবজেক্ট
dataSource এপ্লিকেশনের ডাটা সোর্স
message এপ্লিকেশন ম্যাসেজ

 

ডাটা অবজেক্টের কিছু বৈশিষ্ট্য

 

বৈশিষ্ট্য বর্ণনা
data.model এপ্লিকেশনের ডাটা মডেল
data.records এপ্লিকেশনের ডাটা রেকর্ড

 

অ্যাপ এম এল মডেল (AppML Models)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

অ্যাপ এম এল মডেল কোনও এপ্লিকেশনকে বিবৃত করে।

 

অ্যাপ এম এল মডেল আসলে কী

অ্যাপ এম এল মডেল একধরনের জাভাস্ক্রিপ্ট অবজেক্ট বা জেএসওএন, যা কোনও এপ্লিকেশনকে বিবৃত করে। একটি ছোট মডেল ডাটাবেস থেকে প্রাপ্ত তথ্যের ভিত্তিতে সম্পূর্ণ এপ্লিকেশনকে বিবৃত করতে পারে।


{
 "database" : {অ্যাপ এম এল
     "connection" : "localmysql",
     "sql" : "SELECT * FROM Customers"}
 }

 

 

অ্যাপ এম এল মডেল যা যা করতে পারে

অ্যাপ এম এল মডেলের কর্মপরিধির মধ্যে আছে,

 

  • মাইএসকিউএল, এসকিউএল সার্ভার, এক্সেস ও ওরাকলের মত ডাটাবেসের কানেকশন সংজ্ঞায়িত করা,
  • জেএসওএন, এক্সএমএল ও অন্যান্য টেক্সট ফাইলের কানেকশন সংজ্ঞায়িত করা,
  • ডাটাবেস থেকে প্রাপ্ত তথ্যের ভিত্তিতে এসকিউএল বিবৃতিকে সংজ্ঞায়িত করা,
  • ফিল্টারকে সংজ্ঞায়িত ও সীমাবদ্ধতাকে চিহ্নিত করা,
  • ডাটা টাইপ, ডাটা ফরম্যাট সংজ্ঞায়িত করা এবং সীমাবদ্ধতাকে আপডেট করা,
  • এপ্লিকেশনের নিরাপত্তা, ইউজার গ্রুপ ও ইউজার এসব সংজ্ঞায়িত করা ।

 

উদাহরণঃ ইউজারকে ডাটা ফিল্টার করার(সার্চ, সর্ট ইত্যাদি ) সুবিধা দেয়ার জন্য মডেলে ফিল্টার ইনফরমেশন যোগ করা যায়,

 


"filteritems" : [

     {"item" : "CustomerName", "label" : "Customer"},
     {"item" : "City"},
     {"item" : "Country"}
 ]

 

 

 

 

ইউজারকে ডাটা আপডেট করার সুবিধা দেয়ার জন্য মডেলে আপডেট ইনফরমেশন যোগ করা যায়,

 

 


"updateItems" : [
{"item" : "CustomerName"},
{"item" : "Address"},
{"item" : "PostalCode"},
{"item" : "City"},
{"item" : "Country"}
]


 

 

 

মডেল ছাড়া এপ্লিকেশন

আমাদের টিউটোরিয়ালের প্রথম দিকে যেসব এপ্লিকেশন ব্যবহার করা হয়েছে সেগুলোতে কোনও মডেল ব্যবহার করা হয়নি।

 

 

নোটঃ পরবর্তী অধ্যায়গুলোতে আমরা ডাটাবেস, পঠন, ফিল্টার এবং আপডেট ডাটা যা মডেলে বিবৃত হয়েছে, তা নিয়ে আরও আলোচনা করব।

 

 

 

 

 

অ্যাপ এম এল ম্যাসেজ (AppML Messages)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

অ্যাপ এম এল ম্যাসেজ এবং কার্যপ্রণালী

যখন অ্যাপ এম এল কোনও কাজ করতে যায় তখন এটি কন্ট্রোলারে একটি এপ্লিকেশন অবজেক্ট ($appml) পাঠায়। এপ্লিকেশন অবজেক্টের একটি বৈশিষ্ট্য হল ম্যাসেজ ($appml.message), যা এপ্লিকেশনের অবস্থা বর্ণনা করে। এই ম্যাসেজ পরীক্ষা করে কাজের ধরণ অনুযায়ী জাভাস্ক্রিপ্ট কোড ব্যবহার করা যায়।

উদাহরণ,


function myController($appml) {
     if ($appml.message == "ready") {alert ("Hello Application");}
 }

 

 

অ্যাপ এম এল এর ম্যাসেজ

অ্যাপ এম এল ম্যাসেজের তালিকাঃ

 

Message Description
"ready" অ্যাপ এম এল শুরুর পরে দেখায়, লোড করতে প্রস্তুত
"loaded" অ্যাপ এম এল লোডেড, ডাটা দেখাতে প্রস্তুত
"display" অ্যাপ এম এল কোনও ডাটা আইটেম দেখানোর আগে দেখায়।
"done" অ্যাপ এম এল সম্পন্ন হওয়ার পর দেখায়
"submit" অ্যাপ এম এল ডাটা সাবমিটের আগে দেখায়
"error" অ্যাপ এম এল কোনও ভুলের সম্মুখীন হলে দেখায়

 

 

"ready" ম্যাসেজ

অ্যাপ এম এল শুরুর পরে দেখায়, লোড করতে প্রস্তুত। ইনিশিয়াল ডাটার জন্য (শুরুর মান) আদর্শ ক্ষেত্র,

 

উদাহরনঃ


<div appml-controller="myController" appml-data="customers.js">
 <h1>Customers</h1>
 <p>{{today}}</p>
 <table>
   <tr>
     <th>Customer</th>
     <th>City</th>
     <th>Country</th>
   </tr>
   <tr appml-repeat="records">
     <td>{{CustomerName}}</td>
     <td>{{City}}</td>
     <td>{{Country}}</td>
   </tr>
 </table>
 <p>Copyright {{copyright}}</p>
 </div>
 
 <script>
 function myController($appml) {
     if ($appml.message == "ready") {
         $appml.today = new Date();
         $appml.copyright = "W3Schools"
     }
 }
 </script>

 

উপরের উদাহরণে $appml.message হল "ready", কন্ট্রোলার এপ্লিকেশনে দুটি বৈশিষ্ট্য যোগ করেছে, (today এবং copyright) । এপ্লিকেশন রান করলে নতুন দুটি বৈশিষ্ট্য কাজ করবে।

 

"loaded"ম্যাসেজঃ

অ্যাপ এম এল লোডেড, ডাটা দেখাতে প্রস্তুত এমন ক্ষেত্রে "loaded" ম্যাসেজ দেখায়,কোনও পরিবর্তনের প্রয়োজন থাকলে এই ধাপে তা করা ভাল।

উদাহরনঃ

function myController($appml) {
    if ($appml.message == "loaded") {
        // compute your values here before display
}
}

 

"display" ম্যাসেজ”

অ্যাপ এম এল কোনও ডাটা আইটেম দেখানোর আগে এই ম্যাসেজ দেখায়।আউটপুট মডিফাইয়ের জন্য এই ধাপ খুব ভাল।

 

উদাহরণঃ <div appml_app="myController" appml-data="customers.js">


<h1>Customers</h1>
 <table>
   <tr>
     <th>Customer</th>
     <th>City</th>
     <th>Country</th>
   </tr>
   <tr appml-repeat="records">
     <td>{{CustomerName}}</td>
     <td>{{City}}</td>
     <td>{{Country}}</td>
   </tr>
 </table>
 </div>
 
 <script>
 function myController($appml) {
     if ($appml.message == "display") {
         if ($appml.display.name == "CustomerName") {
             $appml.display.value = $appml.display.value.substr(0,15); 
         }
         if ($appml.display.name == "Country") {
             $appml.display.value = $appml.display.value.toUpperCase();
         }
     }
 }
 </script>

 

উপরের উদাহরণে "CustomerName" শব্দটিকে ১৫ অক্ষরে বিস্তারিত করা হয়েছে এবং "Country" শব্দটিকে বড় হাতের অক্ষরে পরিবর্তিত করা হয়েছে।

 

 

"done" ম্যাসেজ

অ্যাপ এম এল সম্পন্ন হওয়ার পর এই ম্যাসেজ দেখায়, এপ্লিকেশন ডাটা ক্লিন ও ক্যালকুলেট করার জন্য এই ধাপ খুব উপযোগী।

উদাহরণ,


<script>
 function myController($appml) {
     if ($appml.message == "done") {
         calculate data here
     }
 }
 </script>

 

 

 

 

"submit" ম্যাসেজ

অ্যাপ এম এল ডাটা সাবমিটের আগে দেখায়, এপ্লিকেশন ইনপুট শনাক্তকরণের জন্য উপযোগী।

উদাহরণ,


<script>
 function myController($appml) {
     if ($appml.message == "submit") {
         validate data here
     }
 }
 </script>

 

 

"error" ম্যাসেজ

অ্যাপ এম এল কোনও ভুলের সম্মুখীন হলে দেখায়, এই ধাপ ভুল সংশোধনের জন্য উপযোগী।

 

উদাহরণ,


<script>
 function myController($appml) {
     if ($appml.message == "error") {
         alert ($appml.error.number + " " + $appml.error.description)
     }
 }
 </script>

 

 

 

অ্যাপ এম এল এর বৈশিষ্ট্য

অ্যাপ এম এল এর কমন কিছু বৈশিষ্ট্য নিচের ছকে দেয়া হল,

 

Property Description
$appml.message এপ্লিকেশনের বর্তমান অবস্থা
$appml.display.name প্রদর্শনকরা হবে এমন ডাটা ফিল্ডের নাম
$appml.display.value প্রদর্শনকরা হবে এমন ডাটা ফিল্ডের মান
$appml.error.number ভুলের সংখ্যা
$appml.error.description ভুলের বিবরণ

 

 

 

অ্যাপ এম এল কন্ট্রোলার (AppML Controllers)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

অ্যাপ এম এল কন্ট্রোলারের উদ্দেশ্য হল এপ্লিকেশনকে নিয়ন্ত্রণ করা।

কন্ট্রোলার যা যা করতে পারেঃ

  • প্রারম্ভিক ডাটা সেট করা,
  • এপ্লিকেশন ডাটা পরিবর্তন করা,
  • ইনপুট এবং আউটপুট নিয়ন্ত্রণ করা,
  • ডাটা ভ্যালিডেট করা,
  • ডাটা সংক্ষেপ করা,
  • ভুলক্রুটি নিয়ন্ত্রণ,
  • এপ্লিকেশন শুরু ও শেষ করা,
  • আরও অনেক কিছু করা যায় এর দ্বারা।

 

 

কন্ট্রোলার ব্যতিত

অ্যাপ এম এল এপ্লিকেশন বাই ডিফল্ট কন্ট্রোলার ব্যতিত রান করে।

উদাহরণ,


<table appml-data="customers.js">
 <tr>
   <th>Customer</th>
   <th>City</th>
   <th>Country</th>
 </tr>
 <tr appml-repeat="records">
   <td>{{CustomerName}}</td>
   <td>{{City}}</td>
   <td>{{Country}}</td>
 </tr>
 </table>

 

 

 

কন্ট্রোলার সহ

জাভাস্ক্রিপ্টের সাহায্যে অ্যাপ এম এল এপ্লিকেশন কন্ট্রোলারসহ রান করানো যায়।

কন্ট্রোলার একটি জাভাস্ক্রিপ্ট ফাংশন যা আমরা প্রয়োগ করে থাকি।

appml-controller এট্রিবিউট দ্বারা প্রোগ্রামে কন্ট্রোলার ফাংশন বোঝানো হয়।

উদাহরণ,


<h1>Customers</h1>
 <table appml-data="customers.js" appml-controller="myController">
   <tr>
     <th>Customer</th>
     <th>City</th>
     <th>Country</th>
   </tr>
   <tr appml-repeat="records">
     <td>{{CustomerName}}</td>
     <td>{{City}}</td>
     <td>{{Country}}</td>
   </tr>
 </table>
 
 <script>
 function myController($appml) {
     if ($appml.message == "display") {
         if ($appml.display.name == "CustomerName") {
             $appml.display.value = $appml.display.value.toUpperCase();
         }
     }
 }
 </script>

 

উপরের উদাহরণে কন্ট্রোলার (myControlller), "CustomerName" কে আপারকেস অক্ষরে পরিবর্তিত করে দেখিয়েছে।

 

কন্ট্রোলার থাকলে অ্যাপ এম এল কন্ট্রোলারে এপ্লিকেশন অবজেক্ট ($appml) পাঠায়, অত্যন্ত গুরুত্বপূর্ণ কার্যক্রম সম্পাদনের জন্য। এপ্লিকেশনের একটি বৈশিষ্ট্য হল ম্যাসেজ ($appml.message), যা এপ্লিকেশনের অবস্থা প্রকাশ করে।

 

 

Message Description
"ready" অ্যাপ এম এল শুরুর পরে দেখায়, লোড করতে প্রস্তুত
"loaded" অ্যাপ এম এল লোডেড, ডাটা দেখাতে প্রস্তুত
"display" অ্যাপ এম এল কোনও ডাটা আইটেম দেখানোর আগে দেখায়।
"done" অ্যাপ এম এল সম্পন্ন হওয়ার পর দেখায়
"submit" অ্যাপ এম এল ডাটা সাবমিটের আগে দেখায়
"error" অ্যাপ এম এল কোনও ভুলের সম্মুখীন হলে দেখায়

 

পরবর্তী অধ্যায়গুলোতে পর্যায়ক্রমে ম্যাসেজের বিস্তারিত ব্যাখ্যা দেয়া হবে।

 

অ্যাপ এম এলঃ এইচটিএমএল অন্তর্ভুক্ত করা (AppML HTML Includes)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

এইচটিএমএলের ভেতর এইচটিএমএল অন্তর্ভুক্ত করা

এইচটিএমএল পেজের সর্বত্র একটি আদর্শ এইচটিএমএল ফুটার (HTML footer) অন্তর্ভুক্ত করা  হতে পারে এর আদর্শ উদাহরণ।

আদর্শ এইচটিএমএল ফুটারসমৃদ্ধ ফাইলের উদাহরণ নিচে দেয়া হল,

inc_footer.htm


 <hr style="margin-top:10px;">
 <p style="font-size:11px">2015&copy; W3Schools. All rights reserved.</p>
 <hr>

 

 

এখানে "inc_footer.htm" অন্তর্ভুক্তির জন্য appml-include-html এট্রিবিউট ব্যবহৃত হয়েছে।

উদাহরণঃ


<!DOCTYPE html>
 <html lang="en-US">
 
 <title>Customers</title>
 <link rel="stylesheet" href="style.css">
 <script src="http://www.w3schools.com/appml/2.0.3/appml.js"></script> 
 
 <body>
 
 <h1>Customers</h1>
 <table appml-data="customers.js">
 <tr>
     <th>Customer</th>
     <th>City</th>
     <th>Country</th>
 </tr>
 <tr appml-repeat="records">
     <td>{{CustomerName}}</td>
     <td>{{City}}</td>
     <td>{{Country}}</td>
 </tr>
 </table>
 
 <div appml-include-html="inc_footer.htm"></div>
 
 </body>
 </html>

 

 

অ্যাপ এম এল ডাটা (AppML Data)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

অ্যাপ এম এল এর প্রধান কাজ হল এইচটিএমএল পেজে ডাটা সরবরাহ করা।

অ্যাপ এম এল কে ডাটার সাথে সংযুক্ত করা

  • অ্যাপ এম এল চলক থেকে ডাটা প্রদর্শন করতে পারে,
  • অ্যাপ এম এল ফাইল থেকে ডাটা প্রদর্শন করতে পারে,
  • অ্যাপ এম এল ডাটাবেস থেকে ডাটা প্রদর্শন করতে পারে।

 

অ্যাপ এম এল জাভাস্ক্রিপ্ট অবজেক্ট ব্যবহার করলে

এইচটিএমএলকে ডাটা থেকে পৃথক রাখার একটি ভাল পদ্ধতি হল ডাটাকে জাভাস্ক্রিপ্ট অবজেক্টে সংরক্ষণ করা।

উদাহরণ,


 <table appml-data="dataObj">
 <tr>
    <th>Customer</th>
    <th>City</th>
    <th>Country</th>
 </tr>
 <tr appml-repeat="records">
    <td>{{CustomerName}}</td>
    <td>{{City}}</td>
    <td>{{Country}}</td>
 </tr>
 </table>
<script>
 var dataObj = {
 "records":[
 {"CustomerName":"Alfreds Futterkiste","City":"Berlin","Country":"Germany"},
 {"CustomerName":"Ana Trujillo Emparedados y helados","City":"México D.F.","Country":"Mexico"},
 {"CustomerName":"Antonio Moreno Taquería","City":"México D.F.","Country":"Mexico"},
 {"CustomerName":"Around the Horn","City":"London","Country":"UK"},
 {"CustomerName":"B's Beverages","City":"London","Country":"UK"},
 {"CustomerName":"Berglunds snabbköp","City":"Luleå","Country":"Sweden"},
 {"CustomerName":"Blauer See Delikatessen","City":"Mannheim","Country":"Germany"},
 {"CustomerName":"Blondel père et fils","City":"Strasbourg","Country":"France"},
 {"CustomerName":"Bólido Comidas preparadas","City":"Madrid","Country":"Spain"},
 {"CustomerName":"Bon app'","City":"Marseille","Country":"France"},
 {"CustomerName":"Bottom-Dollar Marketse","City":"Tsawassen","Country":"Canada"},
 {"CustomerName":"Cactus Comidas para llevar","City":"Buenos Aires","Country":"Argentina"},
 {"CustomerName":"Centro comercial Moctezuma","City":"México D.F.","Country":"Mexico"},
 {"CustomerName":"Chop-suey Chinese","City":"Bern","Country":"Switzerland"},
 {"CustomerName":"Comércio Mineiro","City":"São Paulo","Country":"Brazil"}
 ]};
</script>

 

 

অ্যাপ এম এল জেএসওএন ফাইল ব্যবহার করে

এইচটিএমএলকে ডাটা থেকে পৃথক রাখার আর একটি ভাল পদ্ধতি হল ডাটাকে জেএসওএন ফাইলে সংরক্ষণ করা।

customers.js


 {
 "records":[
 {"CustomerName":"Alfreds Futterkiste","City":"Berlin","Country":"Germany"},
 {"CustomerName":"Ana Trujillo Emparedados y helados","City":"México D.F.","Country":"Mexico"},
 {"CustomerName":"Antonio Moreno Taquería","City":"México D.F.","Country":"Mexico"},
 {"CustomerName":"Around the Horn","City":"London","Country":"UK"},
 {"CustomerName":"B's Beverages","City":"London","Country":"UK"},
 {"CustomerName":"Berglunds snabbköp","City":"Luleå","Country":"Sweden"},
 {"CustomerName":"Blauer See Delikatessen","City":"Mannheim","Country":"Germany"},
 {"CustomerName":"Blondel père et fils","City":"Strasbourg","Country":"France"},
 {"CustomerName":"Bólido Comidas preparadas","City":"Madrid","Country":"Spain"},
 {"CustomerName":"Bon app'","City":"Marseille","Country":"France"},
 {"CustomerName":"Bottom-Dollar Marketse","City":"Tsawassen","Country":"Canada"},
 {"CustomerName":"Cactus Comidas para llevar","City":"Buenos Aires","Country":"Argentina"},
 {"CustomerName":"Centro comercial Moctezuma","City":"México D.F.","Country":"Mexico"},
 {"CustomerName":"Chop-suey Chinese","City":"Bern","Country":"Switzerland"},
 {"CustomerName":"Comércio Mineiro","City":"São Paulo","Country":"Brazil"}
 ]
 }

 

 

অ্যাপ এম এল এর মাধ্যমে জেএসওএন ফাইলকে অ্যাপ এম এল ডাটা এট্রিবিউটে ডাটা সোর্স হিসেবে দেখানো যায়


 <table appml-data="customers.js">
 <tr>
    <th>Customer</th>
    <th>City</th>
    <th>Country</th>
 </tr>
 <tr appml-repeat="records">
    <td>{{CustomerName}}</td>
    <td>{{City}}</td>
    <td>{{Country}}</td>
 </tr>
 </table>

 

 

অ্যাপ এম এল ডাটাবেস ব্যবহার করে

ওয়েব সার্ভারের অল্প একটু সাহায্য নিয়ে এপ্লিকেশনকে এসকিউএল ডাটা দ্বারা পরিপুষ্ট করা যায়,

নিচের উদাহরণে মাইএসকিউএল ডাটাবেস থেকে ডাটা পড়তে পিএইচপির সাহায্য নেয়া হয়েছে।


<table appml-data="http://www.w3schools.com/appml/customers.php">
 <tr>
    <th>Customer</th>
    <th>City</th>
    <th>Country</th>
 </tr>
 <tr appml-repeat="records">
    <td>{{CustomerName}}</td>
    <td>{{City}}</td>
    <td>{{Country}}</td>
 </tr>
 </table>

 

 

নিচের উদাহরণে এসকিউএল সার্ভার ডাটাবেস থেকে ডাটা পড়তে ডটনেটের সাহায্য নেয়া হয়েছে।


 <table appml-data="http://www.w3schools.com/appml/customers.aspx">
 <tr>
    <th>Customer</th>
    <th>City</th>
    <th>Country</th>
 </tr>
 <tr appml-repeat="records">
    <td>{{CustomerName}}</td>
    <td>{{City}}</td>
    <td>{{Country}}</td>
 </tr>
 </table>

 

 

অ্যাপ এম এল এর কার্যকর ক্ষমতা

আমরা কার্যক্ষেত্রে অ্যাপ এম এল এর ক্ষমতা সম্পর্কে ধারণালাভ করতে শুরু করেছি,

অ্যাপ এম এল আমাদেরকে ডাটা, কন্ট্রোলার, মডেল ব্যবহার করতে দেয় যেসব ক্ষেত্রে,

  • সহজ এইচটিএমএল এপ্লিকেশন ডেভলাপমেন্টের ক্ষেত্রে,
  • সহজ মডেলিং, প্রোটোটাইপিং, ও টেস্টিঙের ক্ষেত্রে।

কোনও এইচটিএমএল পেজের ভেতর যত খুশি অ্যাপ এম এল এপ্লিকেশন রাখা যায়। অ্যাপ এম এল পেজের অন্য অংশের সাথে কোনও সম্পৃক্ততায়  যায় না। আমরা এক্ষেত্রে এইচটিএমএল, সিএসএস ও জাভাস্ক্রিপ্টের ব্যবহারে পরিপূর্ণ স্বাধীনতা পেতে পারি। পরিপূর্ণ সিআরইউডি(CRUD) এপ্লিকেশন ডেভলাপমেন্টের ক্ষেত্রেও অ্যাপ এম এল ব্যবহার করা যায়।

নোটঃ CRUD: Create, Read, Update, Delete

 

অ্যাপ এম এলঃ কীভাবে তৈরি করবেন? (AppML How To)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

অ্যাপ এম এল এপ্লিকেশন তৈরির দুটি সহজ ধাপ নিচে দেখানো হল,

1. HTML ও CSS ব্যবহার করে পেজ তৈরি করা

HTML


 <!DOCTYPE html>
 <html lang="en-US">
 <link rel="stylesheet" href="style.css">
 <title>Customers</title>
 <body>
 <h1>Customers</h1>
 <table>
   <tr>
   <th>Customer</th>
   <th>City</th>
   <th>Country</th>
   </tr>
   <tr>
   <td>{{CustomerName}}</td>
   <td>{{City}}</td>
   <td>{{Country}}</td>
   </tr>
 </table>
 </body>
 </html>

 

{{ }} চিহ্ন অ্যাপ এম এল ডাটার ধারকস্বরূপ।

 

CSS


body {
    font: 14px Verdana, sans-serif;
}
h1 {
    color: #996600;
}
table {
    width: 100%;
    border-collapse: collapse;
}
th, td {
    border: 1px solid grey;
    padding: 5px;
    text-align: left;
}
table tr:nth-child(odd) {
    background-color: #f1f1f1;
}

নোটঃ আমাদের ফেভারিট স্টাইলসিটের পরিবর্তে সিএসএস ব্যবহার করতে পারি।

 

2. অ্যাপ এম এল যোগ করা

নিজের ওয়েবপেজে অ্যাপ এম এল যোগ করার জন্য এই কোড ব্যবহার করা যায়,


<!DOCTYPE html>
<html lang="en-US">
<title>Customers</title>
<link rel="stylesheet" href="style.css">
<script src="http://www.w3schools.com/appml/2.0.3/appml.js"></script>
<body>
<h1>Customers</h1>
<table appml-data="customers.js">
<tr>
    <th>Customer</th>
    <th>City</th>
    <th>Country</th>
</tr>
<tr appml-repeat="records">
    <td>{{CustomerName}}</td>
    <td>{{City}}</td>
    <td>{{Country}}</td>
</tr>
</table>
</body>
</html>

 

 

অ্যাপ এম এল এর ব্যাখ্যাঃ <script src="http://www.w3schools.com/appml/2.0.3/appml.js">এর মাধ্যমে অ্যাপ এম এল কে পেজে সংযুক্ত করা যায়।

appml-data="customers.js" এর দ্বারা অ্যাপ এম এল ডাটাকে এইচটিএমএল এলিমেন্টের সাথ সংযুক্ত করা যায়। আমাদের উদাহরণে আমরা জেএসওএন ফাইল customers.js ব্যবহার করেছি।

appml-repeat="records" দ্বারা প্রতিটি আইটেমের জন্য এইচটিএমএল এলিমেন্ট রিপিট করা সম্ভব হয়েছে।

{{ }} চিহ্ন অ্যাপ এম এল উপাদান বোঝাতে ব্যবহৃত হয়েছে।

 

অ্যাপ এম এল টিউটোরিয়াল (AppML Tutorial)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

অ্যাপ এম এল কি?

এপ্লিকেশন মডেলিং ল্যাঙ্গুয়েজকে অ্যাপ এম এল দ্বারা প্রকাশ করা হয়। অ্যাপ এম এল যেকোনো এইচটিএমএল পেজে চলতে পারে, কোনও ইন্সটলেশনের প্রয়োজন নেই। অ্যাপ এম এল কয়েকটি মাধ্যম থেকে ডাটা এইচটিএমএল পেজে আনতে ব্যবহৃত হয়,

  • অবজেক্ট থেকে
  • ফাইল থেকে
  • ডাটাবেস থেকে

অ্যাপ এম এল কেন?

স্ট্যাটিক ডকুমেন্ট বিবৃত করতে এইচটিএমএল বিশেষ উপযোগী। কিন্তু ওয়েব এপ্লিকেশন বিবৃত করার জন্য এটি খুব একটি উপযুক্ত নয়। একাজের জন্যই অ্যাপ এম এল এর সৃষ্টি। এটি

  • এইচটিএমএলকে ডাটা এট্রিবিউটের সাহায্যে প্রসারিত করে
  • এইচটিএমএলে কন্ট্রোলার যোগ করে এইচটিএমএল ডাটার আচরণ কন্ট্রোল করে

অ্যাপ এম এল বোঝা খুব সহজ এবং এটি ডেভলাপ করাও বিশেষভাবে সহজ।

অ্যাপ এম এল এর উদাহরণ

নিচের উদাহরণে দেখানো হয়েছে অ্যাপ এম এল কীভাবে এইচটিএমএলে কাজ করে থাকে,


 

<!DOCTYPE html>
<html lang="en-US">
<title>Customers</title>
<link rel="stylesheet" href="style.css">
<script src="http://www.w3schools.com/appml/2.0.3/appml.js"></script>
<body>
<h1>Customers</h1>
<table appml-data="customers.js">
<tr>
   <th>Customer</th>
   <th>City</th>
   <th>Country</th>
</tr>
<tr appml-repeat="records">
   <td>{{CustomerName}}</td>
   <td>{{City}}</td>
   <td>{{Country}}</td>
</tr>
</table>
</body>
</html>

 

নোটঃ AppML, সহজ, দ্রুত, এবং চটপটে ওয়েব এপ্লিকেশন ডেভেলপমেন্ট এর জন্য একটি টুল।

সহজ এবং কর্মতৎপর

বর্তমান বাজারে অনেক ফ্রেমওয়ার্ক(টুল ও লাইব্রেরী) আছে, তাদের বেশিরভাগই এইচটিএমএল,সিএসএস ও জাভাস্ক্রিপ্টকে এমনভাবে ব্যবহার করে যা তাদের ব্যবহারকে কঠিন করে ফেলে, বিশেষ করে সমন্বিত ব্যবহারের ক্ষেত্রে। অ্যাপ এম এল এদের থেকে ভিন্ন। অ্যাপ এম এল ব্যবহারে এইচটিএমএল,সিএসএস ও জাভাস্ক্রিপ্ট ব্যবহারের ক্ষেত্রে স্বাধীনতা পাওয়া যায়।

অ্যাপ এম এল সিঙ্গেল পেজ এপ্লিকেশন(এসপিএ) তৈরির পদ্ধতিকে সহজ ও কার্যকর করেছে। এমনকি কেউ যদি আগে ওয়েব ডেভলাপমেন্ট না করে থাকে তার কাছেও অ্যাপ এম এল ব্যবহার অনেক সহজ হবে। কেউ যদি আগে থেকে দক্ষ ওয়েব ডেভলাপার হয়ে থাকেন তবে তিনি দ্রুত অ্যাপ এম এল এর উপযোগিতা সম্পর্কে বুঝতে পারবেন।

 

মানসিক চাপ নিয়ন্ত্রণ ও ব্যবস্থাপনাঃ Stress Management for Professionals

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

কর্মজীবনে সফলতা যখন আসে, তখন প্রতি ধাপে পদোন্নতি ও বেতন বৃদ্ধির সাথে সাথে অনেক গুন বেশি বাড়ে দায়িত্ব, যা ব্যক্তিজীবন ও কর্মজীবনে অনেক চাপের সৃষ্টি করতে পারে। চাপ মুক্তির কোন গাণিতিক সূত্র নেই বা মোটা কোন বই পড়েও এই চাপ এড়ানো শেখা সম্ভব না, তবে একটি উপায়ের কথা বলতে পারি, অকপট যোগাযোগ ও শেয়ারিঙের মাধ্যমে কিছু কিছু চাপ থেকে উদ্ধার পাওয়া সম্ভব।

চাপের প্রধান কারণগুলো শনাক্ত করা যাক

আপনি যদি একজন সফটওয়ার সংশ্লিষ্ট পেশাজীবী হন, আপনি জেনে থাকবেন কীভাবে ক্রুটি সরিয়ে(debug) কোন সমস্যা সমাধান করা যায়। চাপও তেমনি একধরণের সমস্যা যার ক্রুটি সরিয়ে সমাধান করতে হবে। বের করতে হবে কেন এটি আপনার সামনে এসেছে এবং এর মূল কারণ কী? দৈনন্দিন জীবনে চাপের কারণ হতে পারে এমন কয়েকটি সম্ভবনা নিয়ে আলোচনা করা যাক,

  • কাজের চাপ এত বেশি যে ভালভাবে নিয়ন্ত্রণ করা যাচ্ছে না
  • কোন একটি এসাইনমেন্ট আপনাকে দেয়া হয়েছে, সেটি জমা দেবার সময় প্রায় শেষ কিন্তু কাজ অনেকটাই রয়ে গেছে
  • আপনার কাজের মধ্যে কোনটি করতে হবে আর কীভাবে, সেটি বুঝতে পারছেন না
  • আপনি একটি কোডের কাজ করেছেন, সেটি কোনোভাবে ডিলিট হয়ে গেছে, বা চূড়ান্ত মুহূর্তে ঠিকমত কাজ করছে না
  • আপনি একটি টিমের লিডার, টিমের সফলতা তেমন ভাল নয়, আর সেকারণে উৎপাদনে বিলম্ব হচ্ছে
  • উৎপাদনের জন্য যথেষ্ট সময় আছে কিন্তু আপনি এরই মাঝে কোথাও ভ্রমনের চিন্তা করছেন, সেজন্য উৎপাদনে দেরি হতে পারে বলে ভাবছেন

যোগাযোগ, যোগাযোগ এবং... শুধুই যোগাযোগ

পেশাগত দক্ষতায় সমাধান করতে পারলে কোন সমস্যাই আসলে সমস্যা থাকে না। উপরের যেকোন সমস্যা, ধরা যাক প্রথম সমস্যাটিই, আপনি কাজের চাপ সামলিয়ে অফিস আওয়ারে সব কাজ শেষ করতে পারছেন না।

আপনার ম্যানেজারের সাথে ছোট একটি মীটিং করতে পারেন,তাঁর সামনে সব বিষয় তুলে ধরতে পারেন, আপনার বর্তমান এসাইনমেন্ট, কাজের যে জায়গাটা বেশি সংকীর্ণ বা কেন আপনি বেশি চাপ অনুভব করছেন এসব খুলে বলতে পারেন। আপনি আরেকটু সময় বা অল্প রিসোর্স তাঁর কাছে চাইতে পারেন। অবশ্যই আপনার ম্যানেজার শুনবেন ও বোঝার চেষ্টা করবেন, যদি তিনি আপনার কাছ থেকে ভাল কাজ আশা করে থাকেন। আপনাকে একটু প্ল্যান করে নিতে হবে কীভাবে আপনি আপনার বসকে কনভিন্স করবেন, আপনার কথা তাঁকে বিশ্বাস করাতে পারবেন।

উপরের যেকোনো সমস্যা একইভাবেই সমাধান করা সম্ভব, ম্যানেজারের সাথে কথা বলে। যদি সেটি সম্ভব নাও হয় তবে একটি উপায় হল, অনেক সংস্থাই তাদের কর্মীদের জন্য কর্তৃপক্ষের সাথে এজাতীয় সমস্যায় আলোচনা করার সুবিধা রেখে থাকে। অর্থাৎ ম্যানেজারের সাথে কথা বলে সমাধান না হলে উপরের লেভেলে কথা বলে দেখা যেতে পারে। তবে এটি অত্যন্ত সতর্কতার দাবিদার একটি বিষয় কারণ কোন ম্যানেজারই তাঁকে অতিক্রম করে কর্মীর উপরের লেভেলে কথা বলাটাকে ভাল চোখে দেখবেন না। তবু কোন সমাধান না পাওয়া গেলে সেটি শেষ চেষ্টা হিসেবে মাথায় রাখা যায়।

আরেকটি গুরুত্বপূর্ণ বিষয় হল গুরুত্ব অনুসারে কাজ সাজানোতে দুর্বলতা। এসমস্যা থাকলে ম্যানেজারের সাথে কথা বলে উপযুক্ত ক্রমানুসারে কাজগুলোকে সাজিয়ে চাপ কমাতে চেষ্টা করা উচিৎ। অফিস আওয়ারের পরে বা উইকএন্ডের সময় কিছু সময় দেয়ার চেষ্টাও করা যেতে পারে।

ব্যক্তিজীবন বনাম কর্মজীবন

ব্যক্তিগত কারণে কর্মক্ষেত্রে সমস্যা হচ্ছে কিনা তা বোঝার চেষ্টা করুন। ব্যক্তিগত সমস্যা সমাধানে পরিবার সবচেয়ে বেশি সাহায্য করতে পারবে। ব্যক্তিগত সমস্যা পরিবারের সদস্য বা ঘনিষ্ঠজন, স্বামী বা স্ত্রী এঁদের সাথে আলাপ আলোচনা করে সমাধান করা যেতে পারে। সমাধানের চেষ্টা ব্যর্থ হলে ম্যানেজারের সাথে কথা বলে কিছুদিনের জন্য কাজ থেকে ছুটি নিয়ে ব্যক্তিগত বা ব্যক্তিগত সমস্যা মিটিয়ে পরে আবার কাজে যোগ দিতে পারেন।

চাপ স্বল্পকালীন হতে পারে

কাজের চাপ একটু বেশি হলে বা সময়সীমা একটু অতিক্রম করলেই চিন্তিত হতে হবে এমনটি ঠিক না, এগুলোকে আমাদের দৈনন্দিন জীবনের অংশ ধরেই এগুতে হবে। একটু বেশি সময় দিয়ে, কারো কাছ থেকে কাজের ব্যপারে একটু সাহায্য নিয়ে বা ম্যানেজারের একটু কথা শুনার জন্য রেডি থাকলেই চাপ এড়িয়ে চলা সম্ভব।

সমস্যা যেন ফিরে ফিরে না আসে অথবা আমরা যেন বারবার একই সমস্যায় না পরি, যদি এমন হয়ই, তাহলে অবশ্যই সমাধান খুঁজে বের করাটা জরুরী হয়ে দাঁড়াবে।

নিচের কোনও পদ্ধতি আপনার জন্য উপযুক্ত কিনা তা দেখুন

  • স্বল্প ব্যায়াম
  • বিভিন্ন মাত্রার যোগব্যায়াম ও মেডিটেশন
  • সকালে হাঁটা
  • বিকালে ছবি দেখা
  • বন্ধুবান্ধব, পরিবার, স্ত্রী বা স্বামী, সন্তানদের সাথে কিছু সময় কাটানো
  • কর্মক্ষেত্রে একটানা বসে না থেকে কিছু সময় পরপর উঠে হাঁটা, কফি পান, নেট ব্রাউজিং বা পত্রিকা, ম্যাগাজিন এসব পড়া ভাল, এতে চাপ কমে

শেষ কথা হল, নীরব থেকে নিজের ভেতরে আগ্নেয়গিরির মত চাপ জমিয়ে রাখা উচিৎ নয় কারণ এটি কখনো কখনো বড় ক্ষতির কারণ হতে পারে। যোগাযোগ বাড়ানো, নিজের ক্ষেত্রে স্বচ্ছ ও সৎ হওয়া উচিৎ। মনে রাখতে হবে, চাপ বেড়ে গেলে কাজের উৎপাদনশীলতা কমে যাবে অপ্রত্যাশিতভাবে। তাই নিজেকে সবসময় সুস্বাস্থ্যের অধিকারী, সুখী ও কর্মক্ষম রাখার চেষ্টা করা উচিৎ।

 

স্ক্রাম সফটওয়্যার ব্যবস্থাপনা পদ্ধতি । Scrum Software Management

Huge Sell on Popular Electronics

স্ক্রাম: সারসংক্ষেপ

রিদওয়ান বিন শামীম

Please also check in Word document (with pictures) at: http://salearningschool.com/training_slides/software_engineering/scrum.doc

 

স্ক্রাম সারসংক্ষেপঃ এজাইল সফটওয়ার ডেভলাপমেন্ট খাতে খুব বড় আঙ্গিকের শব্দ এখন, কিন্তু এই এজাইল  ডেভলাপমেন্ট ব্যপারটি ঠিক কী? সহজভাবে বলতে গেলে, সফটওয়ার ডেভলাপমেন্ট টিম ও প্রকল্পকে ভিন্নভাবে সম্পাদনের একটি প্রক্রিয়াই এজাইল।

 

এক্ষেত্রে নতুন কি আছে তা বুঝতে হলে বিদ্যমান পদ্ধতি কি তা পর্যালোচনা করতে হবে। গতানুগতিক সফটওয়ার ডেভলাপমেন্ট পদ্ধতিতে ডেভলাপমেন্ট প্রক্রিয়ার আগে সফটওয়ারের রিকোয়ারমেন্ট ঠিক করা হয়।

 

ওয়াটারফল মডেলঃ সচরাচর সবচেয়ে বেশি প্রয়োগ করা সফটওয়ার ডেভলাপমেন্ট মডেল নিচের ডায়াগ্রামে দেখানো হল, অবশ্য বেশিরভাগ ক্ষেত্রে নতুন ফাংশনালিটি যোগ হতে পারে, প্রারম্ভিক রিকোয়ারমেন্টও ভিন্ন হতে পারে। ওয়াটারফল মডেলে পরিবর্তনের সেই ক্রমধারা দেখানো হয়না, পণ্যটি সম্পূর্ণভাবে গ্রাহকের হাতে না আসা পর্যন্ত পরিবর্তনের পরিপূর্ণ বিবরণ লাভ গ্রাহকের পক্ষে সম্ভব না।

 

ইটারেক্টিভ ইনক্রিমেন্ট মডেলঃ ইটারেক্টিভ ইনক্রিমেন্ট মডেলে ডেভলাপমেন্ট প্রক্রিয়া অল্প কিছু নির্বাচিত ও বিশেষায়িত রিকোয়ারমেন্ট সামনে রেখে শুরু হয়। সরবরাহযোগ্যতা পণ্যের কার্যকর পরিবর্ধন। রিকোয়ারমেন্ট থেকে কোডিং পর্যন্ত কিছু কাজের সমষ্টিকে ইটারেশন বলে।  ইনক্রিমেন্টের ফাংশনালিটি এবং নতুন রিকোয়ারমেন্টের নতুন কোনো একটি বা সবগুলোর উপর ভিত্তি করে পর্যায়ক্রমিক ইটারেশন নির্ধারিত হয়, পর্যায়ক্রমিক ইটারেশনের ফলস্বরূপ পণ্যের কার্যকর পরিবর্ধন সমন্বিত হয়। কাঙ্খিত রিকোয়ারমেন্ট ফাংশনালিটি অর্জনের আগপর্যন্ত এটি পুনরাবৃত্ত করা হয়।

 

ব্যবহারকারী সাধারণত ডেভলাপমেন্ট প্রক্রিয়ার সাথে যুক্ত থাকেন না যার ফলে কমুনিকেশন গ্যাপ তৈরি হতে পারে, যা ভুল ফাংশনালিটিরও কারণ হতে পারে। যুক্ত থাকলে সেটি ডেভলাপমেন্ট টিমের জন্য ভাল হত, কিন্তু তা সময়সাপেক্ষ এবং যেকারণে দীর্ঘসূত্রিতা ঘটাতে পারে। কোন ইটারেশনের সময় কোন ইনফরমাল রিকোয়ারমেন্ট দ্বিধা ও সংশয়ের সৃষ্টি করতে পারে। এসব পরিস্থিতির জন্য এজাইল সফটওয়ার ডেভলাপমেন্ট প্রক্রিয়ার সৃষ্টি

 

এজাইল সফটওয়ার ডেভলাপমেন্টঃ এজাইল সফটওয়ার ডেভলাপমেন্ট ইটারেক্টিভ ইনক্রিমেন্ট ডেভলাপমেন্টের উপর ভিত্তি করে গড়ে উঠেছে, যার মধ্যে রিকোয়ারমেন্ট এবং তাদের সমাধান দলগত সমন্বয়ে গড়ে উঠে, এটি একটি টাইমবক্স ইটারেক্টিভ প্রবণতা নির্দেশ করে এবং পরিবর্তনের প্রতি দ্রুত ও স্থিতিস্থাপক প্রতিক্রিয়া দেখায়। এটি একটি তাত্ত্বিক পরিকাঠামো এবং ডেভলাপারদের ব্যবহারোপযোগী নির্দিষ্ট কোন ব্যবহারিক দিক দেখাতে পারে না। স্ক্রাম হল নির্দিষ্ট এজাইল পরিকাঠামো যার দ্বারা ব্যবহারিক দিক অনুসরণ করা যায়।

 

পূর্ববর্তী যে ক্ষেত্রগুলোতে আমরা এজাইল পরিকাঠামো দেখতে পেয়েছি তার মধ্যে আছে Rational Unified Process (1994), Scrum (1995), Crystal Clear, Extreme Programming (1996), Adaptive Software Development, Feature Driven Development (1997), and Dynamic Systems Development Method (DSDM) (1995) এসব। ২০০১ সালে এজাইল মেনিফেস্টো প্রকাশিত হওয়ার পর থেকে এদেরকে একসাথে এজাইল প্রণালীর মধ্যে ধরা হয় ।

 

এজাইল মেনিফেস্টোঃ এজাইল মেনিফেস্টো ২০০১ সালে সফটওয়ার ডেভলাপারদের একটি টিমের মাধ্যমে  প্রকাশিত হয়েছিল, পরিবর্তিত চাহিদা ও রিকোয়ারমেন্টের ভিত্তিতে ডেভলাপার টিমের সাথে ব্যবহারকারীদের সম্পৃক্ততার গুরুত্ব ও প্রয়োজনীয়তা ব্যাখ্যা করে। এটি নিচে বিবৃত হল,

 

আমরা সফটওয়ার ডেভলাপমেন্টের নতুন দিগন্ত উন্মোচন করছি যেখানে আমরা নিজেরা ডেভলাপমেন্ট করব এবং অন্যকে করতেও সাহায্য করব। এই কাজের মাধ্যমে আমরা যা করব তা হল,

 

  • প্রক্রিয়া ও যন্ত্রের উপর ব্যক্তি ও পারস্পরিক ক্রিয়া।
  • কম্প্রিহেন্সিভ ডকুমেন্টেশনের মাধ্যমে সফটওয়ারের উপর কাজ।
  • কন্ট্রাক্ট নিগোসিয়েশনের মাধ্যমে ব্যবহারকারীর সম্পৃক্ততা নিশ্চিতকরণ।
  • পরিকল্পনা অনুযায়ী পরিবর্তন সাধন ও নিয়ন্ত্রণ।

অর্থাৎ আমরা সমস্যাগুলোকে সমানভাবে সমাধান করতে চাই।

…Manifesto for Agile Software Development, Authors: Beck, Kent, et al. (2001)

এজাইল মেনিফেস্টো যে নীতির ভিত্তিতে বিবৃত তা নিচের ছকে (ইংরেজি টার্মে) দেয়া হল।

Principle Description
Satisfaction and Delivery Customer satisfaction through early and continuous working software.
Welcoming Change Welcome changing requirements, even at later stages of development.
Deliver Frequently Deliver working software frequently (weekly rather than monthly).
Communication is the Key Ensure close association of developers with business people on daily basis.
Environment and Trust Build projects around motivated individuals. Give them necessary support and trust them.
Face-to-face Communication Encourage face-to-face conversation to ensure efficient and effective communication.
Software as Measure of Progress Working software is the primary measure of progress.
Sustainable Development Promote sustainable development with the ability to maintain a constant pace throughout the development.
Attention to Details Continuous attention to technical excellence and good design.
The Power of Less Simplicity is essential.
Self-organizing Teams Regular attention of the team on becoming effective in changing circumstances.

 

এজাইলের প্রক্রিয়াঃ

 

Dynamic System Development Methodology (DSDM) বা বিএসডিএমঃ  এটি সফটওয়ার প্রোজেক্টের জন্য উপযোগী এজাইল কাঠামো। গতানুগতিক পদ্ধতির সাথে মিলাতে এটি তৈরি করা হয়েছে। বিসডিএম এর সর্বশেষ সংস্করণকে বলে বিসডিএম এটার্ন , এটার্ন নামটি আর্কটিক টার্নের সংক্ষেপ যা আর্কটিক পাখির নাম যা বহুদুর উড়তে পারে যা রুপক অর্থে এজাইল কাঠামোর প্রাধান্যভিত্তিক ও সহযোগিতামূলক বৈশিষ্ট্যের মত উপাদানগত বিস্তৃতির ব্যপকতা নির্দেশ করে।

স্কামঃ এটি সবচেয়ে জনপ্রিয় এজাইল পরিকাঠামো, দলগত ডেভলাপমেন্ট পরিবেশে এটি বেশি উপযোগী, স্কাম ইটারেক্টিভ ইনক্রিমেন্ট মডেল ব্যবহার করে, ইটারেশনের সংক্ষিপ্ত রূপ ব্যবহার করে। স্কাম তুলনামুলকভাবে সহজ এবং দ্রুত ও ঘন উৎপাদনের উপযোগী।

Extreme Programming (XP) বা এক্সপিঃ এটি এক প্রকারের এজাইল সফটওয়ার ডেভলাপমেন্ট, এটি ক্ষুদ্র ডেভলাপমেন্ট চক্রেই ঘনঘন উৎপাদনের স্বার্থে কাজ করে যা উৎপাদনশীলতা বৃদ্ধি করে ও এমন ক্ষেত্র তৈরি করে যা গ্রাহকের নতুনতর রিকোয়ারমেন্ট সমন্বয় করতে পারে। এই প্রণালীর নামকরণের ধারণা নেয়া হয়েছে ‘এক্সট্রিম’ ধারণা থেকে কারণ প্রথাগত সফটওয়ার প্রকৌশল উপাদানকে ‘এক্সট্রিম’ অর্থাৎ চূড়ান্ত পর্যায়ে নেয়া হয়েছে। (‘এক্সট্রিম’ প্রোগ্রামিং সফটওয়ার ডেভলাপমেন্টের একটি ধারা যেখানে কর্মীদের অধিক মানসম্পন্ন সফটওয়ার বেশি উৎপাদনশীলতার সাথে উৎপাদনে উৎসাহিত করে)। এক্সপি যে বিষয়গুলো নিয়ে কাজ করে সেগুলো হল বিশ্লেষণ, ডেভলাপমেন্ট এবং নতুনভাবে উদ্ভাবিত ধারনার পরীক্ষামূলক ক্ষেত্র যা কিনা চূড়ান্তভাবে উৎপাদিত পণ্যের অন্তর্নিহিত মানের তুলনা করে।

Test-driven Development (TDD) বা টিডিডিঃ এটি এক প্রকারের সফটওয়ার ডেভলাপমেন্ট প্রক্রিয়া যেটিতে অত্যন্ত ক্ষুদ্র ডেভলাপমেন্টের চক্র ঘনঘন পুনরাবৃত্তি করা হয়।  প্রথমে ডেভলাপার কাঙ্খিত পরিবর্তন বা নতুন ফাংশন সংবলিত স্বয়ংক্রিয় টেস্ট কেস লিখেন, এরপর এটি টেস্ট পাসের সর্বনিম্ন কোড নির্দেশ করে, এরপর নতুন কোডকে গ্রহণযোগ্য মানে নিয়ে আসা হয়।

লিনঃ এটি একটি উৎপাদন প্রক্রিয়া যেখানে কোন লক্ষ্যের জন্য রিসোর্স বরাদ্দ করা হয় চূড়ান্ত পর্যায়ে গ্রাহকের অপচয় রোধের জন্য। গ্রাহকের দৃষ্টি দিয়ে বিষয়টি দেখার চেষ্টা করা হয় ঠিক কতটুকু পণ্য বা সেবার জন্য গ্রাহক অর্থ পরিশোধ করতে রাজি আছেন। লিন অল্প কাজে ভ্যলুর সঞ্চয়- এই মূলনীতির উপর নির্ভর করে।

কানবানঃ এটি পণ্যের মান উন্নয়ন ও ধরে রাখার একটি সিস্টেম, এটি Just-In-Time (JIT) বা জিআইটি নামক পদ্ধতি অনুসরণ করে, যার মাধ্যমে কোম্পানি খরচের তালিকা নিয়ন্ত্রণ করে। কানবান উৎপাদন ব্যবস্থা নিয়ন্ত্রণের একটি খুব ভাল টুল, এবং উন্নতির জন্য খুব নির্ভরযোগ্য সিস্টেমও বটে।

 

শেষ কথাঃ 

 

স্ক্রাম পরিকাঠামোঃ স্ক্রাম হল জটিল ধরণের পণ্য তৈরি ও মান বজায় রাখার একধরনের পরিকাঠামো। Ken Schwaber এবং Jeff Sutherland স্ক্রাম ডেভলাপ করেছেন। স্ক্রামের নিয়ম কানুনের পেছনেও এঁরাই আছেন।

 

স্ক্রামের সংজ্ঞাঃ  স্ক্রাম একধরনের পরিকাঠামো যেখানে ডেভলপাররা উৎপাদনশীল ও সৃজনশীলভাবে সম্ভাব্য সেরা পণ্য উৎপাদনের সময় জটিল এডাপটিভ সমস্যা সমাধান করেন। স্ক্রাম একধরনের প্রক্রিয়াগত পরিকাঠামো যা নব্বইয়ের দশকের শুরু থেকে জটিল উৎপাদনগত সমস্যা সমাধান করে আসছে। স্ক্রাম পণ্য তৈরির কোন প্রক্রিয়া বা কৌশল নয় বরং এমন একধরনের পরিকাঠামো যেখানে পণ্য তৈরির বিভিন্ন প্রক্রিয়া বা কৌশল এতে সন্নিবেশ করা সম্ভব। স্ক্রাম পণ্যের ব্যবস্থাপনা ও ডেভলাপমেন্টের কার্যক্ষমতা নির্দেশ করে তাই আমরা এর উন্নতি সাধন করতে পারি।

 

স্ক্রাম প্রক্রিয়ার পরিকাঠামোঃ  

 

স্ক্রামে উপরের ছকের উপাদানগুলো নিয়মতান্ত্রিকতা তৈরি করে। সবগুলো উপাদান টাইমবক্সে, এবং সকল উপাদানের সর্বোচ্চ সময়সীমাও আছে। পরবর্তী অধ্যায়গুলোতে এসব নিয়ে আরও আলোচনা করা হবে।  স্প্রিন্টঃ স্প্রিন্ট হল স্ক্রামের প্রাণস্বরূপ, দু সপ্তাহ বা মাসব্যপি টাইমবক্সের আওতায় সম্ভাব্য বাজারজাতকরণযোগ্য পণ্য ইনক্রিমেন্ট করতে সাহায্য করে। পূর্ববর্তী স্প্রিন্টের সমাপ্তির সাথে সাথে পরবর্তী স্প্রিন্ট শুরু হয়ে যায়। স্প্রিন্টের পরিকল্পনা, দৈনিক স্ক্রাম, ডেভলাপমেন্টের কাজ, স্প্রিন্ট রিভিউ ইত্যাদি স্প্রিন্টের আওতাভুক্ত।

 

  • স্প্রিন্টের পরিকল্পনায় এমন ব্যবস্থা রাখা হয় যেন স্প্রিন্ট সুসংবদ্ধভাবে স্ক্রাম টিমের সাথে কাজ করে।
  • দৈনিক স্ক্রাম মীটিং হল ১৫ মিনিটব্যপী টাইমবক্সের আওতাধীন ইভেন্ট যাতে দিনের কাজের পরিকল্পনা ও সারসংক্ষেপ নির্ধারণ করা হয়।
  • স্প্রিন্ট রিভিউ স্প্রিন্টের শেষে থাকে, এটিতে ইনক্রিমেন্টের পরিমান, এবং পণ্যের ব্যাকলগের(যদি থাকে) পরিমান করা হয়।
  • স্প্রিন্টের Retrospective হয় একটি স্প্রিন্টের রিভিউ এবং আরেকটি স্প্রিন্টের প্ল্যানিংএর মধ্যবর্তী সময়ে।

 

শেষ কথাঃ স্ক্রাম সেইধরনের পরিকাঠামো যেখানে নির্ধারিত নিয়ম, ইভেন্ট, ভূমিকা ইত্যাদিকে নিয়মের শৃঙ্খলায় আনা হয়, মৌলিক নিয়মের বাইরে না গিয়ে যেকোনো সংগঠনই স্ক্রাম ব্যবহার করতে পারে।

 

স্ক্রামে তিন ধরণের ভূমিকা পাওয়া যায়, স্ক্রামমাস্টার, পণ্যের মালিক এবং টিম।

 

স্ক্রামমাস্টারঃ স্ক্রামমাস্টার সমস্ত স্ক্রাম প্রক্রিয়াটির কর্তা, তার দায়িত্বে যে বিষয়গুলো থাকে তা হল,

 

  • প্রক্রিয়াটি সঠিকভাবে সম্পন্ন করা,
  • উৎপাদনশীলতায় প্রভাব রাখে এমন বাধা সরিয়ে রাখা,
  • সংবেদনশীল মীটিং আয়োজন ও সম্পাদন করা।

 

প্রোডাক্ট ওনারঃ প্রোডাক্ট ওনার বা পণ্যের মালিক পণ্যের মান ও দলের কর্মকাণ্ডের জন্য দায়ী থাকেন। এগুলো কীভাবে করা হচ্ছে তা প্রতিষ্ঠান, স্ক্রাম টিম ও ব্যক্তির উপরও নির্ভর করতে পারে। পণ্যের ব্যাকলগের জন্য যে ব্যক্তি এককভাবে দায়ী থাকেন তিনি হলেন প্রোডাক্ট ওনার। পণ্যের ব্যাকলগের ব্যবস্থাপনা যে বিষয়গুলো নিয়ে আলোচনা করে সেগুলো হল,

 

  • পণ্যের ব্যাকলগ আইটেমগুলো চিহ্নিত করা
  • সেই আইটেমগুলোর জন্য সম্ভাব্য লক্ষ্য ও মিশন নির্ধারণ করা
  • টিমের কাজের মান অনুধাবন করা
  • পণ্যের ব্যাকলগ সকলের কাছে দৃশ্যমান, স্বচ্ছ ও বোধগম্য কিনা তা নিশ্চিত করা
  • এটি নিশ্চিত করা যে টিম পণ্যের ব্যাকলগের আইটেমের মাত্রা বুঝতে পারছে।

 

টিমঃ টিম স্বপ্রণোদিত, ক্রসফাংশনাল এবং এটি বিশ্লেষক, ডেভলপার, ডিজাইনার ও নিরীক্ষকের  সমন্বয়ে তৈরি হয়। স্ক্রামের জন্য আদর্শ টিমে স্থিতিস্থাপকতা,  সৃজনশীলতা ও উৎপাদনশীলতা প্রধান বিবেচ্য বিষয়। স্ক্রাম টিম তথ্যপ্রবাহ অবাধ রাখতে আর সমস্যার দ্রুত সমাধান করতে দিনভিত্তিকভাবে ও ঘনিষ্ঠভাবে  কাজ করে থাকে।

 

স্ক্রাম ইভেন্টসঃ স্ক্রাম পরিকাঠামো কিছু ইভেন্টের ক্রমধারা, এবং সংশ্লিষ্ট কিছু আর্টিফ্যক্ট দ্বারা গঠিত। স্ক্রামের গুরুত্বপূর্ণ কিছু ইভেন্ট হল,

 

  • স্প্রিন্ট
  • স্প্রিন্টের পরিকল্পনা
  • দৈনিক স্ক্রাম মীটিং
  • স্প্রিন্ট রিভিউ
  • স্প্রিন্টের Retrospective

 

স্প্রিন্টঃ স্প্রিন্ট হল স্ক্রামের প্রাণস্বরূপ, দু সপ্তাহ বা মাসব্যপি টাইমবক্সের আওতায় সম্ভাব্য বাজারজাতকরণযোগ্য পণ্য ইনক্রিমেন্ট করতে সাহায্য করে। পূর্ববর্তী স্প্রিন্টের সমাপ্তির সাথে সাথে পরবর্তী স্প্রিন্ট শুরু হয়ে যায়।

 

স্প্রিন্টের পরিকল্পনাঃ দুটি প্রশ্ন থেকে এই ধাপ আলোচনা করে,

  • স্প্রিন্ট ইনক্রিমেন্টে কি করা প্রয়োজন ও কীভাবে।
  • স্প্রিন্টে প্রয়োজনীয় কাজ কীভাবে সম্পন্ন করা হবে।

এই সমন্বয়ের ইনপুট গুলো হল,

  • পণ্যের ব্যাকলগ
  • পণ্যের সর্বশেষ ইনক্রিমেন্ট
  • স্প্রিন্টের সময়কালে অনুমিত ধারনক্ষমতা
  • টিমের পূর্ববর্তী সাফল্য।

 

 

দৈনিক স্ক্রাম মীটিংঃ দৈনিক স্ক্রাম মীটিং ১৫ মিনিটব্যপী টাইমবক্সের আওতাধীন ইভেন্ট যাতে দিনের কাজের পরিকল্পনা ও সারসংক্ষেপ নির্ধারণ করা হয়।এতে বিগত দিনের স্ক্রাম মীটিংএর পর্যালোচনার পাশাপাশি পরবর্তী ২৪ ঘণ্টার কার্যপ্রণালী ঠিক করা হয়।

 

স্প্রিন্ট রিভিউঃ স্প্রিন্ট রিভিউ স্প্রিন্টের শেষে থাকে, এটিতে ইনক্রিমেন্টের পরিমান, এবং পণ্যের ব্যাকলগের(যদি থাকে) পরিমান করা হয়।এটি প্রতি স্প্রিন্টের শেষে থাকে এবং এটিতে পণ্যের ইনক্রিমেন্ট  পর্যালোচনা করা হয়।

 

স্প্রিন্টের Retrospective স্প্রিন্টের Retrospective হয় একটি স্প্রিন্টের রিভিউ এবং আরেকটি স্প্রিন্টের প্ল্যানিংএর মধ্যবর্তী সময়ে। এটিও স্ক্রামের জন্য অত্যন্ত গুরুত্বপূর্ণ।

 

 

স্ক্রাম আর্টিফ্যক্টসঃ স্ক্রাম প্রক্রিয়া পরিকাঠামোয় যে আর্টিফ্যক্টগুলো দেখা যায় সেগুলো হল,

 

  • পণ্যের ব্যাকলগ
  • স্প্রিন্ট ব্যাকলগ
  • বার্ন ডাউন চার্ট
  • ইনক্রিমেন্ট

 

এগুলো স্ক্রাম প্রক্রিয়া পরিকাঠামোয় সর্বনিম্ন আর্টিফ্যক্টস, এরচেয়ে অনেক বেশি আর্টিফ্যক্টও  স্ক্রাম পরিকাঠামোয় থেকে থাকতে পারে।

 

ইউজার স্টোরিঃ <Type of User> হিসেবে

কোন কাজ করতে গিয়ে <To Perform Some Task>,

ফলাফলে এটি হল, achieve some goal/benefit/value> এটি ইউজার স্টোরির একটি উদাহরণ।

ব্যাঙ্কের এটিএম বুথকে কেন্দ্র করে উদাহরণ দেয়া যাক,

User Story: Customer’s Cash Withdrawal

As a Customer,

I want to withdraw cash from an ATM,

So that I don't have to wait in line at the Bank

ইউজার স্টোরি লেখা প্রোডাক্ট ওনারের দায়িত্ব, এটির উপর পণ্যের সফলতা অনেকাংশেই নির্ভর করে।

 

স্ক্রামের বার্ন ডাউন চার্টঃ এতে ঘণ্টা হিসেবে কর্ম দিবসের হিসাব করা হয়, যেমন দুই সপ্তাহের একটি স্প্রিন্টের হিসাব দেখা যাক,

 

  • স্প্রিন্টের সময়কালঃ ২ সপ্তাহ
  • সপ্তাহে দিনের সংখ্যাঃ ৫ দিন
  • দিনে ঘণ্টার সংখ্যাঃ ৬
  • রিসোর্সের সংখ্যাঃ ৬

তাহলে স্প্রিন্টের শুরুতে সময়ের মোট একক থাকল, ২*৫*৬*৬=৩৬০ঘণ্টা। তবে বাস্তব ক্ষেত্রে ৩৬ ঘণ্টা পর্যন্ত সময় কমে নিচের ছকের মত হয়ে দাঁড়ায়।

 

কাজের ক্ষেত্রে দীর্ঘসুত্রিতা থাকলে ছকটি যেমন হয় তা হল,

 

বার্ন ডাউন চার্ট দিনের এককে মাপা হয় তাই দৈনিক সময় ব্যবধানের জন্য স্প্রিন্ট টাইমলাইনে বিচ্যুতি থেকে যেতে পারে, তখন ছকটি যেমন হবে তা নিচে দেয়া হল,

 

 

স্ক্রাম এস্টিমেশনঃ পুরো টিমের মাধ্যমে এটি করা হয়, এর উদ্দেশ্য হল ইউজার স্টোরি গুরুত্ব অনুসারে স্প্রিন্টের টাইমবক্সের জন্য প্রস্তুত করা। স্ক্রাম এস্টিমেশনের কিছু ভাল কৌশল ও পন্থা আছে, সেগুলোর মধ্যে কয়েকটি হল,

  • Numeric Sizing (1 through 10)
  • T-shirt Sizes (XS, S, M, L, XL XXL, XXXL)
  • Fibonacci Sequence (1, 2, 3, 5, 8, 13, 21, 34, etc.)
  • Dog Breeds (Chihuahua,………,Great Dane) ইত্যাদি।

প্ল্যানিং পোকার টেকনিকঃ এই পদ্ধতিতে প্ল্যানিং পোকার পদ্ধতিতে ইউজার স্টোরি বিবৃত করা হয়। অভিজ্ঞতার মূল্যায়ন, এনালজি ও উপাদানের ছড়িয়ে দেয়ার প্রবণতা ইত্যাদি প্ল্যানিং পোকার পদ্ধতির সুবিধা।

স্ক্রামের টুলসঃ কিছু টুলস যা স্ক্রামকে কার্যক্ষেত্রে প্রায়োগিক রূপ দেয় সেগুলো নিচের ছকে দেখানো হল,

Axosoft Airgile Agile Cockpit Jira (GreenHopper) Mingle
Scrumwise Agilo For Scrum Banana Scrum Kunagi OnTime Now
Version One AgileWrap Daily-Scrum Intervals Pango Scrum
Acunote Agile Tracking Tool* Digaboard* iMeta Agility Pivotal Tracker
Agile Agenda Agile Task EasyBacklog Ice Scrum* pmScrum
Agile Bench Agile Soup Explain PMT Hansoft Prj Planner
Agile Buddy Agile Manager Agile Express* GravityDev Project Cards
Agile Fant* Agile Log Fire Scrum* Fulcrum* Quantum Whisper
Quick Scrum Retrospectiva* Scrum’d Scrum Factory* Scrumpy
Rally Dev Scrinch* Scrum Dashboard* Scrum Edge Scrum Pad
Redmine Backlogs Scrum 2 Go Scrum Desk Scrum Do Tweet Scrum
Scrumrf Scrum Time* Scrumwise Select Solution Factory Tackle*
Urban Turtle ScrumTool Scrum Works Timebox Tangy Orange Scrum

স্ক্রামের সুবিধাঃ গ্রাহকের প্রয়োজনীয় চাহিদা পূরণ, প্রতিষ্ঠানের লক্ষ্য পূরণ, পণ্য ও প্রকল্প ব্যবস্থাপকের সুবিধা ও ডেভলাপমেন্ট টিমের লক্ষ্যপূরণ সব মিলিয়ে স্ক্রাম সকলের জন্যই সুবিধাজনক।

স্ক্রামের সার্টিফিকেশনঃ স্ক্রামের নিয়ন্ত্রণকারী জোট কিছু সার্টিফিকেশন দিয়ে থাকে, সেগুলো হল,

  • Certified ScrumMaster (CSM)
  • Certified Scrum Product Owner (CSPO)
  • Certified Scrum Practitioner (CSP)
  • Certified Scrum Coach (CSC)
  • Certified Scrum Trainer (CST)

পরিশেষে বলা, এজাইল আর স্ক্রাম এক নয়। স্ক্রাম পরিকাঠামো এজাইলকে ব্যবহার করে থাকে। একাজে দক্ষ কর্মীর প্রয়োজন হয়, স্ক্রামের নির্ধারিত নিয়মাবলী সঠিকভাবে না মানা হলে প্রকল্প ব্যর্থও হতে পারে, প্রকল্পের সকল সদস্যের স্ক্রাম সম্পর্কে সুস্পষ্ট ধারণা থাকা উচিৎ। যেহেতু স্প্রিন্ট খুব অল্প সময়ের মাত্রায় থাকে, তাই স্ক্রাম মাস্টার সব সময় পর্যবেক্ষণে থাকলেও স্ক্রামের বিস্তারিত বিবৃত করা সম্ভব নাও হতে পারে।

তথ্যসূত্রঃ http://www.tutorialspoint.com/scrum/scrum_quick_guide.htm

৩৫০ ওয়ার্ডের অর্ডার ২১০০ ওয়ার্ড হয়েছে। এরচেয়ে কমানোও সম্ভব না। ভাল বোনাস আশা করছি। ধন্যবাদ।

 

রাগ নিয়ন্ত্রণঃ Anger Management

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

রাগ নিয়ন্ত্রণ বা ব্যবস্থাপনার সারসংক্ষেপ

রাগ হল , এককথায়, কারো ক্ষতিগ্রস্ত হওয়ার ঝুঁকির প্রতিক্রিয়া। এটি অস্বস্তির মাধ্যমে শুরু হয়ে বিরক্তির উদ্রেক করে, কখনো কখনো সহিংসতারও জন্ম দিতে পারে। রাগকে অনেক সময় আক্রমণাত্মকতার সাথে গুলিয়ে ফেলা হয়। বিরুদ্ধাচরণ, আক্রমণাত্মকতা ও মেজাজ খারাপ এই সবগুলোকেই রাগের আওতায় ধরা হয় যদিও এদের মধ্যে কিছু সূক্ষ্ম পার্থক্য আছে।

  • বিরুদ্ধাচরণঃ রাগান্বিত মানসিক অবস্থায় পরিস্থিতি সম্পর্কে আমাদের ধারণা ও বিচার বিশ্লেষণ বিরুদ্ধাচরণের জন্ম দেয়। বিরুদ্ধাচরণ আবার আক্রমণাত্মকতার জন্ম দেয় ও একে উৎসাহিত করে।
  • আক্রমণাত্মকতাঃ আক্রমণাত্মকতা হল সেই আচরণ যেটি মানুষের বা সম্পদের ক্ষতি সাধনের চেষ্টা করে। আমাদের ভেতরের ফুঁসে উঠা রাগের চূড়ান্ত পর্যায় হল এই আক্রমণাত্মকতা।
  • মেজাজ খারাপঃ মেজাজ খারাপ হল বিরক্তি ও সহিংস আচরণের মধ্যবর্তী একটি অবস্থা। মানসিক অবস্থা এই ক্ষেত্রে থাকলে তা অন্য সব আবেগকে ছাপিয়ে প্রকাশ পায়। মজার ব্যপার হল, মেজাজ খারাপের ইংরেজি প্রতিশব্দে ব্যবহৃত মুড (mood)শব্দটি এসেছে পুরনো ইংরেজি মুড(mod)থেকে, যার মানে ছিল সাহস।

রাগের বৈপরীত্য

রোহান একটি এপার্টমেন্টে থাকে। প্রতিদিন সকালে উঠে সে দেখে সে তার মোটরসাইকেলটি যেখানে রেখেছিল সেখানে নেই, তাকে না জানিয়ে সেটির স্থান পরিবর্তন করা হয়েছে। তার মনে প্রথম যে অনুভূতিটি আসে তা হল অস্বস্তি, তার ব্যক্তিগত পরিমণ্ডলে অন্য কারো হস্তক্ষেপের কারণে বিরক্তি। এরপর অবশ্যই তার ভেতরে রাগ সৃষ্টি হতে পারে, ‘ আমাকে মানুষই ভাবে না! আমাকে কিছু জিজ্ঞেস করারও দরকার নেই, তাইতো!’ তার মনে একটি বিরুদ্ধাচরণমূলক প্রতিক্রিয়া জন্ম নিতে থাকে।

যখন রাগে নিজের সাথে রোহান নিজেই কথা বলছে তখন তার ছেলে এসে ফ্যান মেরামত করতে রোহানের সাহায্য চাইল । মনের আভ্যন্তরীণ দ্বন্দ্বে বিরক্ত রোহান ছেলেকে বকাঝকা করল, ছেলে কান্না শুরু করল।এতে করে রোহান ব্যথিত হল এবং সাময়িকভাবে তার রাগ অবদমিত হলেও, ভেতরে ভেতরে ঠিকই সে রেগেই রইল, ভাবতে লাগল, সকালটাই মাটি। অফিসে তার কলিগরাও এটি টের পায় এবং বলাবলি করতে থাকে, ‘আজ রোহানের মেজাজ খারাপ‘।

রাগ নিয়ন্ত্রণ ও ব্যবস্থাপনাঃ প্রচলিত ধারণা ও বাস্তবতাঃ

রাগ নিয়ে বহুল প্রচলিত অনেক ধারণা আছে, এগুলো তলিয়ে দেখা যাক এবং প্রকৃত বাস্তবতা সম্পর্কেও আলোচনা করা যাক।

  • ১ম প্রচলিত ধারণাঃ রাগ দেখালে তা প্রশমিত হয়, রাগ পুষে রাখা ভাল নয়।
    বাস্তবতাঃ একটি কথা আছে, ‘রাগ পুষে রাখা আর হাতের মধ্যে জ্বলন্ত কয়লা ধরে রাখা একই কথা’। রাগ অবশ্যই প্রশমিত করতে হবে কিন্তু তা আক্রমণাত্মক উপায়ে নয়, কারণ সেটি কেবল সংঘর্ষের প্রবণতাই বাড়াবে।
  • ২য় প্রচলিত ধারণাঃ রাগ অন্যের কাছ থেকে মনোযোগ, সম্মান ও আনুগত্য পেতে সাহায্য করে।
    বাস্তবতাঃ কারো উপর প্রভাব বিস্তার করার ক্ষমতা কাউকে বোঝার দক্ষতা থেকে আসে, তাকে ভয় দেখিয়ে নয়। ধমকাধমকি করে প্রভাব বিস্তারের চেষ্টা করলে অধিনস্তরা সম্মান তো করবেই না বরং অন্যের মতামত গ্রহন করতে না পারলে নিজেরই অনেক বড় ব্যবধান রচিত হবে।
  • ৩য় প্রচলিত ধারণাঃ আমি আমার রাগ নিয়ন্ত্রণ করতে পারি না।
    বাস্তবতাঃ অন্য অনেক আবেগের মতই, রাগও আমরা যে পরিস্থিতির ফলাফল। সম্ভাব্য বহুমুখী দৃষ্টিভঙ্গি থেকে পরিস্থিতি বিশ্লেষণ করতে পারলে রাগ নিয়ন্ত্রণ ও ভুল বিবেচনা এড়ানো সম্ভব হয়।
  • ৪র্থ প্রচলিত ধারণাঃ রাগ ব্যবস্থাপনা হল রাগ দমন করার পদ্ধতি শেখা।
    বাস্তবতাঃ রাগ দেখিয়ে প্রশমিত করা যায় না, আবার রাগকে অন্য কোন ভাবে দমন করাও যায় না,বরং এটিকে অহিংস কোন উপায়ে বয়ে যেতে দেয়াই ভাল। রাগ ব্যবস্থাপনায় এবিষয়টিই মানুষকে দেখানো হয়।

কেন রাগ নিয়ন্ত্রণ ও ব্যবস্থাপনা কেন?

দীর্ঘস্থায়ী রাগ মানুষের স্বাস্থ্যের, সামাজিক ও ব্যক্তিগত জীবনেও স্বল্পকালীন ও দীর্ঘমেয়াদী ঝুঁকিতে পরিণত হতে পারে। দৈনন্দিন জীবনে বন্ধুত্ব ও সম্পর্কের ক্ষতি, অবিশ্বাস ও অশান্তিরও কারণ হতে পারে।

রাগ স্বাস্থ্য, চিন্তাজগত ও ক্যারিয়ারের যেসব ক্ষতি করে

দীর্ঘ সময়ের রাগান্বিত মনোভাব আমাদের উপর অনেক চাপ সৃষ্টি করে, শরীরের রিলাক্সেসনের জন্য সেই তুলনায় সময় দেয়া হয় না। এটি উচ্চ রক্তচাপ, ডায়াবেটিস ও ঘুমহীনতা সহ অনেক সমস্যা সৃষ্টি করে। এটি বিচার বিশ্লেষণের ক্ষমতা কমিয়ে ফেলে, মানসিক শক্তি কমিয়ে ফেলে অবসাদ ও দুশ্চিন্তাসহ নানা সমস্যাও সৃষ্টি করতে পারে।কর্মক্ষেত্রে যারা অন্যের মতামত ও দক্ষতার ব্যবধান সহজভাবে মেনে নিতে পারেন না তারা রাগান্বিত আচরণে তাদের মনোভাব প্রকাশ করেন, যেটি বন্ধু ও সহকর্মীদের সাথে তাদের সমস্যা সৃষ্টি হতে সাহায্য করে। অতিরিক্ত রাগ ব্যক্তির সাথে সামাজিক যোগাযোগ ও মেলামেশা কমিয়ে দেয়, অনেক সময় শিশুদের মনোজগতেও নেতিবাচক প্রভাব রাখে।

রাগের লক্ষণ

রাগের মানসিক লক্ষণগুলো হল,

  • অস্বস্তি
  • বিরক্তি
  • অস্থিরতা

রাগের কিছু শারীরিক লক্ষণ আছে, এগুলো হল,

  • হৃদস্পন্দন বেড়ে যাওয়া
  • পেশী আড়ষ্ট হয়ে যাওয়া
  • কপালে ঘাম জমা।

এই মানসিক ও শারীরিক লক্ষণগুলো মিলে আমাদের কিছু আক্রমণাত্মক আচরণ পরিলক্ষিত হয় যেমন,

  • চেঁচানো, তর্ক করা,
  • জিনিসপত্র ছুঁড়ে ফেলা,
  • দেয়ালে লাথি মারা, বালিশে ঘুষি মারা বা আছড়ে দরজা বন্ধ করা,
  • কান্না করা ইত্যাদি।

তবে সবচে ক্ষতিকর প্রতিক্রিয়া হল কিছু না করা। মনের ভেতর রাগ পুষে রেখে দমন করা। এটি সুরাসক্তি, মাত্রাতিরিক্ত ধূমপান এমনকি মাদকাসক্তির দিকেও মানুষকে নিয়ে যেতে পারে। এসব ক্ষেত্রে নিজেকে এটি বোঝানোই সবচেয়ে ভাল যে, মানুষ, পরিস্থিতি ও পরিবেশ না বরং আমাদের প্রতিক্রিয়া কীভাবে হচ্ছে তার ধরণই রাগের কারণ। মোটকথা, আমাদের যা কিছু রাগাতে পারে, তা আমাদের নিয়ন্ত্রণও করতে পারে।

রাগ ব্যবস্থাপনাঃ রাগের সূত্রঃ

রাগ বোঝা ও অনুধাবন করার চারটি কার্যকর পদ্ধতি আছে যেগুলোর সাহায্যে বৈরী পরিস্থিতিতে আমাদের দেহ মনে রাগের উৎপত্তি বুঝতে পারি ।

  • শারীরিক সূত্রঃ হৃদস্পন্দন বেড়ে যাওয়া,পেশী আড়ষ্ট হয়ে যাওয়া, শ্বাসপ্রশ্বাস দ্রুত হওয়া এসব হল রাগের শারীরিক সূত্র।
  • আচরণগত সূত্রঃ আমাদের রাগের সময় অন্যে আমাদের যেমন করতে দেখে যেমন চোয়াল শক্ত হয়ে যাওয়া, ভুরূ কোঁচকান, কঠিন দৃষ্টিতে তাকানো এসবই আচরণগত সূত্র।
  • আবেগিক সূত্রঃ লজ্জা পাওয়া,অপরাধবোধ, নিরাপত্তাহীনতা, সাহায্যহীন অবস্থা এসবই রাগের আবেগিক সূত্র।
  • চিন্তা বিষয়ক সূত্রঃ রাগ প্রকাশ করে এমন ঘটনা মনের দৃশ্যপটে আসলে তাকে রাগের চিন্তা বিষয়ক সূত্র হিসেবে ধরা যাবে।

রাগ ব্যবস্থাপনাঃ রাগী আচরণ

নেতিবাচক আবেগের বিশ্লেষণ

নেতিবাচক আবেগের বিশ্লেষণে যে জিনিসগুলো দেখা হয় সেগুলো হল,

  • হীনমন্যতাসূচক ধারণাঃ উদাহরণস্বরূপ, এমন ভাবা যে,’আমাকে কেউ পাত্তা দেয় না, আমাকে ঘৃণা করে’ এসব হীনমন্যতাসূচক ধারণা পোষণ করা।
  • অনমনীয় দৃষ্টিভঙ্গিঃ অন্যের মতামতের প্রতি অনমনীয় দৃষ্টিভঙ্গি রাখা।
  • অপরিনতভাবে ধারণা করা ও সিদ্ধান্তে আসাঃ অপরিনতভাবে ধারণা করা ও সিদ্ধান্তে আসাটা নেতিবাচক আবেগের আরেকটি উদাহরণ।
  • রাগ করার যুক্তি খোঁজাঃ রাগ করার যুক্তি খোঁজা বিরক্তি ও ভুল বোঝাবোঝির সমন্বয়ে হয়ে থাকে।
  • দোষারোপ করাঃ সমস্যা বিষয়ে নিজের ভূমিকা না দেখে অন্যকে দোষারোপ করা নেতিবাচক আবেগের আরেকটি উদাহরণ।

রাগ ব্যবস্থাপনাঃ রাগের চক্র ও এবিসিডি মডেল

রাগের একধরনের চক্র আছে, রাগ উঠা, প্রতিক্রিয়া ও প্রতিক্রিয়া পরবর্তী মানসিক অবস্থা নিয়ে এই চক্র সমন্বিত। রাগ ব্যবস্থাপনার উদ্দেশ্য হল মানুষকে প্রতিক্রিয়ার ক্ষেত্রে না পৌঁছানোর শিক্ষা দেয়া, যাতে প্রশিক্ষণ ও প্র্যাকটিসের মাধ্যমে রাগ উঠার সময়ই সেটি নিয়ন্ত্রণের দক্ষতা অর্জন করা যায়।

ইংরেজিতে এই এবিসিডি মডেলকে এভাবে দেখানো হয়,
A (Activation Agent)
B (Believing)
C (Conclusions)
D (Dispute)

এই প্রতিটি ধাপে মানব মনের গতিপ্রকৃতি নিয়ে আলোচনা করা হয়।

রাগ ব্যবস্থাপনাঃ রাগ নিয়ন্ত্রণ

রাগের কারণ অনুধাবন, সূত্র বিশ্লেষণ ও রাগের এঙ্গার বাটন(Anger Buttons) সনাক্ত করে রাগ নিয়ন্ত্রণের চেষ্টা করা উচিৎ। রাগ দমনের কিছু উপায় হল,

  • গভীরভাবে নিশ্বাস নেয়া
  • ব্যয়াম করা
  • অনুভূতি প্রয়োগ যথা গান শোনা বা শান্ত প্রকৃতির কথা মনে রাখা
  • মনেমনে ধীর গতিতে সংখ্যা গোনা

রাগ নিয়ন্ত্রণের ভাল উপায় খুঁজে বের করা ও পরিস্থিতি সম্পর্কে ধীর মনে অনুধাবন করাও ভাল উপায়।

রাগ নিয়ন্ত্রণ করে যোগাযোগ দক্ষতা বাড়ানোর উপায়

  • অন্যের কথা মনোযোগ দিয়ে শোনা
  • সরাসরি সিদ্ধান্তে উপনীত না হওয়া
  • সাথেসাথে প্রতিক্রিয়াশীল না হওয়া
  • নিজের প্রকৃত অনুভূতি প্রকাশ করা

এছাড়াও নিজের পুরনো নেতিবাচক চিন্তাভাবনা পরিবর্তন করে ইতিবাচক মানসিকতা অর্জনের চেষ্টা করা উচিৎ।

রাগ ব্যবস্থাপনাঃ কিছু টিপস

রাগ ব্যবস্থাপনার কিছু পরীক্ষিত উপদেশ এরকম,

  • কথা বলার আগে চিন্তা করা
  • শান্তভাবে রাগ প্রকাশ
  • ব্যয়াম করা
  • নিজেকে সময় দেয়া
  • সমাধান সনাক্ত করা
  • বিবৃতিতে ‘আমি’ সত্ত্বা ব্যবহার করা
  • দ্বেষ প্রকাশ পায় এমনভাবে কথা না বলা
  • রসবোধ প্রয়োগ করা
  • সিথিলায়ন অনুশীলন করা
  • রাগ নিয়ন্ত্রণে নিজে ব্যর্থ হলে প্রফেশনাল সাহায্য নেয়া যেতে পারে

 

কিছু উৎস যা তথ্যের সূত্র হিসেবে কাজে লাগতে পারেন

  • Davies, William (2000); Overcoming Irritability and Anger; Constable & Robinson; ISBN: 1854875957
  • Garber, Kathy S (2002); Stop Anger, Be Happy; Trafford; ISBN: 155395095
  • Lindenfield, Gael (2000); Managing Anger; Thorsons Publishers; ISBN: 0007100345

 

 

জাভাস্ক্রিপ্ট অবজেক্ট নটেশন ফাংশন ফাইল (JSON Function Files)

Huge Sell on Popular Electronics

জেএসওএন ফাংশন ফাইল

রিদওয়ান বিন শামীম

জেএসওএন ফাংশন ফাইল (JSON Function Files)

জেএসওএনএর একটি সাধারণ প্রয়োগ হল ওয়েব সার্ভার থেকে ডাটা পড়া ও ওয়েব পেজে তা প্রদর্শন করা। এই অধ্যায়ে চারটি ছোট ছোট ধাপে দেখানো হবে কীভাবে ফাংশন ফাইল ব্যবহার করে জেএসওএন ডাটা পড়া হয়।

জেএসওএন উদাহরণঃ এই উদাহরণে myTutorials.js থেকে একটি মেনু পড়া হবে ও সেটিকে ওয়েবপেজে দেখানো হবে।


<div id="id01"></div>
<script>
function myFunction(arr) {
     var out = "";
     var i;
     for(i = 0; i<arr.length; i++) {
     out += '<a href="' + arr[i].url + '">' + arr[i].display + '</a><br>';
     }
     document.getElementById("id01").innerHTML = out;
}
</script>
<script src="myTutorials.js"></script>

 

 

উদাহরণের ব্যাখ্যা

প্রথমতঃ অবজেক্টের শ্রেণীবিন্যাস তৈরি করা হয়ঃ
অক্ষরভিত্তিক শ্রেণীবিন্যাস নির্ধারণ করে কোনো অবজেক্টের শ্রেণীবিন্যাস তৈরি করা হয়। প্রত্যেকটি অবজেক্টের দুটি বৈশিষ্ট্য নির্ধারণ করে দেয়া হয়, display এবং url । শ্রেণীবিন্যাসকে myArray নাম দেয়া হয়।
myArray


var myArray = [
{
"display": "JavaScript Tutorial",
"url": "http://www.w3schools.com/js/default.asp"
},
{
"display": "HTML Tutorial",
"url": "http://www.w3schools.com/html/default.asp"
},
{
"display": "CSS Tutorial",
"url": "http://www.w3schools.com/css/default.asp"
}
]

 

দ্বিতীয়তঃ শ্রেণীবিন্যাস দেখানোর জন্য জাভাস্ক্রিপ্টের একটি ফাংশন তৈরি করা হয়ঃ myFunction() নামের ফাংশন তৈরি করা হয় যা থেকে অবজেক্টগুলো দৃশ্যমান হয় ও এইচটিএমএল লিঙ্ক জাতীয় উপাদান প্রদর্শন করে।

myFunction()


 

function myFunction(arr) {
    var out = "";
    var i;
    for(i = 0; i < arr.length; i++) {
    out += '<a href="' + arr[i].url + '">' + arr[i].display + '</a><br>';
    }
    document.getElementById("id01").innerHTML = out;
}

 

 

myFunction() কে myArray এর সাথে আর্গুমেন্ট হিসেবে দেখা হয়। যথা,


myFunction(myArray);


 

 

তৃতীয়ত, কোন অক্ষরভিত্তিক শ্রেণীবিন্যাসকে আর্গুমেন্ট হিসেবে ব্যবহার করা(শ্রেণীবিন্যাস চলকের পরিবর্তে)ঃ
myFunction() কে array literal(অক্ষরভিত্তিক শ্রেণীবিন্যাস)এর সাথে আর্গুমেন্ট হিসেবে দেখা হয়,

Calling myFunction()


myFunction([
{
"display": "JavaScript Tutorial",
"url": "http://www.w3schools.com/js/default.asp"
},
{
"display": "HTML Tutorial",
"url": "http://www.w3schools.com/html/default.asp"
},
{
"display": "CSS Tutorial",
"url": "http://www.w3schools.com/css/default.asp"
}
]);

 

 

চতুর্থতঃ ফাংশন কলকে এক্সটারনাল js fileএ রাখা হয়ঃ
myTutorials.js নামক এক্সটারনাল js fileএ ফাংশন কলকে রাখা হয়।

myTutorials.js


myFunction([
    {
    "display": "JavaScript Tutorial",
    "url": "http://www.w3schools.com/js/default.asp"
    },
    {
    "display": "HTML Tutorial",
    "url": "http://www.w3schools.com/html/default.asp"
    },
    {
    "display": "CSS Tutorial",
    "url": "http://www.w3schools.com/css/default.asp""
    }
 ]);

 

 

ফাংশন কলের পরিবর্তে পেজে এক্সটারনাল স্ক্রিপ্ট যোগ করা হয়,
Add External Script


<script src="myTutorials.js"></script>


 

 

 

জাভাস্ক্রিপ্ট অবজেক্ট নটেশন এইচটিটিপি রিকুয়েস্ট (JSON Http Request)

Huge Sell on Popular Electronics

জেএসওএন এইচটিটিপি রিকুয়েস্ট

রিদওয়ান বিন শামীম

 

জেএসওএনএর একটি সাধারণ প্রয়োগ হল ওয়েব সার্ভার থেকে ডাটা পড়া ও ওয়েব পেজে তা প্রদর্শন করা।

এই অধ্যায়ে চারটি ছোট ছোট ধাপে দেখানো হবে কীভাবে XMLHttp ব্যবহার করে জেএসওএন ডাটা পড়া হয়।

জেএসওএন উদাহর

এই উদাহরণে myTutorials.txt, থেকে একটি মেনু পড়া হবে ও সেটিকে ওয়েবপেজে দেখানো হবে।


<div id="id01"></div>
<script>
var xmlhttp = new XMLHttpRequest();
var url = "myTutorials.txt";
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var myArr = JSON.parse(xmlhttp.responseText);
        myFunction(myArr);
    } 
}
xmlhttp.open("GET", url, true);
xmlhttp.send();
function myFunction(arr) {
    var out = "";
    var i;
    for(i = 0; i < arr.length; i++) {
        out += '<a href="' + arr[i].url + '">' +
        arr[i].display + '</a><br>';
    }
    document.getElementById("id01").innerHTML = out;
}
</script>

 

 

উদাহরণের ব্যাখ্যা

প্রথমতঃ অবজেক্টের শ্রেণীবিন্যাস (Array) তৈরি করা হয়ঃ
অক্ষরভিত্তিক শ্রেণীবিন্যাস (Array) নির্ধারণ করে কোনো অবজেক্টের শ্রেণীবিন্যাস (Array) তৈরি করা হয়। প্রত্যেকটি অবজেক্টের দুটি বৈশিষ্ট্য নির্ধারণ করে দেয়া হয়, display এবং url । শ্রেণীবিন্যাস (Array) কে myArray নাম দেয়া হয়।


var myArray = [
{
"display": "JavaScript Tutorial",
"url": "http://www.w3schools.com/js/default.asp"
},
{
"display": "HTML Tutorial",
"url": "http://www.w3schools.com/html/default.asp"
},
{
"display": "CSS Tutorial",
"url": "http://www.w3schools.com/css/default.asp"
}
]

 

 

দ্বিতীয়তঃ শ্রেণীবিন্যাস দেখানোর জন্য জাভাস্ক্রিপ্টের একটি ফাংশন তৈরি করা হয়ঃ myFunction() নামের ফাংশন তৈরি করা হয় যা থেকে অবজেক্টগুলো দৃশ্যমান হয় ও এইচটিএমএল লিঙ্ক জাতীয় উপাদান প্রদর্শন করে।


function myFunction(arr) {
    var out = "";
    var i;
    for(i = 0; i < arr.length; i++) {
    out += '<a href="' + arr[i].url + '">' + arr[i].display + '</a><br>';
    }
    document.getElementById("id01").innerHTML = out;
}

 

 

myFunction() কে myArray এর সাথে আর্গুমেন্ট হিসেবে দেখা হয়। যথা,


myFunction(myArray);


 

 

তৃতীয়তঃ টেক্সট ফাইল তৈরি করা হয়ঃ

myTutorials.txt: নামক ফাইলের মধ্যে অক্ষরভিত্তিক শ্রেণীবিন্যাসকে রাখা হয়।


[
{
"display": "JavaScript Tutorial",
"url": "http://www.w3schools.com/js/default.asp"
},
{
"display": "HTML Tutorial",
"url": "http://www.w3schools.com/html/default.asp"
},
{
"display": "CSS Tutorial",
"url": "http://www.w3schools.com/css/default.asp"
}
]

 

চতুর্থতঃ XMLHttpRequest দ্বারা টেক্সট ফাইল পড়া হয়ঃ

XMLHttpRequest লেখা হয় টেক্সট ফাইল পড়ার জন্য, এবং শ্রেণীবিন্যাস দেখানোর জন্য myFunction() ব্যবহার করা হয়।

XMLHttpRequest


 

var xmlhttp = new XMLHttpRequest();
var url = "myTutorials.txt";
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
   var myArr = JSON.parse(xmlhttp.responseText);
   myFunction(myArr);
   }
}
xmlhttp.open("GET", url, true);
xmlhttp.send();

 

 

জাভাস্ক্রিপ্ট অবজেক্ট নটেশন সিনট্যাক্স (JSON Syntax)

Huge Sell on Popular Electronics

জেএসওএন সিনট্যাক্স

রিদওয়ান বিন শামীম

 

জেএসওএন সিনট্যাক্স, জাভাস্ক্রিপ্ট সিনট্যাক্সের একটি সাবসেট।

জেএসওএন সিনট্যাক্সের নিয়মাবলী

জেএসওএন সিনট্যাক্স, জাভাস্ক্রিপ্টের অবজেক্ট নোটেশন সিনট্যাক্স থেকে উদ্ভূত ।

  • ডাটা নাম ও মানের জোড়ায় থাকে
  • ডাটা কমা দ্বারা আলাদা করা থাকে
  • কুঁকড়ানো ব্র্যাকেট {} দ্বারা অবজেক্ট আবদ্ধ থাকে
  • স্কয়ার ব্র্যাকেট [ ] দ্বারা শ্রেণীবিন্যাস আবদ্ধ থাকে।

 

জেএসওএন ডাটা - একটি নাম ও একটি মান

জেএসওএন ডাটাকে নাম ও মানের জোড়ায় লেখা হয়ে থাকে। নাম ও মানের জোড়া ডাবল কোটে আবদ্ধ ফিল্ড নেম, একটি কোলন চিহ্ন ও একটি মান নিয়ে গঠিত হয়।

উদাহরণ,


"firstName":"John"


নোট : জেএসওএন নামে ডাবল কোটের দরকার হয়, জাভাস্ক্রিপ্টের নামের বেলায় দরকার হয় না।

 

জেএসওএন মান

জেএসওএন মান যেরকম হতে পারে

  • সংখ্যা (পূর্ণসংখ্যা বা ফ্লোটিং পয়েন্ট )
  • স্ট্রিং (ডাবল কোটে থাকবে )
  • Boolean (সত্য বা মিথ্যা)
  • শ্রেণীবিন্যাস (স্কয়ার ব্র্যাকেট দ্বারা আবদ্ধ)
  • অবজেক্ট (কুঁকড়ানো ব্র্যাকেট দ্বারা আবদ্ধ)

 

জেএসওএন অবজেক্ট

জেএসওএন অবজেক্ট কুঁকড়ানো ব্র্যাকেট দ্বারা আবদ্ধ থাকে। জাভাস্ক্রিপ্টের মত জেএসওএন অবজেক্ট মাল্টিপল নাম ও মানের জোড়া সংরক্ষণ করে,

উদাহরণ,


{"firstName":"John", "lastName":"Doe"}


 

 

জেএসওএন অ্যারে

স্কয়ার ব্র্যাকেট দ্বারা অ্যারে আবদ্ধ থাকে। জাভাস্ক্রিপ্টের মত জেএসওএন অ্যারে মাল্টিপল অবজেক্ট সংরক্ষণ করতে পারে।

উদাহরণ,


"employees":[
     {"firstName":"John", "lastName":"Doe"},
     {"firstName":"Anna", "lastName":"Smith"},
     {"firstName":"Peter","lastName":"Jones"}
]

 

উপরের উদাহরণে "employees" হল একটি শ্রেণীবিন্যাস যা তিনটি অবজেক্টকে ধরে রেখেছে, যাদের প্রত্যেকটি এক একজন ব্যক্তির নাম, (ফার্স্ট নেম ও লাস্ট নেম)।

 

জেএসওএন জাভাস্ক্রিপ্টের সিনট্যাক্স ব্যবহার করে

যেহেতু জেএসওএন সিনট্যাক্স, জাভাস্ক্রিপ্টের অবজেক্ট নোটেশন সিনট্যাক্স থেকে উদ্ভূত তাই জাভাস্ক্রিপ্টে জেএসওএন নিয়ে কাজ করলে খুব কম সংখ্যক অতিরিক্ত সফটওয়ার প্রয়োজন হয়। জাভাস্ক্রিপ্টের মাধ্যমে অবজেক্টের শ্রেণীবিন্যাস তৈরি করে তাতে ডাটা সন্নিবেশ করা যায়, যেমন,


var employees = [
      {"firstName":"John", "lastName":"Doe"},
      {"firstName":"Anna", "lastName":"Smith"},
      {"firstName":"Peter","lastName": "Jones"}
];

 

 

জাভাস্ক্রিপ্ট অবজেক্টের শ্রেণীবিন্যাসের প্রথম সত্ত্বাকে যেভাবে দেখানো যায়,


// returns John Doe
 employees[0].firstName + " " + employees[0].lastName;

 

 

এটিকে এভাবেও দেখানো যেতে পারে,


// returns John Doe
 employees[0]["firstName"] + " " + employees[0]["lastName"];

 

 

ডাটা এভাবে পরিবর্তিত হতে পারে,


employees[0].firstName = "Gilbert";


 

 

এটি এভাবেও পরিবর্তিত হতে পারে,


employees[0]["firstName"] = "Gilbert";


 

 

পরবর্তী অধ্যায়ে দেখানো হবে কীভাবে জেএসওএন টেক্সটকে জাভাস্ক্রিপ্ট অবজেক্টে পরিনত করা হয়।

 

জেএসওএন ফাইল

  • জেএসওএন ফাইলের ফাইল টাইপ হল ".json"
  • জেএসওএন টেক্সটের MIME টাইপ হল "application/json"

সফটওয়ার প্রকৌশলঃ সফটওয়ার বিশ্লেষণ ও ডিজাইন টুলস (Software Analysis & Design Tools)

Huge Sell on Popular Electronics

সফটওয়ার প্রকৌশলঃ সফটওয়ার বিশ্লেষণ ও ডিজাইন টুলস
রিদওয়ান বিন শামীম

সফটওয়ার ডিজাইন ও বিশ্লেষণ সেইসব কার্যাবলী যেগুলো রিকোয়ারমেন্ট স্পেসিফিকেশনগুলোকে প্রায়োগিক রূপ দেয় ও তাদের নিয়ে আলোচনা করে। রিকোয়ারমেন্ট স্পেসিফিকেশন সফটওয়ারের কাছে সকল ফাংশনাল ও ননফাংশনাল চাহিদা বিবৃত করে। এই চাহিদাগুলো মানুষের পঠনযোগ্য ও বোধগম্য ডকুমেন্ট আকারে আসে, যেক্ষেত্রে কম্পিউটারের কিছুই করার নেই।

সফটওয়ার বিশ্লেষণ ও ডিজাইন মধ্যবর্তী ধাপ যা মানুষের পঠনযোগ্য ডকুমেন্টকে প্রকৃত কোডে রূপান্তরিত করে।

সফটওয়ার ডিজাইনাররা ব্যবহার করেন এমন কিছু বিশ্লেষণ ও ডিজাইন টুলস নিয়ে আলোচনা করা যাক।

ডাটা ফ্লো ডায়াগ্রামঃ কোন ইনফরমেশন সিস্টেমের ডাটা ফ্লোয়ের গ্রাফিক্যাল উপস্থাপনা হল ডাটা ফ্লো ডায়াগ্রাম। এটি গৃহীত ডাটা ফ্লো, বহির্গামী ডাটা ফ্লো ও সঞ্চিত ডাটা প্রকাশ করে। কীভাবে সিস্টেমে ডাটা ফ্লো প্রবাহিত হয় সেটি ডাটা ফ্লো ডায়াগ্রাম দেখায় না।

ডাটা ফ্লো ডায়াগ্রামের প্রকারঃ ডাটা ফ্লো ডায়াগ্রাম দুই প্রকার হয়, লজিকাল ও ফিজিকাল।

• লজিকাল ডাটা ফ্লো ডায়াগ্রামঃ সিস্টেমের প্রক্রিয়া ও সিস্টেমে ডাটা ফ্লোয়ের উপর মনোনিবেশ করে। যেমন, ব্যাংকিং সফটওয়ারে যেভাবে তথ্যগুলো বিভিন্ন সত্ত্বার মধ্যে চলাচল করে তা লজিকাল ডাটা ফ্লো ডায়াগ্রাম সিস্টেমের উদাহরণ।

• ফিজিকাল ডাটা ফ্লো ডায়াগ্রামঃ এটি দেখায় কীভাবে সিস্টেমে প্রয়োগ করা হয়, এটি প্রয়োগের দিক থেকে অনেক বেশি সংশ্লিষ্ট ও বিস্তারিতভাবে বিবৃত।

ডাটা ফ্লো ডায়াগ্রামের উপাদানঃ ডাটা ফ্লো ডায়াগ্রাম নিচের উপাদানগুলো ব্যবহার করে তথ্যের উৎস, গন্তব্য, স্টোরেজ, ও প্রবাহ প্রকাশ করতে পারে।

• সত্তাঃ বিভিন্ন সত্ত্বাগুলো তথ্যের উৎস ও গন্তব্য। ডাটা ফ্লো ডায়াগ্রামে একে সমকোণী চতুর্ভুজাকারে দেখানো হয়, তাদের সংশ্লিষ্ট নাম সহ।

• প্রক্রিয়াঃ তথ্যের উপর নেয়া পদক্ষেপ ও কার্যক্রম যা ডাটা ফ্লো ডায়াগ্রামে বৃত্ত বা গোলাকার কোনবিশিষ্ট চতুর্ভুজাকারে প্রকাশ করা হয়।

• ডাটা স্টোরেজঃ ডাটা ফ্লো ডায়াগ্রামে ডাটা স্টোরেজকে দুইভাবে দেখানো যেতে পারে, একে সমকোণী চতুর্ভুজাকারে দেখানো হয় যার ছোট বাহুদুটির একটি বা উভয়দুটিই অনুপস্থিত থাকতে পারে।

• ডাটা ফ্লোঃ ডাটার চলাফেরা তীরচিহ্ন দিয়ে প্রকাশ করা হয়, তীরের মাথা তথ্যের প্রবাহের দিক নির্দেশ করে।

ডাটা ফ্লো ডায়াগ্রামের লেভেলসমূহঃ

• লেভেল জিরোঃ ডাটা ফ্লো ডায়াগ্রামের সবচেয়ে বিমূর্ত লেভেলকে লেভেল জিরো দ্বারা প্রকাশ করা হয়,এটি সমস্ত তথ্যসিস্টেমকে অন্যান্য তথ্য ছাপিয়ে একটি মাত্র ডায়াগ্রামে প্রকাশ করে। একে কনটেক্সট লেভেল ডাটা ফ্লো ডায়াগ্রামও বলে।
• লেভেল ওয়ানঃ লেভেল জিরোকে আরও বিস্তারিত প্রকাশের জন্য ভেঙ্গে লেভেল ওয়ান দ্বারা প্রকাশ করা হয়। লেভেল ওয়ান সিস্টেমের মডিউল ও বিভিন্ন মডিউলে তথ্যের প্রবাহ প্রকাশ করে। মৌলিক প্রক্রিয়া ও তথ্যের উৎসও লেভেল ওয়ান প্রকাশ করে।
• লেভেল টুঃ লেভেল টুতে দেখানো হয় লেভেল ওয়ানে কীভাবে ডাটা ফ্লো সজ্জিত থাকে।

উঁচু শ্রেণীর ডাটা ফ্লো ডায়াগ্রাম বিভাজিত হতে হতে আরও বিস্তারিতভাবে নির্ধারিত নিচু শ্রেণীর ডাটা ফ্লো ডায়াগ্রামে বিশ্লেষিত হতে পারে যতক্ষণ পর্যন্ত না কাঙ্খিত মানের লেভেল পাওয়া যায়।

কাঠামো চার্টঃ কাঠামো চার্ট ডাটা ফ্লো ডায়াগ্রাম থেকে উদ্ভূত এক ধরণের চার্ট, এটি ডাটা ফ্লো ডায়াগ্রামের চেয়েও বিস্তারিত ভাবে সিস্টেমকে বিবৃত করে। এটি পুরো সিস্টেমকে ক্ষুদ্রাতিক্ষুদ্র ফাংশনাল মডিউলে ভাগ করে সেগুলোর ফাংশন ও সাবফাংশনকে বিবৃত করে ডাটা ফ্লো ডায়াগ্রামের চেয়েও নিখুঁত বিবরণ প্রকাশ করে।
কাঠামো চার্ট সিস্টেমের মডিউলের স্তরবিন্যাসগত কাঠামো প্রকাশ করে। প্রতিটা স্তরে নির্ধারিত কাজ সম্পন্ন হয়।
কাঠামো চার্ট গঠনে ব্যবহৃত কিছু সিম্বল নিচে আলোচনা করা হল,

• মডিউলঃমডিউল কাজের প্রক্রিয়া বা সাবরুটিন বা কাজকেই প্রকাশ করে। কন্ট্রোল মডিউল একাধিক সাবমডিউলকে নিয়ন্ত্রণ করে। লাইব্রেরী মডিউল পুনরায় ব্যবহারযোগ্য ও অন্য মডিউলে তথ্যশেয়ারের যোগ্য ।
• কন্ডিশনঃ কাঠামো চার্টে মডিউলের নিচে হীরকাকৃতির চিহ্ন দ্বারা প্রকাশ করা হয়। কন্ট্রোল মডেল কিছু শর্তানুসারে যেকোনো সাবরুটিন নির্দেশ করতে পারে, এটিই কন্ডিশন নির্দেশ করে।
• জাম্পঃ মডিউলে একটি তীরচিহ্ন দ্বারা প্রকাশ করা হয়, এটি প্রকাশ করে কন্ট্রোল কোন সাবমডিউলের মাঝখানে নির্দেশিত হতে পারে।
• লুপঃএকটি বাঁকানো তীরচিহ্ন। সাবমডিউলের পুনরাবৃত্তিক অবস্থা প্রকাশে ব্যবহার করা হয়।
• ডাটা ফ্লোঃ লেজে ফাঁকা বৃত্তসহ তীরচিহ্নই ডাটা ফ্লো নির্দেশ করে।
• কন্ট্রোল ফ্লোঃ লেজে ভরাট বৃত্তসহ তীরচিহ্ন কন্ট্রোল ফ্লো নির্দেশ করে।

হিপো ডায়াগ্রামঃ HIPO (Hierarchical Input Process Output) ডায়াগ্রাম সিস্টেম বিশ্লেষণ ও ডকুমেন্টেশনের দুটি সুগঠিত পদ্ধতির সমন্বয়, ১৯৭০ সালে আইবিএম এই মডেলটি উদ্ভাবন করেছিল। হিপো ডায়াগ্রামে সফটওয়ার সিস্টেমের মডেলগুলোকে ক্রমানুসারে দেখানো হয়। বিশ্লেষকরা সিস্টেম ফাংশনের উঁচু মানের পর্যবেক্ষণের জন্য হিপো ডায়াগ্রাম ব্যবহার করে থাকেন। এটি ফাংশনকে স্তরবিন্যাসগত পদ্ধতিতে সাবফাংশনে ভাগ করে। এটি সিস্টেমের কৃত ফাংশন প্রকাশ করে।

ডকুমেন্টেশনের জন্য হিপো ডায়াগ্রাম খুব উপযোগী, এর গ্রাফিক্যাল রিপ্রেজেন্টেশন সিস্টেম কাঠামোর দৃশ্যমান পরিকল্পনা করতে ডিজাইনার ও ব্যবস্থাপকদের সহায়তা করে থাকে।

আইপিও ডায়াগ্রামের(IPO,Input Process Output) তুলনায়, যেটি এক মডিউলে কন্ট্রোল ফ্লো ও ডাটা প্রকাশ করে, হিপো ডায়াগ্রাম কোন ডাটা ফ্লো বা কন্ট্রোল ফ্লোয়ের কোন তথ্য প্রকাশ করে না।

উদাহরণঃ হিপো ডায়াগ্রামের দুটি অংশ, স্তরবিন্যাসগত প্রেজেন্টেশন ও আইপিও চার্ট দুটিই সফটওয়ার প্রোগ্রামের কাঠামোগত ডিজাইন ও ডকুমেন্টেশনের জন্য ব্যবহৃত হয়।

কাঠামোগত ইংরেজিঃ বেশিরভাগ প্রোগ্রামারই সফটওয়ারের বৃহৎ চিত্র সম্পর্কে ধারণা করতে পরে না তাই তাদের ব্যবস্থাপকের নির্দেশনার উপর নির্ভর করে থাকতে হয়।
উচ্চতর সফটওয়ার ব্যবস্থাপনার দায়িত্ব হল প্রোগ্রামারদের পর্যাপ্ত তথ্য সরবরাহ করা যেন তারা দ্রুত কিন্তু নির্ভুল কোড ডেভেলাপ করতে পারেন।

অন্যান্য পদ্ধতি যেগুলো ডায়াগ্রাম বা গ্রাফ ব্যবহার করে গঠিত, সেগুলো বিভিন্ন মানুষের কাছে বিভিন্ন অর্থ প্রকাশ করতে পারে।

এমন অবস্থায় বিশ্লেষক ও ডিজাইনাররা কাঠামোগত ইংরেজির মত টুল ব্যবহার করেন। কোডিঙের জন্য কি দরকার আর কীভাবে দরকার, এটিই কাঠামোগত ইংরেজির মূল বিষয়। কাঠামোগত ইংরেজি প্রোগ্রামারদের নির্ভুল কোড লিখতে সাহায্য করে।

অন্যান্য পদ্ধতি যেগুলো ডায়াগ্রাম বা গ্রাফ ব্যবহার করে গঠিত, সেগুলো বিভিন্ন মানুষের কাছে বিভিন্ন অর্থ প্রকাশ করতে পারে, এখানে কাঠামোগত ইংরেজি ও সিওডো কোড দুটিই সেই দূরত্ব দূর করার চেষ্টা করে।

কাঠামোগত ইংরেজি কাঠামোগত প্রোগ্রামিং প্রেক্ষাপটে বিশুদ্ধ ইংরেজি শব্দ ব্যবহার করে। এটি বিশুদ্ধ কোড নয় কিন্তু কোডিঙের জন্য কি দরকার আর কীভাবে দরকার তার বিবরণ এর সাথে সম্পর্কযুক্ত। কাঠামোগত প্রোগ্রামিংএর কিছু টোকেন নিম্নরূপ,
IF-THEN-ELSE,
DO-WHILE-UNTIL
বিশ্লেষকরা একই চলক ও নাম ব্যবহার করেন যা ডাটা ডিরেক্টরিতে সংরক্ষিত থাকে এবং কোড বোঝা ও লিখা সহজ করে।

উদাহরণঃ অনলাইন বাণিজ্যিক পরিবেশে গ্রাহক প্রত্যয়ন লাভের জন্য কোন প্রোগ্রামে কাঠামোগত ইংরেজিতে লিখা যেতে পারে,
Enter Customer_Name
SEEK Customer_Name in Customer_Name_DB file
IF Customer_Name found THEN
Call procedure USER_PASSWORD_AUTHENTICATE()
ELSE
PRINT error message
Call procedure NEW_CUSTOMER_REQUEST()
ENDIF

কোডগুলো দৈনন্দিন জীবনের কথ্য ইংরেজির মতই, এটি সরাসরি কোড হিসেবে প্রয়োগ করা যাবে না, কাঠামোগত ইংরেজি প্রোগ্রামিং ল্যাঙ্গুয়েজের চেয়ে স্বনির্ভর।

সিওডো কোডঃ সিওডো কোড প্রোগ্রামিং ল্যাঙ্গুয়েজের কাছাকাছি ভাবে লেখা হয়। একে মন্তব্য ও বিবরণে সমৃদ্ধ তুলনামূলক প্রোগ্রামিং ল্যাঙ্গুয়েজ বলে ধরা যায়। সিওডো কোড চলক বিবৃতি এড়িয়ে চলে কিন্তু C, Fortran, Pascal এসব মৌলিক প্রোগ্রামিং ল্যাঙ্গুয়েজের উপাদান ব্যবহার করে।

সিওডো কোড কাঠামোগত ইংরেজির চেয়ে বেশি প্রোগ্রামিং ডিটেলস ব্যবহার করে, এটি কাজ করার জন্য এমন একটি পদ্ধতি ব্যবহার করে যাতে করে কম্পিউটার কোডগুলোকে সম্পাদন করতে পারে।

উদাহরণঃ ফিবনাচ্চি সংখ্যারাশিকে n পর্যন্ত প্রিন্ট করতে যে কোড লিখব তা হল,
void function Fibonacci
Get value of n;
Set value of a to 1;
Set value of b to 1;
Initialize I to 0
for (i=0; i< n; i++)
{
if a greater than b
{
Increase b by a;
Print b;
}
else if b greater than a
{
increase a by b;
print a;
}
}
ডিসিশন টেবিলঃ ডিসিশন টেবিল সংবদ্ধ উপায়ে কন্ডিশন ও তা সম্পন্ন করার জন্য কার্যাবলী প্রকাশ করে। এটি সংশোধন ও ভুল এড়ানোর ক্ষেত্রে একটি শক্তিশালী টুল। এটি সদৃশ তথ্যগুলোকে গ্রুপে সাজিয়ে একটি টেবিলে সাজাতে সাহায্য করে, এরপর টেবিলগুলোকে একসাথে করে সহজ ও সুবিধাজনক সিদ্ধান্ত নিতে সাহায্য করে।
ডিসিশন টেবিল তৈরি করাঃ ডিসিশন টেবিল তৈরি করতে প্রোগ্রামারদের চারটি মৌলিক নিয়ম মেনে চলতে হয়,
• সম্ভাব্য সব কন্ডিশন খুঁজে বার করা,
• সব কন্ডিশনের জন্য কর্মপন্থা খুঁজে বার করা,
• সম্ভাব্য সর্বাধিক নিয়ম তৈরি করা,
• প্রত্যেক নিয়মের জন্য কর্মপন্থা খুঁজে বার করা

এন্ড ইউজারদের দ্বারা ডিসিশন টেবিল ভেরিফাই করাতে হয়। পরে ডুপ্লিকেট নিয়ম ও কর্মকাণ্ড খুঁজে বের করে বাদ দিয়ে প্রক্রিয়া সহজ করে ফেলা যায়।

উদাহরণ, আমাদের দৈনন্দিন জীবনের সাধারণ একটি সমস্যা, ইন্টারনেট সংযোগ বিষয়ে উদাহরণ দেয়া যাক। আমরা ইন্টারনেট সংযোগ চালুর পর প্রাপ্ত সমস্যা ও তাদের সমাধান নিয়ে শুরু করব,
আমরা সম্ভাব্য সমস্যাগুলোকে কন্ডিশন কলামে এবং সম্ভাব্য সমাধানগুলোকে একশন কলামে রাখব।

Conditions/Actions Rules
Conditions Shows Connected N N N N Y Y Y Y
Ping is Working N N Y Y N N Y Y
Opens Website Y N Y N Y N Y N
Actions Check network cable X
Check internet router X X X X
Restart Web Browser X
Contact Service provider X X X X X X
Do no action

এনটিটি রিলেশনশিপ মডেলঃ এনটিটি রিলেশনশিপ মডেল একধরনের ডাটাবেস মডেল যেটি বাস্তব জগতের সত্ত্বা ও তাদের মধ্যেকার সম্পর্কের ধারনাকে কাজে লাগানো হয়েছে।আমরা বাস্তব জগতের সত্ত্বাকে এনটিটি রিলেশনশিপ মডেলের মাধ্যমে তুলে ধরতে পারি। এনটিটি রিলেশনশিপ মডেল স্বতন্ত্র সত্ত্বা ও তাদের প্রয়োগের একটি সেট তৈরি করে, সীমাবদ্ধতার একটি সেট তৈরি করে তাদের মধ্যে সম্পর্ক বিবৃত করে।

ডাটাবেসের ধারনাগত ডিজাইনের ক্ষেত্রে এনটিটি রিলেশনশিপ মডেল সবচেয়ে ভাল কাজ করে। এনটিটি রিলেশনশিপ মডেলের উপাদানগুলো হল,

সত্ত্বাঃ এনটিটি রিলেশনশিপ মডেল অনুসারে সত্ত্বার বাস্তব জগতের অস্তিত্ব আছে, এর কিছু বৈশিষ্ট্য আছে যাকে attributes বলে, প্রত্যেকটি attributes তাদের বৈশিষ্ট্যের ভ্যলুর সেট অর্থাৎ ডোমেইন দ্বারা প্রকাশ করা হয়। যেমন, কোন স্কুলের ডাটাবেসের কথা চিন্তা করা যাক, এখানে কোন ছাত্র হল সত্ত্বা, আর তার নাম, আইডি , শ্রেণী, বয়স এসব হল বিভিন্ন attributes।
রিলেশনশিপঃ সত্ত্বাগুলোর মধ্যে পারস্পরিক সম্পর্কই এনটিটি রিলেশনশিপ মডেলে রিলেশনশিপ। সত্ত্বাগুলোর মধ্যে রিলেশনশিপ বিভিন্ন ভাবে সমন্বিত, এই সমন্বয়ের একক দুটো সত্ত্বার মধ্যে যোগাযোগকে বিবৃত করে। এই সমন্বয়ের একক যা এখানে ম্যাপিং কার্ডিনালিটি, নিচের যেকোনো ফরমেটে থাকে।

• এক থেকে এক
• এক থেকে অনেক
• অনেক থেকে এক
• অনেক থেকে অনেক
ডাটা ডিকশনারিঃ ডাটা ডিকশনারি ডাটা সম্পর্কিত তথ্যের কেন্দ্রীভূত সমষ্টি। এটি ডাটার উৎস ও অর্থ, অন্য ডাটার সাথে সম্পর্ক, ডাটার প্রায়োগিক ফরম্যাট ইত্যাদি সংরক্ষণ করে। ডাটা ডিকশনারি সকল নামের বিবৃতি কঠোরভাবে ও সংগঠিতভাবে সংরক্ষণ করে ডিজাইনার ও ব্যবহারকারীদের সুবিধার জন্য। ডাটা ডিকশনারিকে মেটা ডাটা(তথ্য বিষয়ে তথ্য!) সংগ্রহস্থলও বলা হয়। এটি সফটওয়ার প্রোগ্রামের ডাটা ফ্লো ডায়াগ্রামের সাথে তৈরি হয় এবং ডাটা ফ্লো ডায়াগ্রামের সাথেই আপডেটও হতে পারে।
ডাটা ডিকশনারির প্রয়োজনীয়তাঃ সফটওয়ার ডিজাইন ও প্রয়োগের সময় ডাটা ডিকশনারির সাহায্যে ডাটা সমন্বয় করা হয়, কোন অস্পষ্টতা থাকলে ডাটা ডিকশনারির সাহায্যে তা দূর করা হয়। প্রোগ্রামের সর্বত্র একই ধরণের অবজেক্ট রেফারেন্স ব্যবহার করার সময় এটি প্রোগ্রামার ও ডিজাইনারদের সাহায্য করে থাকে।
ডাটা ডিকশনারি পুরো ডাটাবেস সিস্টেমকে এক জায়গায় ডকুমেন্টেশন করতে সাহায্য করে। ডাটা ফ্লো ডায়াগ্রামের ভ্যালিডেশন ও ডাটা ডিকশনারির সাহায্যে হয়।
উপাদানঃ ডাটা ডিকশনারি যে বিষয়গুলোর তথ্য রাখতে পারে সেগুলো হল,
• ডাটা ফ্লো
• ডাটা কাঠামো
• ডাটার উপাদান
• ডাটা সংরক্ষণ
• ডাটা প্রক্রিয়াকরণ

ডাটা ফ্লো, ডাটা ফ্লো ডায়াগ্রামের নিয়ম মেনে চলে ও নিচে বর্ণিত গাণিতিক প্রকরণ মেনে চলে।
= Composed of
{} Repetition
() Optional
+ And
[ / ] Or

উদাহরণঃ ঠিকানা=বাড়ি নং+রাস্তা/ এলাকা+নগর+রাষ্ট্র।
কোর্স আইডি=কোর্স নাম্বার+কোর্স নাম+কোর্স লেভেল+কোর্স গ্রেড।

ডাটার উপাদানঃ ডাটার নাম ও বর্ণনা ডাটার উপাদানের অন্তর্ভুক্ত যাতে উপাদান, অভ্যন্তরীণ বা বাইরের ডাটা স্টোরেজ সহ নিচের বর্ণনাগুলিও সংশ্লিষ্ট ।

• প্রাথমিক নাম
• মাধ্যমিক নাম(Alias)
• ব্যবহার বিধি
• উপাদানের বর্ণনা
• সম্পুরক তথ্য(পূর্বনির্ধারিত ভ্যলু,সীমাবদ্ধতা ইত্যাদি)

ডাটা সংরক্ষণঃ এটি সেখানে তথ্য সংরক্ষণ করে যেখানে সিস্টেমের তথ্য আসে ও যেখান থেকে তথ্য চলে যায়। ডাটা সংরক্ষণে যে বিষয়গুলো থাকে তা হল,
ফাইলঃ
• অভ্যন্তরীণ থেকে সফটওয়ারে
• বাইরে থেকে সফটওয়ারে কিন্তু একই মেশিনে
• বাইরে থেকে সফটওয়ার ও সিস্টেমে, ভিন্ন মেশিনে।

টেবিলঃ
• নামের সন্নিবেশ
• বৈশিষ্ট্য লিপিবদ্ধকরণ
ডাটা প্রক্রিয়াকরণঃ দুই ধরণের ডাটা প্রক্রিয়াকরণ দেখা যায়,
লজিকালঃ ব্যবহারকারী দেখতে পারেন।
ফিজিকালঃ সফটওয়ার দেখতে পায়।

তথ্যসূত্রঃ http://www.tutorialspoint.com/software_engineering/software_analysis_design_tools.htm

সফটওয়ার রিকোয়ারমেন্ট . Software Requirements

Huge Sell on Popular Electronics

সফটওয়ার রিকোয়ারমেন্ট

রিদওয়ান বিন শামীম

 

সফটওয়ার রিকোয়ারমেন্ট হল প্রত্যাশিত সিস্টেমের ফিচার এবং ফাংশনালিটির বিবরণ। রিকোয়ারমেন্ট দ্বারা গ্রাহকদের সফটওয়ার হতে প্রত্যাশা নির্দেশ করে। গ্রাহকের দৃষ্টি ক্ষমতার উপর নির্ভর করে রিকোয়ারমেন্ট সুস্পষ্ট বা লুকানো, জানা বা অজানা, অনুমিত বা অভাবিত যেকোনো রকমই হতে পারে।

রিকোয়ারমেন্ট প্রকৌশল

গ্রাহকের কাছ থেকে রিকোয়ারমেন্ট যোগাড় করা, পরে সেগুলোকে বিশ্লেষণ করে লিপিবদ্ধ করার প্রক্রিয়াকে রিকোয়ারমেন্ট প্রকৌশল বলা হয়।

রিকোয়ারমেন্ট প্রকৌশলের মূল উদ্দেশ্য হল জটিল এবং বর্ণনামূলক ‘সিস্টেম রিকোয়ারমেন্ট স্পেসিফিকেসন’ নামক ডকুমেন্ট তৈরি ও অনুসরণ করা।

রিকোয়ারমেন্ট প্রকৌশলের প্রক্রিয়া

এটি চার ধাপের প্রক্রিয়া যার মধ্যে আছে,

• সম্ভাব্যতা নিরূপণ,
• রিকোয়ারমেন্ট জড়ো করা,
• সফটওয়ার রিকোয়ারমেন্ট স্পেসিফিকেশন,
• সফটওয়ার রিকোয়ারমেন্ট চূড়ান্তকরণ।

সম্ভাব্যতা নিরূপণ

যখন কোন গ্রাহক সফটওয়ার প্রতিষ্ঠানে কাঙ্ক্ষিত সফটওয়ার পণ্যের জন্য আসে, তখন পণ্যটি কি কি সুবিধা দেবে বা এর কি কি ফিচার থাকবে তার একটি রূপরেখা পাওয়া যায়। এর উপর ভিত্তি করে কাঙ্খিত ফলাফল মাথায় রেখে উন্নয়নের সম্ভাব্য রূপরেখা নির্ধারিত হয়। এই সম্ভাব্যতা নিরূপণ কোম্পানির লক্ষ্য মাথায় রেখে ঠিক করা হয়, বিশ্লেষণ করা হয় এর প্রায়োগিক সম্ভাব্যতা, সংস্থার জন্য এর ভুমিকা, মূল্য বিষয়ক সীমাবদ্ধতা, কোম্পানির লক্ষ্য ইত্যাদি। প্রযুক্তিগত দিকের পাশাপাশি দেখা হয় প্রায়োগিক, রক্ষণাবেক্ষণ বিষয়ক, উৎপাদনশীলতা ও মৌলিকতাও।

ফলশ্রুতিতে আমরা যা পাই তা হল একটি সম্ভাব্য স্টাডি রিপোর্ট যাতে ব্যবস্থাপনার উদ্দেশে কিছু সুপারিশ ও মন্তব্য থাকে যা নির্দেশ করে প্রকল্পটি হাতে নেয়া হবে কি হবে না।

রিকোয়ারমেন্ট জড়ো করা

যদি সম্ভাব্য স্টাডি রিপোর্ট প্রকল্পটি হাতে নেয়ার সুপারিশ করে তবে গ্রাহকদের থেকে তথ্য নিয়ে রিকোয়ারমেন্ট সংগ্রহ করতে হয়। বিশ্লেষক ও প্রকৌশলীরা গ্রাহক ও কলাকুশলীদের সাথে তাদের ধারণা নিয়ে তাদের কি সফটওয়ার লাগবে, তাতে কি কি থাকতে হবে এসব নিয়ে আলোচনা করেন।

সফটওয়ার রিকোয়ারমেন্ট স্পেসিফিকেশন

সফটওয়ার রিকোয়ারমেন্ট স্পেসিফিকেশনকে এখানে SRS (Software Requirement Specification) নামে চিহ্নিত করছি, এটি মূলত একটি ডকুমেন্ট যেটি বিশ্লেষকদের দ্বারা গ্রাহকদের চাহিদা মাথায় রেখে নির্ধারণ করা হয়। SRS ঠিক করে কীভাবে অভীষ্ট সফটওয়ার হার্ডওয়ারের সাথে কাজ করবে, কীভাবে অভ্যন্তরীণ ইন্টারফেস ও সিস্টেমের সময়, বিভিন্ন প্ল্যাটফরমের সাথে কীভাবে কাজ করবে, রক্ষণাবেক্ষণ ও সিস্টেম নষ্ট হলে কীভাবে তা পুনরুদ্ধার করা যাবে, নিরাপত্তা, মান, সীমাবদ্ধতা ইত্যাদি কীভাবে সামলানো হবে।

গ্রাহকদের থেকে পাওয়া রিকোয়ারমেন্ট সাধারণ ভাষায় লিখিত থাকে। সিস্টেমের বিশ্লেষকদের দায়িত্ব হল সেটিকে প্রযুক্তিগত ভাষায় তুলে ধরা যাতে সফটওয়ার ডেভলাপমেন্ট টিমের জন্য সেটি বোধগম্য ও উপযোগী হয়।
SRS এই কাজগুলো করতে পারে,

• গ্রাহকদের রিকোয়ারমেন্ট সাধারণ ভাষায় লিখিত
• টেকনিক্যাল রিকোয়ারমেন্ট প্রযুক্তিগত ভাষায় তুলে ধরা যা সংস্থার অভ্যন্তরে ব্যবহার করা হয়।
• ডিজাইনের বর্ণনা সিওডো কোডে (Pseudo code) লেখা হয়।
• ফর্ম ও গ্রাফিক্যাল ইউজার ইন্টারফেস স্ক্রিন প্রিন্টের বিন্যাস করা।
• DFDs ইত্যাদির জন্য গাণিতিক ও কন্ডিশনাল নোটেশন নির্ধারণ।

সফটওয়ার রিকোয়ারমেন্ট চূড়ান্তকরণ

সফটওয়ার রিকোয়ারমেন্ট স্পেসিফিকেশন নিশ্চিত হওয়ার পর ডকুমেন্টে নির্ধারিত রিকোয়ারমেন্ট চূড়ান্ত করা হয়। ব্যবহারকারিভ আইনগত দিক থেকে নিশ্চিত হতে চাইতে পারেন, অবাস্তব সমাধান থাকতে পারে বা সিস্টেমের বিশ্লেষকরা ভুল ভাবে সমস্যাটি দেখে থাকতে পারেন। এসব সমস্যা প্রথমে ঠিক না করলে পরবর্তীতে খরচ অনেক বাড়বে। রিকোয়ারমেন্টকে নিচের কন্ডিশন সাপেক্ষে চূড়ান্ত করা হয়।

• যদি তারা ব্যবহারিকভাবে প্রয়োগযোগ্য হয়,
• যদি তারা সফটওয়ারের ডোমেইন ও ফাংশনালিটি অনুমোদিত হয়,
• যদি কোনও অস্পষ্টতা থাকে,
• যদি এগুলো সম্পন্ন থাকে,
• যদি এরা উদাহরণ হওয়ার যোগ্য হয়ে থাকে।

রিকোয়ারমেন্ট জানার প্রক্রিয়া

রিকোয়ারমেন্ট প্রকাশের প্রক্রিয়াকে নিচের ধাপগুলোর মাধ্যমে প্রকাশ করা যায়।

• রিকোয়ারমেন্ট সংগ্রহ করাঃ বিশ্লেষক ও প্রকৌশলীরা গ্রাহক ও কলাকুশলীদের সাথে আলোচনা করে রিকোয়ারমেন্ট সংগ্রহ করে।
• রিকোয়ারমেন্ট সংঘটিত করাঃ বিশ্লেষক ও প্রকৌশলীরা সুবিধা, গুরুত্ব ও উপযোগিতা অনুসারে রিকোয়ারমেন্টগুলোকে সংঘটিত করে।
• নিগোসিয়েশন ও আলোচনাঃ রিকোয়ারমেন্ট সমস্যাপূর্ণ হলে বা কোনও বিতর্কিত ইস্যু থাকলে স্টকহোল্ডাররা নিজেদের মধ্যে নিগোসিয়েশন ও আলোচনা করে সেগুলো ঠিক করেন।

স্টকহোল্ডাররা পরিষ্কারভাবে ও সরাসরি আলোচনা করে প্রয়োজনে সমঝোতা করেও, এই সমস্যাগুলো সঠিক ভাবে সমাধান করেন।

 

ডকুমেন্টেশন

ফরমাল ও ইনফরমাল, ফাংশনাল ও নন ফাংশনাল সবকিছুই কাগজে কলমে সংরক্ষণ করা হয় যেন পরবর্তী প্রক্রিয়াগুলোতে ব্যবহার করা যায়।

 

রিকোয়ারমেন্ট জানার কৌশল

গ্রাহক, ব্যবহারকারী, কলাকুশলী, সিস্টেম সংশ্লিষ্ট লোকজন যাদের সম্পৃক্ততা আছে প্রত্যাশিত সফটওয়ারের সঙ্গে তাদের সাথে আলোচনা করে প্রত্যাশিত সফটওয়ারের রিকোয়ারমেন্ট জানতে বা স্থির করতে হয়।

রিকোয়ারমেন্ট জানার অনেকগুলো পদ্ধতি আছে,

সাক্ষাৎকার

রিকোয়ারমেন্ট জানার খুব ভাল একটি পদ্ধতি হল সাক্ষাৎকার নেয়া, সংস্থা যে ধরণের সাক্ষাৎকারের ব্যবস্থা করতে পারে সেগুলো হল,

কাঠামোবদ্ধ সাক্ষাৎকারঃ যেখানে পূর্ব নির্ধারিত বিষয় জানার চেষ্টা করা হয়। প্রত্যেকটি তথ্য প্যাটার্ন ও আলোচ্য বিষয় অনুযায়ী হয়ে থাকে, ছকে বাঁধা প্রশ্নের উত্তর খোঁজা হয়।
কাঠামোবিহীন সাক্ষাৎকারঃ প্রত্যাশিত তথ্য পূর্বনির্ধারিত নয়, বরং অধিক স্থিতিস্থাপক, এবং তা মোটেই ছকে বাঁধা নয়।
মৌখিক সাক্ষাৎকার।
লিখিত সাক্ষাৎকার।
ওয়ান টু ওয়ান সাক্ষাৎকারঃ একজনের সাথে অপর একজনের সাক্ষাৎকার।
গ্রুপ সাক্ষাৎকারঃ অংশগ্রহণকারীদের দলগত আলোচনা। কোন রিকোয়ারমেন্ট বাদ পরলে এখানে সেটি নিয়ে কাজ করা হয়, যেহেতু অনেক লোক এটিতে সম্পৃক্ত।

জরীপ

সংস্থাগুলো সম্পৃক্ত লোকজনের সাথে তাদের প্রত্যাশা ও রিকোয়ারমেন্ট নিয়ে আলোচনা করে জরীপ পরিচালনা করে থাকে।

প্রশ্নমালা

পূর্ব নির্ধারিত প্রশ্নের সেট ও সম্ভাব্য উত্তরের তালিকা সম্পৃক্ত লোকজনের কাছে দেয়া হয় উত্তর দেয়ার জন্য।

কাজ বিশ্লেষণ

প্রকৌশলী ও ডেভলপাররা নতুন সিস্টেম উপযোগী অপারেশন বিশ্লেষণ করে, যদি গ্রাহক এরকম কোন কাজের জন্য সফটওয়ার আগেই পেয়ে গিয়ে থাকে তাহলে সেটি খতিয়ে দেখা হয়, প্রস্তাবিত সিস্টেমও সংগ্রহ করা হয়।

ডোমেইন বিশ্লেষণ

প্রত্যেক সফটওয়ার কোনও না কোনও ডোমেইনের আওতায় পড়ে, ডোমেইনে অভিজ্ঞ ব্যক্তিরা সাধারণ ও বিশেষায়িত রিকোয়ারমেন্ট বিশ্লেষণের ক্ষেত্রে খুবই গুরুত্বপূর্ণ।

ব্রেইনস্টরমিং

অনিয়ন্ত্রিত বিতর্ক আয়োজন করা যার ফলাফল পরবর্তী বিশ্লেষণের জন্য সংরক্ষিত রাখা হয়।

প্রোটোটাইপিং

বিস্তারিত ফাংশনালিটি না প্রয়োগ করে ইউজার ইন্টারফেস তৈরি করা যাতে গ্রাহকরা নতুন পণ্যের ভাল মন্দ বুঝতে পারে। এটি রিকোয়ারমেন্টের নিখুঁত ধারণা তৈরি হতে সাহায্য করে। যদি গ্রাহকের কাছে পূর্বের এরকম কোনও সফটওয়ার না থাকে, ডেভলপারের ডাটাবেসেও যদি না থাকে গ্রাহক নিজে কোনও রিকোয়ারমেন্ট সম্পর্কে না জানে তবে ডেভলপার পূর্বল্লেখিত রিকোয়ারমেন্ট দিয়ে প্রোটোটাইপ তৈরি করে নিতে পারেন, সেটি গ্রাহকের সামনে উপস্থাপন করে ফিডব্যাক অর্জন করা হয়।

পর্যবেক্ষণ

দক্ষ কর্মীরা গ্রাহকের কাজের ক্ষেত্র পর্যবেক্ষণ করেন। তারা বিদ্যমান সিস্টেম যাচাই করে দেখেন। তারা গ্রাহকের কাজের ধারা লক্ষ্য করেন, কীভাবে উদ্ভূত সমস্যা সমাধান করা হয় তাও দেখেন। এই টিম নিজেও কিছু সিদ্ধান্তে আসে যা সফটওয়ার থেকে রিকোয়ারমেন্ট পেতে সহায়ক হয়।

 

সফটওয়ার রিকোয়ারমেন্টের বৈশিষ্ট্য

রিকোয়ারমেন্ট সংগ্রহ করা সফটওয়ার ডেভলপমেন্ট প্রোজেক্টের মূল ভিত্তি। তাই এগুলোকে সচ্ছ, নির্ভুল ও সুস্থিত হতে হয় ।
পরিপূর্ণ সফটওয়ার রিকোয়ারমেন্টের বৈশিষ্ট্য নিচে দেয়া হল।

• সচ্ছ
• নির্ভুল
• সামঞ্জস্যপূর্ণ
• সুসংগত
• বোধগম্য
• পরিবর্তনযোগ্য
• প্রতিপাদ্য
• অগ্রাধিকারযোগ্য
• দ্ব্যর্থহীন
• অনুসরণযোগ্য
• নির্ভরযোগ্য সূত্র সম্পন্ন।

আমাদের জানা থাকা উচিৎ কি ধরণের রিকোয়ারমেন্ট আমরা রিকোয়ারমেন্ট প্রকাশের প্রক্রিয়ায় পেতে পারি এবং সফটওয়ার সিস্টেমে কি ধরণের রিকোয়ারমেন্ট প্রত্যাশিত।

সফটওয়ার রিকোয়ারমেন্টকে দুই ভাগে ভাগ করা যেতে পারে,

ফাংশনাল রিকোয়ারমেন্ট

সফটওয়ারের ফাংশনাল ধারনার রিকোয়ারমেন্টগুলো এই শ্রেণীতে পড়ে, এরা সফটওয়ারের সিস্টেমে থেকে ফাংশন ও ফাংশনালিটি বিবৃত করে।

উদাহরণ,

• বিভিন্ন উৎস থেকে কোনও সার্চ করার অপশন
• ম্যানেজমেন্টে কোনও রিপোর্ট মেইল করতে পারা
• ব্যবহারকারীদের গ্রুপে বিভক্ত করা, আবার তাদের অধিকার পৃথক করা
• ব্যবসায়িক নিয়ম ও প্রশাসনিক ফাংশন মেনে চলা
• নিম্নশ্রেণীতে অভিযোজনের সক্ষমতা রেখে সফটওয়ার তৈরি করা।

ননফাংশনাল রিকোয়ারমেন্ট

সফটওয়ারের ননফাংশনাল ধারনার রিকোয়ারমেন্টগুলো এই শ্রেণীতে পড়ে, এগুলো সফটওয়ারের প্রত্যাশিত বৈশিষ্ট্যের মধ্যে পড়ে,

• নিরাপত্তা,
• লগইন,
• স্টোরেজ,
• কনফিগারেশন,
• পারফরমেন্স,
• মূল্য,
• আন্তঃক্রিয়া,
• নমনীয়তা,
• দুর্যোগ ব্যবস্থাপনা,
• প্রবেশযোগ্যতা

রিকোয়ারমেন্ট যৌক্তিকভাবে যে শ্রেণীগুলোতে পড়ে তা হল,

আবশ্যিকঃ যেগুলো ছাড়া সফটওয়ার চলবেই না।
থাকা উচিৎঃ সফটওয়ারের দক্ষতা বাড়ায়,
থাকা ভালঃ এটিও সফটওয়ারের দক্ষতা বাড়ায়, স্বাভাবিক গতিশীলতার জন্য প্রয়োজন হতে পারে।
উইশ লিস্টঃ সফটওয়ারের কোনও লক্ষ্যের জন্য অপরিহার্য নয়।

সফটওয়ার ডেভলপ করার সময় ‘আবশ্যিক’ তালিকা অবশ্যই বাস্তবায়িত করতে হবে, ‘ থাকা উচিৎ’ তালিকা সংশ্লিষ্ট ব্যক্তিদের বিতর্কের উপলক্ষ, ‘থাকা ভাল ও উইশ লিস্ট’ তালিকা সফটওয়ার আপডেটের জন্য সহায়ক হতে পারে।

 

ইউজার ইন্টারফেস রিকোয়ারমেন্ট

ইউজার ইন্টারফেস রিকোয়ারমেন্ট কোনও সফটওয়ার বা হার্ডওয়ার বা হাইব্রিড সিস্টেমের জন্য খুবই গুরুত্বপূর্ণ। কোনও সফটওয়ার ব্যপকভাবে গৃহীত হয় তখনি যখনঃ

• সহজে চালানো যায়,
• দ্রুত সাড়া দেয়,
• দক্ষতার সাথে ভুল সংশোধন করতে পারে,
• সহজ কিন্তু মৌলিক ইউজার ইন্টারফেস ব্যবহার করে।

গ্রাহকরা কীভাবে সফটওয়ারটিকে ব্যবহার করবে তার উপরে এটির গ্রহণযোগ্যতা নির্ভর করে। সিস্টেমকে হৃদয়ঙ্গম করার জন্য গ্রাহকের একমাত্র উপায় হল ইউজার ইন্টারফেস। ভালভাবে পারফর্ম করা সফটওয়ার সিস্টেমে আকর্ষণীয়, স্পষ্ট, সঙ্গত ও প্রতিক্রিয়াশীল হল ইউজার ইন্টারফেস থাকবে। তা নাহলে সিস্টেমের ফাংশনালিটি সঠিকভাবে হবে না। একটি সিস্টেম তখনি ভাল হবে যখন এটিকে দক্ষতার সাথে চালানো যায়।
ইউজার ইন্টারফেস রিকোয়ারমেন্টগুলো সংক্ষিপ্তভাবে নিচে দেয়া হল,

• উপাদানের উপস্থাপনা
• সহজ ন্যাভিগেশন
• সাধারণ ইন্টারফেস
• প্রতিক্রিয়াশীল
• সঙ্গত ইউজার ইন্টারফেস উপাদান
• ফিডব্যাক মেকানিজম
• ডিফল্ট সেটিং
• উদ্দেশ্যমূলক লেআউট
• রং ও টেক্সচারের পরিকল্পনামাফিক প্রয়োগ
• সাহায্যমূলক তথ্য উপস্থাপন
• ব্যবহারকারী কেন্দ্রিক মনোবৃত্তি
• গ্রুপভিত্তিক ভিউ সেটিং

 

সফটওয়ার সিস্টেম বিশ্লেষক

কোন আইটি প্রতিষ্ঠানে সফটওয়ার সিস্টেম বিশ্লেষক হলেন সেই ব্যক্তি যিনি প্রস্তাবিত প্রকল্পের রিকোয়ারমেন্টগুলো বিশ্লেষণ করেন, নিশ্চিত করেন রিকোয়ারমেন্টগুলো সঠিকভাবে ও নিয়মানুযায়ী চিন্তাভাবনা করে কাগজে কলমে লিপিবদ্ধ করা হয়েছে কিনা। সফটওয়ার সিস্টেম বিশ্লেষকের কাজ শুরু হয় SDLC এর সফটওয়ার বিশ্লেষণ ধাপে। প্রকল্পিত সফটওয়ারের রিকোয়ারমেন্টগুলো গ্রাহক চাহিদা পূরণ করেছে কিনা তা দেখা সফটওয়ার সিস্টেম বিশ্লেষকের কাজ।
সফটওয়ার সিস্টেম বিশ্লেষকের কাজগুলো হল,

• প্রকল্পিত সফটওয়ারের রিকোয়ারমেন্টগুলো বিশ্লেষণ ও বোঝা।
• সংস্থার লক্ষ্য অনুসারে প্রকল্প কীভাবে অবদান রাখবে তা বোঝা।
• রিকোয়ারমেন্টের সোর্স চেনা।
• রিকোয়ারমেন্টের ভ্যালিডেশন
• রিকোয়ারমেন্টের উন্নয়ন ও প্রয়োগ ব্যবস্থাপনার পরিকল্পনা।
• ব্যবসায়িক, কৌশলগত, কারিগরি, প্রক্রিয়াগত রিকোয়ারমেন্টের ডকুমেন্টেশন।
• গ্রাহক চাহিদা ও রিকোয়ারমেন্টের সমন্বয়সাধন, অস্পষ্টতা দূর করা।
• গ্রাহক ও সংশ্লিষ্ট ব্যক্তিদের সাথে প্রকল্প চূড়ান্ত করা।

 

সফটওয়ার ম্যাট্রিক্স ও পরিমাপ

সফটওয়ার পরিমাপ একটি প্রক্রিয়া যেটিতে সফটওয়ারের বিভিন্ন সুচকে পরিমাপ করা ও প্রকাশ করা হয় ।
সফটওয়ার ম্যাট্রিক্স সফটওয়ার প্রক্রিয়া ও পণ্যের সাপেক্ষে বিভিন্ন মাপ দিয়ে থাকে।
সফটওয়ার পরিমাপ সফটওয়ার প্রকৌশলের একটি মৌলিক প্রক্রিয়া। এটি শুধু সফটওয়ার ডেভলপমেন্টের প্রসেসকে নিয়ন্ত্রণই করে না, চূড়ান্ত পণ্যের মান ঠিক রাখতেও ভুমিকা রাখে।

Tom DeMarco (যিনি একজন সফটওয়ার প্রকৌশলী) এর মতে, ‘যেটি মাপা যাবে না তা নিয়ন্ত্রণও করা যাবে না।‘ এথেকেই বোঝা যায় সফটওয়ার পরিমাপ কতটুকু গুরুত্বপূর্ণ।

কয়েকটি সফটওয়ার ম্যাট্রিক্স নিয়ে আলোচনা করা যাক,

আকার বিষয়ক ম্যাট্রিক্স

LOC (Lines of Code) সাধারণত অনেক বেশি সোর্স কোডের পরিমাপে ব্যবহার করা হয়, KLOC রূপে প্রকাশ করা হয়। ফাংশন পয়েন্টের সংখ্যা সফটওয়ারের ফাংশনালিটির আকার প্রকাশ করে।

জটিলতা বিষয়ক ম্যাট্রিক্স

McCabe’s Cyclomatic complexity কোন প্রোগ্রামের স্বাধীন পাথের (path) নাম্বারের আপার বাউন্ডের (upper bound of the number) পরিমাপ করে, যেটি প্রোগ্রামের মডিউলের জটিলতার সূচক। এটি কন্ট্রোল ফ্লো গ্রাফ(control flow graph) ব্যবহার করে গ্রাফ থিওরি ধারণা প্রকাশ করে।

মান বিষয়ক ম্যাট্রিক্স

বিভিন্ন ধরণের ভুল, ধারাবাহিকতা, কঠোরতার প্রবণতা ও তার প্রয়োগ ইত্যাদি নির্দেশ করে মান বিষয়ক ম্যাট্রিক্স। উন্নয়ন প্রক্রিয়ার সময় প্রাপ্ত ভুল এবং পরবর্তীতে ব্যবহারকারী নির্দেশিত ভুল পণ্যের মান নির্দেশ করে।

প্রক্রিয়া বিষয়ক ম্যাট্রিক্স

SDLC এর বিভিন্ন ধাপে ব্যবহৃত যন্ত্রপাতি ও পদ্ধতি, এবং সফটওয়ার ডেভলপমেন্টের পারফর্মেন্স ইত্যাদি হল প্রক্রিয়া বিষয়ক ম্যাট্রিক্স।

রিসোর্স বিষয়ক ম্যাট্রিক্স

সময়,শ্রম ও ব্যবহৃত রিসোর্স ইত্যাদি হল রিসোর্স বিষয়ক ম্যাট্রিক্স।

 

সফটওয়ার ডিজাইনের বেসিক

Huge Sell on Popular Electronics

সফটওয়ার ডিজাইনের বেসিক

রিদওয়ান বিন শামীম

 

সফটওয়ার ডিজাইন একটি প্রক্রিয়া যেখানে গ্রাহক চাহিদাকে সুবিধাজনক পর্যায়ে পরিনত করা হয়, যা প্রোগ্রামারকে কোডিং ও তার প্রয়োগে সাহায্য করে।

গ্রাহক চাহিদা যাচাইয়ের জন্য এসআরএস (SRS-Software Requirement Specification) নামের ডকুমেন্ট তৈরি করা হয় কোডিং ও তার প্রয়োগে, যেখানে আরও নির্দিষ্ট ও বিস্তারিত রিকোয়ারমেন্টকে সফটওয়ারের টার্মে প্রকাশ করা হয়, এই প্রক্রিয়ার ফলাফলকে সরাসরি প্রোগ্রামিং ভাষার প্রয়োগে ব্যবহার করা হয়।

সফটওয়ার ডিজাইন SDLC (Software Design Life Cycle) এর প্রথম ধাপ, যেটি প্রবলেম ডোমেইন থেকে সল্যুশন ডোমেইনের দিকে মনোযোগ দেয়। এসআরএস (SRS-Software Requirement Specification)এ যে রিকোয়ারমেন্টের উল্লেখ আছে তা পূরণ করাই এর কাজ।

সফটওয়ার ডিজাইনের ধাপঃ তিন ধরনের ফলাফল দিয়ে থাকে।

• স্থাপত্যভিত্তিক ডিজাইনঃ স্থাপত্যভিত্তিক ডিজাইন সিস্টেমের শীর্ষ পর্যায়ের বিমূর্ত সংস্করণ, এটি সফটওয়ারকে এমন একটি সিস্টেমরূপে প্রকাশ করে যেখানে বিভিন্ন উপাদান পরস্পরের সাথে সম্পৃক্ত।এ ধাপে ডিজাইনাররা প্রস্তাবিত সল্যুশন ডোমেইনের ধারণা লাভ করে।

• উঁচু শ্রেণীর ডিজাইনঃ এই শ্রেণীর ডিজাইন স্থাপত্যভিত্তিক ডিজাইনের ‘একক সত্ত্বা বহু উপাদান’ ধারনাকে অল্প বিমূর্ত সাবসিস্টেম ও মডিউলে ভাগ করে এবং পরস্পরের মধ্যে সম্পৃক্ততা তৈরি করে। কীভাবে মডিউল আকারে এর সকল উপাদানকে একসাথে সমন্বিত করা হবে এই শ্রেণীর ডিজাইন তা নিশ্চিত করে। এই শ্রেণীর ডিজাইন মূলত প্রতিটি সাবসিস্টেমের সম্পর্ক ও পরস্পরের সাথে সম্পৃক্ততার মডিউলার কাঠামো নিশ্চিত করে।

• বিস্তারিত ডিজাইনঃ পূর্বের দুটি ডিজাইনের সিস্টেম ও সাবসিস্টেমের প্রায়োগিক দিক নিয়ে কাজ করে। এটি প্রায়োগিক ও মডিউলের বিস্তারিত দিক নিয়ে খুঁটিনাটি কাজ করে। এটি প্রত্যেকটি মডিউলের যৌক্তিক গঠন ও অন্য মডিউলের সাথে যোগাযোগের বিষয়টিও বিবৃত করে।

• মডিউলারাইজেশনঃ মডিউলারাইজেশন হল একটি প্রক্রিয়া যেটিতে কোনও সফটওয়ারকে স্বাধীন ও বিযুক্ত মডিউলে ভাগ করা হয় যেগুলো স্বাধীনভাবে কাজ করতে পারে। এই মডিউলগুলো মৌলিক নির্মাণ হিসেবে কাজ করতে পারে। ডিজাইনাররা এমনভাবে এই মডিউলগুলো নির্মাণ করে যেন তারা স্বতন্ত্রভাবে সংগৃহীত ও সম্পাদিত হতে পারে।

মডিউলার ডিজাইন অবচেতনভাবেই ‘ভাগ করা এবং অতিক্রম করা’ পদ্ধতি অনুসরণ করে, কারণ মডিউলার ডিজাইনে আরও অনেক সুবিধা থাকে।

মডিউলারাইজেশনের সুবিধাসমূহঃ

• একই ধরনের উপাদান সহজে নিয়ন্ত্রণ করা যায়,
• ফাংশনের ভিত্তিতে প্রোগ্রামকে বিভক্ত করা যায়,
• প্রোগ্রামে কাঙ্খিত পর্যায়ের বিমূর্তন আরোপ করা যায়,
• উচ্চ সংযোগ বিশিষ্ট উপাদান পুনরায় ব্যবহার করা যায়,
• সহগামী সম্পাদন সম্ভব হয়,
• নিরাপত্তার দিক থেকে কাঙ্খিত।

কনকারেন্সি বা সহগামীতাঃ আগে ক্রমধারা অনুসারে সফটওয়ার সম্পাদন করা হত। ক্রমানুযায়ী সম্পাদন বলতে বুঝানো হয় কোন নির্ধারিত সময়ে কোনও অংশের কোডেড নির্দেশনা একটির পর একটি করে সম্পাদিত হওয়া। যেমন কোণ সফটওয়ারে কয়েকটি মডিউল থাকলেও একক সময়ে একটি মাত্র মডিউল সক্রিয় থাকবে।

সফটওয়ার প্রকৌশলে কনকারেন্সি বা সহগামীতা বলতে বোঝায় সফটওয়ারকে অনেক ছোট ছোট ভাগে বা মডিউলে বিভক্ত করে সেগুলোকে সমান্তরালভাবে চালু রাখা। অন্যভাবে বলতে গেলে, কনকারেন্সি হল কোনও সফটওয়ারকে সেই সক্ষমতা প্রদান করা যার মাধ্যমে সেটি একাধিক কোডের অংশকে সমান্তরালে চালু রাখতে পারে।

সমান্তরালে চালু রাখতে হবে কোন মডিউলগুলোকে তা প্রোগ্রামার ও ডিজাইনারদের জানা থাকতে হবে।
যেমন, ওয়ার্ড প্রসেসরের স্পেল চেক ফিচার সফটওয়ারের একটি মডিউল যা ওয়ার্ড প্রসেসরের সাথে সাথে চলে।

কাপলিং ও কোহেশনঃ যখন কোনও প্রোগ্রাম মডিউলারাইজেশন করা হয়, কিছু বৈশিষ্ট্যের ভিত্তিতে এর মডিউলগুলোকে আলাদা করা হয়। মডিউল হল নির্দেশনার একটি সেট যেটি একত্রে কোনও কাজ সম্পন্ন করে। যদিও এগুলো স্বতন্ত্র সত্ত্বা তবুও একটি অন্যটির সাথে সম্পর্কিত থাকতে পারে। ডিজাইনের মডিউলের মান ও তাদের আভ্যন্তরীণ যোগাযোগের হার এই এককে পরিমাপ করা হয়। পরিমাপের এই প্রক্রিয়াই কাপলিং ও কোহেশন।

কোহেশনঃ কোন মডিউলের উপাদানের অন্তঃনির্ভরশীলতার পরিমাপকে কোহেশন বলে।
সাত ধরণের কোহেশন দেখা যায়। এগুলো হল,

কাকতালীয় কোহেশনঃ অপরিকল্পিত ও এলোমেলো কোহেশন যা শুধু মডিউলারাইজেশনের স্বার্থে হয়ে থাকে, এগুলো সাধারণত গ্রহণযোগ্য হয় না, যেহেতু অপরিকল্পিত তাই এগুলো বিভ্রান্তির সৃষ্টি করে।

যৌক্তিক কোহেশনঃ মডিউলে যৌক্তিকভাবে সাজানো এবং একসাথে রাখা উপাদানের ক্ষেত্রে যৌক্তিক কোহেশন প্রযোজ্য।

সময়গত কোহেশনঃ মডিউলের অংশগুলো কোনও নির্দিষ্ট সময়ের অনুপাতে সাজানো থাকে তখন তাকে সময়গত কোহেশন বলে।

প্রথাগত কোহেশনঃ যখন মডিউলের অংশগুলো একসাথে থাকে কিন্তু আলাদাভাবে কাজ করে কোনও কার্যক্রম সম্পাদনের জন্য তখন তাকে প্রথাগত কোহেশন বলে।

যোগাযোগ কোহেশনঃ যখন মডিউলের অংশগুলো একসাথে থাকে এবং একই ডাটায় ক্রমানুসারে কাজ করে তখন তাকে যোগাযোগ কোহেশন বলে।

ক্রমানুযায়ী কোহেশনঃ যখন মডিউলের অংশগুলো একসাথে থাকে এবং একটি অংশের ফলাফল(আউটপুট) অন্য অংশের ইনপুট, সেটি তখন ক্রমানুযায়ী কোহেশন।

ফাংশনাল কোহেশনঃ এটি শীর্ষ পর্যায়ের কোহেশন, এবং সর্বাধিক প্রত্যাশিত। ফাংশনাল কোহেশনে মডিউলের অংশগুলো একসাথে থাকে কারণ এটি একটি মাত্র সুস্থিত ফাংশনের জন্য কাজ করে। এটি পুনরায়ও ব্যবহার করা যায়।

কাপলিং

কোন মডিউলের উপাদানের অন্তঃনির্ভরশীলতার মাত্রাকে কাপলিং বলে। পাঁচ ধাপের কাপলিং দেখা যায়,

উপাদানের ক্ষেত্রে কাপলিংঃ যখন কোনও মডিউল অন্য কোন মডিউলে সরাসরি উপাদান প্রবেশ বা পরিবর্তন বা অন্য কোন মডিউলে প্রেরণ করে তবে সেটিকে উপাদানের ক্ষেত্রে কাপলিং বলে।

কমন কাপলিংঃ যদি কয়েকটি মডিউল কোন বৈশ্বিক ডাটা পড়ে বা লেখে তবে তাকে কমন কাপলিং বলে।

কন্ট্রোল কাপলিংঃ দুটি মডিউলের মধ্যে একটি যদি অন্যটির ফাংশন পরিবর্তন বা প্রভাবিত করে তবে তাকে কন্ট্রোল কাপলিং বলে।

স্ট্যাম্প কাপলিংঃ যদি একাধিক মডিউল কমন ডাটা কাঠামো ব্যবহার করে এবং ভিন্ন ভিন্ন অংশের উপর কাজ করে তবে এটিকে স্ট্যাম্প কাপলিং বলে।

ডাটা কাপলিংঃ যদি দুটি মডিউল পরস্পরের সাথে ডাটা আদান প্রদান করার জন্য(প্যারামিটার হিসাবে) যোগাযোগ করে তবে তাকে ডাটা কাপলিং বলে। প্যারামিটার হিসাবে ডাটা আদান প্রদান করলে গ্রহণকারী মডিউল গৃহীত ডাটার সবটুকুই ব্যবহার করতে পারে।

আদর্শগত ভাবে কোন কাপলিংকেই সেরা ধরা যায় না।

ডিজাইন ভেরিফিকেশনঃ সফটওয়ার ডিজাইন প্রক্রিয়ার ফলাফল হল ডিজাইন ডকুমেন্টেশন, সিউডো কোড, ডিটেইলড লজিক ডায়াগ্রাম, প্রসেস ডায়াগ্রাম ও ফাংশনাল ও নন ফাংশনাল সব রিকোয়ারমেন্টের বিস্তারিত বিবরণ।

এই সব প্রক্রিয়ার ফলাফলের উপর পরবর্তী ধাপে সফটওয়ারের প্রয়োগ নির্ভর করে। পরবর্তী ধাপে যাওয়ার আগে আউটপুট সনাক্ত করে নিতে হয়। ক্রুটি বিচ্যুতি থাকলে তা প্রথমে ধরা পড়ে যাওয়াই ভাল, নাহলে পণ্য পরীক্ষার আগে পর্যন্ত তা নাও ধরা পড়তে পারে। আউটপুট বা ডিজাইন পর্যায় যদি সাধারণ নোটেশন ফরমেটে থাকে তাহলে তাদের সংশ্লিষ্ট পন্থাই বেছে নিতে হবে নাহলে পুঙ্খানুপুঙ্খ ডিজাইন রিভিউ প্রতিপাদন ও বৈধতার জন্য দরকার হতে পারে। কাঠামোগত প্রতিপাদনের মাধ্যমে অসতর্কতাজনিত ক্রুটি বিচ্যুতি এড়ানো সম্ভব হতে পারে। ভাল সফটওয়ার ডিজাইন মানসম্পন্ন ও নির্ভুল করার জন্য ভাল ডিজাইন রিভিউ গুরুত্বপূর্ণ।

সফটওয়ার ডিজাইন পরিকল্পনা

Huge Sell on Popular Electronics

সফটওয়ার ডিজাইন পরিকল্পনা

রিদওয়ান বিন শামীম

 

সফটওয়ার ডিজাইন হল একটি প্রক্রিয়া যেখানে সফটওয়ারের শর্তাবলীকে বাস্তবে রূপান্তরিত করা হয়। সফটওয়ার ডিজাইনে গ্রাহকের শর্তাবলীকে চ্যালেঞ্জ হিসেবে নেয়া হয় এবং এবং তার সর্বোত্তম সমাধান খোঁজা হয়। যখন একটি সফটওয়ারের ধারণা শুরু করা হয় তখন পরিকল্পনাগুলো খতিয়ে দেখা হয় যাতে প্রদত্ত সমাধান বাস্তবায়নে সম্ভাব্য সর্বোত্তম ডিজাইন পাওয়া যায়।

সফটওয়ার ডিজাইনে অনেকগুলো বিন্যাস পাওয়া যায়, সংক্ষিপ্তভাবে সেগুলো নিয়ে আলোচনা করা যাক।

কাঠামোগত ডিজাইন

কাঠামোগত ডিজাইন হল সমাধানের সুসংগঠিত উপাদানের সমন্বয়ে পরিকল্পনা করা, এটি মূলত সমাধানের ডিজাইন করা। কাঠামোগত ডিজাইনের বড় সুবিধা হল এটি সমস্যা সমাধানের সঠিক দিকনির্দেশনা দেয়। কাঠামোগত ডিজাইন প্রোগ্রামারকে সমস্যা সমাধানে অধিকতর মনযোগী হওয়ারও সুযোগ দেয়।

কাঠামোগত ডিজাইন মূলত ‘ভাগ করা ও অতিক্রম করা’ এই পদ্ধতিতে কাজ করে, যেখানে সমস্যাকে ছোট ছোট ধাপে ভাগ করে সেগুলোকে সমাধান করা হয় যে পর্যন্ত মূল সমস্যাটি সমাধান না হয়।

সমস্যার ছোট ধাপগুলোকে মডিউল হিসেবে সমাধান করা হয়, কাঠামোগত ডিজাইন এটি নিশ্চিত করে,যথাযথ সমাধান পাওয়ার জন্য মডিউলগুলো যেন সুবিন্যাস্ত অবস্থায় সম্পন্ন হয়।

মডিউলগুলো স্তরবিন্যাসে সাজানো থাকে, একটি আরেকটির সাথে যোগাযোগ করতে পারে, ভাল কোনও কাঠামোগত ডিজাইনে সবসময় এই সুবিধা রাখা হয় যেন মডিউলগুলো পরস্পরের মধ্যে যোগাযোগ করতে পারে, এক্ষেত্রে নিয়মগুলো হল,

সংযোগঃ ফাংশনালিটি সম্পর্কিত সব উপাদানের গ্রুপিং

কাপলিংঃ বিভিন্ন মডিউলের মধ্যে যোগাযোগ।

ভাল কাঠামোগত ডিজাইনে সংযোগ সুবিধা বেশি থাকে ও কাপলিং সুবিধা কম থাকে।

ফাংশন ভিত্তিক ডিজাইনঃ ফাংশন ভিত্তিক ডিজাইনে মূল সিস্টেম ফাংশন নামের অনেকগুলো ভাগে বিভক্ত থাকে, এই ফাংশনগুলো সিস্টেমে গুরুত্বপূর্ণ কাজ করতে পারে। সিস্টেম সব ফাংশনের শীর্ষে থাকে।

ফাংশন ভিত্তিক ডিজাইনে কাঠামোগত ডিজাইনের কিছু ধারণা যেমন ‘ভাগ করা ও অতিক্রম করা’ এই প্রক্রিয়াটি ব্যবহার করা হয়।

ডিজাইন প্রক্রিয়াকে অনেকগুলো ছোট ফাংশনে বিভক্ত করা হয়, যারা বিমূর্ত তথ্য ও অপারেশন সিস্টেমে সংবদ্ধ করে । ফাংশনাল মডিউল নিজেদের মধ্যে তথ্য আদানপ্রদান করতে পারে ও বিশ্বব্যপী তথ্য ছড়িয়ে দিতে পারে।

আরেকটি বিষয় হল যখন কোনও প্রোগ্রামকে ফাংশন বলা হবে তখন তা প্রোগ্রামের অবস্থা বদলে দেয়, যা সব মডিউলে গ্রহণযোগ্য নয়। ফাংশন ভিত্তিক ডিজাইন তখনি প্রযোজ্য হয় যখন প্রোগ্রাম বা ফাংশন অবস্থার উপর নয় বরং ইনপুটের উপর বেশি নির্ভর করে।

ডিজাইন প্রসেস

• ডাটা ফ্লো ডায়াগ্রাম অনুসরণ করে সিস্টেমের ডাটা ফ্লো নির্ধারিত হয়।

• DFD নির্ধারণ করে কীভাবে ফাংশন পুরো সিস্টেমের ডাটা তথা সমগ্র অবস্থা পরিবর্তন করবে।

• সিস্টেমের অপারেশনের ধরণ অনুযায়ী ছোট ছোট ফাংশনে পুরো সিস্টেমকে বিভাজিত করা হয়।

• তারপর ফাংশনকে বৃহৎ আকারে প্রকাশ করা হয়।

অবজেক্ট ভিত্তিক ডিজাইনঃ অবজেক্ট ভিত্তিক ডিজাইন সফটওয়ার সিস্টেমের স্বতন্ত্র সত্তা ও তাদের বৈশিষ্ট্য নিয়ে কাজ করে। এই ডিজাইন পরিকল্পনা সিস্টেমের সত্তা ও তাদের বৈশিষ্ট্যের ওপর লক্ষ্য রাখে, পুরো ধারণাটি স্বতন্ত্র সত্তার উপর ভিত্তি করে আবর্তিত হয়।

অবজেক্ট ভিত্তিক ডিজাইনের মূল বিষয়গুলো আলোচনা করা যাক,

লক্ষ্যবস্তু বা Objectsঃ ডিজাইন সমাধানের ক্ষেত্রে সকল কার্যক্রম অবজেক্ট বা লক্ষ্যবস্তুকে ঘিরে হয়ে থাকে, যেমন, ব্যক্তি, ব্যাংক, কোম্পানি, কাস্টমার সবকিছুকে অবজেক্ট হিসেবে ধরা হয়। সব অবজেক্টের পৃথক কিছু বিষয় আছে যা শুধু তার জন্যই প্রযোজ্য, এবং সেগুলো প্রয়োগের নির্দিষ্ট কিছু নিয়মও আছে।

শ্রেণী বা classes ঃ শ্রেণী হল কোনও অবজেক্টের সাধারণ গোত্র, অবজেক্ট হল কোনও শ্রেণীর উদাহরণ। শ্রেণী অবজেক্টের সব আরোপিত বিষয় বিবৃত করে, এবং সব পদ্ধতি প্রকাশ করে যা অবজেক্টের ফাংশনালিটি বিবৃত করে। সল্যুশন ডিজাইনে আরোপিত বিষয়গুলো চলকরূপে ও ফাংশনালিটিকে প্রক্রিয়ার পদ্ধতিরূপে দেখানো হয়।

সারসংক্ষেপঃ OOD তে আরোপিত বিষয়সমূহ(attributes) ও পদ্ধতি(operation on the data) একসাথে থাকে, একে সারসংক্ষেপ বা Encapsulation বলে, এরা শুধু গুরুত্বপূর্ণ তথ্য একসাথেই রাখে না, বহিঃবিশ্বের কাছ থেকে গোপনও রাখে। একে তথ্য গোপন করা বলে।

উত্তরাধিকার বা Inheritanceঃ OOD তে একই গোত্রের মধ্যে স্তরবিন্যাস বজায় রেখে কাজ করে যেখানে নিচের বা উপশ্রেণীগুলো তাদের মূল শ্রেণী থেকে পদ্ধতি ও চলক নিয়ে কাজ করতে পারে, একেই উত্তরাধিকার বা Inheritance বলে, এটি কোনও শ্রেণীকে বিবৃত করাকে সহজ করেছে।

বহুরূপতাঃ OOD ভাষাগুলো এমন পদ্ধতি প্রয়োগ করে যাতে একই কাজ করা যায় কিন্তু ভিন্ন আর্গুমেন্ট ব্যবহৃত হয়,একই নাম বজায় রেখে। একেই বহুরূপতা বলে, যা কোনও একক ইন্টারফেসকে অনেক রকমের কাজ করতে সাহায্য করে। ফাংশন কি চায় তার উপরে নির্ভর করে সংশ্লিষ্ট অংশে কি কোড দেয়া হবে।

ডিজাইন প্রসেস

ডিজাইন প্রসেস কিছু নির্দিষ্ট ধাপে হয়, কিছু এদিক সেদিক হয় ফাংশন ভিত্তিক ডিজাইন না অবজেক্ট ভিত্তিক ডিজাইন তার উপর ভিত্তি করে।মোটামোটি ভাবে ধাপগুলো এরকম,

• সমাধান ডিজাইন পূর্ববর্তী কোন সিস্টেম বা সিস্টেম ডায়াগ্রাম থেকে নেয়া হতে পারে।

• অবজেক্টগুলো শ্রেণীতে এবং সংশ্লিষ্ট বৈশিষ্ট্যের ভিত্তিতে ভাগ করা থাকে।

• শ্রেণীর স্তরবিন্যাস ও সম্পর্ক নির্ধারিত থাকে।

• এপ্লিকেশন ফ্রেমওয়ার্ক নির্ধারিত।

সফটওয়ার ডিজাইনের পন্থা

সফটওয়ার ডিজাইনের দুটি মৌলিক পন্থা নিচে বর্ণনা করা হল।

টপ ডাউন ডিজাইনঃ আমরা জানি কোনও সিস্টেম অনেক সাব –সিস্টেম ও তাদের উপাদান নিয়ে গড়ে উঠে। সেই সাব –সিস্টেম আবার তাদের সাব –সিস্টেম নিয়ে একটি স্তরবিন্যাস তৈরি করে। টপ ডাউন ডিজাইন সেই পুরো সফটওয়ার সিস্টেমটাকে একটি সত্ত্বারূপে প্রকাশ করে এবং তারপর সেটিকে সাব –সিস্টেম ও সংশ্লিষ্ট বৈশিষ্ট্যের ভিত্তিতে ভাগ করে। তখন প্রতিটি সাব –সিস্টেমকে একটি করে সিস্টেম হিসেবে ধরা হয়। একদম নিচের ধাপ পর্যন্ত স্তরবিন্যাস তৈরি হওয়ার আগ পর্যন্ত এই প্রক্রিয়া চলতে থাকে। টপ ডাউন ডিজাইন একটি সরল পন্থায় শুরু হয় এবং চলতে থাকে, যখন সব উপাদান পুনঃবিন্যাস্ত হয় তখনি পুরো সিস্টেম অস্তিত্ব লাভ করে।

স্ক্রেচ থেকে ডিজাইন করতে গেলে এবং নির্ধারিত খুঁটিনাটি না থাকলে সেক্ষেত্রে টপ ডাউন ডিজাইন বেশি উপযুক্ত হয়।
বটম আপ ডিজাইন মডেল ঃ বটম আপ ডিজাইন মডেল একদম নির্দিষ্ট ও বেসিক উপাদান নিয়ে শুরু হয়, নির্দিষ্ট ও বেসিক উপাদান ব্যবহার করে উঁচু মানের উপাদান তৈরি করা হয় যে পর্যন্ত একটি মাত্র উপাদানের জন্য সিস্টেম প্রস্তুত না হয়। প্রতিটা ঊর্ধ্বতন মানের জন্য(higher level) বিমূর্তনের হার(amount of abstraction) বৃদ্ধি পায়।

বিদ্যমান কোন সিস্টেম থেকে নতুন সিস্টেম তৈরির ক্ষেত্রে বটম আপ ডিজাইন মডেল ব্যবহার করা যায় যেখানে বিদ্যমান সিস্টেম থেকে মৌলিক ধারণা নিয়ে নতুন সিস্টেম তৈরির ক্ষেত্রে ব্যবহার করা যায়।

টপ ডাউন ডিজাইন ও বটম আপ ডিজাইন পরিপূর্ণভাবে বাস্তবভিত্তিক নয়, বরং দুটির যথোপযুক্ত সমন্বয় অধিক ফলপ্রসূ হতে পারে।

C – Constants and Literals. সি প্রোগ্রামিঙে লিটারেল ও ধ্রুবক

Huge Sell on Popular Electronics

সি প্রোগ্রামিঙে লিটারেল ও ধ্রুবক

রিদওয়ান বিন শামীম

 

ধ্রুবকের মান কোন প্রোগ্রামে সব সময়েই একই থাকে, একে লিটারেলও বলে। ধ্রুবক যে কোন মৌলিক ডাটা টাইপের হতে পারে যেমন পূর্ণ সংখ্যা ধ্রুবক, ফ্লোটিং ধ্রুবক, ক্যারেকটার ধ্রুবক, স্ট্রিং ধ্রুবক ইত্যাদি। এগুলো সাংখ্যিক ধ্রুবকও হতে পারে। ধ্রুবক অন্যান্য চলকের মতই ব্যবহৃত হয় কেবল ধ্রুবক হিসেবে সংজ্ঞায়িত হওয়ার পর এদের মানের কোন পরিবর্তন হবে না।
পূর্ণসংখ্যা ধ্রুবকঃ পূর্ণ সংখ্যা ধ্রুবক দশমিক, অকট্যাল, হেক্সাডেসিমেল ইত্যাদি রকমের হতে পারে। এক্ষেত্রে উপসর্গ ভিত্তি নিশ্চিত করে, হেক্সাডেসিমেলের জন্য 0x অথবা 0X , অকট্যালের জন্য 0, এবং দশমিকের জন্য কিছুই না। পূর্ণ সংখ্যা ধ্রুবকে সাফিক্সও থাকতে পারে যা মূলত U ও L এর সমন্বয় যা unsigned ও long নির্দেশ করে, সাফিক্স ছোট হাতের বা বড় হাতের, এবং যেকোনভাবে সজ্জিত হতে পারে।পূর্ণসংখ্যা ধ্রুবকের কয়েকটি উদাহরণ

212 /* Legal */
215u /* Legal */
0xFeeL /* Legal */
078 /* Illegal: 8 is not an octal digit */
032UU /* Illegal: cannot repeat a suffix */
আরও কয়েকটি ধরনের পূর্ণসংখ্যা ধ্রুবক হল,
85 /* decimal */
0213 /* octal */
0x4b /* hexadecimal */
30 /* int */
30u /* unsigned int */
30l /* long */
30ul /* unsigned long */

ফ্লোটিং ধ্রুবকঃ ফ্লোটিং ধ্রুবকে পূর্ণসংখ্যা অংশ,দশমিক অংশ, ভগ্নাংশ ও সূচক অংশ থাকে, এদেরকে সূচক বা দশমিক যেকোনো আকারে প্রকাশ করা যায়। দশমিক আকারে প্রকাশ করার সময় দশমিক বা সূচক, বা উভয়ই অন্তর্ভুক্ত করতে হবে, সূচক আকারে প্রকাশ করার সময় পূর্ণসংখ্যা বা ভগ্নাংশ, অথবা উভয়ই অন্তর্ভুক্ত করতে হবে। এই সূচক বা signed exponent কে e বা E দ্বারা প্রকাশ করা হয়। ফ্লোটিং ধ্রুবকের কয়েকটি উদাহরণ নিচে দেয়া হল।
3.14159 /* Legal */
314159E-5L /* Legal */
510E /* Illegal: incomplete exponent */
210f /* Illegal: no decimal or exponent */
.e55 /* Illegal: missing integer or fraction */

ক্যারেকটার ধ্রুবকঃ ক্যারেকটার ধ্রুবক সিঙ্গেল কোটের মধ্যে 'x' দ্বারা বোঝানো হয়,সাধারণ চলক রুপে
char type এ অন্তর্ভুক্ত হয়ে থাকে। ক্যারেকটার ধ্রুবক plain character (যেমন 'x'),escape sequence (যেমন '\t'), অথবা universal character (যেমন'\u02C0')হতে পারে। সি প্রোগ্রামিঙে কিছু নির্দিষ্ট ক্যারেকটার আছে যা backslash ব্যবহার করে প্রকাশ করা হয়, যারা ভিন্ন অর্থ প্রকাশ করে থাকে যেমন newline (\n) অথবা tab (\t)ইত্যাদি। এরকম কিছু escape sequence codes নিচে দেয়া হল।
Escape sequence Meaning
\\ \ character
\' ' character
\" " character
\? ? character
\a Alert or bell
\b Backspace
\f Form feed
\n Newline
\r Carriage return
\t Horizontal tab
\v Vertical tab
\ooo Octal number of one to three digits
\xhh . . . Hexadecimal number of one or more digits

escape sequence ক্যারেকটারের কিছু উদাহরণ দেয়া যাক,
#include <stdio.h>

int main()
{
printf("Hello\tWorld\n\n");

return 0;
}
কোডগুলো সঠিকভাবে লিখা হলে তা যে ফল দেখাবে তা হল,
Hello World

স্ট্রিং ধ্রুবকঃ স্ট্রিং ধ্রুবককে ডবল কোটের("") মাধ্যমে প্রকাশ করা হয়,এর ভিতরে সেই সব ক্যারেকটার রাখা হয় যারা মূলত ক্যারেকটার ধ্রুবকের সাথে সাদৃশ্যপূর্ণ, যেমন plain characters, escape sequences, এবং universal characters। স্ট্রিং ধ্রুবক ব্যবহার করে লম্বা লাইনকে ছোট ছোট লাইনে পরিনত করা যায়, এবং খালি জায়গা ব্যবহার করে এদের পৃথক করতে হয়। একই ধরনের তিনটি স্ট্রিং ধ্রুবক উদাহরণে দেখানো হল।
"hello, dear"

"hello, \

dear"

"hello, " "d" "ear"
ধ্রুবক নির্দেশ করাঃ সি প্রোগ্রামিঙে দুটি সাধারণ উপায়ে ধ্রুবক নির্দেশ করা হয়, #define preprocessor ব্যবহার করে ও const keyword ব্যবহার করে।
#define preprocessor ব্যবহারঃ নিচের ফরমেটে এটি করা হয়,
#define identifier value
নিচের উদাহরণ দিয়ে বোঝানো যাক,
#include <stdio.h>

#define LENGTH 10
#define WIDTH 5
#define NEWLINE '\n'

int main()
{

int area;

area = LENGTH * WIDTH;
printf("value of area : %d", area);
printf("%c", NEWLINE);

return 0;
}
কোড ঠিকভাবে লেখা হলে ফলাফল আসবে,
value of area : 50

const keyword ব্যবহারঃ নির্দিষ্ট রকমের ধ্রুবক নির্দেশ করতে const prefix ব্যবহার করা হয়, const type variable = value;
নিচে একটি উদাহরণ দিয়ে বোঝানো যাক,
#include <stdio.h>

int main()
{
const int LENGTH = 10;
const int WIDTH = 5;
const char NEWLINE = '\n';
int area;

area = LENGTH * WIDTH;
printf("value of area : %d", area);
printf("%c", NEWLINE);

return 0;
}

কোড ঠিকভাবে লেখা হলে ফলাফল আসবে,
value of area : 50
ধ্রুবককে বড় হাতের অক্ষর দ্বারা প্রকাশ করা প্রোগ্রামিঙের ক্ষেত্রে একটি ভাল চর্চা।

সফটওয়ার ডেভলাপমেন্ট লাইফসাইকেল . Software Development Life Cycle

Huge Sell on Popular Electronics

সফটওয়ার ডেভলাপমেন্ট লাইফসাইকেল

রিদওয়ান বিন শামীম

 

সফটওয়ার ডেভলাপমেন্ট লাইফসাইকেল বা সংক্ষেপে SDLC হল সফটওয়ার প্রকৌশলে কাঙ্খিত পণ্য উৎপাদনের সুপরিচিত ও সুগঠিত কার্যক্রমের ধাপসমূহ।

SDLCএর কার্যক্রমঃ SDLC কাঙ্খিত পণ্য বা সফটওয়ার ডিজাইন ও ডেভেলাপের জন্য কয়েকটি ধাপ নিশ্চিত করে, SDLC ফ্রেমওয়ার্কে কয়েকটি ধাপ থাকে যেগুলো হল,

যোগাযোগঃ এটি প্রথম ধাপ যেখানে গ্রাহক কোনও সফটওয়ারের জন্য চাহিদা প্রকাশ করে, সফটওয়ার সেবা প্রদানকারীর সাথে যোগাযোগ করে ও শর্তাবলী জানায়। সেবা প্রদানকারীর কাছে লিখিত ভাবে তার চাহিদার কথা জানাতে হয়।

চাহিদা সংবদ্ধ করাঃ সফটওয়ার ডেভেলপার টিমের জন্য এটি প্রথম কাজ, ডেভেলপার টিম গ্রাহকের সাথে যত বেশি সম্ভব সমস্যা নিয়ে কথা বলে তাদের চাহিদাটা বুঝতে চান, মূলত গ্রাহক চাহিদা, সিস্টেমের চাহিদা ও ফাংশনাল চাহিদা এসব ধরনের চাহিদা থেকে থাকে। চাহিদাগুলো কয়েকটি নিয়ম মেনে সংবদ্ধ করা হয়,

• অপ্রচলিত বা বিদ্যমান সিস্টেম ও সফটওয়ার নিরীক্ষণ করে,
• ডেভেলপার ও গ্রাহকের সাক্ষাৎকার নিয়ে,
• ডাটাবেসের সাহায্য নিয়ে,
• উদ্ভূত প্রশ্নের সমাধান করে।

সম্ভাব্যতা নিরীক্ষণ করাঃ চাহিদা সংবদ্ধ করার পর ডেভেলপার টিম সফটওয়ার প্রসেসের একটি খসড়া তৈরি করে। এরপর তারা নির্ণয় করার চেষ্টা করে সফটওয়ারটি গ্রাহকের চাহিদা পুরোপুরি পূরণ করবে নাকি কোনও সফটওয়ার ব্যবহারের অনুপযোগী হতে পারে। বের করা হয় সফটওয়ারটি অর্থনৈতিকভাবে, প্রযুক্তিগত ভাবে ও ব্যবহারিকভাবে উপযুক্ত কিনা। সম্ভাব্যতা নিরীক্ষণ করার জন্য অনেক এলগরিদমিক পদ্ধতি চালু আছে।

সিস্টেম এনালাইসিসঃ এ পর্যায়ে ডেভেলপার টিম তাদের রোডম্যাপ পরিকল্পনা ঠিক করে এবং প্রকল্পের জন্য সবচে উপযুক্ত মডেল নির্বাচন করে। সিস্টেম এনালাইসিসে পণ্যের সীমাবদ্ধতা, তথ্যবিষয়ক সীমাবদ্ধতা, পূর্বের মডেলের ক্রুটি, ব্যক্তি ও প্রতিষ্ঠানের উপর সফটওয়ারটি কেমন প্রভাব ফেলবে তা অনুমান করা এসব সিস্টেম এনালাইসিসের অন্তর্ভুক্ত। ডেভেলপার টিম প্রকল্পের সম্ভাব্যতা, শিডিউল ও রিসোর্স সমূহ নিখুঁতভাবে নিরূপণ করে।

সফটওয়ার ডিজাইনঃ এরপর সমস্ত তথ্য ও শর্তাবলী একসাথে করে সফটওয়ারটি ডিজাইন করতে হয়। গ্রাহক চাহিদা, শর্তাবলী ও প্রয়োজনীয় তথ্য যা চাহিদা সংবদ্ধ করার সময় পাওয়া গিয়েছিল সেগুলোই এই ধাপে ইনপুট। আউটপুট দুটি ধাপে আসবে, লজিকাল ডিজাইন ও ফিজিকাল ডিজাইন। প্রকৌশলীরা কিছু মেটা ডাটা, ডাটা ডিকশনারি, লজিকাল ডায়াগ্রাম, ডাটা ফ্লো ডায়াগ্রাম এবং কিছু কেসে কিছু সিডো কোড(pseudo codes) প্রস্তুত করেন।

কোডিংঃ এই ধাপও প্রোগ্রামিং ধাপ হিসেবে ধরা হয়। সঠিকভাবে উপযুক্ত প্রোগ্রামিং ভাষায় নির্ভুলভাবে প্রোগ্রাম কোড লেখার মাধ্যমে সফটওয়ার ডিজাইনের কার্যক্রম বাস্তব রূপ লাভ করে।

নিরীক্ষণঃ একটি সমীক্ষায় দেখা গেছে, ৫০ % সফটওয়ার ডেভলাপমেন্ট নিরীক্ষণ করা হয়। সামান্য ভুলের জন্য সফটওয়ারের ক্ষতি এমনকি বাতিলও হতে পারে। ডেভলপাররা কোডিঙের সময় মডিউল টেস্টিং, প্রোগ্রাম টেস্টিং, অভ্যন্তরীণ টেস্টিং, গ্রাহক ভিত্তিক টেস্টিং ইত্যাদি নিরীক্ষণ করেন, প্রারম্ভিক পর্যায়ে ভুল ধরা পরা নির্ভরযোগ্য সফটওয়ারের জন্য দরকারি।

মৌলিকতাঃ লাইব্রেরী, ডাটাবেস ও অন্যান্য প্রোগ্রামের ক্ষেত্রে সফটওয়ারের মৌলিকতা থাকতে হবে। SDLC এর এই বৈশিষ্ট্যই বিশ্ব বাজারে এর স্বাতন্ত্র্য নিশ্চিত করবে।
প্রয়োগঃ গ্রাহকের যন্ত্রে সফটওয়ার ইন্সটল করতে হবে, ইন্সটল করার পরে কনফিগার করতে হয়, এরপর বহনযোগ্যতা, অভিযোজন ও মৌলিকতা নির্ণয় করে দেখা হয়।

কার্যক্রম ও রক্ষণাবেক্ষণঃ এ পর্যায়ে অধিক দক্ষতা ও কম ভুলের মাধ্যমে কার্যক্রম চলে, প্রয়োজনে ব্যবহারকারীদের প্রশিক্ষণের ব্যবস্থা রাখা হয় যাতে ভাল ভাবে সফটওয়ার চালানো যায় ও কার্যক্রম ঠিক রাখা যায়। গ্রাহক পর্যায়ে পরিবেশ বা প্রযুক্তিগত পরিবর্তন অনুসারে কোড আপডেট করে সফটওয়ার রক্ষণাবেক্ষণ করা হয়, যার মাধ্যমে লুকোনো ক্ষতিকর বিষয় ও বাস্তব জীবনের অপ্রত্যাশিত সমস্যা মোকাবেলা করা সম্ভব হয়।

প্রবণতাঃ সময়ের সাথে সাথে সফটওয়ারের সক্ষমতা কমতে থাকে, এটি একদম অকেজো হয়ে পরে, বা আপডেটের দরকার হয়। কোনও বড় অংশ বাছাই করার দরকার হতে পারে। ডাটা ও সফটওয়ারের কোনও অংশ একসাথে রাখা, সিস্টেম বন্ধ করা, প্রবনতার পরিকল্পনা, কাজ শেষে সিস্টেম ত্যাগ করা ইত্যাদি এই ধাপের অন্তর্গত।

সফটওয়ারের ডেভলাপমেন্ট মডেলঃ সফটওয়ারের ডেভলাপমেন্ট মডেল ডেভলাপারকে কোনও সফটওয়ারের পরিকল্পনা তৈরি করতে সাহায্য করে। সফটওয়ারের ডেভলাপমেন্ট মডেলের নিজস্ব যন্ত্রপাতি, পদ্ধতি ও প্রক্রিয়া আছে যা স্পষ্টভাবে নির্দেশিত ও সফটওয়ার ডেভলাপমেন্ট লাইফসাইকেল সংজ্ঞায়িত করে। সফটওয়ারের ডেভলাপমেন্ট মডেলের অল্প কিছু ধাপ নিচে দেখানো হল।

ওয়াটারফল মডেলঃ সফটওয়ারের ডেভলাপমেন্ট মডেলের মধ্যে সবচেয়ে সহজ মডেল, রৈখিক নিয়ম মেনে চলে, এ মডেল অনুসারে, SDLC প্রক্রিয়ার এক পর্ব শেষ হলে তবেই অন্য আরেক পর্ব শুরু হয়। এই মডেল সকল ধাপ সুষ্ঠু ভাবে হয়েছে কিনা তা নিশ্চিত করে, এখনের পর্বের কাজ চলার সময় পূর্ববর্তী কোনও পর্বের কথা মাথায় রাখার দরকার থাকে না। তবে এই মডেলে সকল ধাপ নিখুঁতভাবে সম্পন্ন করতে হয়। পূর্বের কোনও কাজ অসমাপ্ত রাখা এই মডেলে সম্ভব নয়।

ডেভলাপার একই ধরনের সফটওয়ারে পূর্বে কাজ করেছে এরকম ক্ষেত্রে ওয়াটারফল মডেল অনুসরণ করা যায় কারণ এটির সব ধরনের ডোমেইন সম্পর্কে তার ধারণা থাকে।

পুনরাবৃত্তিক মডেলঃ SDLC প্রক্রিয়ার ধাপগুলো পুনরাবৃত্তিক ভাবে চাক্রিকভাবে সম্পন্ন হয়, প্রথমে সফটওয়ারটি ক্ষুদ্র পরিসরে তৈরি করা হয়, এবং যৌক্তিক সকল পন্থা অনুসরণ করা হয়, এরপর পরবর্তী সকল চক্রে নতুন অনেক ফিচার ও মডিউলকে ডিজাইন, কোড ও টেস্ট করা হয়, তারপর সফটওয়ারে যোগ করা হয়।

প্রতি চক্রের পরে ব্যবস্থাপনা টিম ঝুঁকি ব্যবস্থাপনা ও পরবর্তী চক্রের জন্য তৈরি হতে পারে, যেহেতু প্রতিটি চক্র ছোট ছোট অনেক ভাগে বিভক্ত তাই ব্যবস্থাপনা প্রক্রিয়া অপেক্ষাকৃত সহজ, যদিও বেশি রিসোর্সের প্রয়োজন হয়।

স্পাইরাল মডেলঃ পুনরাবৃত্তিক মডেল ও SDLC প্রক্রিয়ার অন্য কোনও মডেল সমন্বয় করতে স্পাইরাল মডেল ব্যবহার করা হয়। এই মডেলে ঝুঁকি বিষয়ে বেশি লক্ষ্য রাখা হয় যা অন্য অনেক মডেলে উপেক্ষিত থাকে। পুনরাবৃত্তিক মডেল শুরু হয় লক্ষ্য ও সীমাবদ্ধতা পরিমাপ করে, এরপর প্রোটোটাইপিং করা হয় যা ঝুঁকিও বিশ্লেষণ করে থাকে। এরপর কোনও আদর্শ SDLC প্রক্রিয়া ব্যবহার করা হয় সফটওয়ারটি তৈরি করতে। পরবর্তী ধাপে পরবর্তী চক্রের জন্য প্রস্তুত হতে হয়।

ভি মডেলঃ ওয়াটারফল মডেলে SDLC প্রক্রিয়ার এক পর্ব শেষ হলে তবেই অন্য আরেক পর্ব শুরু হয়, এক পর্বে অন্য পর্বের কোনও বিশ্লেষণ হয় না, ভি মডেলে সম্পূর্ণ উলটোটি হয় অর্থাৎ সকল ধাপেই সম্পূর্ণ বিশ্লেষণ করতে হয়। সকল ধাপে প্রদত্ত চাহিদা অনুসারে পরীক্ষা ও মূল্যায়ন করতে হয় সফটওয়ারটিকে, সম্পূর্ণ প্রস্তুত হয়ে গেলে শর্তাবলীর সাথে মিলিয়ে দেখা হয়। এ মডেলে নিরীক্ষা ও বৈধতা পরস্পরের পরিপূরক তাই একে নিরীক্ষা ও বৈধতা মডেলও বলা হয়।

বিগ ব্যাং মডেলঃ এ ধরনের মডেল সরল, এতে অল্প পরিকল্পনা ও বেশি কোডিং, বেশি অর্থ লাগে। বিজ্ঞানীরা যেমনটি বলেন, বিগ ব্যাংএর পরে গ্রহ নক্ষত্র সব মিলিয়ে ব্যপারটা যেমন হয়েছিল তেমনি আমরা যদি বেশি অর্থ ও বেশি প্রোগ্রামিং কাজে লাগাতে পারি তাহলে আমরা সবচেয়ে ভাল সফটওয়ার পণ্য তৈরি করতে পারব।

এ প্রক্রিয়ায় অল্প পরিকল্পনা প্রয়োজন হয়,কোনও নিয়মতান্ত্রিক অনুসরণ করা হয় না, নির্ধারিত কোনও সময় থাকে না বা চাহিদার কোনও সীমাবদ্ধতা থাকে না, তাই প্রারম্ভিক ইনপুট তেমন গুরুত্বপূর্ণ নয়। বড় প্রকল্প নয় বরং শিক্ষামূলক ও গবেষণামূলক ক্ষেত্রে এই মডেল বেশি উপযোগী।

সফটওয়ার ইঞ্জিনিয়ারিংঃ সারসংক্ষেপ (What is Software Engineering)

Huge Sell on Popular Electronics

সফটওয়ার ইঞ্জিনিয়ারিং

সারসংক্ষেপ

রিদওয়ান বিন শামীম

 

সফটওয়ার ইঞ্জিনিয়ারিং শব্দটি দুটি শব্দ মিলে হয়েছে, সফটওয়ার ও ইঞ্জিনিয়ারিং।

সফটওয়ার সাধারণ প্রোগ্রাম কোডের চেয়েও বেশি কিছু, প্রোগ্রাম হল কিছু এক্সেকিউটেবল কোড যা গাণিতিক বিশ্লেষণের কাজ করে। সফটওয়ার হল এক্সেকিউটেবল প্রোগ্রামিং কোডের সমন্বয় যাতে সংরক্ষণ ব্যবস্থা ও ডকুমেন্টেশনও সমন্বিত থাকে। প্রয়োজনীয় চাহিদা পূরণ করতে সক্ষম হলে তাকে সফটওয়ার প্রোডাক্ট অর্থাৎ পণ্য হিসেবে ধরা যাবে।

অন্যদিকে প্রকৌশল হল সংজ্ঞায়িত ও বৈজ্ঞানিক সুত্রে ও পন্থায় পণ্যের মান বৃদ্ধি করা।

সফটওয়ার ইঞ্জিনিয়ারিং হল তেমনই একটি প্রকৌশল উপশাখা যেখানে বৈজ্ঞানিক সুত্রে,পরিকল্পনায় ও পন্থায় সফটওয়ার জাতীয় পণ্যের উন্নয়ন করা হয়। কার্যকর ও নির্ভরযোগ্য সফটওয়ার জাতীয় পণ্যের উৎপাদনই সফটওয়ার ইঞ্জিনিয়ারিংএর মূল উদ্দেশ্য।

IEEE সফটওয়ার ইঞ্জিনিয়ারিংকে যেভাবে প্রকাশ করেছে তা হল, সফটওয়ার উন্নয়ন পরিকল্পনা ও ব্যবস্থাপনার জন্য নিয়মতান্ত্রিক, পরিকল্পনাপ্রসুত কার্যপ্রণালী বা এপ্লিকেশন যা প্রকৌশল এপ্লিকেশন, এবং সফটওয়ার উন্নয়ন নিশ্চিত করে এই প্রক্রিয়া সাধনের প্রবণতাই সফটওয়ার ইঞ্জিনিয়ারিং।

Fritz Bauer নামক জার্মান কম্পিউটার প্রকৌশলী সফটওয়ার ইঞ্জিনিয়ারিংকে যেভাবে প্রকাশ করেছেন তা হল, সফটওয়ার ইঞ্জিনিয়ারিং হল একপ্রকার প্রকৌশল সংস্থাপন যেখানে বাণিজ্যিকভাবে এমন সফটওয়ার উৎপাদন নিশ্চিত করা হয় যা বাস্তব যন্ত্রকাঠামোয় নির্ভরযোগ্য এবং সফলভাবে কাজ করতে সক্ষম।

সফটওয়ার ইঞ্জিনিয়ারিং ব্যবহার করে কোনও সফটওয়ার তৈরি, উন্নয়ন ও উৎপাদন সম্পন্ন করার প্রক্রিয়াকে সফটওয়ার বিবর্তন (software evolution) বলা হয়। এটি একদম সফটওয়ার তৈরি থেকে শুরু করে উৎপাদন প্রক্রিয়া, রক্ষনাবেক্ষন করা ও আপডেট ইত্যাদি এবং প্রারম্ভিক শর্তাবলী অনুযায়ী চূড়ান্ত উৎপাদন পর্যন্ত সবকিছু মিলে সম্পন্ন হয়।

প্রারম্ভিক শর্তাবলী ঠিক করার মাধ্যমে সফটওয়ার বিবর্তন প্রক্রিয়া শুরু হয়। এরপর ডেভলপাররা অভীষ্ট সফটওয়ারের মত একটি সফটওয়ার তৈরি করে গ্রাহকের কাছে পৌঁছে দেবার ব্যবস্থা করে ফিডব্যাকের আশায়। গ্রাহকের চাহিদা মত প্রয়োজনীয় পরিবর্তন ও পরিবর্ধন করা হয়, কাঙ্খিত সফটওয়ার না পাওয়ার আগ পর্যন্ত এই প্রক্রিয়া চলে। এমনকি গ্রাহক কাঙ্খিত সফটওয়ার হাতে পাওয়ার পরও এটি আপডেট করার ব্যবস্থা রাখা হয়, কারণ আপডেট ছাড়া প্রয়োজনীয় পরিবর্তন করা(একদম প্রথম থেকে) সম্ভব নয়। প্রয়োজনীয় পরিবর্তন করার জন্য আপডেট করা সাশ্রয়ী ও যুক্তিযুক্ত একমাত্র পন্থা।

সফটওয়ার বিবর্তন আইনঃ লেম্যানের(Lehman) দেয়া সফটওয়ার বিবর্তন সূত্র আছে। লেম্যান সফটওয়ারকে তিন ভাগে ভাগ করেন,

S-type (static-type) নির্ধারিত স্পেসিফিকেসন ও সমাধান অনুসারে কাজ করে। কোডিঙের আগে স্পেসিফিকেসন ও সমাধান ঠিক করে দিতে হয়। সরল ধরনের এবং ক্ষুদ্র পরিবর্তনেও সংবেদনশীল, যেমন গাণিতিক গননা করার প্রোগ্রাম।

P-type (practical-type) এ ধরনের সফটওয়ারে নির্ধারিত প্রক্রিয়া অনুসারে কাজ করে, কয়েকটি প্রক্রিয়া ঠিক করে দেয়া থাকে। প্রারম্ভিক শর্তাবলী নির্ণীত কিন্তু ফলাফল সবসময় পুঙ্খানুপুঙ্খ নাও হতে পারে। যেমন, গেমিং সফটওয়ার।

E-type (embedded-type) বাস্তব ক্ষেত্রে প্রয়োগবান্ধব সফটওয়ার, আইন, শুল্ক ইত্যাদি ছাড়াও অন্যান্য আরও অনেক কারণে দ্রুত পরিবর্তিত হয়, যেমন, অনলাইন বাণিজ্য সফটওয়ার।

E-type (embedded-type) সফটওয়ারের বিবর্তনঃ লেম্যান E-type সফটওয়ারের বিবর্তনে আটটি আইন বা নিয়ম বর্ণনা করেছেন,
নিয়ত পরিবর্তনশীলতাঃ সময়ের সাথে এই ধরনের সফটওয়ারের পরিবর্তন হয়, না হলে এগুলো সর্বাধিক কার্যক্ষমতা ধরে রাখতে পারবে না।

জটিলতা বৃদ্ধিঃ কাজ যত এগুবে, E-type সফটওয়ারের জটিলতা তত বাড়বে এবং কাজ শেষ হওয়ার আগ পর্যন্ত তা বাড়তেই থাকবে।
সাযুজ্যের স্বাতন্ত্র্য রক্ষা করাঃ কোনও সফটওয়ার কেন ডেভলপ করা হচ্ছে, কীভাবে, এসব ঠিক রাখার জন্য মূল কাঠামো বা সাদৃশ্য যেকোনো মূল্যে ঠিক রাখা হয়।
কর্মপরিসর বৃদ্ধি অব্যাহত রাখাঃ যেহেতু E-type সফটওয়ারের সাথে ব্যবসাবাণিজ্যের সমস্যা সমাধান জড়িয়ে আছে, তাই ব্যবসাবাণিজ্যের ধরণ পরিবর্তনের সাথে সাথে সফটওয়ারেরও পরিবর্তন করার পরিসর বৃদ্ধি করতে হচ্ছে।

মানের নিম্নমুখিতাঃ যেহেতু পরিবর্তনশীল প্রেক্ষাপটে কাজ করতে হচ্ছে তাই অনেক ক্ষেত্রে মানের সাথে আপোষ করতে হয় E-type সফটওয়ারের।

ফিডব্যাক সিস্টেমসঃ E-type সফটওয়ার মাল্টিলেভেল ও মাল্টিলুপ ফিডব্যাক সিস্টেম অনুসরণ করে এবং তা অনুসারে সফলভাবে পরিবর্তন বা উন্নয়ন নিশ্চিত করে।
স্ব-প্রবিধান অর্থাৎ নিজের রেগুলেসন নিয়ন্ত্রণ করাঃ E-type সফটওয়ারের বিবর্তন নিজের রেগুলেসন নিয়ন্ত্রণ করে ও পণ্যের বণ্টন ও প্রক্রিয়া স্বাভাবিকের কাছাকাছি রাখার চেষ্টা করে।

সাংগঠনিক স্থিতিঃ বিশ্বব্যপী কার্যক্রমের হার E-type সফটওয়ারের বিবর্তনের ক্ষেত্রে পণ্যের লাইফটাইমের সাথে সাথে পরিবর্তিত হয়।

সফটওয়ারের মডেলঃ সফটওয়ারের মডেল হল প্রক্রিয়া যেটিতে সফটওয়ার তৈরির ধাপ, কার্যকলাপ সব অন্তর্ভুক্ত থাকে, এক্ষেত্রে বর্তমান সময়ে অনেকগুলো পদ্ধতি আছে কিন্তু সফটওয়ার ডেভলপমেন্টের প্রকৌশলে মূল ধাপগুলো হল, সফটওয়ার ডেভলপমেন্ট, প্রোগ্রামিং ও সফটওয়ার ডিজাইন, যেগুলো সবই একে অপরের সাথে জড়িত। সফটওয়ারের মডেল সফটওয়ার ডিজাইন মডেলের অন্তর্ভুক্ত যেখানে সফটওয়ার ডিজাইন মডেল আবার সফটওয়ার ডেভলপমেন্ট মডেলের অন্তর্ভুক্ত।

সফটওয়ার ডেভলপমেন্ট মডেলঃ এটি সফটওয়ার ডেভলপমেন্টের প্রকৌশল মডেল হিসেবেও ধরা যায় কারণ এতে প্রকৌশলগত ধারনাও প্রয়োগ করা হয়। এতে বিভিন্ন গবেষণা ও শর্ত আরোপিত থাকে সফটওয়ার পণ্য উৎপাদনের জন্য, যেগুলো মূলত নিম্নরূপ,

• শর্ত আরোপণ
• সফটওয়ার ডিজাইন
• প্রোগ্রামিং

সফটওয়ার ডিজাইন মডেলঃ এটি সফটওয়ার ডেভলপমেন্টের একটি অংশ, এটিতে যে অংশগুলো থাকে তা হল,

• ডিজাইন
• রক্ষণাবেক্ষণ
• প্রোগ্রামিং

প্রোগ্রামিং মডেলঃ এই অংশটি প্রোগ্রামিং এর সাথে তুলনামুলকভাবে বেশি জড়িত, এতে থাকে,

• কোডিং
• টেস্টিং
• ইন্টিগ্রেশন

সফটওয়ার প্রকৌশলের প্রয়োজনীয়তাঃ সফটওয়ার প্রকৌশলের প্রয়োজনীয়তা বৃদ্ধি পেয়েছে এর উপযুক্ত পরিবেশ গ্রাহক চাহিদা পরিবর্তন ও কার্যকর ক্ষেত্রের বৃদ্ধি পাওয়ার ফলে।

বৃহৎ সফটওয়ারঃ বাড়ি তৈরির আগে তার দেয়াল তৈরি সুবিধাজনক, একই ভাবে সফটওয়ারের আকার বাড়লে তাতে বিজ্ঞানভিত্তিক প্রক্রিয়া প্রয়োগের সুযোগ বাড়ে।

কর্মপরিধিঃ বিজ্ঞানভিত্তিক প্রক্রিয়া ব্যবহার না করলে অন্য কোনও মডেলের অনুকরণে নতুন সফটওয়ার তৈরি করা যায়।

মূল্যঃ হার্ডওয়ার কোম্পানির দক্ষতা ও উৎপাদন বৃদ্ধির ফলে কম্পিউটারের দাম কমলেও সঠিক প্রক্রিয়া মেনে না চললে সফটওয়ারের মূল্য বেশিই থাকে।

গতিশীল প্রবণতাঃ ব্যবহারকারীদের কাজের পরিবেশের সাথে সফটওয়ারের ব্যবহার প্রবণতা ও পরিবর্তন নির্ভর করে, যদি সফটওয়ারের প্রচুর পরিবর্তন সাধিত হয় তবে তা পূর্বের ভার্সনের সাথে সাযুজ্য রেখেই পরিবর্তন করতে হবে, আর এক্ষেত্রেই সফটওয়ার প্রকৌশলের গুরুত্ব বেড়ে যাচ্ছে।

মান নিয়ন্ত্রণঃ মান নিয়ন্ত্রণ ভাল হলে উৎপাদন ও সেবা মানসম্মত হবে।

ভাল সফটওয়ারের বৈশিষ্ট্যঃ একটি সফটওয়ার কি সেবা দিচ্ছে আর কতটা ভাল সেবা দিচ্ছে তাই পণ্য হিসাবে তার গুরুত্ব নিশ্চিত করবে, এজন্য নিচের এই শর্তগুলো পূরণ করতেই হবে,

• কর্মক্ষমতা,
• পরিবর্তনযোগ্যতা ও
• রক্ষণাবেক্ষণ

সঠিক প্রকৌশলগত ও আদর্শ সফটওয়ারে নিচের বৈশিষ্ট্যগুলো থাকা উচিৎ,

কর্মক্ষমতাঃ কাজের ক্ষেত্রে সফটওয়ারটি কতটুকু ভাল তা নির্দেশ করে, এক্ষেত্রে যে বৈশিষ্ট্যগুলো থাকে তা হল,

• বাজেট,
• ব্যবহারযোগ্যতা,
• দক্ষতা,
• নির্ভুলতা,
• ফাংশনালিটি,
• নির্ভরতা,
• প্রতিরক্ষা,
• নিরাপত্তা

পরিবর্তনযোগ্যতাঃ সফটওয়ারটি এক প্লাটফর্ম থেকে অন্য প্লাটফর্মে চালানোর ক্ষেত্রে এই বিষয়টি কাজে লাগে। এর অন্তর্গত বিষয় হল,

• পরিবহনযোগ্যতা,
• এক প্লাটফর্ম থেকে অন্য প্লাটফর্মে চালানোর সক্ষমতা,
• পুনরায় ব্যবহারযোগ্যতা,
• অভিযোজন দক্ষতা।
রক্ষণাবেক্ষণঃ পরিবর্তনশীল পরিবেশে সফটওয়ারটি কিভাবে নিজেকে রক্ষা করবে তা এই অংশের আলোচ্য বিষয়। এর অন্তর্গত বিষয়গুলো হল,
• পৃথক অংশে সীমাবদ্ধ করা,
• রক্ষণাবেক্ষণের যোগ্যতা,
• স্থিতিস্থাপকতা,
• কর্মক্ষমতা প্রসারণ।

সংক্ষেপে বলতে গেলে, সফটওয়ার প্রকৌশল হল কম্পিউটার বিজ্ঞানের একটি অংশ যা সঠিকভাবে বিবৃত প্রকৌশলগত ধারণা প্রয়োগ করে মানসম্মত, টেকসই, প্রসারণশীল কর্মক্ষমতার ও ক্রয়সীমার মধ্যে থাকা সফটওয়ার সময়মত আমাদের কাছে পৌঁছে দেয়।

ডট নেট এর প্রধান টেকনোলজি সমূহ । .NET basic technologies overview

Huge Sell on Popular Electronics

ডট নেট প্রযুক্তির সারসংক্ষেপ

রিদওয়ান বিন শামীম

নতুনদের জন্য বিশেষ করে যারা প্রোগ্রামিঙে নতুন তাদের জন্য ডট নেট প্রযুক্তির বিভিন্ন দিক বুঝতে পারাটা প্রথম দিকে একটু কঠিন মনে হতে পারে, এই প্রবন্ধে আমরা ডট নেট প্রযুক্তির মৌলিক বিষয়গুলো নিয়ে আলোচনা করছি।

ভিজুয়াল স্টুডিয়ো (Visual Studio) হল মাইক্রোসফটের ডট নেট ডেভলাপমেন্টের একটি IDE, যার সর্বশেষ ভার্সন হল Visual Studio10, এটিরও কয়েকটি প্রকরণ যেমন Visual Studio Express, Visual Studio Ultimate এরকম আছে।

ডট নেট প্রোগ্রাম লেখার জন্য সবচেয়ে উপযোগী হল সি শার্প (C#) ল্যাঙ্গুয়েজ, সি শার্প অনেকটা সি ল্যাঙ্গুয়েজ ভিত্তিক প্রোগ্রামিং ল্যাঙ্গুয়েজ যেটি জাভা থেকে অনেক সূত্র নেয় কিন্তু সর্বশেষ কয়েকটি ভার্সনে তারা ভিন্ন শাখা ব্যবহার করছে। VB.NET ভার্সনের আগে সি শার্প নতুন ভাষাগত বৈশিষ্ট্য অর্জন করতে শুরু করেছিল কিন্তু বর্তমানে দুটি ভাষা পরস্পরের সমকক্ষ হয়ে গেছে। সি শার্প পরবর্তীতে গতিশীল, বিবৃতিমূলক ও ফাংশনাল দৃষ্টান্ত ব্যবহার করা শুরু করেছে।

VB.NET সি শার্পের মতই কাজ করে কিন্তু এটি চিহ্নের তুলনায় শব্দনির্ভর, এটি কোন বিবৃতিকে আলাদা করার জন্য নতুন লাইনের চিহ্ন ব্যবহার করে, যেটি কয়েক লাইনের বিবৃতির ক্ষেত্রে সমস্যা সৃষ্টি করে।

F# হল অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজ যা মূলত OCaml নির্ভর, যা এলগরিদমিক কাজের জন্য সবচেয়ে উপযোগী।

Iron Ruby এবং Iron Python হল Ruby ও Python এর ওপেন সোর্স প্রকরণ যা ডট নেটের বিভিন্ন ভাষার সমন্বয়কারক .NET Common Language Runtime (CLR) এ কার্যকর। IronRuby ও IronPython ব্যবহারের ক্ষেত্রে এই সমন্বয় আবশ্যক নয় কিন্তু সুবিধাজনক অপশন।

.NET CLR একটি ভার্চুয়াল মেসিন যার ভেতরে ডট নেট কোড চলে। যখন আমরা কোন ডট নেট প্রোগ্রাম তৈরি করি তা কোন নেটিভ বাইনারি করে না, তা .NET CLR ভিত্তিক বাইনারি তৈরি করে। এর মানে হল যেকেউ একটি অন্য প্ল্যাটফরমের জন্য .NET CLR লিখে তাতে ডট নেট অ্যাপ্লিকেশন চালাতে পারে, রিকম্পাইল না করেই। .NET CLR এর অল্টারনেটিভ হল মনো(mono), যা .NET CLR এর সাথে সাযুজ্যপূর্ণ কিন্তু এর প্রয়োগের ফলাফল ডট নেট ফ্রেমওয়ার্কে শতভাগ সাযুজ্যপূর্ণ নয়।

.NET Framework হল তথ্যভাণ্ডারের একটি সেট যা ডট নেট প্রোগ্রামের সবচেয়ে কমন ফাংশনালিটি প্রদান করে, .NET Frameworkএ অজস্র অবজেক্ট ও ডজন ডজন নেমস্পেস সংগৃহীত থাকে। দক্ষ ডট নেট ডেভলাপার হতে গেলে ডট নেট ফ্রেমওয়ার্কের কোথায় কি আছে তা জানা জরুরী যাতে কাজের সময় একদম প্রথম থেকে খুঁজতে না হয়।

WinForms হল ডেক্সটপ এপ্লিকেশনে UI নিয়ে কাজ করার জন্য ডট নেটের একটি গতানুগতিক পদ্ধতি, অবজেক্ট তৈরির জন্য নিয়মতান্ত্রিকভাবে কোড ব্যবহার করা হয় যা UI প্রোগ্রাম চালায়, এবং একই কোড নিপুনভাবে সমস্ত প্রোগ্রাম চালায়।WinForms ইভেন্ট হ্যান্ডেলিং কার্যপ্রণালীর মধ্যে ট্রিগার কোডিঙের মাধ্যমে চালিত হয়। এটি Windows Presentation Foundation (WPF) এক তত্ত্বাবধায়নে অপেক্ষাকৃত দ্রুত কাজ করে।

WPF হল Windows Vista ও .NET 3.0এ কার্যকর প্রযুক্তির সেট যা UI কে এক্সএমএল এর অধীনে XAML নামক একটি ভাষার সাহায্যে প্রকাশ করতে দেয়, WPF হল সিলভারলাইট প্রযুক্তির ভিত্তি যা ডেভলাপারদের WinForms এর চেয়ে অনেক সহজে এনিমেশন, ট্রান্সলেসন ও অন্যান্য ইফেক্ট তৈরি করার সুযোগ করে দেয়। Visual Studio 2008তে WPF নিয়ন্ত্রণ অতটা সহজ ছিল না কিন্তু Visual Studio 2010 তে অনেক সহজে এটি ব্যবহার করা যাচ্ছে , XAML বা Expression Blend ইত্যাদি ভাষা শেখার দরকার পরছে না।

সিলভারলাইট হল ডট নেট প্রোগ্রামের পোর্টেবল প্যাকেজ, যা WPF কে UI হিসেবে ব্যবহার করে। বর্তমানে এটি Windows এবং Mac OS X এ চলছে Microsoft-made binaries দ্বারা, আর লিনাক্সে এটি Moonlight application দ্বারা চলছে। যদিও সিলভারলাইট ব্রাউসারের প্লাগিনে বেশি সাযুজ্যপূর্ণ, এটির এপ্লিকেশনগুলো ব্রাউসার ছাড়াও কাজ করে, এবং লোকাল অপারেটিং সিস্টেমে ভালই রেসপন্স করে থাকে।

WinForms যেমন ডেক্সটপ এপ্লিকেশন তৈরিতে সহায়তা করে ওয়েবে সেই কাজ করে ASP.NET, এটি ওয়েব ডেভলাপমেন্টে WinForms model সংস্থাপনের চেষ্টা করে। ASP.NET ডেভলাপারের অনেক কাজ নিজেই করে দেয়, অনেক কর্মপ্রণালীর নিয়ন্ত্রণ নিয়ে নেয়। ডেভলাপারের অনেক কাজ ASP.NET MVC তে শিফট হয়ে যায়।

ASP.NET MVC, WPF এর মত ওয়েব এপ্লিকেশন লেখার অনেকটা স্বয়ংক্রিয় একটি পদ্ধতি যা ডেভলাপারের অনেক কাজ করে দেয়, ASP.NET এর তুলনায়। Ruby on Rails নামক একটি প্রোগ্রামিং ভাষা থেকে এর মূল ধারণা নেয়া হয়েছে। "prefers convention over configuration" হল এর মূলমন্ত্র, এবং separation of concernsবা ঝুঁকির বিন্যাসই এর প্রধান লক্ষ। ASP.NET MVC যত পরিনত হয় তত তা ওয়েব ডেভলাপমেন্ট প্রোজেক্টের জন্য সহায়ক হয়ে উঠে।

 

 

সি প্রোগ্রামিঙে টাইপ কাস্টিং

Huge Sell on Popular Electronics

সি প্রোগ্রামিঙে টাইপ কাস্টিংঃ
রিদওয়ান বিন শামীম

টাইপ কাস্টিং একটি পদ্ধতি যেখানে কোন চলককে এক ডাটা টাইপ থেকে অন্য ডাটা টাইপে পরিবর্তিত করা যায়। যেমন, একটি লম্বা মানকে যদি সাধারণ একটি পূর্ণ সংখ্যায় প্রকাশ করতে চাই, তাহলে long থেকে int এ টাইপ কাস্ট করে তা করা যায়।এক টাইপ থেকে অন্য টাইপে রুপান্তরের ক্ষেত্রে নিচের মত করে কাস্ট অপারেটর ব্যবহার করে এটি করা হয়ঃ
(type_name) expression

কাস্ট অপারেটর কীভাবে floating-point operation হিসাবে দুটি পূর্ণসংখ্যা চলক বিভাজন তৈরি করে আলাদা করে তা নিচের উদাহরণ থেকে আমরা বুঝতে পারি।

#include <stdio.h>

main()
{
int sum = 17, count = 5;
double mean;

mean = (double) sum / count;
printf("Value of mean : %f\n", mean );

}
উপরের কোড ঠিকভাবে কাজ করলে তা যে ফলাফল দেখাবে তা হল,
Value of mean : 3.400000
এখানে বলা উচিৎ যে, কাস্ট অপারেটর ডিভিশনের চেয়ে বেশি অগ্রাধিকার পায় তাই অঙ্কের মান type double দ্বারা রূপান্তরিত হয়, তারপর দ্বৈত মান প্রদর্শন করে। টাইপ কনভার্সন অন্তর্নিহিতও হতে পারে যা কম্পাইলারের মাধ্যমে স্বয়ংক্রিয়ভাবে হতে পারে বা কাস্ট অপারেটরের মাধ্যমে সরাসরিও হয়। তবে টাইপ কনভার্সন কাস্ট অপারেটরের মাধ্যমে করাই ভাল।
পূর্ণসংখ্যার মানোন্নয়নঃ পূর্ণসংখ্যার মানোন্নয়ন একটি প্রক্রিয়া যেটি int বা unsigned int এরচে ছোট মানের পূর্ণসংখ্যার মানকে int বা unsigned int এর মানে আনতে ব্যবহার করা হয়।কোন int এ ক্যারেকটার যোগ করার ক্ষেত্রে আমরা যা করতে পারি তা হল,
#include <stdio.h>

main()
{
int i = 17;
char c = 'c'; /* ascii value is 99 */
int sum;

sum = i + c;
printf("Value of sum : %d\n", sum );

}
উপরের কোড ঠিকভাবে কাজ করলে তা যে ফলাফল দেখাবে তা হল,

Value of sum : 116
এখানে মান ১১৬ আসছে কারণ কম্পাইলার পূর্ণসংখ্যার মানোন্নয়ন করে সি ('c' )এর মান ascii তে রুপান্তর করে নিচ্ছে মূল কাজের আগে।
সাধারণ এরিথমেটিক রুপান্তরঃ সাধারণ এরিথমেটিক রুপান্তরের ক্ষেত্রে অন্তর্হিত ভাবে সব মানকে একটি নির্দিষ্টভাবে সাজানো হয়। কম্পাইলার প্রথমে পূর্ণসংখ্যার মানোন্নয়ন করে, এর পরও টাইপ সমান না হলে নিচের ক্রমানুসারে সংখ্যার প্রাপ্যতার অগ্রাধিকার ভিত্তিতে রুপান্তর করা হয়।

সাধারণ এরিথমেটিক রুপান্তর assignment operators বা logical operators ইত্যাদির জন্য ব্যবহার করা হয় না। নিচের উদাহরণ থেকে আমরা ব্যপারটা বুঝবঃ
#include <stdio.h>

main()
{
int i = 17;
char c = 'c'; /* ascii value is 99 */
float sum;

sum = i + c;
printf("Value of sum : %f\n", sum );

}
উপরের কোড ঠিকভাবে কাজ করলে তা যে ফলাফল দেখাবে তা হল,

Value of sum : 116.000000
এখানে c প্রথমে পূর্ণসংখ্যায় রূপান্তরিত হয়েছে কিন্তু মূল মান দ্বিগুণ হওয়ায় সাধারণ এরিথমেটিক রুপান্তর ব্যবহার করে এবং কম্পাইলার i ও c কে floatএ রূপান্তরিত করে সেভাবেই ফলাফল দিয়েছে।

সি প্রোগ্রামিঙে প্রিপ্রসেসর

Huge Sell on Popular Electronics

সি প্রোগ্রামিঙে প্রিপ্রসেসরঃ
রিদওয়ান বিন শামীম

সি প্রোগ্রামিঙে প্রিপ্রসেসর কম্পাইলারের অংশ নয় কিন্তু কিন্তু কম্পাইলেসন প্রক্রিয়ার একটি পৃথক অংশ। সহজ কথায় বলতে গেলে, সি প্রিপ্রসেসর একটি টেক্সট সাবস্টিটিউশন অনুষঙ্গ এবং কম্পাইলারকে মূল কম্পাইলেসনের আগে প্রয়োজনীয় প্রিপ্রসেসিং সম্পন্ন করার নির্দেশ দিয়ে থাকে। আমরা এ প্রবন্ধে সি প্রিপ্রসেসরকে সিপিপি বলব।
সমস্ত প্রিপ্রসেসর কমান্ড একটি পাউন্ড প্রতীক (#) দ্বারা শুরু হয়। এটি প্রথম অশূন্য মাত্রা, এবং পঠনযোগ্যতার জন্য এটি প্রথম কলামে শুরু করা হয়। কিছু গুরুত্বপূর্ণ প্রিপ্রসেসিং ডিরেক্টিভ নিচের তালিকায় দেয়া হল।
Directive Description
#define প্রিপ্রসেসর ম্যাক্রো অন্তর্ভুক্ত/অদলবদল করে।
#include অন্য ফাইল থেকে নির্দিষ্ট হিডার(header) অন্তর্ভুক্ত করে।
#undef প্রিপ্রসেসরের ম্যাক্রোকে আনডেফাইন করে।
#ifdef ম্যাক্রো ডিফাইনড হলে সত্য নির্দেশ করে।
#ifndef ম্যাক্রো আনডিফাইনড হলে সত্য নির্দেশ করে।
#if কম্পাইলেসনের সময় ঠিক হলে টা টেস্ট করে।
#else #if এর অলটারনেটিভ।
#elif #else এবং #if যদি এক বিবৃতিতে থাকে।
#endif শর্ত সাপেক্ষে প্রিপ্রসেসরের সমাপ্তি করে।
#error Stderr এ এরর ম্যাসেজ নির্দেশ করে।
#pragma বিশেষ প্রক্রিয়া ব্যবহার করে কম্পাইলারে বিশেষ কমান্ড নির্দেশ করে।

বিভিন্ন ডিরেক্টিভ বুঝার জন্য নিচের উদাহরণ দেয়া হল,
#define MAX_ARRAY_LENGTH 20
এই ডিরেক্টিভ MAX_ARRAY_LENGTH কে 20 দিয়ে পালটানোর জন্য সিপিপিকে নির্দেশ দেয় এবং #define ব্যবহার করে ধ্রুবকের পঠনযোগ্যতা বাড়াতে।
#include <stdio.h>
#include "myheader.h"
এই ডিরেক্টিভ সিস্টেম লাইব্রেরি থেকে stdio.h নেয়ার জন্য সিপিপিকে নির্দেশ দেয়, এবং বর্তমান সোর্স ফাইলে টেক্সট যোগ করে। পরবর্তী লাইন সিপিপিকে লোকাল ডিরেক্টরি থেকে myheader.h নিতে ও বর্তমান সোর্স ফাইলে কন্টেন্ট যোগ করতে নির্দেশ দেয়।
#undef FILE_SIZE
#define FILE_SIZE 42
এটি সিপিপিকে FILE_SIZE কে 42 হিসেবে প্রদর্শন করতে নির্দেশ করে।
#ifndef MESSAGE
#define MESSAGE "You wish!"
#endif
এটি সিপিপিকে কোন ম্যাসেজ যদি ডিফাইন না করা হয়ে থাকে তাকে ডিফাইন করতে নির্দেশ দেয়।
#ifdef DEBUG
/* Your debugging statements here */
#endif
এটি সিপিপিকে কোন বিবৃতি সম্পন্ন করতে বলে যদি DEBUG ডিফাইন করা থাকে। কম্পাইলেসনের সময় -DDEBUG flag সম্পন্ন থাকলে এটি দরকার হয়, জিসিসি কম্পাইলারের ক্ষেত্রে। এটি DEBUGকে ডিফাইন করবে তাই কম্পাইলেসনের সময় debugging on বা off করা যাবে।
ANSI C কয়েক রকম ম্যাক্রো ডিফাইন করে। প্রোগ্রামিঙে এর সবগুলোই ব্যবহার করা যাবে কিন্তু পূর্বনির্ধারিত ম্যাক্রোগুলো সরসরি পরিবর্তন করা যায় না।
Macro Description
__DATE__ character literalএ বর্তমান তারিখ "MMM DD YYYY" ফরমেটে
__TIME__ character literal এ বর্তমান সময়"HH:MM:SS" ফরমেটে
__FILE__ string literalএ বর্তমান ফাইল নেম।
__LINE__ দশমিক ধ্রুবকে বর্তমান লাইন নাম্বার।
__STDC__ কম্পাইলার ANSI standardএ কম্পাইল করলে 1 দ্বারা নির্ণীত।

নিচের উদাহরণগুলো দেখা যাক;
#include <stdio.h>

main()
{
printf("File :%s\n", __FILE__ );
printf("Date :%s\n", __DATE__ );
printf("Time :%s\n", __TIME__ );
printf("Line :%d\n", __LINE__ );
printf("ANSI :%d\n", __STDC__ );

}
test.c ফাইলে কোডগুলো সম্পন্ন হলে যে ফলাফল হবেঃ
File :test.c
Date :Jun 2 2012
Time :03:36:24
Line :8
ANSI :1

প্রিপ্রসেসরের অপারেটরঃ ম্যাক্রো তৈরি করতে সি প্রিপ্রসেসর যে অপারেটর সুবিধা দেয় টা হল, ম্যাক্রো চালু রাখাঃ ম্যাক্রো সাধারণত এক লাইনে হয়, এক লাইনের অনেক লম্বা কোন ম্যাক্রো চালু রাখতে এই অপারেটর ব্যবহার করা হয়। যেমন,
#define message_for(a, b) \
printf(#a " and " #b ": We love you!\n")
স্ট্রিংজাইজঃ ('#') দ্বারা প্রকাশ করা হয়। ম্যাক্রো ডেফিনেশনের মধ্যে ম্যাক্রো প্যারামিটারকে স্ট্রিং ধ্রুবকে পরিনত করে। নির্দিষ্ট প্যারামিটার লিস্ট বা আর্গুমেন্টের ক্ষেত্রেই কেবল এই অপারেটর ব্যবহার করা হয়।
#include <stdio.h>

#define message_for(a, b) \
printf(#a " and " #b ": We love you!\n")

int main(void)
{
message_for(Carole, Debra);
return 0;
}
কোড ঠিকভাবে লেখা হলে তা এই ফলাফল দেখাবে,
Carole and Debra: We love you!
টোকেন পেস্টিং অপারেটরঃ একে (##) দ্বারা প্রকাশ করা হয়, ম্যাক্রো ডেফিনেশনের দুটি তকেঙ্কে একীভূত করতে ব্যবহার করা হয়,
#include <stdio.h>

#define tokenpaster(n) printf ("token" #n " = %d", token##n)

int main(void)
{
int token34 = 40;

tokenpaster(34);
return 0;
}
কোড ঠিকভাবে লেখা হলে তা এই ফলাফল দেখাবে
token34 = 40
এটি কীভাবে দেখানো হল যেখানে
printf ("token34 = %d", token34);
token##n কে token34 এ রূপান্তরের ক্ষেত্রে stringize এবং token-pasting দুটিই ব্যবহৃত হয়েছে।
ডিফাইনড অপারেটরঃ কোন আইডেন্টিফায়ার #define ব্যবহার করে ধ্রুবক প্রকাশ করলে এটি ব্যবহার হয়, আইডেন্টিফায়ার ডিফাইনড হলে ভ্যলু ট্রু অর্থাৎ নন-জিরো আর আন ডিফাইনড হলে ফলস বা জিরো।
#include <stdio.h>

#if !defined (MESSAGE)
#define MESSAGE "You wish!"
#endif

int main(void)
{
printf("Here is the message: %s\n", MESSAGE);
return 0;
}
কোড ঠিকভাবে লেখা হলে তা এই ফলাফল দেখাবে
Here is the message: You wish!

প্যারামিটারাইজড ম্যাক্রোঃ সিপিপির একটি গুরুত্বপূর্ণ সুবিধা হল এইটি প্যারামিটারাইজড ম্যাক্রো ব্যবহার করে কাজকে এগিয়ে নেয়।
int square(int x) {
return x * x;
}
ম্যাক্রো ব্যবহার করে পুনরায় লিখতে পারি,
#define square(x) ((x) * (x))
আর্গুমেন্ট সহ ম্যাক্রোকে #define directive দ্বারা লিখতে হয়, আর্গুমেন্ট লিস্ট নির্দিষ্ট এবং ম্যাক্রোর নাম মেনে চলতে হয়, macro name ও open parenthesis এর মধ্যে কোন ফাঁকা জায়গা রাখা যাবে না।
#include <stdio.h>

#define MAX(x,y) ((x) > (y) ? (x) : (y))

int main(void)
{
printf("Max between 20 and 10 is %d\n", MAX(10, 20));
return 0;
}
কোড ঠিকভাবে লেখা হলে তা এই ফলাফল দেখাবে
Max between 20 and 10 is 20

সি প্রোগ্রামিং এ মেমোরি ব্যবস্থাপনাঃ Memory Management in C Programming

Huge Sell on Popular Electronics

সি প্রোগ্রামিং এ মেমোরি ব্যবস্থাপনা

রিদওয়ান বিন শামীম

এই অধ্যায়ে সি প্রোগ্রামিং এ ডাইনামিক মেমোরি ম্যনেজমেন্ট নিয়ে আলোচনা করা হবে। সি প্রোগ্রামিং ল্যাঙ্গুয়েজে মেমোরি বণ্টন ও ব্যবস্থাপনার জন্য কয়েক ধরনের ব্যবস্থা আছে, তাদেরকে হিডার ফাইলে রাখা হয়। এধরনের ফাংশন গুলোকে এভাবে দেখানো যায়ঃ

S.N. Function and Description

1 void *calloc(int num, int size);
Num ইলিমেন্টের এর জন্য array বরাদ্দ দেয় এই ফাংশন, যেগুলোর আকার বাইটে সীমাবদ্ধ।

2 void free(void *address);
এই ফাংশন এড্রেস দ্বারা নির্ধারিত মেমোরি ব্লক প্রকাশ করে।

3 void *malloc(int num);
এই ফাংশন num bytes এর array বরাদ্ধ করে,এবং তাদের শুরু করায়।

4 void *realloc(void *address, int newsize);
এই ফাংশন মেমোরিকে পুনরায় সংগঠিত করে ও নতুন আকারে গড়ে তুলে।

প্রোগ্রামিং এ কাজ করার সময় যদি অ্যারির আকার সম্পর্কে জানা থাকে তাহলে অ্যারি সনাক্ত করা সহজ হবে। উদাহরণস্বরূপ, কারো নাম সংরক্ষণ করতে গেলে, নাম লিখতে ম্যাক্সিমাম ১০০ অক্ষর লাগতে পারে, যা আমরা এভাবে লিখতে পারি,
char name[100];

কিন্তু যদি এমন হয় যেখানে আমাদের যে তথ্য লিখতে হবে তার আকার সম্পর্কে কোন ধারণা নেই, যেমন কোন বিষয়ে বিবৃতি, সেক্ষেত্রে আমাদের একটি পয়েন্টার ব্যবহার করতে হবে অনির্ধারিত মেমোরি সাইজ উল্লেখ করে, যা পরবর্তীতে এভাবে দেখানো যায়,
#include
#include
#include

int main()
{
char name[100];
char *description;

strcpy(name, "Zara Ali");

/* allocate memory dynamically */
description = malloc( 200 * sizeof(char) );
if( description == NULL )
{
fprintf(stderr, "Error - unable to allocate required memory\n");
}
else
{
strcpy( description, "Zara ali a DPS student in class 10th");
}
printf("Name = %s\n", name );
printf("Description: %s\n", description );
}

উপরের কোডগুলো ঠিকভাবে লিখা হলে তা এরুপ ফলাফল দেখাবে,
Name = Zara Ali
Description: Zara ali a DPS student in class 10th

একই ধরনের প্রোগ্রাম লিখা যাবে malloc কে calloc দ্বারা রিপ্লেস করে,
calloc(200, sizeof(char));

অপারেটিং সিস্টেম নিজেই প্রোগ্রামের বরাদ্দ করা মেমোরি রিলিজ করবে, কিন্তু আমরা নিজেরাই প্রয়োজন শেষ হলে free() ফাংশন দ্বারা মেমোরি রিলিজ করে দিতে পারি। এছাড়াও realloc() ফাংশন ব্যবহার করে বরাদ্দকৃত মেমোরি ব্লকের আকার ছোটবড়ও করা যায়। realloc() এবং free() ফাংশন ব্যবহার করে দেখা যাক।

#include
#include
#include

int main()
{
char name[100];
char *description;

strcpy(name, "Zara Ali");

/* allocate memory dynamically */
description = malloc( 30 * sizeof(char) );
if( description == NULL )
{
fprintf(stderr, "Error - unable to allocate required memory\n");
}
else
{
strcpy( description, "Zara ali a DPS student.");
}
/* suppose you want to store bigger description */
description = realloc( description, 100 * sizeof(char) );
if( description == NULL )
{
fprintf(stderr, "Error - unable to allocate required memory\n");
}
else
{
strcat( description, "She is in class 10th");
}

printf("Name = %s\n", name );
printf("Description: %s\n", description );

/* release memory using free() function */
free(description);
}

উপরের কোড ঠিকভাবে লিখা হলে তা যে ফলাফল দেখাবে তা হল,
Name = Zara Ali
Description: Zara ali a DPS student.She is in class 10th
বাড়তি মেমোরি ব্লক বরাদ্দ না করে আমরা উপরের ফাংশন লিখে দেখতে পারি, মেমোরিতে সীমাবদ্ধতা থাকলে strcat() ফাংশন প্রদর্শিত হবে।

সি প্রোগ্রামিং : চলক আর্গুমেন্ট । C – Variable Arguments

Huge Sell on Popular Electronics

সি প্রোগ্রামিং : চলক আর্গুমেন্ট।

রিদওয়ান বিন শামীম

অনেক সময় প্রোগ্রামিঙে এমন পরিস্থিতি আসে যখন অনুমিত প্যারামিটারের সংখ্যার স্থলে আর্গুমেন্টের চলক নাম্বার নেবে এমন ফাংশন খুঁজতে হয়। সি প্রোগ্রামিং এজাতীয় ক্ষেত্রের জন্য একটি ব্যবস্থা রেখেছে যাতে করে আমরা এমন একটি ফাংশন ব্যবহার করতে পারি যা আমাদের চাহিদামত প্যারামিটারের চলক নাম্বার গ্রহন করে থাকে। নিচের উদাহরণ তেমন একটি ফাংশনঃ

int func(int, ... )
{
.
.
.
}

int main()
{
func(1, 2, 3);
func(1, 2, 3, 4);
}

এখানে func() এক্লিপ্সের মত তিন ডটের(...) শেষ আর্গুমেন্ট নির্দেশ করে, এক্লিপ্সের সামনেরটি int যা গৃহীত আর্গুমেন্টের মোট চলক নাম্বার প্রকাশ করে। এটিকে ঠিকভাবে কাজ করানোর জন্য stdarg.h হিডার ফাইল ব্যবহার করতে হয় যা চলক আর্গুমেন্টের ফাংশন ও ম্যাক্রো সঠিকভাবে প্রয়োগের জন্য দরকার হয়। এক্ষেত্রে নিচের ধারাগুলো মেনে চলা হয়।

# শেষ প্যারামিটার এক্লিপ্স ধরে ফাংশন ঠিক করা হয়, এক্লিপ্সের আগের ফাংশন int যা আর্গুমেন্টের সংখ্যা প্রকাশ করে।
# ফাংশন ডেফিনেশনে va_list টাইপের চলক রাখতে হয়, যা stdarg.h হিডার ফাইলে বিবৃত হয়।
# int প্যারামিটার ও va_start ম্যাক্রো ব্যবহার করতে হয় আর্গুমেন্ট লিস্টে va_list চলক চালু করতে। va_start ম্যাক্রো stdarg.h হিডার ফাইলে বিবৃত হয়।
# আর্গুমেন্ট লিস্টে কাজ করতে va_arg ম্যাক্রো ও va_list চলক ব্যবহার করা হয়।
# va_list চলকের বিবৃত মেমোরি পরিষ্কার করতে va_end ম্যাক্রো ব্যবহার করা হয়।
উপরের পদ্ধতি ব্যবহার করে প্যারামিটারের চলক নাম্বার একটি ফাংশনে আমরা লিখতে পারি,

#include <stdio.h>
#include <stdarg.h>

double average(int num,...)
{

va_list valist;
double sum = 0.0;
int i;

/* initialize valist for num number of arguments */
va_start(valist, num);

/* access all the arguments assigned to valist */
for (i = 0; i < num; i++)
{
sum += va_arg(valist, int);
}
/* clean memory reserved for valist */
va_end(valist);

return sum/num;
}

int main()
{
printf("Average of 2, 3, 4, 5 = %f\n", average(4, 2,3,4,5));
printf("Average of 5, 10, 15 = %f\n", average(3, 5,10,15));
}

উপরের কোড সঠিকভাবে লিখলে যে ফলাফল হয় তা নিচে দেয়া হল, বলে নেয়া ভাল, দুবার average() ফাংশন ব্যবহার করা হয়েছে প্রথমবার প্রথম আর্গুমেন্ট চলক আর্গুমেন্টের সংখ্যা প্রকাশ করেছে, আর্গুমেন্টের চলক সংখ্যা ছাড়ে কেবল এক্লিপ্স ব্যবহার করা হয়।
Average of 2, 3, 4, 5 = 3.500000
Average of 5, 10, 15 = 10.000000

সি প্রোগ্রামিঙে এরর হ্যান্ডেলিং . Error Handling in C Programming

Huge Sell on Popular Electronics

সি প্রোগ্রামিঙে এরর হ্যান্ডেলিং
রিদওয়ান বিন শামীম

যেহেতু সি প্রোগ্রামিঙে সরাসরি ভুল সংশোধনের সুযোগ নেই কিন্তু সিস্টেম প্রোগ্রামিং ল্যাঙ্গুয়েজ হওয়ার কারণে কিছু নিম্ন মানের পরিবর্তনের সুযোগ দিয়ে থাকে। বেশিরভাগ সি এমনকি ইউনিক্স ফাংশনও -1 বা NULL রিটার্ন দেখায়, এবং errno নামক এরর কোড প্রদর্শন করে যা একটি গ্লোবাল কোড, যা নির্দেশ করে ভুলটি কোন ফাংশন কলের সময় হয়েছিল। হিডার ফাইলে বিভিন্ন এরর কোড পাওয়া যায়। তাই সি প্রোগ্রামিং রিটার্ন ভ্যলু চেক করে ও সেই মোতাবেক ব্যবস্থা নেয়। প্রোগ্রাম শুরুর সময় errno কে ০ নির্ধারণ করে নেয়া ভাল, এর মানে হচ্ছে প্রোগ্রামে কোন ভুল নেই।
errno, perror()এবং strerror()
perror() এবং strerror(),errnoএর অধীনে টেক্সট মেসেজ প্রদর্শনে ব্যবহার করা হয়। perror() ফাংশন এর কাছে সরবরাহকৃত string প্রদর্শন করে কোলন, স্পেসের
মাধ্যমে, তারপর লিখিত বার্তা আকারে errno value প্রদর্শন করে। strerror()ফাংশন লিখিত বার্তার একটি পয়েন্টার ফেরত দেয়, বর্তমান errno value সহ। একটি এরর কন্ডিশন তৈরি করে এমন একটি ফাইল খোলার চেষ্টা করা যাক যার অস্তিত্বই নেই। এখানে যদিও দুটি ফাংশন ব্যবহার করা হবে, একটি বা বেশি ফাংশনও ব্যবহার করা যায়। আরেকটি ব্যপার হল, stderr file stream ব্যবহার করা ভাল এররের আউটপুট পাওয়ার জন্য।
#include <stdio.h>
#include <errno.h>
#include <string.h>

extern int errno ;

int main ()
{
FILE * pf;
int errnum;
pf = fopen ("unexist.txt", "rb");
if (pf == NULL)
{
errnum = errno;
fprintf(stderr, "Value of errno: %d\n", errno);
perror("Error printed by perror");
fprintf(stderr, "Error opening file: %s\n", strerror( errnum ));
}
else
{
fclose (pf);
}
return 0;
}
উপরোক্ত কোড লেখার পর যে ফলাফল আসবে তা হল,
Value of errno: 2
Error printed by perror: No such file or directory
Error opening file: No such file or directory

শূন্য এরর দিয়ে ডিভাইড করাঃ অনেক ডেভলপার এটি করেন না, যার ফলে রানটাইম এরর হয়ে প্রোগ্রামটি অচল হয়ে যায়। শূন্য এরর দিয়ে ডিভাইড করতে নিচের কোড লিখতে হবে,
#include <stdio.h>
#include <stdlib.h>

main()
{
int dividend = 20;
int divisor = 0;
int quotient;

if( divisor == 0){
fprintf(stderr, "Division by zero! Exiting...\n");
exit(-1);
}
quotient = dividend / divisor;
fprintf(stderr, "Value of quotient : %d\n", quotient );

exit(0);
}
ঠিকভাবে লিখলে যা ফলাফল হবে তা হল,
Division by zero! Exiting...
প্রোগ্রামের Exit Status ঃ প্রোগ্রামিঙে কোন সফল কোডিঙের পরে EXIT_SUCCESS কোড পাওয়া যায় যা মূলত একটি ম্যাক্রো, এর মান ০, কোন প্রোগ্রামে এরর কন্ডিশন থাকলে এবং সেভাবেই বের হয়ে আসার চেষ্টা করলে এই কোডটি দেখাবে, EXIT_FAILURE। যেটিকে -1 দ্বারা প্রকাশ করা হয়, তাই এক্ষেত্রে এই কোড লেখা হয়,
#include <stdio.h>
#include <stdlib.h>

main()
{
int dividend = 20;
int divisor = 5;
int quotient;

if( divisor == 0){
fprintf(stderr, "Division by zero! Exiting...\n");
exit(EXIT_FAILURE);
}
quotient = dividend / divisor;
fprintf(stderr, "Value of quotient : %d\n", quotient );

exit(EXIT_SUCCESS);
}
ঠিকভাবে লিখা হলে যে ফলাফল আসবে তা হল,
Value of quotient : 4

এরচেয়ে কম ওয়ার্ডে হল না। বোনাস (1.20 => 350 words article) আশা করছি।

সি প্রোগ্রামিঙে typedef এর ব্যবহার

Huge Sell on Popular Electronics

সি প্রোগ্রামিঙে typedef এর ব্যবহারঃ
রিদওয়ান বিন শামীম

সি প্রোগ্রামিং ল্যাঙ্গুয়েজ typedef নামের একটি কি-ওয়ার্ড ব্যবহার করতে দেয়, যা নতুন নাম টাইপ করতে দেয়, নিচের উদাহরণে BYTE টার্ম বিবৃত করা হয়েছে।
typedef unsigned char BYTE;
বিবৃত করার পর unsigned char এর ব্যাখ্যা হিসাবে BYTE identifier রূপে কাজ করে। যেমন,
BYTE b1, b2;
বড় হাতের অক্ষর দ্বারা নিশ্চিত করা হয় যে এটি symbolic abbreviation কিন্তু ছোট হাতের অক্ষরও ব্যবহার করা যায় যেমন,
typedef unsigned char byte;
ব্যবহারকারী নির্ধারিত ডাটা বিবৃতির জন্য typedef ব্যবহার করা যায়, যেমন নতুন ডাটা টাইপের জন্য typedef ব্যবহার করা যায়, এরপর কাঠামোগত চলক প্রকাশের জন্য সরাসরি নিচের কোড ব্যবহার করা যায়।
#include
#include

typedef struct Books
{
char title[50];
char author[50];
char subject[100];
int book_id;
} Book;

int main( )
{
Book book;

strcpy( book.title, "C Programming");
strcpy( book.author, "Nuha Ali");
strcpy( book.subject, "C Programming Tutorial");
book.book_id = 6495407;

printf( "Book title : %s\n", book.title);
printf( "Book author : %s\n", book.author);
printf( "Book subject : %s\n", book.subject);
printf( "Book book_id : %d\n", book.book_id);

return 0;
}
কোডগুলো ঠিকমত লিখা হলে তা যে ফলাফল দেখাবে তা হল,
Book title : C Programming
Book author : Nuha Ali
Book subject : C Programming Tutorial
Book book_id : 6495407
typedef vs #define
#define হল এক প্রকার C-directive যা যা বিভিন্ন ডাটা টাইপের aliases বোঝাতে ব্যবহার হয়। যা মূলত typedef এর মতই কিন্তু কিছু পার্থক্য আছে, typedef সিম্বোলিক নাম দেয়ার ক্ষেত্রে সীমাবদ্ধ কিন্তু #define সাধারণত alias এর ভ্যলু বোঝাতে পারে, typedef এর প্রভাব কম্পাইলার থেকে প্রকাশ পায় কিন্তু #define বিবৃতি প্রিপ্রসেসর থেকে প্রকাশ করা হয়। #define এর সবচে সহজ ব্যবহার নিচে দেখানো হল।
#include

#define TRUE 1
#define FALSE 0

int main( )
{
printf( "Value of TRUE : %d\n", TRUE);
printf( "Value of FALSE : %d\n", FALSE);

return 0;
}
উপরের কোড সঠিকভাবে লিখা হলে তা যে ফলাফল দেবে তা হল,
Value of TRUE : 1
Value of FALSE : 0

এএসপি ডট নেট এমভিসি ASP.NET MVC কন্ট্রোলার

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম
এএসপি ডট নেট এমভিসিতে কন্ট্রোলার যোগ করতে যে প্রক্রিয়া প্রয়োজন তা অনেকটা এরকম, প্রথমে কন্ট্রোলার ফোল্ডার তৈরি করতে হবে। কন্ট্রোলার ফোল্ডারে কন্ট্রোলার ক্লাসেস (controller classes) থাকে, যা ব্যবহারকারীর ইনপুট ও রেসপন্স নির্ধারণ করে। MVC তে সব কন্ট্রোলারের নামের শেষে "Controller"এক্সটেনশন থাকতে হয়। উদাহরণ স্বরূপ বলা যায়
ভিজুয়াল ওয়েব ডেভলপাররা কোন ফাইল তৈরি করলে : হোমপেজ ও এবাউট পেজের নাম দেবে HomeController.cs এবং লগ অন পেজের নাম দেবে AccountController.cs । যেটা সার্ভারের ডিফল্ট ডিরেক্টরিতে "default.asp" নামে দেখানো হবে। কিন্তু MVC framework এ কন্ট্রোলার ক্লাসের মাধ্যমে এই কাজটি করা হয়। কন্ট্রোলার দ্বারা ডাটা, রিকুয়েস্ট, ইনপুট ও রেসপন্স নির্ধারণ করা হয়। হোম কন্ট্রোলার ফাইল ইনডেক্স ও এবাউট কন্ট্রোলদুটি ঠিক রাখে। HomeController.cs ফাইল যে ধরণের কোড ব্যবহার করে তা নিচে দেয়া হল। using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace MvcDemo.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{return View();}

public ActionResult About()
{return View();}
}
}
ভিউ ফোল্ডারের Index.cshtml এবং About.cshtml ফাইল গুলো কন্ট্রোলারের ActionResult views Index() এবং About() in the controller ইত্যাদি নির্দেশ করে।

Cascading Pattern. হ্যডুপ (এপাচি হ্যডুপ)ঃ

Huge Sell on Popular Electronics

হ্যডুপ (এপাচি হ্যডুপ)ঃ
রিদওয়ান বিন শামীম
ক্যাসক্যাডিং প্যাটার্ন হল যন্ত্র পঠিত প্রকল্প যা ক্যাসক্যাডিং ডেভেলপমেন্ট ফ্রেমওয়ার্কে এন্টারপ্রাইজ ডাটা ওয়ার্কফ্লো তৈরি করতে সাহায্য করে। ডেভেলপমেন্ট ফ্রেমওয়ার্ক হ্যডুপ ও অন্যান্য কম্পিউটার টপোলজির উপর একটি এবস্ট্রাকসন লেয়ার তৈরি করে, যা কোন সংস্থাকে এপাচির হ্যডুপ ব্যবহার করে তথ্য ডাটাবেস,উৎস ও দক্ষতা প্রকাশ করতে সাহায্য করে কোন কারিগরি দক্ষতা ছাড়াই। এক্ষেত্রে Predictive Model Markup Language (PMML) নামক এক প্রকার কোডিং ব্যবহার করে তথ্য বিশ্লেষকরা আর, ওরাকল ইত্যাদি পদ্ধতির সাথে সমন্বয় করতে পারেন। ডাটা বিশ্লেষক ও বিজ্ঞানীরা এ প্রযুক্তির প্রধান ব্যবহারকারী।

Random Short Notes on Project Management (PMI)

Huge Sell on Popular Electronics

ব্যবস্থাপনার উপর কিছু সংক্ষিপ্ত নোটঃ
রিদওয়ান বিন শামীম

প্রকল্পের সুযোগ ব্যবস্থাপনার পরিকল্পনাঃ

সুযোগ ব্যবস্থাপনার পরিকল্পনা হল মূলত নির্দিষ্ট করে কীভাবে প্রকল্পের সম্ভাব্য সুযোগের বিভিন্ন উত্থান পতনগুলো নিয়ন্ত্রণ করা যায় ও কীভাবে সুযোগের ক্ষেত্র গুলো নির্ধারণ করা যায়।এজন্যপ্রথমেই যা করতে হবে তা হল প্রকল্প শুরু করা।

একটি প্রকল্প শুরু করাঃ

একটি প্রকল্প শুরু করার সাথে মূলত দুই ধরণের উপাত্ত জড়িত থাকে, প্রথমটি হল প্রকল্পের কিছু নির্দিষ্ট বৈশিষ্ট্য গড়ে তোলা এবং দ্বিতীয়টি হল সম্ভাব্য প্রাথমিক সুযোগগুলোর একটি খসড়া গঠন করা।প্রকল্প ব্যবস্থাপকদের এক্ষেত্রে সরাসরি ও সততার সাথে আচরণ করতে হয়। যেকোনো পরিস্থিতিতে কোন সমস্যা এলে তাকে সোজাসুজি সেই সমস্যা মোকাবেলা করতে হয়। প্রকল্পের বৈশিষ্ট্য, যা অফিসিয়ালি একটি প্রকল্পের ভিত্তি, সেগুলো ব্যবসায়িক চাহিদা মেনে গঠন করতে হয়, সবসময় মাথায় রাখতে হয়, কেন প্রকল্পটি করা হচ্ছে অর্থাৎ প্রকল্পটির উদ্দেশ্য কি। সুযোগের খসড়া হয়ে যাওয়ার পর ও টিমের কর্মীদের কাজ শুরু হয়ে যাওয়ার পর সাধারণত প্রকল্পের যে ধারাটি শুরু করতে হয় তা হল ডবলুবিএস প্রসেস (WBS process) যা মূলত কাজের খণ্ডিত অংশগুলোর আউটপুট বা ফলাফল নির্ধারণ করে। এই আউটপুট গুলো কয়েকটি বিষয়ের সমন্বয়ে হয়ে থাকেঃ মূল্যবান সাংগঠনিক প্রক্রিয়া, প্রকল্পবিধি ও প্রাথমিক সুযোগগুলোর খসড়া ইত্যাদি।

প্রকল্পের কর্ম প্রণালীর নিষ্ঠার ক্ষেত্রে প্রকল্প ব্যবস্থাপককে সব সময় খেয়াল রাখতে হয় সমস্যা সমাধান ও সিদ্ধান্ত গ্রহনের দিকে। সমস্যা সমাধান ও সিদ্ধান্ত গ্রহনের এই বিষয়গুলো ব্যবস্থাপককে একা দেখতে হয়, এগুলো টিম ওয়ার্ক নয়। এবিষয়ে কাজের ধারার বিবরণী পাওয়া যাবে ডবলুবিএস ডিকশনারিতে(in WBS dictionary)। সুযোগের গুরুত্ব নিশ্চিতকরণ হল এমন একটি প্রক্রিয়া যেখানে ক্রেতা ও অর্থ বিনিয়োগকারী যাচাই করতে চায় চূড়ান্তভাবে প্রাপ্ত পণ্য পূর্বের ধারণা করা পণ্যের মানের মতন হয়েছে কিনা।স্টেটমেন্ট অফ ওয়ার্ক বা কাজের বিবৃতিঃ স্টেটমেন্ট অফ ওয়ার্ক বা কাজের বিবৃতি প্রকল্পের খণ্ডিত অংশের বিবরণ দেয় যাতে অনেক সময় বাইরের বিক্রেতাদের অনেক বিষয়ও জড়িত থাকে।কোড অফ কন্ডাক্টের শর্তে প্রকল্প ব্যবস্থাপনার সাথে সংশ্লিষ্ট ব্যক্তিদের আরও বলা থাকে প্রকল্পের লাভ বা লভ্যাংশ নিয়ে যেকোনো ধরণের কোন্দল এড়িয়ে চলতে।

ডবলুবিএস সার্ভের উদ্দেশ্যঃ

ডবলুবিএস সার্ভে পুরো বিষয়টি চূড়ান্ত ভাবে খতিয়ে দেখে, এই ডবলুবিএস সার্ভের কয়েকটি উদ্দেশ্য আছে। সেগুলো হলঃ পূর্বে নিরুপিত সম্ভাব্যতা কতটুকু নির্ভুল তা জানা, নিয়ম নিষ্ঠা ও দায়িত্ববোধ মেনে চলাকে সহজ করা, প্রকল্পের সফলতার একটি মানদণ্ড তৈরি করা ইত্যাদি। এভাবেই প্রকল্প ব্যবস্থাপনার কাজ এগিয়ে চলে।
তথ্যসুত্রঃ (Andy Crowe, the PMP Exam.)

Random Short Notes on Project Management

Huge Sell on Popular Electronics

প্রকল্প ব্যবস্থাপনার উপর কিছু কথাঃ
রিদওয়ান বিন শামীম

সঙ্ঘবদ্ধতার বিন্যাস একটি বড় গুন যা একটি দলকে কর্মক্ষেত্রে একসাথে করে রাখে। মানসম্মত উৎপাদন নীতিমালা একটি সংগঠনকে তার মান ঠিক রাখতে সহায়তা করে,লক্ষ্য ঠিক করতে সাহায্য করে। মানসম্মত সেবা বা পন্যের যে নীতিমালা এক একটি সংগঠনে তা এক এক রকম হতে পারে। এই ব্যপারটির সাথে জড়িয়ে আছে শিডিউল পারফরমান্স, কস্ট বাজেটিং, ঝুঁকি পর্যবেক্ষণ ও নিয়ন্ত্রণ ইত্যাদি নানা বিষয়ও ।

 

এরপর আসে প্রকল্পের প্রাথমিক নেটওয়ার্ক ডায়াগ্রামের কথা, যা কাজের ধারা ও তার নির্ভরতাগুলো পর্যায়ক্রমে প্রকাশ করে। প্রকল্প পর্যবেক্ষণ ও নিয়ন্ত্রণ সার্বিক কর্মকাণ্ডের উপর নির্ভর করে। প্রকল্প ব্যবস্থাপনার ক্ষেত্রে সব সময় দেখতে হবে কতটুকু কাজ হয়েছে আর এর পর কি কাজ করতে হবে। যেমন পরিকল্পনা গ্রহনের পর কর্মপ্রণালী ঠিক করতে হয়, এর পর যথোপযুক্ত লোক নিয়ে কাজে হাত দিতে হয়।

 

প্রকল্প বাজেট ঃ সম্ভাব্য বাজেট, শিডিউল ও রিসোর্স ক্যালেন্ডার এগুলো প্রকল্প বাজেটের অন্তর্গত বিষয়। বাধ্যতামূলক নির্ভরতাঃ প্রকল্প নেটওয়ার্ক ডায়াগ্রাম তৈরিতে দরকারি, যেমন কোন সফটওয়ার রান করানোর আগে তা লিখতে হয়।

 

মাইলস্টোন চার্ট ঃ মাইলস্টোন চার্ট প্রকল্প নেটওয়ার্কের আরেকটি পদ্ধতি যেটি একটি প্রকল্পের কেবল প্রধান বিষয় গুলো দেখায়, যেখানে গান্ট চার্ট (Gantt chart) নামের আরেকটি পদ্ধতি আছে যা প্রকল্পের সবকিছু খুঁটিয়ে দেখায়। প্রকল্পের স্কোপ স্টেটমেন্ট নামের ডায়াগ্রাম সদৃশ ডকুমেন্ট তৈরির পর কাজের ব্রেকডাউন স্ট্রাকচার তৈরি হয়, এরপর তৈরি হয় একটিভিটি লিস্ট। এরপর প্রকল্পের নেটওয়ার্ক ডায়াগ্রাম তৈরি করতে হয় যা প্রকল্পের কাজের ধারার সাথে মিলিয়ে করতে হয়।প্রকল্পে এবার ঠিক করতে হয় ক্রিটিকাল পাথ, তারপর প্রোজেক্ট শিডিউল করতে হয়।

 

রান চার্টঃ প্রথাগত কর্মপ্রণালী দেখায় ও মান নিয়ন্ত্রণ করতে সাহায্য করে। মান নিয়ন্ত্রণ ও সুযোগ যাচাই উতপ্রতভাবে জড়িত। কোয়ালিটি কন্ট্রোল নির্ভুলতা, সম্ভাব্যতা ও উপযোগিতা নিশ্চিত করে, দেখতে সাহায্য করে এই ধরণের আর কোন প্রকল্প হচ্ছে কিনা।

 

 

বেনিফিট কস্ট রেসিওঃ বেনিফিট কস্ট রেসিও ১.৫ মানে হল প্রকল্পটি ১.৫ গুন আয় করবে। একটিভিটি লিস্ট হল প্রধান ইনপুট যা একটিভিটি পরিমাপ করবে। লাইফ সাইকেল কস্টিংঃ লাইফ সাইকেল কস্টিং হল মালিকের প্রারম্ভিক খরচ, উৎপাদন খরচ ও অন্যান্য খরচের যোগফল। এটির সাথে আছে কন্ট্রোল একাউন্ট প্ল্যান। এক্সপেক্টেনসি থিওরি হল এবিষয়ে আরেকটি থিওরি যার মূল হল লক্ষ্য অর্জনে অনুপ্রেরণার ভূমিকা। যদি কর্মীরা বিশ্বাস করে লক্ষ্য অর্জন সম্ভব, তাহলেই কেবল রিওয়ার্ড মোটিভেশন পদ্ধতি কাজে লাগবে, এটাই এক্সপেক্টেনসি থিওরির মূল কথা। এগুলোই মূলত প্রকল্প ব্যবস্থাপনার মূল বিষয়।

Random Information on Project Management (PMI)

Huge Sell on Popular Electronics

প্রকল্প ব্যবস্থাপনার উপর কিছু তথ্যঃ
রিদওয়ান বিন শামীম

প্রকল্প ব্যবস্থাপকরা কাজের ক্ষেত্রে সংঘটিত ক্রুটির একটি তালিকা করেন তাদের সংঘটিত হওয়ার সংখ্যার উপর ভিত্তি করে। তারা সাধারণত এটি করেন পারেটো চার্ট নামক একটি পদ্ধতির মাধ্যমে। এ পদ্ধতিতে সবচেয়ে কমন ভুলগুলো তালিকার উপরের দিকে থাকে, এর পর ধীরে ধীরে ক্রমশ অপেক্ষাকৃত কম ভুলগুলো দিয়ে সাজিয়ে তালিকা সম্পন্ন করা হয়।

 

প্রকল্প ব্যবস্থাপকরা কোন প্রক্রিয়া বা পদক্ষেপ গ্রহন করবেন কিনা তা একটি কন্ট্রোল চার্টের মাধ্যমে নিশ্চিত হন,

 

তারা পূর্বপরিকল্পনা ও বর্তমান অগ্রগতির মধ্যে তুলনা করতে ভ্যরিএন্স এনালাইসিস(Variance Analysis) নামক একটি পদ্ধতি ব্যবহার করেন।

 

এক্ষেত্রে অর্ডার অফ মেগনিচিউড এস্টিমেট নামক আরেকটি পদ্ধতি ব্যবহার করা হয় প্রকল্পের খরচের নিয়ন্ত্রণ অর্থাৎ কস্ট ম্যনেজমেন্টের জন্য।

 

বিভিন্ন আলাদা সংগঠনের সাথে যোগাযোগ রক্ষার জন্য আনুষ্ঠানিক, লিখিত যোগাযোগ বেশি সফল হয়ে থাকে।

 

প্রকল্প কর্ম তালিকা হল অফিসিয়ালি প্রকল্পের মূল ভিত্তি, যার মাধ্যমে ক্রমিক ভাবে কাজ সম্পন্ন করা হয়।

 

ডেলফি পদ্ধতি হল সুদক্ষ কর্মীদের থেকে উপদেশ ও কাজের ধারা সম্পর্কে ধারণা লাভ করার একটি বিখ্যাত পদ্ধতি, যেটা কর্মীরা নিজেদের মধ্যে সাধারণত তথ্য শেয়ার না করে অর্থাৎ গোপন করেও করে থাকে।

 

কর্ম অনুমোদন পদ্ধতি সঠিক সময়ে ও সঠিকভাবে কাজ সম্পন্ন হওয়া নিশ্চিত করে। যারা অর্থাৎ যে ব্যক্তি বা দল প্রকল্পটি করছে তাদের পূর্বেই কাজের সময় ঠিক করে নিতে হয়।

 

প্রকল্প ব্যবস্থাপনার ক্ষেত্রে সব স্টেকহোল্ডারদের সকল প্রকল্প পরিকল্পনা জানানোর দরকার নাই কারণ কিছু স্টেকহোল্ডার সরাসরি প্রকল্পের বিরুদ্ধাচরণ করতে পারে।

 

যদি কাউকে প্রকল্প ব্যবস্থাপনার দায়িত্ব দেয়া হয় কিন্তু তার তেমন কোন পূর্ব অভিজ্ঞতা নেই প্রকল্প চালানোর, তাহলে সে প্রকল্প পরিচালনার উপর পূর্ববর্তী ঘটনা ইত্যাদির ইতিহাস জেনেও অনেক কিছু শিখতে পারে।

 

প্রকল্পের ব্যয়ের সিংহভাগ খরচ করা হয় প্রকল্পের পরিকল্পনা বাস্তবায়নের ক্ষেত্রে। প্রকল্পটি নিষ্ঠার সাথে সম্পন্ন হওয়া প্রাথমিক ভাবে প্রকল্প ব্যবস্থাপকের উপর নির্ভর করে। এভাবেই প্রকল্প ব্যবস্থাপনার কাজ এগিয়ে যায়।

Microsoft Project and Project Management

Huge Sell on Popular Electronics

Microsoft Project ও প্রকল্প ব্যবস্থাপনাঃ
রিদওয়ান বিন শামীম

Microsoft Project এর আওতায় প্রকল্প তৈরি করা যায়। সেই প্রকল্পের আওতায় আবার বিভিন্ন কাজ বা টাস্ক করা যায়। এরকম প্রতিটা টাস্কের জন্য সাধারণত নাম, সময়, শুরুর সময়, শেষ হওয়ার সম্ভাব্য সময় , ধারা ইত্যাদি নির্দিষ্ট করে দেয়া যায়। এ ধরণের কাজে পূর্বের অভিজ্ঞতা সম্পন্ন লোকদের কাজে লাগানো যেতে পারে।

 

 

টাস্ক গুলোর মধ্যে রিলেশন বুঝাতে SF (Start-Finish), FS(Finish-Start), SS, FF ইত্যাদি অনেক টার্ম ব্যবহার করা হয়। টাস্ক সম্পন্ন করার পর সেগুলোকে অনেক ধরণের ফরমেটে আমরা পেতে পারিঃ গান্ট চার্ট, ট্র্যাকিং গান্ট চার্ট, নেটওয়ার্ক ডায়াগ্রাম ইত্যাদি। এদের মধ্য থেকে অনেক সময় অনেক জটিল পদ্ধতিও বেছে নিতে হয়।প্রতিটি টাস্কের জন্য আলাদা আলাদা ভাবে খরচ ও রিসোর্স বেছে নেয়াও যায়। এছাড়াও প্রকল্পের অর্থনৈতিক লাভ ও উন্নতিও পর্যবেক্ষণ করা যায়। প্রকল্পের অগ্রগতির উপর রিপোর্টও লিখা যায়। এভাবে অর্থনৈতিক অগ্রগতি বিশ্লেষণ করা যায়। মাইলস্টোন বা জিরো ডিওরেশনের টাস্কও থাকে যা শুরু থেকে সময় গননা করা হয়, কোন প্রকল্পের বিচ্ছিন্ন অংশ হিসেবে ধরা হয়।

 

Microsoft Project এর আওতায় ওয়ার্ক ব্রেকডাউন কাঠামো (Work Breakdown Structure :WBS), এড অন প্রোডাক্ট Add-on product (WBS Chart Pro) ইত্যাদি ফরম্যাট তৈরি করা যায় ও দেখা যায় মাইক্রোসফট প্রোজেক্ট ফাইলের আন্ডারে। অথবা WBS code ব্যবহার করেও এসমস্ত সুবিধা পাওয়া যায়। অনেক গুলো প্রজেক্টের কাজ গুছিয়ে রাখার জন্য Microsoft Project Server এর সাহায্য নেয়া যায়। কাজের সুবিধার জন্য আমরা ম্যাক্রোর সহায়তাও নিতে পারি। আমরা কাষ্টোমাইজ করার জন্য VBA এবং Active Scripting এর সাহায্য নিতে পারি। মাইক্রোসফটের প্রকল্পের জন্য প্রকল্পের প্ল্যানকে Microsoft power point বা Microsoft word ইত্যাদিতে রূপান্তরিত করে প্রেজেন্টেশন তৈরি করা সম্ভব। প্রকল্প ব্যবস্থাপনার ক্ষেত্রে শিডিউল, বাজেট, উপাত্ত ব্যবস্থাপনা ,অগ্রগতি লক্ষ্য রাখা ও প্রতিবেদন তৈরি করা ইত্যাদিও জরুরী।

 

Microsoft Project এর জন্য টাস্ক তৈরি করতে যেসব তথ্য দিতে হবে তা হল আলাদা ভাবে প্রতিটি টাস্কের নাম, টাস্কের সময় ও টাস্কের সীমাবদ্ধতা। এরপর টাস্কের খরচের বাজেট করতে হবে, কর্মী নিয়োগ দিয়ে তাদের নরমাল ও ওভারটাইম দুই ধরণের বেতন ধরে। লক্ষ্য রাখার জন্য কাজের অগ্রগতি, সীমাবদ্ধতা ও পরিবর্তন ইত্যাদি ধরে প্রকল্পের উদ্দেশ্য ও সুযোগ নিশ্চিত করতে হবে। এরপর দেখতে হবে কোন সফটওয়ার কাজে লাগানো যায় কিনা। পরবর্তী সময়ে জনগনের মতামতের ভিত্তিতে প্রকল্পে পরিবর্তন আনতে হতে পারে, টাস্ক গুলোকে খণ্ড খণ্ড করে ভাগও করতে হতে পারে। ক্যালেন্ডারের মাধ্যমে কাজের শিডিউলকে আরও সময়ানুবর্তী করা যেতে পারে। ডেটলাইন, শর্ত ইত্যাদি দেয়া যেতে পারে।

 

প্রোজেক্ট ২০০৭ নতুন প্রকল্প, যাতে অনেক নতুন চার্ট, ক্যালেন্ডার, টাস্ক ড্রাইভার, শেয়ারপয়েন্ট সার্ভিস ও আরও অনেক সুবিধা যোগ করা হয়েছে।

How to Manage Projects with Dot Project

Huge Sell on Popular Electronics

যেভাবে ডটপ্রজেক্টের মাধ্যমে কোন প্রকল্প চালাতে হয়ঃ
রিদওয়ান বিন শামীম

ডটপ্রজেক্ট একটি সফটওয়ার যার মাধ্যমে কোন প্রকল্পের ব্যবস্থাপনাগত দিকগুলো নিয়ন্ত্রণ করা যায়। আপাতত আমরা এর পরিচিতিমূলক দিক গুলো নিয়ে আলোচনার পাশাপাশি এর সাথে টেকনিক্যাল কিছু বিষয় নিয়েও আলোচনা করব। এর পর আমাদের ওয়েব সাইটে আপনারা এবিষয়ে ভিডিও টিউটোরিয়ালও পাবেন।

 

যেভাবে ডটপ্রজেক্ট ইন্সটল করতে হয়ঃ

প্রথমে আনজিপ করে সার্ভারে ডটপ্রজেক্টের জন্য নতুন ফোল্ডার খুলতে হয়।

এরপর সার্ভারে ডটপ্রজেক্ট ফাইল কপি করতে হয়।

এবার ডাটাবেস সার্ভারে নতুন ডাটাবেস খুলতে হবে, নাম ও পাসওয়ার্ড দিয়ে।

যে কোন একটি ব্রাউজার থেকে ডটপ্রজেক্ট এর ইন্সটল ফোল্ডার নির্দেশ করিয়ে দিতে হবে।যেমন,http://justetc.net/dotproject/install ইত্যাদি।

এরপর ডাটাবেসে প্রবেশের তথ্য দিতে হবে।

 

ডটপ্রজেক্ট ফিচারগুলোর সারসংক্ষেপঃ

ডটপ্রজেক্টে মূলত বিভিন্ন কোম্পানি, প্রোজেক্ট, টাস্ক, ক্যালেন্ডার, ফাইল, কন্টাক্ট, ফোরাম, টিকেট, ইউজার এডমিন, সিস্টেম এডমিন ইত্যাদি থাকে।

 

যেভাবে ডটপ্রজেক্ট দ্বারা প্রকল্প নিয়ন্ত্রণ করা হয়ঃ প্রজেক্টের আন্ডারে থাকে প্রপোজাল ট্যাব, যার থেকে প্রজেক্ট শুরু করা হয়। প্রপোজাল স্ট্যাটাস দিয়ে নতুন প্রপোজাল শুরু করা যায়। প্রয়োজনে প্রাসঙ্গিক টাস্ক তৈরি করা যায় দরকার হলে। প্রয়োজনে টাস্ক তৈরি করার ক্ষেত্রে অন্য লোকের নিয়োগ দিতে হতে পারে। অভিজ্ঞ লোকের সাথে যোগাযোগ রেখে কাজ করতে হয়। প্রপোজাল, প্রপোজাল ডকুমেন্ট, প্রপোজাল আউটলাইন তৈরি হয়ে গেছে তাই এখন প্রকল্পের বিস্তারিত পরিকল্পনা জরুরী।

 

প্রকল্পের বিস্তারিত পরিকল্পনাঃ প্রজেক্টস এর ভেতরের ‘ইন প্ল্যানিং’ ট্যাব ব্যাবহার করতে হবে। এরপর প্রপোজাল প্রোজেক্টকে প্ল্যানিং প্রোজেক্ট এর ভেতর আনতে হবে। এডিট প্রোজেক্ট অপশন দিয়ে স্ট্যাটাস পরিবর্তন করে দিতে হবে। নতুন প্রজেক্ট করে ইন প্ল্যানিং ট্যাবে রাখা যেতে পারে। প্ল্যানিং নিজেই একটা প্রকল্প, এর সাথে অনেক টাস্ক, যোগাযোগ ইত্যাদির সমন্বয় করতে হতে পারে। প্ল্যানিং এর সময় আমরা পুরো প্রকল্পর ধাপে ধাপে কাজ গুলো ভাগ করে ফেলব। উদ্দেশ্য ও লক্ষ্য আলাদা করে মানব সম্পদ, মান, ক্রেতা ইত্যাদি সব ঠিক করে প্রয়োজনীয় যোগাযোগ ও অন্যান্য কাজ শুরু করে দিতে হবে।

 

প্রকল্প এগিয়ে নেয়াঃ প্রকল্পের প্ল্যানিং ও শুরুর অন্যান্য কাজ হয়ে যাওয়ার পর সময় ,খরচ ও মানবসম্পদ বিষয়ক সিদ্ধান্ত নিতে হবে। CPM model for Time Management এর মাধ্যমে এই ধাপ গুলো করা যায়। এরপর কাজের ধারা, প্রকল্পের মান বজায় থাকছে কিনা ইত্যাদিও দেখতে হয়। ওয়াটার ফল, এগাইল বেসড মডেল এসবের দ্বারা মান নিশ্চিত করা হয়। প্রয়োজনে প্যারেন্ট প্রোজেক্ট ইত্যাদি ব্যাবহার করতে হয় এ ধাপগুলো সম্পন্ন করার জন্য। ঝুঁকি ও চ্যালেঞ্জ ইত্যাদির একটি লিস্ট করে তাও নিয়ন্ত্রণ করা হয়। এরপর একে একে দেখতে হয় সব পূর্বশর্ত পুরন হয়েছে কিনা, সব টাস্ক ১০০% হয়েছে কিনা, কোয়ালিটি, রিসোর্স ও শর্ত পুরন হয়েছে কিনা। এরপর ক্রেতা ও ভোক্তার চাহিদা মিলিয়ে দেখে চূড়ান্ত ভাবে প্রকল্প সমাপন ঘোষণা করা হয়।
http://Bangla.SaLearningSchool.com

Some Topics on Project Communication Management

Huge Sell on Popular Electronics

প্রকল্প যোগাযোগ ব্যবস্থাপনা বিষয়ে কিছু কথাঃ
রিদওয়ান বিন শামীম

বড় প্রকল্পের জন্য পূর্ব পরিকল্পিত ও নিখুঁত যোগাযোগ ব্যবস্থার প্রয়োজন আছে। যদিও পরিস্থিতির উপর ভিত্তি করে যে কোন পরিকল্পনা পরিবর্তিত হতে পারে।

 

প্রকল্প যোগাযোগ ব্যবস্থাপনার মূল সারসংক্ষেপঃ

প্রকল্প যোগাযোগ অনেক গুরুত্বপূর্ণ একটি বিষয়, এটি অনেক চাতুর্যপূর্ণ ও রাজনৈতিক হতে পারে, প্রোজেক্ট রেকর্ড গ্রহন, প্রেরণ, সংরক্ষণ ও বণ্টন বিষয়ক হতে পারে, এবং যোগাযোগের ক্ষেত্রে সাধারণত চারটি নিয়ম মেনে চলেঃ

কি যোগাযোগ,

কার সাথে,

কখন ও

কীভাবে।

 

মাশরুম প্রোজেক্ট ম্যানেজমেন্টঃ তথ্য গোপন রেখে কাজ শেষ করার প্রবনতা এই ধরণের কাজের ধারায় পরে।

 

যোগাযোগ ব্যবস্থাপনার উপধারাগুলোঃ

যোগাযোগ পরিকল্পনা,

সম্পাদন,

পর্যবেক্ষণ ও

নিয়ন্ত্রণ

মূলত এই ক্ষেত্র গুলো যোগাযোগ পরিকল্পনার উপধারা সমুহ।

 

যোগাযোগের এই ধারা গুলো পারস্পরিক শেয়ার ও প্রকাশের মাধ্যমে শরিকদের মধ্যে গোলযোগের সম্ভবনাকে কমিয়ে আনা সম্ভব। একই সাথে দলগত অনুপ্রেরণা বাড়িয়ে তোলা সম্ভব।

 

প্রকল্প ব্যবস্থাপক বা প্রোজেক্ট ম্যনেজারের ভুমিকাঃ বেশিরভাগ সময় যোগাযোগ রক্ষা করা, মূলত সিদ্ধান্ত নেয়ার চেয়েও যোগাযোগ রক্ষা করা বেশি দরকার হতে পারে। যোগাযোগ পরিকল্পনা, ফলাফল, সময়, মিডিয়া, ওয়েব, ই মেইল, কোন তথ্য কাকে ইত্যাদি কাজ প্রোজেক্ট ম্যানেজারকেই করতে হয়। যাদের সাথে কাজ করতে হবে এমন সংস্থার পরিবেশগত দিক, প্লানিং, সম্ভবনা ইত্যাদি বিষয়েও তাকে সিদ্ধান্ত নিতে হতে পারে।

 

প্রোজেক্ট ম্যনেজারের প্রধান মাধ্যম বা টুলসঃ যোগাযোগ চ্যানেল, যা মূলত যোগাযোগ প্রকরণগুলোকে ঠিক রাখে। N সঙ্খক লোক n(n-1)/2 সঙ্খক উপায়ে যোগাযোগ করতে পারে এরকম একটি হিসাব আছে এই বিষয়ে। এক্ষেত্রে একটি সাবসেট নির্ধারণ করা হয়, মাঝে মাঝে অফিশিয়াল যোগাযোগ চ্যানেল ঠিক করা লাগতে পারে। আর যোগাযোগের ক্ষেত্রে অনলাইন যোগাযোগ, ভিডিও কনফারেন্স ইত্যাদিও মাধ্যম হিসাবে জনপ্রিয় হয়ে উঠছে।

 

যোগাযোগ ব্যবস্থাপনার পরিকল্পনাঃ এর মধ্যে আছে কাকে জানাতে হবে, কি জানাব, কাকে পাঠানো যায়, তথ্য প্রেরণের মাধ্যম, আপডেট রাখার জন্য কি করতে হবে ইত্যাদি।

 

তথ্য বণ্টনঃ তথ্য বণ্টনের জন্য প্রকল্প ব্যবস্থাপক সাধারণত যোগাযোগের মডেল ব্যবহার করেন, যে মডেলে কয়েকটি বিষয়ের দিকে খেয়াল রাখতে হয়, মনোযোগ দিয়ে তথ্য শোনা, তথ্য সংরক্ষণ, ভাষাগত দিক ইত্যাদি।

 

যোগাযোগের মাধ্যমগুলো হলঃ

প্রথাগত লেখা বা ফরমাল রাইটিং,

সাধারণ লেখা,

প্রথাগত মৌখিক যোগাযোগ ও সাধারণ মৌখিক যোগাযোগ।

 

পর্যবেক্ষণ ও নিয়ন্ত্রণ করাঃ

মূলত প্রকল্পের অগ্রগতি সম্পর্কে স্টেক হোল্ডারদের জানানো ও নিয়মিত অবহিত রাখার জন্য রিপোর্ট দেয়ার পদ্ধতি।

 

এখানে মূলত প্রকল্প ব্যবস্থাপনার যে তথ্য দেয়া হয়েছে তা PMI and PMBOK(Project Management Body of Knowledge) থেকে নেয়া হয়েছে।

http://Bangla.SaLearningSchool.com

Project Cost Management – Part 2

Huge Sell on Popular Electronics

প্রকল্প মূল্য ব্যবস্থাপনাঃ ২য় পর্ব।
রিদওয়ান বিন শামীম।

 

প্রকল্প মূল্য ব্যবস্থাপনার উপর কিছু সংজ্ঞা নিয়ে আলোচনা করছি,

অর্জিত মূল্যঃ এটি হল প্রকল্পের জন্য খরচ করা অর্থ, ডবল এন্ট্রি একাউন্টিঙের মত প্রতিটি খরচের জন্য পুঞ্জিত অর্থ সঞ্চিত থাকে।

বাজেটেড এট কমপ্লেসন (BAC)ঃ প্রকল্প সম্পাদনের জন্য মূলত কত অর্থ বরাদ্দ ছিল তার হিসাব।

প্ল্যানড ভ্যলুঃ কোন নির্দিষ্ট সময় পর্যন্ত প্রকল্পের কতটুকু কাজ সম্পন্ন হয়েছে তা হিসেব করে প্ল্যানড ভ্যলু।

(Planned Value = Planned% complete*BAC)।

অর্জিত মূল্য (EV): কোন নির্দিষ্ট সময়ের মধ্যে প্রকল্পের কতটুকু কাজ হয়েছে তা অর্জিত মূল্য দ্বারা বোঝানো হয়।

প্রকৃত খরচঃ নির্দিষ্ট সময় পর্যন্ত ব্যয়কৃত অর্থ।

কস্ট ভেরিএন্স বা CV ঃ অনুমিত খরচ ও প্রকৃত খরচের পার্থক্য, CV = EV – AC।

শিডিউল ভেরিএন্স বা SV: অনুমিত শিডিউল ও প্রকৃত শিডিউলের মধ্যে পার্থক্য, অর্থাৎ SV=EV-PV।

কস্ট পারফরমেন্স ইনডেক্স CPI: এটি খরচের একটি হার যেখানে প্রকৃত ব্যয় অনুমিত ব্যয়কে সমর্থন করে। CPI কোন নির্দিষ্ট সময়ের জন্য হয়ে থাকে, CPI = EV/AC।

কুমুলেটিভ সিপিআইঃ প্রকল্প শুরু থেকে কোন নির্দিষ্ট সময় পর্যন্ত সিপিআইকে কুমুলেটিভ সিপিআই বলে।

CCPI = CEV/CAC।

শিডিউল পারফরমেন্স ইনডেক্স SPIঃ নির্দিষ্ট সময় পর্যন্ত যদি প্রকল্প অনুমিত হারে সম্পন্ন হয় তবে তাকে শিডিউল পারফরমেন্স ইনডেক্স বলে।

কাজ সম্পন্ন হওয়ার সার্বিক অনুমান,EAC: কোন নির্দিষ্ট সময় পর্যন্ত সম্পন্ন কাজের হার দেখে পুরো প্রকল্পের সম্ভাব্যতা আন্দাজ করাকে সার্বিক অনুমান হিসেবে ধরা হয়। EAC = BAC/CCPI।

কাজ সম্পন্ন হতে সার্বিক অনুমান,ETC: এ ক্ষেত্রে পূর্বের পরিসংখ্যান দেখে আন্দাজ করা হয় আর কত অর্থ পুরো প্রকল্পে খরচ হতে পারে।

ভারিএন্স অফ কমপ্লেসন VAC: অনুমিত ব্যয় ও প্রকৃত ব্যয়ের পার্থক্য, VAC = BAC – EAC।

 

প্রকল্প ব্যয়ের উপর ভাল ধারণা পেতে প্রকল্প ব্যবস্থাপককে এই বিষয় গুলোতে জ্ঞান থাকতে হবে। কিসে কত খরচ হল, কীভাবে কি করব ইত্যাদি জানতে এগুলো জানা থাকতে হবে।

Project Cost Management – Part 1

Huge Sell on Popular Electronics

প্রকল্প মূল্য ব্যবস্থাপনাঃ (১ম পর্ব)
রিদওয়ান বিন শামীম

প্রকল্প মূল্য ব্যবস্থাপনার কিছু ধারণা এখানে দেয়া হল।

প্রথমেই আলোচনা করতে হয় মূল্য বিষয়ক কয়েকটি ধাপ নিয়ে,ক্রয়মূল্য, প্রক্রিয়ার খরচ, কাজ শেষ হওয়ার পর্যন্ত খরচ ইত্যাদি।

 

মূল্য প্রকৌশলঃ

কোন প্রকল্প থেকে আমরা যে বিষয় গুলো আশা করে থাকি সে গুলো হল,

খরচ কমানো,

মূল্য বৃদ্ধি করা,

মান বৃদ্ধি করা,

শিডিউল সংক্ষিপ্ত করা ও

প্রকল্পের সম্ভাব্যতা কমতে না দেয়া ইত্যাদি।

 

মূল্য নির্ধারণ করাঃ প্রকল্প সম্ভবনা নির্ণয়ের পর কাজের খণ্ডাংশের কাঠামো যখন নিরুপিত হয় তখন মূল্য নির্ধারণ করা যায়। এ প্রক্রিয়াটি কিন্তু বারবার পুনরাবৃত্তি করা যায়।

 

মূল্য নির্ধারণের টুলসঃ

পূর্বের বিভিন্ন কাজ পর্যবেক্ষণ করে একই রকমের বিভিন্ন মূল্য অনুমান করা হয়।

 

প্রতিটা কাজের (atomic task) জন্য খরচের আলাদা হিসাব করা হয়, সময়ও নির্ধারণ করা হয়। একে বোটম আপ এস্টিমেট বলা হয়।

 

স্থিতি মাপক হিসাব বলে আরেকটি পদ্ধতি আছে, এক মাইল রাস্তা বানাতে যদি ৪০০,০০০ টাকা লাগে তাহলে ১০ মাইল রাস্তা বানাতে ১০x৪০০,০০০ টাকা লাগবে- এটি স্থিতি মাপক হিসাব।

 

রিজার্ভ এনালাইসিস হল প্রকল্পের স্লিপেজের সাপেক্ষে এক প্রকার বাফার কস্ট, মানের জন্য হিসাবঃ অভীষ্ট মান লাভের জন্য যে অনুমিত হিসাব তাকে আউটপুট হিসেবে ধরা হয়, এটি হল কাজের জন্য অনুমিত হিসাবের ফলাফল।

 

কস্ট বাজেটিংঃ এটি হল খরচ ও তারিখের পরিকল্পনা, কখন কিসের উপর কত খরচ করা হবে তা এর উপর নির্ভর করে, এটিকে কস্ট বেস লাইনও বলা হয়ে থাকে। কর্মসূচি নির্বাচন ও শিডিউল নির্ধারণের পর বাজেটিং সম্পন্ন হয়। কর্মকাণ্ডের সময় ও রিসোর্স বাছাইও এর মধ্যে পড়ে। কাজ সম্পাদনের সময় কাজের খরচ একসাথে হিসাব করে খরচের হিসাবের পরিমাপ, ব্যবস্থাপনা ও নিয়ন্ত্রণ সম্পন্ন করতে হয়। এরপর রিসার্ভ এনালিসিসে খেয়াল রাখতে হয় যাতে খরচ বেশি হলেও তা যেন সমস্যা না করে। সরাসরি ও সহজ সুত্র গুলো কাজে লাগাতে প্যারামেট্রিক হিসাব ব্যবহার করতে হয়। প্রকল্প অর্থায়নের জন্য লিমিট রিকনসিলিয়েসন পদ্ধতি ব্যবহার করতে হয়।

 

মূল্য নিয়ন্ত্রণঃ পর্যবেক্ষণ, নিয়ন্ত্রণ ও সমন্বয় সাধন মূল্য নিয়ন্ত্রণের প্রধান ক্ষেত্র, যেটি স্থায়ী চক্রাকারে হতে পারে আবার মাসিক বা ২ সপ্তাহের চক্র হিসেবেও হতে পারে। মূল্য পরিবর্তনের নিয়ন্ত্রণ ব্যবস্থা, বেস লাইনের পরিবর্তন , পারফরমেন্সের বিশ্লেষণ, কস্ট পারফরমেন্সের ইনডেক্স, প্রাপ্ত চূড়ান্ত মূল্য, বর্তমান ও অতীত মূল্য থেকে ভবিষ্যতের মূল্য আন্দাজ করা , সেই তথ্য প্রকাশ করা, প্রকরণ ব্যবস্থাপনা ইত্যাদি মূল্য নিয়ন্ত্রণের অন্তর্ভুক্ত, যার ফলাফল হল মূল্য হিসাব আপডেট ও কস্ট বেস লাইন আপডেট ।

Project Schedule Development: Part of Project Time Management

Huge Sell on Popular Electronics

প্রকল্পের সময়সূচী গঠনঃ সময় ব্যবস্থাপনার একটি অংশ
রিদওয়ান বিন শামীম

প্রকল্পের স্থিতিকাল, শেষ হওয়ার তারিখ, কাজের সময়সূচী ঠিক করা ইত্যাদি এই অংশে আলোচিত হয়।

 

সময়সূচী গঠনে ইনপুটঃ

কাজের তালিকা,

কাজের সংগঠন প্রণালী,

প্রকল্পের শিডিউল নেটওয়ার্ক ডায়াগ্রাম অর্থাৎ সবগুলো কাজের সময়ের মধ্যে স্থিতি, কাজের স্থিতিকাল, কাজের রিসোর্সের দরকারি বিষয়, রিসোর্সের ক্যালেন্ডার ইত্যাদি সময়সূচী গঠনে ইনপুট হিসেবে কাজ করে।

 

সময়সূচী গঠনে টুলসঃ

ক্রিটিকাল পাথ মডেল (CPM) নামক একটি পদ্ধতি ব্যপক ভাবে ব্যবহার করা হয় প্রকল্পের স্থিতিকাল নির্ধারণের ক্ষেত্রে। এছাড়াও সার্বিক শিডিউলের কোন পরিবর্তন না করেও ব্যক্তিগত কর্মকাণ্ডের সূচির কোন পরিবর্তন আনতে হলে এই সিপিএম মডেল দ্বারাই তা করা হয়।

 

ক্রাশিং ও ফাস্ট ট্র্যাকিংঃ প্রকল্পে আরও রিসোর্স যোগ করলেও সার্বিক ভাবে যেন সময় বেশি না লাগে সেটা ঠিক করতে ক্রাশিং পদ্ধতি ব্যবহার করা হয়। [Note: Fred's theory: Adding resources to an already delayed project will/may increase the delay] ফাস্ট ট্র্যাকিং এর মাধ্যমে অনেকগুলো কাজ এক সাথে সমান্তরাল ভাবে করা সম্ভব হয়। যদি কোন প্রয়োজনীয় রিসোর্স না পাওয়া যায় তখন পরিস্থিতি অনুকুলে রাখতে রিসোর্স লেভেলিং পদ্ধতি ব্যবহার করা হয়। এটি অনেকটা ক্রিটিকাল পাথ মডেল এর মতই, ক্রিটিকাল পাথ মডেলে ফ্লোট নামের একটি কনসেপ্ট ব্যবহার করা হয়। সিপিএম মডেল প্রথমে কাজের মোট সময় হিসাব করে তারপর হিসাব করে ফ্লোট, অর্থাৎ প্রকল্পের ক্ষতি না করে প্রতিটা কাজের ক্ষেত্রে কতটা কাজ কমানো যায় সেটা। সিপিএম মডেল নিশ্চিত করে, কোন কাজের পরিমাপ যেন তাদের ফ্লোটের পরিমান না ছাড়িয়ে যায়।

 

ক্রিটিকাল চেইন মেথডঃ ক্রিটিকাল চেইন মেথডে প্রতিটি কাজের শুরু ও শেষ হওয়ার জন্য সর্বশেষ অনুমিত সময় আলাদা ভাবে ঠিক করা হয়, এরপর কাজগুলোর মধ্যে বাফার অনুমিত হয়, কাজের লক্ষ্যমাত্রা কখনো এই বাফারকে ছাড়িয়ে যায় না।

 

কোম্পানি ক্যালেন্ডারঃ কোম্পানি ক্যালেন্ডার ছুটির তালিকা ও অন্যান্য দিন যেগুলোতে প্রকল্পের কাজ হবে না তা ঠিক করে। এছাড়াও লিড ও লেগ নামক পদ্ধতিও প্রকল্প সময়সূচী গঠনের অন্যতম টুলস।

 

সিপিএম মডেল ব্যবহারঃ

কাজের ধারাঃ সিপিএম মডেল প্রকল্পের কাজ ও সময় বোঝাতে অ্যারো, নড ও কানেক্টর ব্যবহার করে অ্যারো ডায়াগ্রাম পদ্ধতি ব্যবহার করে থাকে। এরপর ক্রিটিকাল পাথ তৈরি করে ও ফ্লোট হিসাব করে। এরপর দ্রুত কাজ শুরু ও শেষ করার জন্য সময় হিসাব করতে হয়, Early start date + duration - 1 । হিসাব করতে হয় বিলম্বে শুরু ও শেষ হওয়ার সম্ভবনাও, Late start date + duration - 1 । এরপর ফ্রি ফ্লোট ও নেভিগেট ফ্লোট হিসাব করতে হয়। এই সবগুলো ভ্যালু হিসাব করলে তা শিডিউল নিয়ন্ত্রণকে অনেক এগিয়ে নেয়।

 

Professional Responsibilities for Project Managers: A Quick Review

Huge Sell on Popular Electronics

প্রকল্প ব্যবস্থাপকদের পেশাগত দায়িত্বঃ
রিদওয়ান বিন শামীম

প্রকল্প ব্যবস্থাপকদের সাধারণ দায়িত্ব হল যেকোনো পরিস্থিতিতে সরাসরি এবং নৈতিকভাবে আইনানুগ পন্থায় সমস্যার সমাধান করা। পরিষ্কারভাবে সরাসরি কথা বলা ও কাজ করা। দ্রুত,সরাসরি ও নিয়মনিষ্ঠ ভাবে কাজ করতে পারা। কোন বিষয় এড়িয়ে যাওয়ার চেয়ে সরাসরি তার মোকাবেলা করাই প্রকল্প ব্যবস্থাপকদের কাজ।

 

পেশাগত দায়িত্ব কয়েকটি বিষয় নিয়ে সমন্বিতঃ

পেশার প্রতি দায়িত্ব,

জনগন ও সেবাগ্রহীতার প্রতি দায়িত্ব ।

 

পেশার প্রতি দায়িত্ব মূলত সংগঠনের সকল নিয়ম ও নীতিমালা মেনে চলা, পেশাগত দক্ষতাকে এগিয়ে নিয়ে যাওয়া ।

 

অন্যদিকে জনগন ও সেবাগ্রহীতার প্রতি দায়িত্ব হল সঠিক ও সম্পূর্ণ, প্রয়োজনীয় ও নিয়মতান্ত্রিক তথ্য তাদের কাছে পৌঁছে দেয়া। পেশাগত সেবার দায়িত্ব পালন করা। প্রয়োজনে তথ্যের সংবেদনশীলতা ও গোপনীয়তা রক্ষা করা। সেইসাথে মুনাফার প্রত্যাশা যেন জনস্বার্থ বিঘ্নিত না করে তা দেখতে হবে, উৎকোচ বা এজাতীয় কিছু নেয়া চলবে না।

 

পেশাগত দায়িত্বকে মূলত পাঁচ ভাগে ভাগ করা যায়ঃ

নিষ্ঠা ও পেশাদারিত্ব,

জ্ঞানের অন্বেষণে অনুপ্রেরণা,

ব্যক্তিগত উপযোগিতা বৃদ্ধি,

স্টেকহোল্ডারদের মুনাফার বিষয়ে সতর্ক থাকা,

স্টেকহোল্ডার ও টিমের ভেতরে যোগাযোগ ঠিক রাখা।

 

নিষ্ঠা ও পেশাদারিত্বঃ

সবসময় সঠিক কাজটি করা,নিজ দেশের আইন ও নিয়ম মেনে। যদি অন্য কোন দেশের কোন বিষয়ের সাথে প্রকল্পটির কোন সম্পর্ক থাকে তাহলে তা ভাল করে জেনে নিয়মমাফিক সম্পন্ন করতে হবে । সংগঠনের নীতিমালার মধ্যে থেকে কাজ করতে হবে। কাজের ক্ষেত্রে নিষ্ঠাবান হতে হবে। প্রকল্পের কর্মপ্রণালী অনুযায়ী কাজ করে যেতে হবে। পিএমআই (PMI) ৪৪টি কর্মপ্রণালী এজন্য উপযোগী বলে মত প্রকাশ করেছে যেগুলো ঝুঁকি কমায় , সময় ও খরচের দিক থেকেও লাভবান করে। সেই সাথে অন্যদের প্রতি সম্মান ও সৌহার্দ্য বজায় রাখাও জরুরী।

 

জ্ঞানের অন্বেষণে অনুপ্রেরণাঃতথ্য আদানপ্রদান করা ও পরস্পর বিনিময় করার মাধ্যমে এই প্রক্রিয়া ঠিক রাখা হয়। তথ্য শেখানো, পাবলিশ করা ও প্রচার করার জন্য এগুলো দরকার হয়।

 

ব্যক্তিগত উপযোগিতা বৃদ্ধিঃব্যক্তিগত উন্নতির সাথে সাথে নিজের ভুলগুলো সংশোধন করাও প্রয়োজন।

 

স্টেকহোল্ডারদের মুনাফার বিষয়ে সতর্ক থাকাঃ মুনাফা কমবেশি বা ভিন্নমুখী হতে পারে। এ ধরণের সঙ্কট নিষ্ঠার সাথে মোকাবেলা করতে হবে,এক্ষেত্রে সৎও থাকতে হবে। অবশ্যই ক্রেতার স্বার্থ আগে দেখতে হবে। স্টেকহোল্ডার ও টিমের ভেতরে যোগাযোগ ঠিক রাখাঃ যোগাযোগ সচ্ছ হতে হবে, সাংস্কৃতিক ব্যবধান সম্মানের সাথে দেখতে হবে, অলসতা ও অসাবধানতা কোন ভাবেই বরদাস্ত করা যাবে না। সামাজিক, অর্থনৈতিক ও পরিবেশগত ভারসাম্য বজায় রাখতে হবে, এই মানদণ্ডগুলো বিঘ্নিত করে কোন প্রকল্প সঠিকভাবে সম্পন্ন হওয়া সম্ভব না। এগুলো অবশ্যই প্রকল্প ব্যবস্থাপককে লক্ষ্য রাখতে হবে।
http://Bangla.SaLearningSchool.com

Initiate a Project

Huge Sell on Popular Electronics

একটি প্রকল্প যেভাবে শুরু হবেঃ
রিদওয়ান বিন শামীম

অনেক কারণে আমাদেরকে নতুন প্রকল্প চালু করতে হয় ।যেসব কারণে সাধারণত প্রকল্প শুরু করা হয় সেগুলো তিন ধরনের হয়ে থাকে,

বাণিজ্যিক কারনে,

সুযোগ সৃষ্টি হওয়ায় এবং

সমস্যা তৈরি হওয়ায়।

 

যেমন কোন সরকার তাদের বিমান খাতটিকে নিরাপত্তা প্রক্রিয়ার সাথে সংযুক্ত করতে চায় সেক্ষেত্রে তাকে কোন কোম্পানি খুঁজে বের করতে হবে যারা ই কমার্স ওয়েব সাইট তৈরি করে কাজ শুরু করবে। এটা বাণিজ্যিক কারণের একটি উদাহরণ।

 

আবার কোন পণ্য চাহিদা বেড়ে গেলেও সুযোগ সৃষ্টি হয় নতুন প্রকল্প শুরু করার, যেমন আইফোন বিষয়ক প্রকল্পগুলো এরকম উদাহরণ হতে পারে।

 

সমস্যা মোকাবেলার জন্যও নতুন প্রকল্প নেয়া হয় যেমন, দুর্ঘটনা এড়াতে বিমান কর্তৃপক্ষ সমস্যা চিহ্নিত করে তা প্রতিরোধে নতুন প্রকল্প শুরু করতে পারে।

যেভাবে প্রকল্প নির্বাচন করা হয়ঃ

অনেক গুলো সমস্যা থেকে গুরুত্ব অনুসারে একটি সমস্যা প্রকল্পের জন্য নির্বাচন করা হয়। কিন্তু সেটা কীভাবে?

প্রথমে স্ক্রলিং মডেল তৈরি করে উপাত্ত দ্বারা সম্ভাব্য লাভ ক্ষতি নিরূপণ করে দেখা হয় কোন প্রকল্প বেশি লাভজনক হবে।তারপর খরচের খতিয়ান নিরূপণ করে ইকোনমিক মডেল তৈরি করা হয়। যাতে থাকে খরচের বেনিফিট রেসিও, ক্যাশ ফ্লো,ইন্টারনাল রিটার্ন রেট, প্রেসেন্ট ভ্যালু এবং নেট প্রেসেন্ট ভ্যালু,অপরচুনিটি কসট,ডিসকাউন্টেড ক্যাশ ফ্লো এবং রিটার্ন অফ ইনভেস্টমেন্ট ইত্যাদি দেখা হয়।

 

এরপর দেখতে হবে প্রকল্পটি সফল হবে কিনাঃএটি আন্দাজ করার জন্য অনেক গাণিতিক পদ্ধতি আছে, প্রকল্পের স্টেকহোল্ডারদের সম্পর্কে আইডিয়া রাখতে হবে, কারণ একটি প্রকল্প থেকে অনেকে লাভবান হবে অনেকে তেমন লাভবান হবে না। স্টেকহোল্ডারদের এই দুটি গ্রুপকেই মানিয়ে রাখতে হবে।

এরপর যেভাবে কাজ এগিয়ে যাবেঃ

প্রজেক্টের কাজের উন্নয়নের জন্য প্রথমেই খেয়াল রাখতে হবে কন্ট্রাক্ট,

কাজের স্টেটমেন্ট,

এন্টারপ্রাইজের পরিবেশগত দিক ও অরগানাইজেসনাল প্রসেস এসেটের উপরে।

 

প্রকল্প পরিকল্পনার সফলতার জন্য দরকারঃ

প্রকল্প নির্বাচন প্রক্রিয়া,

ব্যবস্থাপনা ,

তথ্য ও দক্ষ কর্মীর সঞ্চালনা।

প্রকল্পের পরিকল্পনার ফলাফলের জন্য লক্ষ রাখতে হবেঃ

প্রকল্প বিবেচনা, বর্ণনা এবং প্রয়োজনীয়তার দিকে।

সম্ভাব্যতা, উচ্চ মানের শিডিউল ও বাজেটের দিকেও নজর রাখতে হবে।

 

এরপর প্রকল্পের বিভিন্ন স্তরের উন্নয়ন ও কাজের অগ্রগতি খেয়াল রেখে প্রিলিমিনারি প্রোজেক্ট স্কোপ স্টেটমেন্ট ও ডেভেলপিং প্রোজেক্ট স্কোপ স্টেটমেন্ট ইত্যাদি প্রস্তুত করতে হয়। প্রিলিমিনারি প্রোজেক্ট স্কোপ স্টেটমেন্ট লিস্টে যা থাকা উচিত তা হলঃ লক্ষ্য, পণ্য বা সেবার ধরণ,বৈশিষ্ট্য ও সেটার উপযুক্ত ভোক্তা,প্রারম্ভিক কাজের লিপিবদ্ধ বিবরণী, শিডিউল,কর্মীদের দল ও তাদের তথ্য,প্রকল্পের ঝুঁকি, সম্ভাব্য খরচের হিসাব ইত্যাদি। এভাবেই প্রকল্পের কাজ সম্পন্ন হয়ে থাকে।

http://Bangla.SaLearningSchool.com

Random Short Notes on Project Management (PMI)

Huge Sell on Popular Electronics

ব্যবস্থাপনার উপর কিছু সংক্ষিপ্ত নোটঃ
রিদওয়ান বিন শামীম

প্রকল্পের সুযোগ ব্যবস্থাপনার পরিকল্পনাঃ সুযোগ ব্যবস্থাপনার পরিকল্পনা হল মূলত নির্দিষ্ট করে কীভাবে প্রকল্পের সম্ভাব্য সুযোগের বিভিন্ন উত্থান পতনগুলো নিয়ন্ত্রণ করা যায় ও কীভাবে সুযোগের ক্ষেত্র গুলো নির্ধারণ করা যায়।এজন্যপ্রথমেই যা করতে হবে তা হল প্রকল্প শুরু করা। একটি প্রকল্প শুরু করাঃ একটি প্রকল্প শুরু করার সাথে মূলত দুই ধরণের উপাত্ত জড়িত থাকে, প্রথমটি হল প্রকল্পের কিছু নির্দিষ্ট বৈশিষ্ট্য গড়ে তোলা এবং দ্বিতীয়টি হল সম্ভাব্য প্রাথমিক সুযোগগুলোর একটি খসড়া গঠন করা।প্রকল্প ব্যবস্থাপকদের এক্ষেত্রে সরাসরি ও সততার সাথে আচরণ করতে হয়। যেকোনো পরিস্থিতিতে কোন সমস্যা এলে তাকে সোজাসুজি সেই সমস্যা মোকাবেলা করতে হয়। প্রকল্পের বৈশিষ্ট্য, যা অফিসিয়ালি একটি প্রকল্পের ভিত্তি, সেগুলো ব্যবসায়িক চাহিদা মেনে গঠন করতে হয়, সবসময় মাথায় রাখতে হয়, কেন প্রকল্পটি করা হচ্ছে অর্থাৎ প্রকল্পটির উদ্দেশ্য কি। সুযোগের খসড়া হয়ে যাওয়ার পর ও টিমের কর্মীদের কাজ শুরু হয়ে যাওয়ার পর সাধারণত প্রকল্পের যে ধারাটি শুরু করতে হয় তা হল ডবলুবিএস প্রসেস (WBS process) যা মূলত কাজের খণ্ডিত অংশগুলোর আউটপুট বা ফলাফল নির্ধারণ করে। এই আউটপুট গুলো কয়েকটি বিষয়ের সমন্বয়ে হয়ে থাকেঃ মূল্যবান সাংগঠনিক প্রক্রিয়া, প্রকল্পবিধি ও প্রাথমিক সুযোগগুলোর খসড়া ইত্যাদি। প্রকল্পের কর্ম প্রণালীর নিষ্ঠার ক্ষেত্রে প্রকল্প ব্যবস্থাপককে সব সময় খেয়াল রাখতে হয় সমস্যা সমাধান ও সিদ্ধান্ত গ্রহনের দিকে। সমস্যা সমাধান ও সিদ্ধান্ত গ্রহনের এই বিষয়গুলো ব্যবস্থাপককে একা দেখতে হয়, এগুলো টিম ওয়ার্ক নয়। এবিষয়ে কাজের ধারার বিবরণী পাওয়া যাবে ডবলুবিএস ডিকশনারিতে(in WBS dictionary)। সুযোগের গুরুত্ব নিশ্চিতকরণ হল এমন একটি প্রক্রিয়া যেখানে ক্রেতা ও অর্থ বিনিয়োগকারী যাচাই করতে চায় চূড়ান্তভাবে প্রাপ্ত পণ্য পূর্বের ধারণা করা পণ্যের মানের মতন হয়েছে কিনা।স্টেটমেন্ট অফ ওয়ার্ক বা কাজের বিবৃতিঃ স্টেটমেন্ট অফ ওয়ার্ক বা কাজের বিবৃতি প্রকল্পের খণ্ডিত অংশের বিবরণ দেয় যাতে অনেক সময় বাইরের বিক্রেতাদের অনেক বিষয়ও জড়িত থাকে।কোড অফ কন্ডাক্টের শর্তে প্রকল্প ব্যবস্থাপনার সাথে সংশ্লিষ্ট ব্যক্তিদের আরও বলা থাকে প্রকল্পের লাভ বা লভ্যাংশ নিয়ে যেকোনো ধরণের কোন্দল এড়িয়ে চলতে। ডবলুবিএস সার্ভের উদ্দেশ্যঃ ডবলুবিএস সার্ভে পুরো বিষয়টি চূড়ান্ত ভাবে খতিয়ে দেখে, এই ডবলুবিএস সার্ভের কয়েকটি উদ্দেশ্য আছে। সেগুলো হলঃ পূর্বে নিরুপিত সম্ভাব্যতা কতটুকু নির্ভুল তা জানা, নিয়ম নিষ্ঠা ও দায়িত্ববোধ মেনে চলাকে সহজ করা, প্রকল্পের সফলতার একটি মানদণ্ড তৈরি করা ইত্যাদি। এভাবেই প্রকল্প ব্যবস্থাপনার কাজ এগিয়ে চলে।
তথ্যসুত্রঃ (Andy Crowe, the PMP Exam.)

Project Time Management: Part-1

Huge Sell on Popular Electronics

প্রকল্পের সময় ব্যবস্থাপনাঃ
রিদওয়ান বিন শামীম

কোন প্রকল্পের সময় ব্যবস্থাপনা প্রক্রিয়া কয়েকটি বিষয় নিয়ে হতে পারে,

প্রয়োজনীয় কার্যক্রম,

কাজের ধারা,

কাজের জন্য অনুমিত রিসোর্স,

কাজের সম্ভাব্য সময়,

শিডিউল তৈরি করা,

শিডিউল মেনে চলা ইত্যাদি।

 

প্রক্রিয়াঃ

প্রথমে প্রয়োজনীয় কাজ নির্দিষ্ট করতে হবে।

দরকারি কাজের ধরণ, প্রকার, সময় , প্রভাব ইত্যাদির তালিকা করতে হয়।

প্রকল্প পরিকল্পনা হয়ে গেলে তাকে কাজের ধারার সাথে সংযুক্ত করে কাজ শুরু করতে হবে।

এই ধাপে কাজের খণ্ডাংশ গুলো আলাদা করতে হয়।

লিস্ট করতে হয় প্রকল্পটি কোন কোন খণ্ডাংশ ও মডিউল নিয়ে কাজ করবে।

সকল খণ্ডাংশ ও মডিউল সম্পন্ন করতে যে সব প্রক্রিয়া লাগবে তাদের লিস্ট করতে হবে।

সব প্রক্রিয়ার জন্য বৈশিষ্ট্য, সম্ভাব্যতা, মান ও ফলাফল ইত্যাদি নির্দেশ করতে হবে।

 

এক্ষেত্রে প্রকল্পের সম্ভাব্যতা বিবরণী, কাজের খণ্ডাংশ গুলোর গঠন, এগুলো হল ইনপুট,

আর প্রকল্প কার্যক্রম, কাজের তালিকা, কাজের উপাদান, মাইলস্টোন লিস্ট, প্রস্তাবিত পরিবর্তন ইত্যাদি হল আউটপুট।

 

প্রকল্পের সময় ব্যবস্থাপনার টুলসঃ

ডিকমপোজ করে অন্য সদৃশ কাজের মত করা,

পূর্ববর্তী কাজের টেম্পলেট ব্যবহার ইত্যাদি হল প্রকল্পের সময় ব্যবস্থাপনার টুলস।

 

এখানে আরেকটি পদ্ধতি আছে তা হল রোলিং ওয়েভ প্ল্যানিং যা কিনা কোন কাজের ফলাফল কি হবে তা বলা যাচ্ছে না এরকম ক্ষেত্রে ব্যবহার করা হয়। কাজের ক্ষেত্রে অনেক সময় সুদক্ষ ও অভিজ্ঞ ব্যক্তিদের পরামর্শ নিতে হয়।

 

পর্যায়ক্রমিক কার্যপ্রণালীঃ পর্যায়ক্রমিক কার্যপ্রণালীর ক্ষেত্রে অনেক সময় একটি কাজ আরেকটি কাজের শেষ হওয়ার উপর নির্ভর করে আবার অনেক কাজের খণ্ডাংশ অন্য আরেক কাজের খণ্ডাংশের সমাপনের উপর নির্ভর করে। কিছু কিছু কাজ স্বতন্ত্র যা অন্য কোন কাজের উপর নির্ভর করে না। এ বিষয় গুলো পর্যায়ক্রমিক কার্যপ্রণালীর উপর নির্ভর করে। অনেক সময় প্রথম অংশের কাজ ইনপুট হিসেবে কাজ করে ।

 

প্রেসিডেন্স ডায়াগ্রাম মেথড বা PDM ও অ্যারো ডায়াগ্রামিন মেথড কর্ম প্রণালীর উপযুক্ততা নিরূপণ করে, অপরদিকে Graphical Evaluative Review Technique (GERT) কাজগুলোর পরস্পরের উপর নির্ভরতার মান প্রকাশ করে। এই কাজগুলোর ফলাফলে প্রকল্প কর্ম প্রণালীর নেটওয়ার্ক ডায়াগ্রাম পাওয়া যায় । এরপর প্রতিটা কাজের উৎসের গ্রহণযোগ্যতা নিরূপণ করতে হয়। এরপর নির্ধারণ করতে হয় প্রতিটা কাজের সম্পন্ন হওয়ার সময়, যা পূর্ব অভিজ্ঞতা, কাজের ধরণ, গাণিতিক বিশ্লেষণ বা বাস্তব উদাহরণ ইত্যাদির মাধ্যমে পাওয়া যেতে পারে।

 

শিডিউল নিশ্চিত করাঃ এটি প্রকল্পের পর্যায়ক্রমতা সম্ভাব্য সময়ের উপর সরাসরি প্রভাব ফেলে, অনেক সময় একই উৎস দ্বারা অনেক প্রকল্প চলতে পারে, সেক্ষেত্রে শিডিউল প্রয়োজন হয় প্রকল্প সঠিকভাবে শেষ করতে।

শিডিউল পর্যবেক্ষণ করাঃ এটির প্রয়োজন হয় প্রকল্পের অগ্রগতি পর্যবেক্ষণের জন্য।

http://Bangla.SaLearningSchool.com