مشكلة هندسة البرمجيات

عندي اعتراض كبير علي كون اعتبار صناعة السوفتوير بتدور حوالين الاجايل و الباجز و البيزنس و كل ده (و ده مش اعتراض فردي).. مع تفريغ الصناعة من محتواها التصميم و الهندسي بالفعل.. حتي كل الطرق المينستريم لتصميم السوفتوير كلها بتدور حوالين البيزنس مش العلم و التصميم الهندسي بالفعل..

شغلنا كل يوم من اول الاركتشر لحد التستنج كله متعلق و حوالين البيزنس.. كل كتب السوفتوير انجنيرنج الكبيرة كلها كلام مبهم و empirical مش مبني علي نماذج موثوق فيها.

لا خلاف علي ان لازم كله يخدم عالبيزنس، كل المجالات كده، لكن بسبب ان مفيش نظرية واضحة لتطوير السوفتوير لحد دلوقتي، زي ما فيه نظرية للالكترونكس و الاتصالات و الماكينات و كل ده.

فيه مشكلتنا ان مفيش decoupling بين البيزنس و العلم، لدرجة ان بقي كل مشكلة بيزنس جديدة بيطلعلها تكنولوجي جديدة، لازم نعرف ان السوفتوير مش مشكلة ادارة، هو مشكلة تقنية و ليها حلول هندسية بالفعل.

مهما عملنا test cases و اركتشر و ديزاين و كل ده، طول ما مفيش تمسك بنظرية رياضية واضحة للتصميم زي ما بيحصل في كل المجالات الهندسية و العلمية التانية.. ده سبب ان لحد دلوقتي بيحصل كل مشاكل السوفتوير و الtechnical debt و اننا نرمي كل حاجة عالبروجكت مانجمنت مش التصميم الفعلي

طب هل الناس متعرفش ده و لسا جديد عليهم ؟

اطلاقا، لكن المشكلة في الmainstream engineers اللي موجهين من البيزنس، ناحية ان اهم حاجة السكرام و جيرا و و و و..الخ

في حركة كبيرة بقالها عدة سنين لتغيير الكلام ده، بدأت في اول القرن ده، و سعيد اني شخصيا اكتشفتها يعني اخر سنتين، لأن تفكيري اتغير تماما بسبب ده.

الحركة دي هي استخدام النماذج الرياضية و استحداث نظرية متكاملة لتصميم السوفتوير، و فيها فريقين : – فريق بيقولك احنا من الاول نبني بالنماذج (و دول انا بحبهم اكتر) Correct by design
– فريق بيقولك كملوا زي ما انتوا بس هنرمي الكلام كله عالverification process عشان منخسرش سنين من التطور في الصنعة (و ليس الصناعة – دول عمليين اكتر بس مش متوقع ان الموضوع هيعمل تغيير جذري)
هتسألني ليه الصناعة شغالة رغم البلاوي دي يا استاذ؟ هقولك لأن احنا مسنودين علي شغل سنين من الtheoritical computer science ، ساندة لغات البرمجة اللي احنا شغالين بيها.. لكن حاليا احنا بنجيب الليميت ده، الصناعة مش مواكبة تماما للريسرش اللي حاصل
– لغات البرمجة في عالم الريسرش سابقة الصناعة بكتير.. حتي اعتى اللغات الصناعية و اكثرها تشددا تعتبر زي هاسكل و elm و nim، بعيدة شوية عن الاكشن اللي حاصل في الريسرش look up : adga, idris

– طرق تصميم السوفتوير في الريسرش مختلفة تماما عن الDDD و الMicroservices و كل الاكشن ده.. و بالمناسبة اللي يتابع الشركات الكبيرة هيلاقيها دلوقتي بتدوس في الطرق دي look up : homotopy type theory, categorty theory, proof engineering, formal methods ،dependent types، complex systems, denotational design

الفكرة كلها، ان كل التكنولوجيز الحالية هي مجرد syntax او representation لكن الحقيقة و اللي بيحصل فعلا ان كلها بتترجم لsemantics واحدة، مستنية اللي يكتشفها بالكامل.

فيه مجالات جديدة بتقوم بالطرق دي خلاص في السوفتوير، اشهر مثالين عليهم الكوانتم كمبيوتنج و الماشين ليرننج، و ان كان لسا مفتقدين لنظرية شاملة للديب ليرننج برضه لحد دلوقتي.

اللغات الimperative زمنها بيخلص و الجديد كله للحاجات اللي ليها expression power عالية.. في نفس الوقت تكون قادرة تتمثل رياضيا، و كلنا بنعول هنا علي الfunctional programming عموما

الparadigm الجديد محتاج عشان يقوم : – لغة visual للتعبير، مش زي الuml و الerd لأن ده مجرد ترجمة بيزنس، بنتكلم في حاجة بقوة الstring diagrams او اقوى، ممكن نستلف حاجة من بتوع الفيزيا عادي هما شطار في ده

– محتاجين basic blocks للسوفتوير زي ما فيه مقاومة و مكثف ليهم نماذج رياضية كده، و ده بتحققه النظريات الجديدة حاليا

– محتاجين طريقة للproof والcorrectness و ده هيتحقق لما اللغات يبقي جواها proof checking اصلا (زي agda) او يكون الكود قابل للاثبات باستخدام proof assistant (زي isabelle, coq)

تلك النظرية الجديدة اللي الناس بتحاول تعملها، هتبقي في منتهي الطبيعية و الجمال لدرجة انها هتلم السنين اللي فاتت كلها في نظرية واحدة محترمة زي ما كلود شانون عمل كده في الاتصالات.. السباق دلوقتي في مين هيوصل للنظرية دي الاول

احنا النهاردة كلنا في شغلنا بنعمل الطريقة اللي انا معتبرها تسليك للدنيا دي، و بنعملها بسبب قيود سواء ديدلاين او فينانشال او ان لسا مش كتير متعلمين الطرق الجديدة، لكن يوما ما انا مقتنع، و مش بعيد، هنقدر يبقي المين ستريم في تصميم السوفتوير و ساعتها فعلا هنقدر نصمم نظم بشغل مختلف تماما عن دلوقتي.

ارجع و اقولك ان اشهر مثال علي الفرق بين التسليك و بين النماذج الرياضية، انك تبص علي مستوي الداتابيز دلوقتي و مستوي باقي السوفتوير جنبها، الداتابيز دلوقتي قوية عشان الناس انتهت بالفعل من توصيفها رياضيا، و انصح الجميع انه يبص علي شغل David I. Spivak بشكل عام.. الراجل رائد في المجال يعني.

في ناس كتير انصح الناس تتابعهم لو حد مهتم، هما اللي شايلين الموضوع علي اكتافهم حاليا، موجودين (و لكن ليس حصرا) في : – Topos Institute – USA – Mathematically Structured Programming Group – UK – Programming Languages, Formal Methods, and Software Engineering group – USA

و الشركات الكبيرة، تحديدا جوجل و ميكروسوفت، بيرعوا الكلام ده بشدة الفترة دي.

الهدف في نظري اني اقدر احسب و اصمم و اتآكد ان السوفتوير هيشتغل منغير ما انفذه اصلا، زي ما بيحصل في الهاردوير مثلا دلوقتي بالحسابات.. الموضوع مش خيال علمي لأن فيه لغات بتسمح بده فعلا دلوقتي.. لكنها لسا موصلتش للصناعة.

اطمح يوما ما اني اكون بساهم في ده as a long term research goal، بس لسا بدري يعني، فور ناو اقدر اقول ان عالاقل الحاجات دي موجودة و بنحاول نتعلمها See less

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

Blog at WordPress.com.

Up ↑

Create your website with WordPress.com
Get started
%d bloggers like this: