আপনি কিভাবে বড় প্রকল্পের ট্র্যাক রাখেন?


16

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

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

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

অন্য কেউ বিকাশ করেছেন এমন একটি বড় কোড বেস বুঝতে আপনি কী কৌশল এবং প্রক্রিয়াগুলি দরকারী বলে মনে করেছেন? এমন কোনও বিশেষ চিত্র রয়েছে যা আপনি খুঁজে পেতে আপনাকে বৃহত্তর চিত্রটি উপলব্ধি করতে সহায়তা করে?


সম্ভবত কোনও ইউএমএল উপাদান ডায়াগ্রাম?
ম্যাপেল_শ্যাফ্ট

উত্তর:


7

একটি বৃহত কোড বেস বোঝার কৌশলটি এটি সমস্ত বোঝার চেষ্টা না করা। একটি নির্দিষ্ট আকারের পরে, আপনি পুরো জিনিসটি আপনার মাথাতে মানসিক মডেল রাখতে পারবেন না। আপনি একটি অ্যাঙ্কার পয়েন্ট দিয়ে শুরু করুন যা আপনাকে প্রথমে যে কাজটি করতে হবে তা বোঝায়, তারপরে সেখান থেকে শাখা করুন, কেবলমাত্র আপনার প্রয়োজনীয় অংশগুলি শিখবেন এবং বিশ্বাস করুন যে এটির বাকী বিজ্ঞাপন হিসাবে কাজ করে। এটি ঠিক পুনরাবৃত্তি বোঝার মতো। যদি আপনি পুরো স্ট্যাকটি আপনার মাথায় ধরে রাখার চেষ্টা করেন তবে আপনার মস্তিষ্ক বিস্ফোরিত হয়।

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

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


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

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

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

"এটি যত বড়, তত বেশি প্রোগ্রামার এর উপর অভিজ্ঞতার সাথে রয়েছে" তারা অগত্যা সেখানে কাজ করে না, বা তারা এটি ভালভাবে মনে করতে পারে না (পরিচালনা)
ব্যবহারকারী 1821961

2

কোনও শর্টকাট নেই। আপনি কেবল এটির মাধ্যমে ভোগান্তি পোহাতে হবে।

কীভাবে ডায়াগ্রাম পেতে হয় সে সম্পর্কে আপনার প্রশ্নের উত্তর দিতে, ডক্সিজেন হ'ল আপনি যা চান। আফাইক এটি পিএইচপি এর সাথে কাজ করে।

আরও সাধারণভাবে, নতুন কোডবেসের মুখোমুখি হওয়ার সময় আমি প্রায় নিম্নলিখিত ধাপগুলি অতিক্রম করি:

  1. এটি ব্যবহারকারী পয়েন্ট অফ ভিউ থেকে কী করে তা বুঝতে পারেন। পাওয়ার-ইউজারের মতো অ্যাপ্লিকেশনটি নিজেই ব্যবহার করতে সক্ষম হোন। আসল ব্যবহারকারীরা এটির সাথে কীভাবে কাজ করে তা বুঝুন। তারা তাদের কাজ সম্পর্কে দৃ understanding় ধারণা অর্জন না করা পর্যন্ত তাদের সাথে বসে থাকতে হবে sitting

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

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

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

  5. ক্রিয়ামূলক পরীক্ষাগুলিতে (যদি থাকে তবে) একটি গ্রিপ পান। জিনিসটি ঠিকমতো চলছে কিনা আপনি কীভাবে জানবেন? অ্যাপ্লিকেশনটির যত্ন এবং খাওয়ানোর জন্য অপারেশন লোকেদের কী করতে হবে?

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

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

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

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

  3. আইডিই বুকমার্কগুলি কোডবেসে হট-স্পটগুলিতে ট্যাগ করার জন্য অমূল্য। তাদের মাধ্যমে দ্রুত টগল করতে সক্ষম হওয়া বোঝার প্রচার করবে।

  4. হট-স্পটগুলি বোঝার জন্য সাম্প্রতিক বাগ-প্রতিবেদনগুলি এবং তাদের রেজোলিউশনগুলি পড়াও মূল্যবান এবং কোডবেসের সর্বাধিক প্রাসঙ্গিক অংশগুলিকে দ্রুত গতিতে সহায়তা করতে আপনাকে সহায়তা করবে।


1

অনুরোধ হিসাবে, উত্তর হিসাবে আমার মন্তব্য এখানে।

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

যদি কোডবেসে পরীক্ষা (সংহতকরণ বা ইউনিট) থাকে তবে সেগুলি মাঝে মধ্যে ভাল করে পরীক্ষা করার মতোও।


1

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

ক) ব্যবহৃত প্রোগ্রামিং কাঠামোটি চিহ্নিত করুন, যা অ্যাপ্লিকেশনটি কীভাবে প্রবাহিত হবে তা জানতে সহায়তা করে।

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

গ) সাধারণ ব্যবহারকারীর প্রবাহের মাধ্যমে চলুন (অ্যাপ্লিকেশনটিতে) তারপরে কোডটি কীভাবে ছড়িয়ে দেওয়া হয়েছে তার সাথে তাদের সারিবদ্ধ করার চেষ্টা করুন

d) কিছু পরিবর্তন করার চেষ্টা করুন এবং দেখুন কীভাবে তারা বেরিয়ে আসে। এটি সবচেয়ে বড় পদক্ষেপ কারণ আপনি পরিবর্তন করা শুরু না করা পর্যন্ত কোডটি এখনও একটি কালো বক্স is

পরের দুই সপ্তাহের মধ্যে আমি কী কী অন্যান্য ধারণা পেতে পারি তা আমি আপনাকে জানাব will


0

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


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

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

0

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

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


0

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

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

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

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