আপনি যদি Agile বা XP এর মতো বিবর্তন পদ্ধতিতে কোনও ডিজাইনের ডেড-এন্ডে পৌঁছান তবে আপনি কী করবেন?


11

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

এটা সম্ভব হতে পারে যে যখন কোনও প্রোগ্রামারের স্তর ভাল হয় এবং তারা ডিজাইনের প্রভাব বোঝে এবং গুরুতর ভুল না করে, কোডটি বিকশিত হতে থাকে। যাইহোক, একটি সাধারণ প্রসঙ্গে, এই প্রসঙ্গে জমি বাস্তবতা কী?

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

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

আপনি কি কখনও এইরকম মৃতপ্রান্তে পৌঁছেছেন ? কীভাবে আপনি এটি এড়াতে বা পরিচালনা থেকে বাঁচতে পেরেছেন? অথবা ডিজাইনটি বিকশিত হওয়ার সাথে সাথে পরিষ্কার এবং নমনীয় থাকার বিষয়টি নিশ্চিত করার ব্যবস্থা আছে?

উত্তর:


17

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

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

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

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

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

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

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

বর্ণালীটির অন্য প্রান্তে, বর্তমানে আমার দলে (এখন চটপটে এবং আমি এটি পুরোপুরি সমর্থন করি) আমাদের বেশ কয়েকজন ছেলেরা এম্বেডড ল্যান্ড থেকে আমাদের সাথে যোগ দিয়েছিল যেখানে তারা গত 15 বছর ধরে কেবল সি করেছে have আমি স্পষ্টতই কিছু প্রাথমিক পরিকল্পনা এবং ক্লাসগুলি ছড়িয়ে দেওয়ার ক্ষেত্রে সহায়তা করেছি তবে আমি নিয়মিত কোড পর্যালোচনা এবং ব্রেইনস্টর্মিং সেশনগুলি অনুসরণ করার বিষয়টিও নিশ্চিত করেছিলাম যেখানে আমরা সলাইড এবং ডিজাইনের নীতিগুলির প্রয়োগগুলি নিয়ে আলোচনা করি। তারা এমন কিছু স্প্যাগেটি কোড তৈরি করেছিল যা আমাকে কিছুটা কাটাতে বাধ্য করেছিল, তবে আমার কাছ থেকে কেবল একটি সামান্য ঠোঁট দিয়ে তারা ইতিমধ্যে উত্পাদিত যা পুনরায় প্রতিরোধ করতে শুরু করেছে এবং মজার বিষয়টি হল তাদের মধ্যে কয়েকদিন পরে আমার কাছে ফিরে এসে বলল, আমি ঘৃণা করি এটি বলার জন্য কিন্তু সেই কোডটি সরিয়ে নেওয়ার পরে এটি দেখতে অনেক বেশি পঠনযোগ্য এবং বোধগম্য। ডেড-এন্ড এড়ানো হয়েছে। পয়েন্ট আমি ' আমি চেষ্টা করে যাচ্ছি যে ওও-তে সম্পূর্ণ নতুন যে কেউ তার আরও অভিজ্ঞতার পরামর্শদাতা থাকা সত্ত্বেও কিছুটা শালীন কোড তৈরি করতে পারে, তাকে মনে করিয়ে দেওয়ার জন্য যে "বিবর্তনীয় নকশা" কোনও নকশাই নয় "। এমনকি তার কিছু "আরও জটিল" শ্রেণিও সেই ভীতিকর নয় কারণ প্রতিটি শ্রেণীর এত বেশি দায়িত্ব নেই (যেমন বেশি কোড নেই), তাই খারাপটি আরও খারাপ হয়ে যায়, যদি সেই এক শ্রেণি "মৃত-শেষ" হয়, এটিকে ছাড়ে এবং একই সার্বজনীন ইন্টারফেসযুক্ত একটি প্রতিস্থাপন শ্রেণি লিখুন (এখনও অবধি আমি যে কোনও কিছু লিখেছি এবং এই সপ্তাহে দু'বার কোড পর্যালোচনা করছি) তেমন এই অবিচ্ছিন্নতার প্রয়োজন পড়েনি।

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

ডাং, আমি অনেক লিখেছি। এর জন্যে দুঃখিত.


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

হ্যাঁ, আপনি অনেক লিখেছিলেন, তবে এটি একটি ভাল জিনিস ছিল। সত্যিই এটি পড়ে আনন্দিত :)।
রাদু মুর্জিয়া

11

আমি বলব "ডিজাইন ডেড-এন্ড" ঘটনাটি চতুর পদ্ধতিগুলির জন্য গোঁড়া। আমার অর্থ হ'ল জলপ্রপাত করা সম্ভব, কোনও (খারাপ) নকশায় অনেক সময় ব্যয় করা সম্ভব। তারপরে এটিকে বাস্তবায়িত করতে প্রচুর সময় ব্যয় করুন কেবলমাত্র একটি মৃত প্রান্তে নিজেকে খুঁজে পেতে।

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

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

কিভাবে আপনি মৃতপ্রান্ত এড়ান?

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

আপনার যদি শেষ অবসান হয় তবে আপনি কী করবেন?

উপন্যাসের যে কোনও কিছুর বিকাশের সময় আপনি যে কোনও প্রযুক্তিগত ব্লক হিট করবেন তার চেয়ে একটি "ডেড-এন্ড" আলাদা নয় । অনুধাবন করার প্রথম জিনিসটি হ'ল সত্যিকারের এমন কোনও "মৃত-প্রান্ত" নেই যা আপনাকে পুরোপুরি ব্যাকট্র্যাক করতে বাধ্য করে। খুব কমপক্ষে এই মুহুর্তে আপনার পড়াশোনাই আপনাকে এগিয়ে যেতে সক্ষম করে তোলে যাতে প্রচেষ্টা নষ্ট হয় নি। আপনি যখন কোনও ডেড-এন্ডে আঘাত করেন তখন আপনার সমস্যা হয় । সমস্যাটি হ'ল কিছু নতুন (বা পুরাতন) প্রয়োজনীয়তা পূরণের জন্য কী কী পরিবর্তন করতে হবে এবং কীভাবে এই পরিবর্তনটি অনুকূলিত করতে হবে। আপনাকে এখন যা করতে হবে তা হ'ল এই সমস্যাটি সমাধান করা। কৃতজ্ঞ হোন যে এটি সফ্টওয়্যার এবং না, যেমন, বিমানের নকশা, কারণ পরিবর্তন অনেক সহজ much সমস্যাগুলি শনাক্ত করুন, সেগুলি ঠিক করুন == রিফ্যাক্টর == সফটওয়্যার ইঞ্জিনিয়ারিং। কখনও কখনও প্রচুর কাজ জড়িত ...

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

ওএস ওয়ার্ল্ড থেকে কয়েকটি বিখ্যাত বড় প্রয়োজনের পরিবর্তনগুলি যা আমার মনে আসে:

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


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

3

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

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

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

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


1
পোস্ট কোড ইউএমএলের ধারণাটি দেখানোর জন্য +1! আকর্ষণীয় যথেষ্ট, আমরা কোডের পরে ডায়াগ্রামের ডকুমেন্টগুলিতে আর ফিরে পাই না !
দিপান মেহতা

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

3

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

আমি প্রতিটি ক্ষেত্রে একইভাবে পৌঁছেছি যা দেখে মনে হচ্ছে এটি ভালভাবে কাজ করেছে:

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

খরচ:

  • একই সময়ে কোড বেসে 2 টি বাস্তবায়নের কারণে আরও জটিলতা
  • ভাল ব্যবহারের ক্ষেত্রে এবং পরীক্ষাগুলি ধরে নিয়ে একটি সম্পূর্ণ পুনরায় নকশা / পুনর্নির্মাণের চেয়ে ফিচার / বাগ বাগের চেয়ে আরও বেশি ব্যয়

উপকারিতা:

  • কমপক্ষে কম ঝুঁকির অর্ডার কম ঝুঁকিপূর্ণ কারণ আপনার এখনও পুরানো কার্যকরী নকশা / কোড রয়েছে
  • যে কোনও 1 থেকে এন -1 বৈশিষ্ট্যগুলির জন্য পুরোপুরি নতুন ডিজাইনের প্রয়োজন নেই এর জন্য বাজারে দ্রুত
  • পুরোপুরি নতুন ডিজাইন শেষ করার আগে যদি পণ্য / কোডটি মারা যায় তবে আপনি উন্নয়নের সময়ের পার্থক্যটি সংরক্ষণ করতে পারবেন saved
  • পুনরাবৃত্তি পদ্ধতির এবং এতে সমস্ত সুবিধা

2

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

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

আমরা এখন সেই বাধা পেরিয়ে এসেছি এবং আবার নতুন বৈশিষ্ট্যগুলিতে যুক্ত করছি।


এটি খুঁজে পেতে আরও একটি বড় ঘর্ষণ। গ্রাহককে বলতে হবে - যে আমরা এখন একই জিনিসটি তৈরি করছি - এমন বৈশিষ্ট্য যা নতুন সংস্করণ হস্তান্তরিত হওয়ার পরে নতুন কিছু নয়! কত ঘন ঘন এবং ঘন ঘন (যদি কখনও হয়) আপনি গ্রাহককে এটি বলতে পারছেন? বা আপনি কীভাবে ব্যাখ্যা করবেন?
দিপান মেহতা

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

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

@ দিপনমহেতা আমরা কিছুটা ভাগ্যবান যে গ্রাহকরা এই প্রকল্প সম্পর্কে অগত্যা জানেন না। এটি বর্তমানে ব্যবহার করা একটি পণ্যের আপগ্রেড যা এই বছরের শেষের দিকে প্রায় আধা-অস্পষ্ট সমাপ্তির তারিখ সহ। সুতরাং তাদের রিফ্যাক্টরিংয়ের জন্য বিলম্বের বিষয়েও জানতে হবে না;) (বেশিরভাগ ডিজাইনের সিদ্ধান্ত পরিচালনা করা পরিচালক ইন-হাউস)
ইজকাটা

2

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


2

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

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

আমি নিশ্চিত যে এখানে কিছু ইঞ্জিনিয়ার ছিলেন যারা সাব-থিম ডিজাইনটি স্বীকৃতি দিয়েছিলেন যখন তারা এই বৈশিষ্ট্যটি প্রথম যুক্ত করেছিলেন। যদি তারা তখন এটি পরিবর্তন করে নিয়ে থাকে তবে এটি কোনও চুক্তির চেয়ে বড় কিছু হত না।


1

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.