دوره کیفیت نرم افزار

18 views
Skip to first unread message

Sadegh Aliakbary

unread,
Oct 17, 2018, 10:37:10 AM10/17/18
to asta-development-list
با سلام

ما در حال برنامه ریزی برای یک دوره آموزشی «کیفیت نرم افزار» هستیم. امیدواریم که بتوانیم این دوره را هم مثل دوره «آموزش جاوا» به شکل ویدیویی مدون و منتشر کنیم (انشاءالله).

آماده سازی چنین دوره ای بسیار زمانگیر و پرزحمت خواهد بود. به همین خاطر میخواهیم محتاطانه مطمئن شویم که این دوره به درد جامعه تولیدکنندگان نرم افزار میخورد و به درستی تنظیم شده است. در قدم اول میخواهیم مطمئن شویم که هدفگذاری و برنامه ریزی درستی کرده ایم. از شما خواهش میکنیم در این زمینه به ما مشورت بدهید.

هدف این دوره: آشنایی برنامه نویسان با مفاهیم و مهارتهایی که کمکشان میکند نرم افزارهای باکیفیت تری تولید کنند.
پیشنیاز دوره: آشنایی مناسب با برنامه نویسی جاوا
ساختار (قالب) دوره: مشابه فیلمهای آموزشی جاواکاپ، شامل: 1- تدریس 2- مرور یک یا چند تمرین در فیلم آموزشی 3- پیشنهاد چند تمرین بعد از تماشای فیلم آموزشی.
رمان دوره: مجموعاً حدود 20 ساعت.
برنامه دوره:
- Unit Testing (JUnit)
- Mock Objects (JMockit, Mocking Best Practices)
- Refactoring (Bad Smells & Refactoring Techniques)
- Static Code Analysis (Tools, SonarQube)
- Build Automation (Ant, Maven)
- Continuous Integration (GitLab, Version Mgmt, Brnaching, Code Review, ...)
- Log (SLF4J, Log Levels, Best Practices)
Load Testing (Patterns and Best Practices, JMeter)
Monitoring and Profiling (Thread dump, thread pool, JMX, JVisualVM)
- Data Modeling (Conceptual Data Modeling, Data Modeling Patterns)
- Design Patterns (Overview of some important patterns, Design Rules)



حال خواهش میکنم نظر خود را درباره برنامه ای که برای این دوره طراحی کرده ایم بفرمایید. به خصوص، آیا موارد فوق را برای یک دوره فشرده (حدوداً بیست ساعته) مناسب میدانید؟ موردی هست که پیشنهاد کنید کم یا زیاد کنیم؟ پیشنهادی در این زمینه دارید که مد نظر قرار دهیم؟ 

بیصبرانه منتظر شنیدن نظرات شما عزیزان هستیم. 
اگر فرد متخصصی را میشناسید که احتمالاً شنیدن نظر وی در این مرحله به ما کمک میکند، ممنون میشوم که سؤال و درخواست مشورت ما را به ایشان فوروارد کنید.
امیدواریم با کمک و راهنمایی شما، دوره خوب و مفیدی آماده شود.
خدا خیرتان دهاد.

Saeid Moradi

unread,
Oct 18, 2018, 3:01:10 AM10/18/18
to ASTA Dev Google List
سلام بر دکتر صادق

قسمت اول: ابراز ارادت
دکتر جان خیلی ارادت داریم، و نشت و برخاست با شما محبتی برای من بوده و هست.
شاید به شما نگفتم، ولی یاد شما همیشه باعث لبخند و حس خوب برای من میشود و از این بابت خیلی سپاس‌گزارم :۰)

قسمت دوم: ابراز نظر و بازخورد
مجموعه انتخابی شما بسیار وسیع، مرتبط و در راستای بهبود کیفیت نرم‌افزار می‌باشد، و ارائه آن در مدت زمان حدودا ۲۰ ساعت خیلی سخت به نظر می‌رسد، و در صورت میسر شدن جای تقدیر و تشکر دارد.

به نظر من در صورت امکان مقداری به 
Ubiquitous language [1]
هم اشاره کنید.
این جمله از کتاب
Domain Driven Design (Blue book)
من را ویران کرد!:
با استفاده از این روش[1]، برنامه نویس با خواندن سورس برنامه، نسبت به آن دومین(حوزه) دانش کسب می‌کند.

یکی از مشکلات پرشمار در برنامه های موجود، نامگذاری اسم کلاس و متود می‌باشد، که به توصیه کتاب بالا، بهتر است نامگذاری بر طبق زبان مورد استفاده
Domain expert
باشد.

همین، من هم امیدوارم این حرکت‌‌ شما باعث بشه ما در آینده برنامه‌های با کیفیت‌تری را ببینیم.


--
--
You received this message because you are subscribed to the Google
Groups "ASTA Development List" group.
To post to this group, send email to
asta-devel...@googlegroups.com
To unsubscribe from this group, send email to
asta-development...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/asta-development-list?hl=en
or
http://www.asta.ir
---
You received this message because you are subscribed to the Google Groups "ASTA Development List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to asta-development...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Seyyed Jamaleddin Pishvayi

unread,
Oct 18, 2018, 5:49:46 AM10/18/18
to asta-devel...@googlegroups.com
بسم الله الرحمن الرحیم
سلام صادق جان
خدا به شما و آقا مجتبی خیر بدهاد. 
  1. من هم با نظر سعید موافقم. پرداختن به Domain Driven Design می تونه کمک مهمی به طراحی بکند. 
  2. قبول دارم باید این دوره یا حداقل بخشهایی از آن حتماً مبتنی بر یک زبان برنامه نویسی خاص ارائه بشود ولی به نظرم بهتر است بخشهایی را حتی الامکان مستقل از زبان برنامه نویسی ارائه کنیم. 
  3. شاید بهتر باشد Git Workflow مستقل از Continuous Integration ارائه بشود. 
  4. خوب است راجع به ملزومات محیط production و ساز و کارهای release management برای تحویل آرتیفکتهای قابل نصب به آن محیط و نقش مخازنی همچون nexus یا docker repository در آن صحبت بشود. 
ارادتمند
سید جمال




Hamzeh Motahari

unread,
Oct 19, 2018, 2:05:08 AM10/19/18
to asta-devel...@googlegroups.com
به نام خدا

سلام

راست‌ش من عناوینی که فهرست شده است را خیلی پسندیدم ولی همین که می‌خوندم می‌آمدم پایین حس کردم تو 20 ساعت احتمالا جا نشود. یعنی در حدی که بخواهد واقعا به کار بسته شود.
مگر اینکه هدف بیشتر معرفی باشد و توقع این باشد که مخاطب خودش پی ماجرا را بگیرد و بیشتر بخواند.

شاید هم بد نباشد که این مقدمه را بروید و سپس برای هر فصل، یا عر چندتا سرفصل، جداگانه مطالب عمیق‌تر تولید نمایید.

مخلص
حمزه

Mostafa Mahdieh

unread,
Oct 27, 2018, 10:07:20 AM10/27/18
to asta-devel...@googlegroups.com
عرض سلام و ارادت خدمت‌ی همه‌ی بزرگواران این گروه

یک موضوعی هست که میشه بهش گفت «برنامه‌نویسی مرتب» که قبلا خودم نیاز به آموزشش رو خیلی حس کرده بودم و به نظرم اگر این دوره برای برنامه‌نویس‌های شرکت‌ها قرار باشه که بکار گرفته بشه، می‌تونه این موضوع اضافه بشه. منظورم از «برنامه‌نویسی مرتب» همون تمیز کد زدن در اصطلاح برنامه‌نویس‌ها هست. این موضوع در نگاه اول خیلی مهم نمیاد اما در تجربه دیده شده که رعایت نکردنش می‌تونه خیلی مضر باشه. چیزی که به من بهش رسیدم اینه که بعضی برنامه‌نویس‌ها بدون دیدن آموزش در این زمینه ممکنه خیلی دیر به بلوغ در این مورد برسند. کتاب Clean Code نوشته شده توسط Robert C Martin به همین موضوع می‌پردازه. در ادامه ایمیلی که به یک نفر در خصوص کلاس آموزشی مبتنی بر این کتاب زدم رو آوردم:

کل کتاب ۱۷ فصله. تقریبا از فصل ۱۰-۱۱ به بعد وارد مباحث تخصصی‌تری که بیشتر مهندسی نرم‌افزاریه میشه.

به نظر من فصل‌های ضروری‌تر این‌هاست 😀:   

- فصل ۱: فلسفه و ایجاد انگیزه (کد تمیز و کد کثیف چیند، نتایج کثیف کد زدن، ...)
- فصل ۲: نام‌گذاری مناسب
- فصل ۳: توابع
- فصل ۴: کامنت‌گذاری
- فصل ۶: داده‌ساختارها: با یه مقدار کمک از منابع دیگه و به صورت گلچین شده
- فصل ۷: مدیریت خطاها
- فصل ۹: تمیز تست کردن
- فصل ۱۰: کلاس‌های مناسب

بجز این کتاب هم منابع زیادی هست که میشه برای بهتر کردن و گلچین کردن مطلب استفاده کرد. مثلا راهنماهای Google code style .
در این‌ها نکات خیلی خوبی هست. همچنین نکات اولیه‌ی منابعی مثل منبع زیر:

این چهار فیلم هم مربوط به یک نفر در Google Tech Talk هست و مباحثش هم خیلی جالب و یمقدار تخصصی‌تره:
https://www.youtube.com/playlist?list=PLED6CA927B41FF5BD

جالبه که عنوان جلساتش هم «Clean code talks» هست.

به نظرم این جلسات خیلی بهتره که کارگاهی برگزار بشه که خوابشون نبره و مهارت آموخته بشه!
Mostafa Mahdieh

Mehran Heidarzadeh

unread,
Nov 2, 2018, 8:49:17 PM11/2/18
to asta-devel...@googlegroups.com
 سلام صادق جان

خدا قوت!

بحث کیفیت نرم‌افزار شد، گفتم، به قول همشهریای ما، دو زار نظر بدم.
عرض شود که... در مورد یونیت تست، بعد از سال‌ها پارو زدن، چیزی که بهش رسیدم اینه که بیش از این که خود یونیت تست مهم باشه، نوشتنش هم‌زمان یا نزدیک به زمانی که کد اصلی نوشته می‌شه مهمه. خیلی وقتا خوب نوشتن کد راحت‌تر از mock کردن تمام تعامل‌ها در یک کد با coupling بالاست. باعث می‌شه که کیفیت کد اصلی از لحاظ ساختار کد و Coupling و Cohesion بهبود پیدا کنه. خیلی هم به طراحی interface کد کمک می‌کنه.
یکی از pattern هایی که خیلی اخیرا بهش علاقمند شدم، Functional Core, Reactive Shellه. یه نگاهی بهش بندازید:

مخلص
مهران









--
Reply all
Reply to author
Forward
0 new messages