# شركة برمجيات

شركة البرمجيات هي عبارة عن شركة منتجاتها الأساسية أشكال مختلفة من البرمجيات وتكنولوجيا البرمجيات وتقسيم وتطوير منتجات البرمجيات. وهي تمثّل صناعة البرمجيات.

## الأنواع

يوجد عدد من الأنواع المختلفة لشركات البرمجيات:
* شركات كبيرة ومعروفة تنتج برمجيات تجارية جاهزة ويرمز لها بالاختصار (COTS) مثل شركة مايكروسوفت وساب إس إي ويرمز لها بـ SAP AG وشركة أوراكل وشركة هيوليت باكارد ويرمز لها بـ HP وشركة أدوبي وشركة ريد هات.
* شركات أصغر تنتج برامج مخصصة للشركات الأخرى ولرواد الأعمال مثل شركة ريكسوف.
* شركات منتجة متخصصة بالبرمجيات التجارية الجاهزة (COTS) مثل برمجيات بانوراما وشركة هايبرون وأنظمة سيبيل وغاز إت وشركة إنيجما للتكنولوجيات.
* شركات تنتج البرمجيات كخدمة ويرمز لها بـ SaaS مثل شركة غوغل وفيسبوك ولينكد إن.
* شركات منتجة لبرامج الطرف الثالث المساعدة مثل مطور إكسبرس وشركة دانداس وكومبوننت ون وشركة سون للبرمجيات.
* شركة تقديم خدمات تطبيقية مثل شركة سيلس فورس.
* شركات تنتج برامج مخصصة حسب الطلب للصناعات العامودية أو مناطق جغرافية معينة.
وكل تلك الشركات يمكن تصنيفها في واحد أو أكثر مما يلي:
* تعاقدية: أي عندما تتعاقد مع شركة برمجيات لتسليم بعض البرامج الخاصة من الخارج (وذلك بالاستعانة بمصادر خارجية للبرمجيات).
* تطوير منتج: وذلك عندما تنتج برمجية جاهزة للاستخدام، برمجيات محزمة أو برمجيات تجارية جاهزة.

## الأدوار الأساسية في شركة البرمجيات

تنظيم شركة برمجيات هو نوع متخصص جدًا من المهارات الإدارية، حيث يمكن للأشخاص ذوي الخبرة تحويل المشكلة التنظيمية إلى فائدة فريدة. على سبيل المثال، قد يسمح بوجود فرق فرعية في مناطق زمنية مختلفة بالعمل في شركة تعمل على مدار 24 ساعة، إذا كانت الفرق والأنظمة والإجراءات راسخة بشكل جيد. ومن الأمثلة الجيدة على ذلك فريق اختبار في منطقة زمنية متقدمًا أو متأخرًا 8 ساعات عن فريق التطوير الذي يصلح الأخطاء الموجودة في البرمجيات التي عثر عليها المختبرون.
تتكون شركة البرمجيات الاحترافية عادة من ثلاثة فرق فرعية مخصصة على الأقل:
* محللو الأعمال الذين يحددون احتياجات العمل للسوق.
* مطورو البرمجيات الذين يحددون المواصفات التقنية ويكتبون البرمجيات.
* مختبرو البرمجيات مسؤولون عن العملية الكاملة لإدارة الجودة.
يُوظف في الشركات البرمجية الكبرى تخصص أكبر، إذ يكون هناك أيضًا:
* كتّاب فنيون يكتبون جميع الوثائق البرمجية مثل أدلة المستخدم.
* متخصصون مسؤولون عن بناء المنتج بأكمله وإصدار برمجيات.
* مصممو تجارب المستخدم الذين ينشئون بنية التصميم استنادًا إلى متطلبات العمل وأبحاث المستخدم والخبرة في قابليتها الاستخدام.
* مصممو غرافيك مسؤولون عادةً عن تصميم واجهة المستخدم الرسومية.
* مهندسو صيانة في نهاية اثنين أو ثلاثة أو أكثر من خطوط الدعم.
* مستشارون مسؤولون عن اتخاذ الحلول التشغيلية وخاصة إذا كانت بعض المعرفة المتخصصة ضرورية. ومن الأمثلة على ذلك:
* إنشاء مكعبات متعددة الأبعاد (مصفوفة بيانات متعددة الأبعاد) في برمجيات تحليل بيانات الأعمال مع التكامل مع الحلول الحالية وتنفيذ سيناريوهات الأعمال في برامج إدارة العمليات التجارية.
* تعاونت شركة أليجن في سبتمبر من عام 2017 مع شركات البرمجيات لتوسيع خيارات التحكم في الوصول الإلكتروني.

## الهيكلية

يسمى مدير شركة البرمجيات عادةً برئيس التطوير ويرمز له بـ (HOD) ويقدم تقاريره لأصحاب المصلحة. ويقود الفرق الفرعية مباشرةً أو عن طريق القادة استنادًا إلى حجم المنظمة. وعادة ما تكون الفرق التي يصل عدد الأفراد فيها إلى 10 أشخاص هي الأكثر تشغيلًا. يوجد في المؤسسات الأكبر حجمًا نموذجان للتسلسل الهرمي:
تعمل جميع الفرق بشكل منفصل في المشروعات المختلفة فهي مستقلة تمامًا والهيكل بسيط جدًا ويقدم جميع الموظفين تقاريرهم إلى شخص واحد، وهذا ما يجعل الوضع واضحًا تمامًا ولكنه ليس حلًا جيدًا من حيث تبادل المعرفة والاستخدام الأمثل للموارد البشرية.
ويوجد في هذا النموذج قادة مخصصون لكل تخصص رئيسي، يوكلون لموظفيهم مشاريع معينة يقودها مديرو المنتجات/ المشاريع، الذين يستأجرون الناس رسميًا أو بشكل غير رسمي ويدفعون أجورهم مقابل وقتهم. يؤدي ذلك إلى وجود مديرين لكل موظف خاص - مدير المنتج/المشروع ومدير (المورد) المتخصص. فمن ناحية، فإنه يحسن استخدام الموارد البشرية، ومن ناحية أخرى قد يؤدي إلى نشوء صراعات حول أي مدير له الأولوية في الهيكل.
وهناك أيضًا عدد من أشكال هذه الهياكل، كما أن عددًا من المنظمات لديها هذا الهيكل الذي قد انتشر وتقسم داخل مختلف الإدارات والوحدات.

## المنهجيات

قد تستخدم شركات البرمجيات عددًا من المنهجيات المختلفة لإنتاج الكود. ويمكن أن تشمل ما يلي:
* نموذج الشلال، بما في ذلك منهجيات إدارة المشاريع مثل برنس 2 والدليل المعرفي لإدارة المشاريع المعروف برمز PMBoK.
* تطوير البرمجيات السريعة مثل البرمجة القصوى وسكرم (منهجية تطوير البرمجيات).
وهناك أيضًا بعض المنهجيات التي تجمع بين الاثنين، مثل النموذج اللولبي، أو العملية الموحدة لراشيونال والتي يرمز لها بـ (RUP) أو أُطر حلول مايكروسوفت والتي يرمز لها بـ MSF.

## دورة حياة المنتج

بغض النظر عن المنهجية المستخدمة، تتكون دورة حياة المنتج دائمًا من ثلاث مراحل على الأقل:
* التصميم؛ بما في ذلك كل من الأعمال والمواصفات الفنية.
* الترميز؛ التنمية نفسها.
* الاختبار؛ إدارة الجودة.
تستغرق كل مرحلة بشكل مثالي 30% من إجمالي الوقت، مع الاحتفاظ بنسبة 10% المتبقية في الاحتياطي. وقد يبدو الرسم التخطيطي التسلسلي للغة النمذجة الموحدة التي يرمز لها بـ UML للتفاعل بين هذه المجموعات كما يلي:
في كل مرحلة تلعب مجموعة مختلفة دورًا أساسيًا، ولكن يجب شراك كل نوع من الأدوار ضمن عملية التطوير بأكملها:
* يدير المحللون بعد إتمام مواصفات العمل حالة العمل المتغيرة للحد من احتمالات التغيير بمرور الوقت. كما يدعم كل من المبرمجين والمختبرين عملية التطوير بأكملها لضمان تلبية المنتج النهائي لاحتياجات العمل المحددة في البداية. ومن الناحية المثالية، تضع العملية محللي الأعمال كأطراف فاعلة رئيسية أثناء التسليم النهائي للحل للعميل، إذ يكونون في أفضل وضع لتوفير أفضل مستوى للعمل.
* يقوم المبرمجون بالمواصفات الفنية أثناء مرحلة التصميم، ولهذا السبب يدعونهم بـ المبرمجين/ المصممين، وأثناء فترة الاختبار يصلحون الأخطاء.
* يكمل المختبرون سيناريوهات الاختبار خلال مرحلة التصميم، ويقيمونها أثناء عملية الترميز.

## الأنظمة والإجراءات

تمتلك شركات البرمجيات المدارة بشكل جيد العديد من الأنظمة والإجراءات التي تنفذ وتعمل داخليًا في جميع الفرق الفرعية. وتشمل ما يلي:

### محللو الأعمال

* أدوات نمذجة مثل مهندسي تصميم أنظمة سبراكس وشركة آي بي إم راشيونال روز.

### مبرمجون

* أنظمة التحكم في الإصدار وإجراءات تعيين إصدار البرنامج.
* أدوات تحليل الشيفرة وقواعد التعليمات البرمجية، يتحقق من صحتها يدويًا أو تلقائيًا.
* آليات النشر.

### المختبرون

* أنظمة متابعة الأخطاء.
* أدوات تشغيل الاختبارات تلقائيًا.
* أدوات اختبار الأداء والضغط.

### مديرو المشروع/ المنتج

* إجراءات وأنظمة إدارة المشاريع في المؤسسة (EPM).
* إدارة مجموعة المنتجات (PPM) التي تسوقها الشركة.
* إجراءات وأنظمة إدارة التغيير.
ويوجد أيضًا (إدارة دورة حياة التطبيقات) (ALM)، التي تضم بعض هذه الوظائف في حزمة واحدة وتُستخدم عبر المجموعات. وتُستلم من موردين مختلفين مثل شركة بورلاند للبرمجيات أو شركة إدارة محتوى الشركات ECM أو شركة كومبووير.

## مراجعات كفاءة الاستخدام

عادة ما تمتلك شركات البرمجيات الراسخة وسيلة ما لقياس كفاءتها. ويتم ذلك عادةً من خلال تحديد مجموعة مؤشرات الأداء الرئيسية التي يرمز لها بـ (KPI) مثل:
* متوسط عدد الأخطاء التي قام بها المطور لكل وحدة زمنية أو عدد أسطر الشيفرة البرمجية.
* عدد الأخطاء التي عثر عليها جهاز الاختبار في كل دورة اختبار.
* متوسط عدد دورات الاختبار حتى تأرجح تعداد الأخطاء حول الصفر (ZBB).
* متوسط وقت دورة الاختبار.
* الوقت المقدّر للمهمة مقارنة مع الحقيقي للمهمة (دقة التخطيط).
* عدد التصحيحات على الخط الأساسي.
تركز عدد من المؤسسات على الوصول إلى المستوى الأمثل لنموذج نضج القدرة (CMM)، حيث لا يعني بالضرورة أن يكون (الأمثل) أعلى مستوى. وهناك أيضًا أنظمة أخرى مثل SEMA في جامعة كارنيجي ميلون، أو معايير آيزو الخاصة (المنظمة الدولية للمعايير).
تستخدم شركات البرمجيات الصغيرة أحيانًا أساليب أقل رسمية. وكل منظمة تعمل على نفس النمط، والذي يكمن في مكان ما بين التكنوقراطية الكلية (حيث يُعرف كل شيء بالأرقام) والفوضى الكاملة (حيث لا توجد أرقام على الإطلاق). ومهما كانت طريقة عمل المنظمة، فإنها تُعتبر الهرم الذي يصف تكلفة ومخاطر إدخال التغيير على عمليات التطوير التي بدأت بالفعل.