একটি অতিশয় সফ্টওয়্যার বাড়ে এমন কারণগুলি কী কী? [বন্ধ]


9

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

এবং সত্যি বলতে কি আমি এর কারণ দেখতে পাচ্ছি না ?! যদিও ক্রিয়েটিভ, আইএমএইচও, দুর্বল মানের সফ্টওয়্যার তৈরি করার জন্য এক নিখুঁত প্রথম স্থান বিজয়ী যা কখনই কাজ করে না, ব্লাট সমস্যাটি তাদের একচেটিয়া নয়।

ক্যানন ডিজিটাল ক্যামেরা ড্রাইভার সহ পিসিতে প্রায় 10 ক্যানন এন্ট্রি থাকবে যা সব ধরণের সংযোগের সাথে সংযুক্ত রয়েছে। ভিজ্যুয়াল স্টুডিওও একটি প্রধান উদাহরণ, এখানে প্রায় 50 বা তার বেশি ইনস্টল করার জন্য এন্ট্রি রয়েছে, এবং কেবল জিনিসটি কেবল সঠিকভাবে স্থাপনের মাধ্যমেই মেরামত করা সম্ভব। এবং একবার যখন আমি ভিএস 2 কে 8 থেকে ভিএস 2 কে 8 এস 1 বা কোনও কিছুতে আপগ্রেড করছিলাম তখন এটি পুরো ওএস ইনস্টলটি নষ্ট করতে সক্ষম হয়েছিল। এটি হিসাবে দেখা যাচ্ছে যে 300 গিগাবাইট প্যাচের জন্য 5 গিগাবাইট খালি জায়গা যথেষ্ট ছিল না ...

সুতরাং এটি সত্যিই একটি বিস্তৃত সমস্যা বলে মনে হচ্ছে। আজকাল প্রায় প্রতিটি অ্যাপ্লিকেশনটিতে সাধারণত আনপ্যাকার থাকে, একাধিক স্পাইওয়ারিশ "বন্ধু" থাকে যা ইনস্টল করা আছে, ড্রাইভাররা সাধারণত প্রিন্টার সহ সমস্ত কিছুর জন্য প্রায় 600Mb এর কাছাকাছি থাকে।

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

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

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


4
বৈশিষ্ট্য স্খলন। কোনও নতুন বৈশিষ্ট্য নেই, বিকাশকারীদের কিছু করার নেই।
রবার্ট হার্ভে

2
"দুর্বল মানের সফ্টওয়্যার তৈরি করার জন্য নিখুঁত 1 ম স্থান বিজয়ী যা কখনই কাজ করে না" - অবশ্যই আপনি স্যামসাং কিস কখনও ব্যবহার করেন নি ;-)
ডিন হার্ডিং

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

2
এই প্রশ্নটি ফোলা সম্পর্কে নয়, বরং সফ্টওয়্যারটি ইনস্টল এবং আনইনস্টল করার সমস্যা সম্পর্কে বলে মনে হচ্ছে।
ডেভিড থর্নলি

2
খারাপ সাইট পরিচালনা ও আর্কিটেকচার।
পল

উত্তর:


2

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

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


10

কৌশল লেটার চতুর্থ জোয়েলের উদ্ধৃতি দিতে : ব্লাটওয়্যার এবং 80/20 মিথ :

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

পুরানো "80/20" বিধি দ্বারা প্রচুর সফ্টওয়্যার বিকাশকারী প্ররোচিত হয়। এটি অনেকটা বোধগম্য বলে মনে হচ্ছে : 80% লোক 20% বৈশিষ্ট্য ব্যবহার করে। সুতরাং আপনি নিজেকে বোঝান যে আপনার কেবলমাত্র 20% বৈশিষ্ট্য প্রয়োগ করতে হবে এবং আপনি এখনও 80% অনুলিপি বিক্রি করতে পারেন।

দুর্ভাগ্যক্রমে, এটি কখনও একই 20% নয়। প্রত্যেকে আলাদা আলাদা বৈশিষ্ট্য ব্যবহার করে। [...]

আপনি যখন মার্কেটিং আপনার "Lite" পণ্য শুরু, এবং আপনি মানুষ বলতে, "হেই, এটা লাইট, শুধুমাত্র 1MB," তারা খুব খুশি হতে থাকে, এরপর তারা তোমাদের জিজ্ঞাসা যদি এটা আছে তাদের গুরুত্বপূর্ণ বৈশিষ্ট্য, এবং এটা যাতে না করে, তারা আপনার পণ্য কিনতে না।


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

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

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

1
চর্বিহীন উন্নয়ন সাতটি নীতি দ্বারা সংক্ষিপ্ত করা যেতে পারে: 1 বর্জন করুন 2 প্রশস্ত শেখার 3 যতটা সম্ভব 5 শক্তিশালি যত দ্রুত প্রয়াত সম্ভব 4 বিতরণ সিদ্ধান্ত নিন অপচয় 7 দেখুন পুরো দলের 6 বিল্ড অখণ্ডতা en.wikipedia.org/wiki/Lean_software_development
শুধু আপনি

4

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

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

সাম্প্রতিক অবধি, একটি ইনস্টলার সিস্টেম যা আমি পূর্ববর্তী প্রতিটি একা। নেট সংস্করণটি ব্যবহার করে সর্বশেষতম সংস্করণ স্থাপন করতে সক্ষম হওয়া দরকার, যার অর্থ নেট .1, 2, 2.5 এবং 3 এর জন্য কোনও .NET 3.5 অ্যাপ্লিকেশন ইনস্টলেশন বাইনারিগুলির প্রয়োজন required ৩.৫ এর শীর্ষে। এই ক্ষেত্রে, কেবল ইনস্টলারটি ফুলে যায়।

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


এটি লিনাক্স প্ল্যাটফর্মে বিশেষত খারাপ। উইন্ডোজ প্ল্যাটফর্মে বিরক্তিকর, তবে লিনাক্স ভিত্তিক প্রকল্পগুলিতে কাজ করার সময় আমাকে চুল ছিঁড়ে ফেলা করে!
ব্রায়ান নোব্লাচ

2
এটি উইন্ডোজ প্ল্যাটফর্মে বিশেষত খারাপ। লিনাক্স প্ল্যাটফর্মে বিরক্তিকর, তবে উইন্ডোজ ভিত্তিক প্রকল্পগুলিতে কাজ করার সময় আমার চুল ছিঁড়ে ফেলা করে!
পল

কমপক্ষে লিনাক্সে আপনি কেবল অ্যাপটি-গেট বা ইয়াম চালাতে পারেন এবং সমস্ত ডিপগুলি সংক্ষেপে ইনস্টল করা হয়। উইন্ডোজ ... প্রায় এত সহজ না।
gbjbaanb

2

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

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


2
  • "এক্স করার জন্য আমাদের কিছু দরকার Let's আসুন আমরা লাইব্রেরিটি ব্যবহার করি $ বিগফ্যাটলিবিডিএসআইএনডিফোরসোমেন্থিংগেলস, কারণ আমি এটি একটি অন্য প্রকল্পে ব্যবহার করেছি"
  • "আমি মনে করি আমাদের আর এই কোড অংশের দরকার নেই, তবে কিছুই যাতে না ভেঙে যায় তা নিশ্চিত করার জন্য, কেবল এটি রাখুন"
  • পর্যাপ্ত ইউনিট পরীক্ষা বা না, যা বাড়ে
  • কোনও রিফ্যাক্টরিং নেই
  • কোনও ট্র্যাকিং নেই, যেখানে কয়েক বছর ধরে সেটিংস সংরক্ষণ করা হয়েছে, তাই এখন সেটিংস সর্বত্র রয়েছে
  • ...

1

এটি একটি দুষ্টচক্র যেখানে হতাশার চক্রের প্রত্যেককে দোষ দেওয়া যায় । হতাশার একটি চক্র নিম্নলিখিত পদক্ষেপ নিয়ে গঠিত:

  1. ব্যবসায়ীরা ফোলা বৈশিষ্ট্যগুলির জন্য জিজ্ঞাসা করে।
  2. বিকাশকারীরা ফোলা বৈশিষ্ট্যগুলি কার্যকর করে যদিও তারা জানে যে তাদের উচিত নয়।
  3. গ্রাহকরা বিকাশযুক্ত বৈশিষ্ট্যগুলির জন্য অর্থ প্রদান করেন যদিও তারা কেবল পণ্যটি চান তবে বোকা বৈশিষ্ট্যটি নয়।
  4. ব্যবসায়ীরা বিশ্বাস করেন যে গ্রাহকরা স্ফীত বৈশিষ্ট্যগুলি চান।
  5. এক ধাপে যান এবং পুনরাবৃত্তি করুন।

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


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

0

এটি অবিরামভাবে অলসতা, এটিই ফুলে যাওয়ার কারণ। (বা এই বিষয়টির চূড়ান্ত নিবন্ধের মতো কাদা, মাটির বড় বল )

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

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

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

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