Category Archives: Science and Engineering

Where to get Malware Samples and Labels?

Where to get Malware Samples and Labels?

This information is intended for Security and Malware researchers.

Virus Total: https://www.virustotal.com/gui/

Malware-traffic-analysis-net: http://malware-traffic-analysis.net/

Virus Share : https://virusshare.com/

VX Haven: https://vxer.org

Kaggle, Microsoft Virus/Malware database: https://www.kaggle.com/c/microsoft-malware-prediction/data

Reference: Clarence C, and David F.

বাংলাদেশ তৃতীয় শ্রেণীর বইগুলো ঃ ডাউনলোড করুন

Class-III

Bangla Version English Version
Subject Name Download Subject Name Download
Amar Bangla Boi
Prathomic Gonit Mathematics
Download
English For Today
Bangladesh And Bisho Bangladesh and Global studies
Download
Prathomic Biggan Science
Download
Islam Religion Islam Religion
Download
Hindu Religion Hindu Religion
Download
Christian Religion Christian Religion
Download
Buddhist Religion Buddhist Religion
Download

বাংলাদেশ চতুর্থ শ্রেণীর বইগুলো ঃ ডাউনলোড করুন

Class-IV

Bangla Version English Version
Subject Name Download Subject Name Download
Amar Bangla Boi
Prathomic Gonit Mathematics
English For Today
Bangladesh And Bisho Bangladesh and Global studies
Download
Science Science
Download
Islam Religion Islam Religion
Download
Hindu Religion Hindu Religion
Download
Buddhist Religion Buddhist Religion
Download
Christian Religion Christian Religion
Download

বাংলাদেশ পঞ্চম শ্রেণীর বইগুলো ঃ ডাউনলোড করুন

Class-V

Bangla Version English Version
Subject Name Download Subject Name Download
Amar Bangla Boi
Prathomic Gonit Mathematics
English For Today
Bangladesh And Bisho Bangladesh and Global Studies
Download
Science Science
Download
Hindu Religion Hindu Religion
Download
Islam and moral Education Islam and moral Education
Download
Buddhist Religion Buddhist Religion
Download
Christian Religion Christian Religion
Download

বাংলাদেশ ষষ্ঠ শ্রেণীর বইগুলো ঃ ডাউনলোড করুন

Class-VI

Bangla Version English Version
Subject Name Download Subject Name Download
Bangla Grammer Bangla Grammer
Ananda Path
English For Today English For Today  Download
Mathematics Mathematics
Download
Bangladesh And Bisho Download Bangladesh and Global Studies Download
Science Science
Download
Agriculture studies
Download
Agriculture studies
Home Science Home Science Download
Islam and moral Education Islam and moral Education
Download
Hindu Religion and moral Education Hindu Religion and moral Education
Christian Religion and moral Education Christian Religion and moral Education
Buddhist religion and moral education
Download
Buddhist religion and moral education
Phycical Education and helth
Download
Phycical Education and helth
Work and Life Oriented Education
Download
Work and Life Oriented Education
Languagre of Minority Ethnic Groups Languagre of Minority Ethnic Groups  Download
Art and Crafts
Download
Art and Crafts
 ICT  Download
Charupath Download

বাংলাদেশ সপ্তম শ্রেণীর বইগুলো ঃ ডাউনলোড করুন

Class-VII

Bangla Version English Version
Subject Name Download Subject Name Download
Shopto Borna (Bangla)
Ananda Path
Bangla Bakoron
English For Today English For Today
 Gonit Mathematics
Download
Bangladesh And Bisho Bangladesh and Global Studies
Download
Science Science
Agriculture studies Agriculture studies
Download
Home Science
Download
Home Science
Download
Islam and moral Education Islam and moral Education
Download
Hindu Religion and moral Education Hindu Religion and moral Education
Download
Christian Religion and moral Education Christian Religion and moral Education
Download
Buddhist religion and moral education
Download
Buddhist religion and moral education
Download
Phycical Education and helth Phycical Education and helth
Download
Art and Crafts Art and Crafts
Download
Information and Communication Technology Information and Communication Technology
Download
 Krishi Shikka  Download
ICT Download

বাংলাদেশ অষ্টম শ্রেণীর বইগুলো ঃ ডাউনলোড করুন

Class-VIII

Bangla Version English Version
Subject Name Download Subject Name Download
Shahitto Konoka
Ananda_Path Ananda_Path
Download
Bangla Bakoron
Download
English For Today English For Today
Gonit Mathematics
Download
Bangladesh And Bisho Bangladesh and Global Studies
Science Science
Download
Agriculture studies
Download
Agriculture studies
Download
Home Science Home Science Download
Islam and moral Education Islam and moral Education
Hindu Religion and moral Education Hindu Religion and moral Education
Christian Religion and moral Education
Download
Christian Religion and moral Education
Buddhist religion and moral education Buddhist religion and moral education
Sharik Shikkha O Shasto Phycical Education and helth
Download
Art and Crafts Art and Crafts

বাংলাদেশ মাধ্যমিক শ্রেণীর বইগুলো ঃ ডাউনলোড করুন

Class-IX-X

Bangla Version English Version
Subject Name Download Subject Name Download
Madhomic Bangla Shatto
Babosha Uddag Download Business Enterpreneurship Download
 Computer Study Download
Gonit Download Mathematics Download
English For Today English For Today
Bangladesh And Bisho Bangladesh and Global Studies
Science
Agriculture studies Agriculture studies
Home Science
Download
Home Science
Islam and moral Education
Hindu Religion and moral Education
Christian Religion and moral Education Christian Religion and moral Education
Buddhist religion and moral education Buddhist religion and moral education
Phycical Education and helth Phycical Education and helth
Art and Crafts Art and Crafts
Computer Study Computer Study
Biology Biology
Physics Physics
Chemistry Chemistry
Higher Mthematics Higher Mthematics
History of Bangladesh and World Civilization History of Bangladesh and World Civilization
Geography and Environment Geography and Environment
Economics Economics
Civics and Citizenship Civics and Citizenship
Finance and Banking Finance and Banking
Accounting Accounting

বাংলাদেশ উচ্চ মাধ্যমিক শ্রেণীর বইগুলো ঃ ডাউনলোড করুন

SUBJECT TITLE
1 ACCOUNTING  DOWNLOAD
2 AGRICULTURE  DOWNLOAD
3 BANGLA  DOWNLOAD
4 BIOLOGY  DOWNLOAD
5 BUSINESS ORGANISATION & MANAGEMENT  DOWNLOAD
6 CHEMISTRY  DOWNLOAD
7 CHILD DEVELOPMENT  DOWNLOAD
8 CIVICS  DOWNLOAD
9 CLASSICAL MUSIC  DOWNLOAD
10 ECONOMICS  DOWNLOAD
11 ENGLISH  DOWNLOAD
12 FINANCE, BANKING AND INSURANCE  DOWNLOAD
13 FOOD AND NUTRITION  DOWNLOAD
14 GEOGRAPHY  DOWNLOAD
15 HIGHER MATH  DOWNLOAD
16 HISTORY  DOWNLOAD
17 HOME MANAGEMENT & FAMILY LIVING  DOWNLOAD
18 HOME SCIENCE  DOWNLOAD
19 ICT  DOWNLOAD
20 ISLAM  DOWNLOAD
21 ISLAMIC HISTORY  DOWNLOAD
22 LIGHT MUSIC  DOWNLOAD
23 LOGIC  DOWNLOAD
24 PHYSICS  DOWNLOAD
25 PRACTICAL ARTS  DOWNLOAD
26 PRODUCTION MANAGEMENT & MARKETING  DOWNLOAD
27 PSYCHOLOGY  DOWNLOAD
28 SOCIAL WORK  DOWNLOAD
29 SOCIOLOGY  DOWNLOAD
30 SOIL SCIENCE  DOWNLOAD
31 STATISTICS  DOWNLOAD
32 TOURISM & HOSPITALITY  DOWNLOAD

উচ্চ মাধ্যমিক সিলেবাস অনুযায়ী একাদশ-দ্বাদশ শ্রেণীর বইসমূহের পাঠ্যক্রম (কারিকুলাম)

উচ্চ মাধ্যমিক স্তরের শিক্ষাক্রম

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

হিপো ডায়াগ্রামঃ 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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

সফটওয়ার রিকোয়ারমেন্ট স্পেসিফিকেশনকে এখানে 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 এর বিভিন্ন ধাপে ব্যবহৃত যন্ত্রপাতি ও পদ্ধতি, এবং সফটওয়ার ডেভলপমেন্টের পারফর্মেন্স ইত্যাদি হল প্রক্রিয়া বিষয়ক ম্যাট্রিক্স।

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

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

 

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

কাপলিং

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

সারসংক্ষেপ

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

 

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

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

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

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

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 সফটওয়ারের বিবর্তনের ক্ষেত্রে পণ্যের লাইফটাইমের সাথে সাথে পরিবর্তিত হয়।

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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