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

সফটওয়্যার প্রকৌশলে সফটওয়্যার উন্নয়ন প্রক্রিয়া হল সফটওয়্যারের নকশা, পণ্য ব্যাবস্থাপনা ও প্রকল্প ব্যাবস্থাপনার উন্নতির জন্য সফটওয়্যার উন্নয়নকে আলাদা আলাদা ধাপে ভাগ করে নেয়ার প্রক্রিয়া। এটি সফটওয়্যার উন্নয়ন জীবনচক্র হিসেবেও পরিচিত। একজন ছাত্র এস এস সি পাস করতে হলে প্রথম শেণী থেকে ক্রমানুসারে দশম শেণী পর্যন্ত পাস করতে হয়, ঠিক একি ভাবে একটি সফটওয়্যার তৈরী করতে হলে সফটওয়্যার উন্নয়ন প্রক্রিয়া (SDLC) ধাপ অনুুসারে কাজ করতে হয়। নির্দিষ্ট প্রেরণীয় (en:Deliverable) ও হস্তনির্মিত বস্তু (artifact), যেগুলো ১টি প্রকল্প দল (project team) দ্বারা ১টি অ্যাপ্লিকেশনের উন্নয়ন ও রক্ষণাবেক্ষণের জন্য তৈরি ও সম্পন্ন করা হয়, সেগুলোর প্রাক-সংজ্ঞাও এই প্রণালীবিদ্যার (methodology) অন্তর্ভুক্ত হতে পারে। বেশিরভাগ আধুনিক উন্নয়ন প্রক্রিয়াকে অস্পষ্টভাবে ক্ষিপ্র (agile) বলা যেতে পারে। অন্যান্য পদ্ধতির মধ্যে রয়েছে প্রপাতাকার উন্নয়ন (en:waterfall), প্রাথমিক নমুনাভিত্তিক উন্নয়ন (en:prototyping), পুনরাবৃত্ত ও ক্রমবর্ধমান উন্নয়ন (en:Iterative and incremental development), সর্পিল উন্নয়ন (en:Spiral development), দ্রুত অ্যাপ্লিকেশন উন্নয়ন (en:Rapid application development) ও চরম প্রোগ্রামিং (en:Extreme programing)। কেউ কেউ কোন জীবনচক্র "মডেল"-কে এক শ্রেণির প্রণালীবিদ্যা (methodologies)-এর জন্য বেশ সাধারণ পরিভাষা হিসেবে বিবেচনা করে। আবার, তারা কোন সফটওয়্যার উন্নয়ন "প্রক্রিয়া"-কে কোন নির্দিষ্ট প্রতিষ্ঠানের বেছে নেওয়া একটি নির্দিষ্ট প্রক্রিয়া বুঝাতে বেশ নির্দিষ্ট পরিভাষা হিসেবে বিবেচনা করে। উদাহরণস্বরূপ, অনেক নির্দিষ্ট সফটওয়্যার উন্নয়ন প্রক্রিয়া আছে যেগুলো সর্পিল জীবনচক্র "মডেল"-এর সাথে মানানসই। এই ক্ষেত্রকে সাধারণত পদ্ধতি উন্নয়ন জীবনচক্রের উপসেট হিসেবে ধরা হয়। ১৯৬০ সালের আগে সফটওয়্যার উন্নয়ন প্রণালীবিদ্যা (Software Development Methodology যা SDM হিসেবেও পরিচিত) কাঠামোর আবির্ভাব ঘটেনি। এলিয়ট (২০০৪) অনুসারে তথ্য ব্যবস্থা (en:Information systems) তৈরি জন্য পদ্ধতি উন্নয়ন জীবনচক্র (en:Systems development life cycle-SDLC)-কেই সবচেয়ে পুরনো বিধিবদ্ধ প্রণালীবিদ্যা কাঠামো ধরা যেতে পারে। এসডিএলসি-র মূল ধারণা হল এর মধ্যে কাঠামোর সূত্র প্রয়োগ করে "ধারণার সূত্রপাত থেকে সর্বশেষ সিস্টেম বিলি করা পর্যন্ত - জীবনচক্রের প্রতিটি ধাপ, যেগুলো কাঠামোর (framework) সূত্র প্রয়োগ করে দৃঢ়ভাবে ও ক্রমানুসারে সম্পন্ন করা হয়, সেগুলোর বিনিময়ে স্বপ্রণোদিত, কাঠামোবদ্ধ ও সুশৃঙ্খলভাবে তথ্য ব্যবস্থার উন্নয়ন খোঁজা"। ১৯৬০-এর দশকে এই পদ্ধতি কাঠামোর মূল লক্ষ্য ছিল "বড় মাপের ব্যবসা কংগ্লোমারেট(বহু-শিল্প প্রতিষ্ঠান)-দের যুগে, বড় মাপের সক্রিয় বিজনেস সিস্টেম (Business Systems) প্রস্তুত করা। তথ্য ব্যবস্থার কার্যক্রম ভারী ডাটা প্রসেসিং (en:Data processing) ও নাম্বার ক্রাঞ্চিং (en:Number crunching) রুটিনে আবর্তন করত।" কোন সংস্থার, দৈনন্দিন কাজে সরাসরি ব্যবহার করার মত নির্দিষ্ট প্রোস্ক্রিপটিভ(প্রতিষেধাত্মক) ধাপ থেকে শুরু করে কোন নির্দিষ্ট প্রকল্প বা গ্রুপের প্রয়োজনে পরিবর্তিত সংশোধিত ধাপের সেট তৈরিতে ব্যবহৃত নমনীয় কাঠামো(framework) পর্যন্ত মেথডোলজি(প্রণালীবিদ্যা), প্রক্রিয়া ও কাঠামো(framework) বিস্তৃত। কিছু ক্ষেত্রে কোন "স্পন্সর" বা "রক্ষণাবেক্ষণ" সংস্থা, প্রক্রিয়ার বর্ণনাসহ একসেট অফিসিয়াল ডকুমেন্ট(নথিপত্র) বিতরণ করে। সুস্পষ্ট উদাহরণস্বরূপ: ১৯৬৯ সাল থেকে কাঠামোবদ্ধ প্রোগ্রামিং ক্যাপ জেমিনি এসডিএম (en:Cap Gemini SDM), মূলত পান্ডাটা নামক সফটওয়্যার কোম্পানির উদ্ভাবিত, প্রথম ইংরেজি অনুবাদ ১৯৭৪ সালে প্রকাশিত। এসডিএম এর পূর্ণরূপ সিস্টেম ডেভেলপমেন্ট মেথডোলজি। স্ট্রাকচার্ড সিস্টেম অ্যানালাইসিস অ্যান্ড ডিজাইন মেথড (SSADM) ১৯৮০ সাল থেকে পরবর্তী ইনফরমেশন রিকোয়ারমেন্ট অ্যানালাইসিস/সফট সিস্টেম মেথডোলজি (SDM) ১৯৬০-এর দশকের শুরুর দিকে অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং (OOP)-এর উদ্ভব হয় এবং ১৯৯০-এর দশকের মাঝামাঝি প্রভাবশালী প্রোগ্রামিং পন্থায় পরিণত হয় র‍্যাপিড অ্যাপ্লিকেশন ডেভেলপমেন্ট (RAD), ১৯৯০ সাল থেকে ডাইনামিক সিস্টেমস ডেভেলপমেন্ট মেথড (DSDM), ১৯৯৪ সাল থেকে স্ক্রাম(en:Scrum), ১৯৯৫ সাল থেকে রেশনাল ইউনিফাইড প্রোসেস (RUD), ১৯৯৮ সাল থেকে তত্ত্বাবধানে চরম প্রোগ্রামিং (en:Extreme programming), ১৯৯৯ সাল থেকে ২০০০-এর প্রথম দশক অ্যাজাইল ইউনিফাইড প্রোসেস (AUP), ২০০৫ সাল থেকে স্কট অ্যাম্বলারের তত্ত্বাবধানে ডিসিপ্লিনড অ্যাজাইল ডেলিভারি (DAD), AUP কে রহিত করে স্কেলড অ্যাজাইল ফ্রেমওয়ার্ক (SAFe) বড় আকারের স্ক্রাম (LeSS) ডেভঅপ্স - সফ্টওয়্যার বিকাশ (ডেভ) এবং আইটি অপারেশন (অপ্স) উল্লেখ্য যে, ১৯৯৪ সালের ডিএসডিএম থেকে, আরইউপি ছাড়া উপরের লিস্টের সব মেথডোলজিই ক্ষিপ্র মেথডোলজি। অবশ্য, অনেক সংস্থা, বিশেষ করে সরকার, এখনও প্রাক-ক্ষিপ্র প্রক্রিয়া (সাধারণত ওয়াটারফল বা অনুরূপ) ব্যবহার করে। সফটওয়্যার রিলিজ লাইফ সাইকল উইকিমিডিয়া কমন্সে সফটওয়্যার উন্নয়ন প্রক্রিয়া সংক্রান্ত মিডিয়া রয়েছে। Selecting a development approach at cms.hhs.gov. Gerhard Fischer, "The Software Technology of the 21st Century: From Software Reuse to Collaborative Software Design", 2001 Subway map of agile practices at Agile Alliance