مهندسی نرم‌افزار بر پایه مؤلفه
تعریف پیکرپار

کلمه Component به معنی جزء و پیکرپار است و به صورت تخصصی در علوم رایانه با همان نام خود کامپاننت یا پیکرپار شناخته می‌شود. یک پیکرپار به تنهایی یک بسته نرم‌افزاری، یا یک ماژول (تک‌پاره) است، مانند محفظه‌ای که شامل مجموعه‌ای از توابع یا داده‌های مرتبط می‌شود.
همه فرایندهای سیستم در داخل پیکرپارهای مجزا قرار می‌گیرند به‌طوری‌که تمام داده‌ها و توابع در داخل هر یک از پیکرپارها از نظر مفهوم با یکدیگر ارتباط دارند (به همین ترتیب محتویات کلاس‌ها با هم مرتبط هستند). به همین دلیل است که معمولاً کامپاننت‌ها یا همان پیکرپارها ماژولار (تک‌پاره‌گون) و منسجم هستند. با توجه به اساس هماهنگی کل سیستم، پیکرپارها از طریق واسط‌ها (Interfaces) با یکدیگر ارتباط برقرار می‌کنند. زمانی که یک پیکرپار سرویسی را به دیگر اجزای سیستم ارائه می‌دهد، یک واسط (Interface) مخصوص ارائه آن خدمات و سرویس‌ها مهیا می‌کند که می‌تواند توسط پیکرپارهای دیگر بکارگرفته شود. این رابط (Interface) می‌تواند به صورت یک امضاء از پیکرپار دیده شود. سرویس گیرنده برای استفاده از آن خدمات نیازی نیست که در مورد فعالیت‌های درونی پیکرپار (در هنگام پیاده‌سازی یا implementation) اطلاعی داشته باشد. برای همین موضوع گفته می‌شود که پیکرپارها کپسول شده (encapsulated) هستند. در تصویرهای UML موجود در این مقاله واسط (Interface)های تعریف شده به وسیله خطوطی به شکل آبنبات چوبی (lollipop) به لبه‌های بیرونی پیکرپارهای دیگر متصل شده‌اند.
به هر حال زمانی که یک پیکرپار احتیاج به استفاده پیکرپار دیگری در داخل یکی از تابع هایش(Function) دارد، باید از واسطی (Interface) که مخصوص استفاده از آن سرویس‌هایی که نیاز دارد، استفاده کند.
یکی از ویژگی‌های مهم دیگر پیکرپارها قابل تعویض بودن آن‌ها (substitutable) است، به این صورت که یک پیکرپار می‌تواند توسط پیکرپار دیگری جایگزین بشود (در زمان طراحی یا زمان اجرا) البته اگر نیازهای ابتدایی پیکرپار (که به وسیله واسط‌ها یا Interfaces بیان شده‌است) توسط پیکرپار جایگزین تامیین بشود. به این ترتیب پیکرپارها می‌توانند جایگزین یکدیگر بشوند یا با نسخه‌های جدیدترشان بروز شوند یا مثلاً با یک پیکرپار دومی جایگزین بشوند، بدون اینکه لحظه‌ای سیستمی که پیکرپار در آن عمل می‌کند از کار بیفتد.
همانند یک قاعده سرانگشتی می‌توان گفت که برای مهندسی جایگزینی پیکرپارها، پیکرپار B می‌تواند بلافاصله جایگزین پیکرپار A شود، اگر که پیکرپار B حداقل‌های پیکرپار A را مهیا کند، و اینکه بیش از چیزهایی (از قبیل داده‌های ورودی) که پیکرپار A استفاده می‌کرد برای انجام عمل خود از مورد اضافه دیگری استفاده نکند.
پیکرپارهای سازنده یک نرم‌افزار غالباً به صورت اشیاء یا مجموعه‌هایی از اشیاء (در برنامه‌نویسی شیء گرا یا Object-Oriented Porgramming)، در برخی موارد به شکل کدهای باینری یا دودویی یا به صورت متون، که در این صورت به یک زبان توصیفی میانی یا Interface Description Language نیاز دارند به این ترتیب ممکن است پیکرپارها به صورت خودکار از پیکرپارهای دیگر م. جود در رایانه به وجود بیایند.
زمانی که یک پیکرپار در دسترس است ویا اینکه در تمام بستر اجرایی یا در شبکه به اشتراک گذاشته شده‌است تکنیک‌هایی مانند تسلسل (Serialization) یا ترتیبی (Marshalling) بکار گرفته می‌شوند تا پیکرپارها بتوانند به هدف نهایی خود برسند و فعالیت مورد نظر را انجام دهند.
بازمصرفی (Reusability) یک ویژگی مهم از بالا بودن کیفیت پیکرپارهای نرم‌افزاری است. یک پیکرپار نرم‌افزاری باید به صورتی طراحی و پیاده‌سازی بشود که بتوان از آن در برنامه‌های مختلف به تعداد زیاد مجدداً استفاده کرد و به زبان معمول باید چندبار مصرف باشد.
این که بتوانید پیکرپارهای بازمصرف (Reusable) درست کنید نیاز به تلاش‌های قابل توجه و داشتن اطلاعات کافی برای نوشتن یک پیکرپار دارد. پیکرپارها برای استفاده به موارد زیر نیاز دارند:
کاملاً مستند شده باشند.
کاملاً تست شوند.
قوی باشند (Robust)، با چک کردن اعتبار ورودی‌هایی که به آن داده می‌شود.
قادر به برگرداندن پیام خطا یا کدها باشند.
با آگاهی به این که از آن برای موارد پیش‌بینی نشده‌استفاده خواهد شد، طراحی شده باشد.
Clemens Szyperski و David Messerschmitt ۵ شرط‌های زیر را برای یک پیکرپار نرم‌افزاری تعیین می‌کنند:
چندین کاره بودن
دارا نبودن یک زمینه خاص
قابل نوشتن با بقیه پیکرپارها
مخفی شده مثلاً کامپیوتری که داده‌ها را ارسال می‌کند مشخص نباشد
یک واحد مستقل استقرای و نسخه‌ای
به عبارتی ساده‌تر یک پیکرپار چیزی است که به صورت خاص نوشته شده باشد و مهم هم نیست که چه خصوصیاتی داشته باشد.
در دهه ۱۹۶۰ ما کتابخانه‌های زیر روال را بنا کردیم که در مهندسی آنتن‌سازی و کاربردهای علمی مورد استفاده قرار می‌گرفته‌است.
در این کتابخانه‌ها الگوریتم‌های پیشرفته به صورت مؤثر استفاده می‌شده‌است ولی قلمرو محدودی از کاربردها داشت. امروزه پیکرپارهای چندبار مصرفی هم مراحل و هم اطلاعات را شامل می‌شوند. این عمل مهندس نرم‌افزار را قادر به ساخت کاربردهای جدید از قسمت‌های دوباره استفاده شده می‌کند.
پیکرپارهای نرم‌افزاری از زبان‌های برنامه‌نویسی که دارای لغات محدود، گرامر صریح و قانون‌های ترکیب و معناشناسی می‌باشند تشکیل می‌شود. در پایین‌ترین سطح، زبان ساختار سخت‌افزار را منعکس می‌کند. در سطح متوسط یا میانی، یک زبان برنامه‌نویسی مثل سی یا اسمال تاک برای ساخت شرح رویه برنامه استفاده می‌شود؛ و در بالاترین سطح زبان از نمادهای گرافیکی یا نشان‌های دیگر برای ارائه نیاز برای راه حل استفاده می‌کند. اینجا ساختارهای اجرائی خود به خود به وجود می‌آیند.
وقتی یک برنامه‌نویس خوب برنامه قابل نگهداری، با اسناد برنامه می‌نویسد. یک ماشین می‌تواند یک استفاده عالی از حافظه و سرعت بالا در اجرا را بدهد؛ ولی زبان متوسط برنامه‌نویس و برنامه را وابسته به ماشین می‌کند. این‌ها زبان‌های روندی می‌باشند. در زبان‌های غیر روندی یک برنامه با مشخص کردن نتیجه احتیاج به دست یابی به آن را داراست. نرم‌افزار پشتیبانی این خصوصیات را به کدهای قابل اجرا در ماشین تبدیل می‌کند.
این بر مبنای تئوری‌های اشیای نرم‌افزار، معماری نرم‌افزار، استخوان بندی نرم‌افزار و الگوهای طراحی و تئوری‌های برنامه‌نویسی شیءگرا و برنامه‌نویسی طراحانه آن ساخته شده‌است. این ادعا می‌کند که پیکرپارهای نرم‌افزاری مثل نظر پیکرپارهای سخت‌افزاری برای مثال در مخابرات می‌تواند در نهایت مورد استفاده قرار بگیرد.