۱ مقدمه ۱
۲ خط تولید نرمافزار ۳
۲-۱ محدودهی خط تولید ۶
۲-۲ معماری خط تولید ۸
۲-۲-۱ تشخیص نقاط تغییر ۹
۲-۲-۲ پشتیبانی از نقاط تغییر ۱۰
۲-۲-۳ ارزیابی معماری یک خط تولید ۱۳
۲-۳ چه چیز ساختن خط تولید نرمافزار را مشکل میکند؟ ۱۴
۳ معماری خانوادهی نرمافزار خط تولید ERROR! BOOKMARK NOT DEFINED.
۳-۱ سکوی پیادهسازی ۱۷
۳-۲ لایههای سیستم ۱۸
۳-۲-۱ لایه داده ۱۹
۳-۲-۱-۱ تکنولوژی مورد استفاده ۱۹
۳-۲-۱-۲ ساختار کلاسها ۲۱
۳-۲-۲ لایه منطق کاری ۲۵
۳-۲-۲-۱ تکنولوژی مورد استفاده ۲۸
۳-۲-۲-۲ ساختار کلاسها ۲۹
۳-۲-۳ لایه میانای کاربری ۳۰
۳-۲-۳-۱ تکنولوژی مورد استفاده ۳۰
۳-۲-۳-۲ ساختار صفحات ۳۳
۳-۲-۳-۳ ساختار کلاسها ۶۶
۳-۳ دغدغههای معماری ۶۹
۳-۳-۱ قابلیت نگهداری ۷۰
۳-۳-۲ قابلیت تولید مجدد کد ۷۱
۳-۳-۳ امنیت ۷۱
۳-۳-۴ اعتبارسنجی ورودی ۷۲
۳-۳-۵ قابلیت دسترسی آسان در لیستها ۷۴
۳-۳-۶ چند فرهنگی بودن ۷۴
۴ طراحی خط تولید ۷۶
۴-۱ حیطهی کاری ۷۶
۴-۲ مراحل کاری خط تولید ۷۶
۴-۲-۱ طراحی پایگاه داده ۷۶
۴-۲-۲ تولید و بهبود پروندههای نگاشت شیء به رابطه ۷۷
۴-۲-۳ تولید کد لایهی داده ۷۹
۴-۲-۴ ورود اطلاعات مربوط به میانای کاربری ۸۰
۴-۲-۵ تولید کد مربوط به لایههای منطق کاری، و میانای کاربری ۸۴
۴-۲-۶ ورود اطلاعات مربوط به زبان ۸۵
۴-۲-۷ سفارشی سازی منطق کاری و اعتبارسنجی دادهها ۸۵
۴-۲-۸ سفارشی سازی میانای کاربری(اختیاری) ۸۶
۴-۲-۹ ساخت و جایگذاری سیستم ۸۶
۵ پیادهسازی خط تولید ۸۸
۵-۱ تکنولوژیهای مورد استفاده ۸۸
۵-۱-۱ تکنولوژیهای تولید کد ۸۸
۵-۱-۲ تکنولوژیهای میانای کاربری ۸۹
۵-۲ نگهداری اطلاعات مدل ۹۰
۵-۳ روش ساخت ۹۱
۶ جمع بندی ۹۳
۶-۱ مقایسه با چند خط تولید ۹۳
۶-۱-۱ AndroMDA 93
۶-۱-۲ MiddleGen ۹۵
۶-۱-۳ AppFuse 96
۶-۱-۴ مقایسهی کلی ۹۷
۶-۱-۵ نتیجه گیری ۹۹
۶-۲ مطالعهی موردی استفاده از این پروژه ۹۹
۶-۳ کارهای آینده ۱۰۱
۶-۴ نتیجه گیری ۱۰۲
منابع ۱۰۳
فهرست شکلها
صفحه عنوان
شکل۱٫ نمودار وراثت کلاس مربوط به یک شیء مقدار ۲۲
شکل۲٫ نمودار وراثت مربوط به یک شیء دسترسی به داده ۲۵
شکل۳٫ صفحهی student.jsp 34
شکل۴٫ صفحهی student.update.jsp 35
شکل۵٫ انتخاب ستونهای جدول ۳۶
شکل۶٫ جستجوی دانشجویی با مشخصاتِ نامِ «علی» و جنسیتِ «مرد» ۳۷
شکل۷٫ دکمههای صفحهبندی ۳۸
شکل۸٫ نمای قابل چاپ ۳۹
شکل۹٫ صفحهی student.list.jsp 40
شکل۱۰٫ صفحهی studentWrittenBy.listByOther.jsp 41
شکل۱۱٫ صفحهی student.detail.jsp 42
شکل۱۲٫ صفحهی student.listNotRelated.jsp 43
شکل۱۳٫ صفحهی academicalCourse.listNotRelated.jsp 44
شکل۱۴٫ actionGroup 53
شکل۱۵٫ صفحهی student.detail.jsp و نمایش یک InputGroup 55
شکل۱۶٫ صفحهی student.detail.jsp بدون InputPage 56
شکل۱۷٫ صفحهی student.detail.jsp با InputPage 57
شکل۱۸٫ صفحهی variableTime.update.jsp 59
شکل۱۹٫ صفحهی variableTime.update.jsp و صفحهی انتخاب تاریخ ۶۱
شکل۲۰٫ صفحهی contractAppendix.jsp و upload کردن فایل ۶۳
شکل۲۱٫ تیتر صفحه ۶۴
شکل۲۲٫ نمودار وراثت کلاسهای Action 67
شکل۲۳٫ نمودار وراثت فرمها ۶۹
شکل۲۴٫ تولید نگاشت شیء به رابطه توسط Hibernate Synchronizer 78
شکل۲۵٫ تولید کد لایهی داده توسط Hibernate Synchronizer 79
شکل۲۶٫ ورود اطلاعات میانای کاربری ۸۰
شکل۲۷٫ صفحهی اول ورود اطلاعات میانای کاربری ۸۱
شکل۲۸٫ ساخت یک موجودیت ضعیف ۸۲
شکل۲۹٫ صفحهی دوم ورود اطلاعات میانای کاربری ۸۳
شکل۳۰٫ صفحهی تولید کد میانای کاربری و منطق کاری ۸۴
شکل۳۱٫ نمودار وراثت کلاسهای نگهداری اطلاعات مدل ۹۰
شکل۳۲٫ نمودار UML مربوط به مدل یک سیستم در AndroMDA 94
شکل۳۳٫ نشان دادن منطق کاری توسط UML 95
شکل۳۴٫ ابزار MiddleGen: تنظیم روابط بین موجودیتها ۹۶
فهرست کدها
صفحه عنوان
کد۱٫ نمونهی کد options 46
کد۲٫ نمونهی کد lov 47
کد ۳٫ نمونهی tableList در صفحهی student.list.jsp 50
کد ۴٫ نمونهی کد column 50
کد ۵٫ نمونهی کد optionColumn 52
کد ۶٫ نمونهی کد actionGroup 52
کد۷٫ نمونهی کد InputCell 53
کد۸٫ نمونهی کد InputGroup 54
کد۹٫ نمونهی کد InputPage 56
کد۱۰٫ نمونهی کد actionTag 58
کد ۱۱٫ نمونهی کد time 59
کد۱۲٫ نمونهی کد calendar 60
کد۱۳٫ نمونهی کد image 62
کد۱۴٫ نمونهی کد title 64
کد۱۵٫ نمونهی کد relation 65
کد۱۶٫ نمونهی کد button 66
۱ مقدمه
معماری نرمافزار یک سرمایهگذاری بزرگ از زمان و نیروی افراد خبرهی تکنیکی سازمان است. بنابراین طبیعی است اگر بخواهیم مقدار زیادی از این سرمایهگذاری با «استفادهی مجدد» از معماری نرمافزار در سیستمهای مشابه یکدیگر باز گردد. سازمانهایی که پیشرفت قابل ملاحظهای داشتهاند تمایل دارند با معماریهای نرمافزارهای خود همانند داراییهای هوشمند و پرارزش برخورد کنند و میخواهند که با کمک این دارایی سود بیشتری را بهدست آورده و هزینهها را کاهش دهند. این دو هدف یعنی افزایش سود و کاهش هزینه با کمک استفاده مجدد از معماری امکانپذیر است. ساخت یک خط تولید نرمافزار موفق به یک استراتژی هماهنگ در مهندسی نرمافزار، مدیریت تکنولوژی و مدیریت سازمانی نیازمند است.
در این پروژه، یک خط تولید نرمافزار، بر اساس داراییهای نرمافزاری یک شرکت کامپیوتری، پیادهسازی شده است. در قسمتهای مختلف این گزارش به توضیح مراحل مختلف معماری، طراحی و پیادهسازی این خط تولید پرداخته میشود.
در قسمت دوم خط تولید نرمافزار مورد بررسی قرار میگیرد. در این قسمت توضیحات کلی دربارهی خط تولید، مفاهیم مربوط به آن، و همچنین نکات مهم در ساخت یک خط تولید توضیح داده میشود. در قسمت سوم معماری خانوادهی محصولات مورد بررسی قرار میگیرد. در این بخش، سکوی پیادهسازی، لایههای مختلف و ساختار آنها، و دغدغههای موجود در زمان طراحی و ساخت این معماری توضیح داده میشود. در بخش چهارم، طراحی خط تولید مورد بررسی قرار میگیرد. در این بخش مراحل کاری خط تولید و چگونگی کار این مراحل بررسی میشود. در بخش پنجم، پیادهسازی خط تولید، و روشها و نکات مربوط به آن بررسی میشود. در بخش ششم، به جمع بندی کار پرداخته میشود. خط تولید پیادهسازی شده با سه ابزار نسبتاً مشابه مقایسه میشود. همچنین در این بخش، یک مطالعه موردی روی استفاده از این خط تولید در یک پروژهی واقعی انجام میشود. در نهایت کارهای آتی این پروژه بررسی میشود.