আমি এই প্রশ্নটি সহ কয়েকটি গুরুতর সমস্যা দেখছি। চল শুরু করি.
কীভাবে আর্কিটেকচার ডিজাইনের সময় নষ্ট করা বন্ধ করবেন
এই প্রশ্ন বরং বোঝা হয়। এছাড়াও, আপনি আর্কিটেকচার ডিজাইন করেন না । আপনি স্থপতি । আর্কিটেকচার এবং নকশা পরিপূরক এবং সম্পর্কিত ক্রিয়াকলাপ, তবে তারা একইরকম নয়, এমনকি যদি তারা ওভারল্যাপ করে।
একইভাবে, একইভাবে আর্কিটেকচার (ওভার-আর্কিটেকচারিং দ্বারা) সময় নষ্ট করা সম্ভব, আপনি ওভার ডিজাইনিং এবং ওভার-কোডিংয়ের সাথেও সময় নষ্ট করতে পারেন (প্রয়োজনের তুলনায় আরও জটিল পদ্ধতিতে স্টাফ কোডিংয়ে বা ব্যর্থ হয়ে) প্রয়োজনীয় জিনিসগুলির জন্য কোড।)
যথাযথ আর্কিটেকচারের লক্ষ্য কোডিংয়ে সেই অপচয় রোধ করা। জটিল সিস্টেমকে সম্ভাব্য উপায়গুলি সীমাবদ্ধকরণ, সংকীর্ণকরণ এবং ডকুমেন্ট করার মাধ্যমে এটি করা হয় 1) ডিজাইন করা, 2) কোডড এবং এটি পরীক্ষা করা, 3) বিতরণ করা, 4) বজায় রাখা, 5) ব্যর্থতা থেকে পুনরুদ্ধার, এবং 6) চূড়ান্তভাবে ডিকমিনেশন হওয়া।
আমার অভিজ্ঞতাটি হ'ল যে লোকেরা কেবল কোডিং উপভোগ করেন তারা দীর্ঘমেয়াদে কীভাবে সিস্টেম পরিচালনা এবং বজায় রাখবেন তা নিয়ে কোনও চিন্তা ছাড়াই কোড করে, পরের গরম আলুতে কুরুচিপূর্ণ গোলেম বজায় রাখার জন্য কিছুটা খারাপ আত্মাকে রেখে চলে যায়।
কিন্তু আমার দ্বিমত আছে...
এটি হ'ল: সিস্টেমগুলির পক্ষে যথেষ্ট সহজ, আর্কিটেকচারটি স্বতঃসিদ্ধ এবং সাউন্ড ডিজাইন এবং বাস্তবায়ন অনুশীলন থেকে উদ্ভূত হয়।
এটি কেবলমাত্র বৃহত সিস্টেমে যার জন্য একটি বিশাল সংখ্যক লোক বা সিস্টেম-স্তরের সফ্টওয়্যার জড়িত যা খুব জটিল স্টাফ করে যার জন্য সুস্পষ্ট আর্কিটেকচারের প্রয়োজন হয়।
আমি সম্প্রতি ইউনি থেকে স্নাতক হয়ে প্রোগ্রামার হিসাবে কাজ শুরু করেছি। "প্রযুক্তিগত" সমস্যাগুলি সমাধান করা বা ডিবাগিং করা আমার পক্ষে এত কঠিন মনে হয় না, যে জিনিসগুলি আমি বলব তার 1 টি সমাধান রয়েছে।
এই পেশার জন্য এটি ন্যূনতম প্রয়োজনীয়, এবং আমি আনন্দিত যে এগুলি করতে আপনার কোনও সমস্যা নেই (আপনি যদি এটি করেন তবে আমি উদ্বিগ্ন হব))
তবে মনে হচ্ছে এমন এক শ্রেণির সমস্যা রয়েছে যার একটির সমাধান নেই
এগুলি হ'ল আমাদের পেশার রুটি এবং মাখন, যে ধরণের সমস্যাগুলির জন্য নিয়োগকর্তারা আমাদের (সাধারণত) উচ্চ-গড়-গড় বেতন দিতে ইচ্ছুক।
প্রকৃতপক্ষে, সমস্যা সমাধানের মূল্য হ'ল একাধিক সমাধান হতে পারে। বাস্তব বিশ্বের সমস্যা, তারা যেমন হয়। এবং বিশ্বকে আমাদের দক্ষতার প্রয়োজন, সফ্টওয়্যার বিকাশকারী হিসাবে, গ্রহণযোগ্য বাণিজ্য-অফ নিয়ে আসতে হবে।
- সফ্টওয়্যার আর্কিটেকচারের মতো জিনিস।
জিনিসের আর্কিটেকচার জটিল সিস্টেমের একটি অনিবার্য বৈশিষ্ট্য, সেগুলি ভার্চুয়াল / সফ্টওয়্যার বা কংক্রিট বিশ্বে থাকুক। প্রতিটি সিস্টেম যা পরিচালনা করে, যা ইনপুট নেয় এবং আউটপুট উত্পাদন করে, এটি জটিল হবে এবং একটি আর্কিটেকচার থাকবে।
যখন আমরা এই জাতীয় সিস্টেমগুলির জন্য সফ্টওয়্যার তৈরি করি (একটি ব্যাংকিং সিস্টেম, একটি বিদ্যুৎ মনিটরিং সিস্টেম, একটি টিকিট বিক্রয় ব্যবস্থা ইত্যাদি), তখন আমরা লক্ষ্য করি এমন একটি সফ্টওয়্যার তৈরি করা যা এই ধরনের সিস্টেমের কার্যকারিতা এবং প্রয়োজনীয়তার অনুকরণ করে।
আমরা কেবল এটিকে উইং করতে পারি না এবং এটিকে কাউবয় স্টাইলে কোড করতে পারি না । আমাদের কিছু ধরণের আর্কিটেকচার দরকার। এটি বিশেষত সত্য যদি প্রকল্পের কয়েক ডজন প্রকৌশলী প্রয়োজন হয়, যদি আরও না হয়।
এই বিষয়গুলি আমাকে বিস্মিত করে এবং আমাকে প্রচুর কষ্ট দেয়।
ঠিক আছে। শেখা বা শেখানো এটি সহজ বিষয় নয়, প্রচুর অনুশীলন ছাড়াই নয়।
আমি কীভাবে আমার প্রোগ্রাম এবং সিস্টেমগুলিকে "স্থপতি" করব তা স্থির করার চেষ্টা করে ঘন্টা এবং ঘন্টা ব্যয় করি। উদাহরণস্বরূপ, আমি কি এই যুক্তিটিকে 1 বা 2 শ্রেণিতে বিভক্ত করি, আমি কীভাবে ক্লাসের নাম রাখি, আমি কি এই ব্যক্তিগত বা জনসাধারণকে তৈরি করব, ইত্যাদি These এই ধরণের প্রশ্নগুলি আমার বেশিরভাগ সময় নেয় এবং এটি আমাকে ব্যাপকভাবে হতাশ করে। আমি কেবল প্রোগ্রামটি তৈরি করতে চাই, আর্কিটেকচারটি জঘন্য করা হবে।
দুর্ভাগ্যক্রমে, এটি কোনও সফ্টওয়্যার আর্কিটেকচার নয়।
এটি এমনকি ডিজাইন নয়, তবে কেবল কোডিং। আমি এই পোস্টের নীচে কিছু পরামর্শ সরবরাহ করব।
আমি কীভাবে আর্কিটেকচার পর্যায়ে এবং কোডিং এবং ডিবাগিং পর্বে যাচ্ছি যা আমি উপভোগ করতে পারব কীভাবে ?
এর উত্তর দেওয়ার উপায় খুঁজে পেতে আমার খুব কষ্ট হচ্ছে, কারণ এটি বরং সংবেদনশীল।
আমরা কি কোনও কাজ করার চেষ্টা করছি, বা আমরা কেবল অনুশীলন উপভোগ করার চেষ্টা করছি? এটি দুর্দান্ত যখন উভয়ই এক এবং একই, তবে বাস্তব জীবনে অনেক সময় তারা হয় না।
আমরা উপভোগ করা জিনিসগুলি করা দুর্দান্ত, তবে আমাদের মতো জটিল একটি পেশায় আমরা কী উপভোগ করি তার দিকে মনোনিবেশ করা, এটি একটি ফলপ্রসূ কেরিয়ারের পক্ষে পরিবাহী নয়।
আপনি অগ্রগতি করবেন না, আপনি পরিপক্ক বা নতুন জ্ঞান অর্জন করতে পারবেন না।
সেনাবাহিনীতে এই কথা আছে, "স্তন্যপান আলিঙ্গন করুন।"
অন্য বাক্যাংশ একই পরামর্শ আছে। "এটি যদি স্তন্যপান না করে তবে এটির মূল্য হবে না" এবং আমার প্রিয়, "যদি এটি স্তন্যপান করে (এবং এটি গুরুত্বপূর্ণ), এটি স্তন্যপান বন্ধ না করা পর্যন্ত এটি করুন" "
আমার সুপারিশ:
আমার কাছে মনে হচ্ছে আপনি এখনও পার্থক্য বোঝার জন্য সংগ্রাম করছেন
কোডিং (কীভাবে আপনার ক্লাসগুলি, মডিউলগুলি কী কোড করবেন না, নামকরণের কনভেনশন, অ্যাক্সেস ভিজিবিলিটি, স্কোপ ইত্যাদি),
ডিজাইন (কতগুলি স্তর, সম্মুখ-প্রান্ত / ব্যাক-এন্ড / ডিবি, প্রতিটি কীভাবে যোগাযোগ করে, কোথায় যায়) এবং সহজ সিস্টেমগুলির নকশা থেকে উদ্ভূত আর্কিটেকচারের সিদ্ধান্তগুলি,
আর্কিটেকচার (জটিল সিস্টেমে যেমন হাজার হাজার লোকের প্রয়োজন হয়, তবে কয়েক হাজার মানুষ-ঘন্টা নয়))
সুতরাং আমি আপনাকে পরবর্তী স্তরে নিয়ে যাওয়ার জন্য প্রথম সাবজেক্টের (কোডিং) গভীরভাবে গভীরতা অবলম্বন করার পরামর্শ দেব।
সাফ কোড
রবার্ট "আঙ্কেল বব" মার্টিনের "ক্লিন কোড" শুরু করার জন্য ভাল জায়গা।
সফটওয়্যার সংহতি
অতিরিক্তভাবে, আমি পরামর্শ দিচ্ছি যে আপনি একটি নির্দিষ্ট অবজেক্ট-ওরিয়েন্টড সফটওয়্যার মেট্রিক যার নাম LCOM বা বরং LCOM4 রয়েছে with
এটি বরং গাণিতিক পেতে পারে এবং এটি বুলেট-প্রুফ নয়, তবে আপনার লক্ষ্যটি বোধগম্যভাবে বোঝা এবং সনাক্ত করতে হবে (বা চোখের বল যদি আপনি চান) যদি কোনও শ্রেণি সংযুক্ত থাকে বা যদি এর মধ্যে সংযুক্তি না থাকে।
http://www.aivosto.com/project/help/pm-oo-cohesion.html#LCOM4
https://www.computing.dcu.ie/~renaat/ca421/LCOM.html
সফ্টওয়্যার নীতিমালা
এটি "একক দায়িত্বের নীতি" বা এসআরওয়াইয়ের সাথে ঘনিষ্ঠভাবে সম্পর্কিত যা আমাদের সকলের সাথে পরিচিত হওয়া উচিত। এসআরওয়াই হ'ল 5 "সলিড" এর মধ্যে একটি যা আমাদের কোডিংয়ে দক্ষ হতে গেলে আমাদের সবার সাথে পরিচিত হওয়া দরকার।
আমরা যেমন সলিড নীতিগুলির মধ্য দিয়ে চলেছি, আমাদের "জিআরএসপি" নীতিগুলির সাথেও নিজেকে পরিচিত করতে হবে , যা পরিচালনা করে বা বরং আমরা কীভাবে ক্লাসগুলিকে কোড করি তা গাইড করে।
অতিরিক্ত বই
শেষ অবধি, আমি নিম্নলিখিতগুলিও পরামর্শ দেব:
এটির সাহায্যে কোডিং এবং ডিজাইন কীভাবে শুরু করা যায় এবং অনুশীলন সহ, সফ্টওয়্যার আর্কিটেকচারে স্থানান্তর এবং মাস্টার করার জন্য আপনার ভাল উপলব্ধি পাওয়া উচিত।
আমি নিশ্চিত যে আরও এমন পেশাদাররা থাকবেন যারা এই পরামর্শগুলিতে যুক্ত, বিয়োগ বা আপত্তি করবেন। তারা সম্ভবত অন্যান্য অভিজ্ঞতার সাথে বৈধতাযুক্ত অন্যান্য পরামর্শ নিয়ে আসবে।
আমি কেবল এটিই বলতে পারি - কোনও শর্টকাট নেই।
শুভকামনা.