الصناعة | |
---|---|
المنتجات |
شركة البرمجيات هي عبارة عن شركة منتجاتها الأساسية أشكال مختلفة من البرمجيات وتكنولوجيا البرمجيات وتقسيم وتطوير منتجات البرمجيات.[1] وهي تمثّل صناعة البرمجيات.
يوجد عدد من الأنواع المختلفة لشركات البرمجيات:
وكل تلك الشركات يمكن تصنيفها في واحد أو أكثر مما يلي:[2]
تنظيم شركة برمجيات هو نوع متخصص جدًا من المهارات الإدارية، حيث يمكن للأشخاص ذوي الخبرة تحويل المشكلة التنظيمية إلى فائدة فريدة. على سبيل المثال، قد يسمح بوجود فرق فرعية في مناطق زمنية مختلفة بالعمل في شركة تعمل على مدار 24 ساعة، إذا كانت الفرق والأنظمة والإجراءات راسخة بشكل جيد. ومن الأمثلة الجيدة على ذلك فريق اختبار في منطقة زمنية متقدمًا أو متأخرًا 8 ساعات عن فريق التطوير الذي يصلح الأخطاء الموجودة في البرمجيات التي عثر عليها المختبرون.
تتكون شركة البرمجيات الاحترافية عادة من ثلاثة فرق فرعية مخصصة على الأقل:
يُوظف في الشركات البرمجية الكبرى تخصص أكبر، إذ يكون هناك أيضًا:
يسمى مدير شركة البرمجيات عادةً برئيس التطوير ويرمز له بـ (HOD)[4] ويقدم تقاريره لأصحاب المصلحة. ويقود الفرق الفرعية مباشرةً أو عن طريق القادة استنادًا إلى حجم المنظمة. وعادة ما تكون الفرق التي يصل عدد الأفراد فيها إلى 10 أشخاص هي الأكثر تشغيلًا. يوجد في المؤسسات الأكبر حجمًا نموذجان للتسلسل الهرمي:
تعمل جميع الفرق بشكل منفصل في المشروعات المختلفة فهي مستقلة تمامًا والهيكل بسيط جدًا ويقدم جميع الموظفين تقاريرهم إلى شخص واحد، وهذا ما يجعل الوضع واضحًا تمامًا ولكنه ليس حلًا جيدًا من حيث تبادل المعرفة والاستخدام الأمثل للموارد البشرية.
ويوجد في هذا النموذج قادة مخصصون لكل تخصص رئيسي، يوكلون لموظفيهم مشاريع معينة يقودها مديرو المنتجات/ المشاريع، الذين يستأجرون الناس رسميًا أو بشكل غير رسمي ويدفعون أجورهم مقابل وقتهم. يؤدي ذلك إلى وجود مديرين لكل موظف خاص - مدير المنتج/المشروع ومدير (المورد) المتخصص. فمن ناحية، فإنه يحسن استخدام الموارد البشرية، ومن ناحية أخرى قد يؤدي إلى نشوء صراعات حول أي مدير له الأولوية في الهيكل.
وهناك أيضًا عدد من أشكال هذه الهياكل، كما أن عددًا من المنظمات لديها هذا الهيكل الذي قد انتشر وتقسم داخل مختلف الإدارات والوحدات.
قد تستخدم شركات البرمجيات عددًا من المنهجيات المختلفة لإنتاج الكود. ويمكن أن تشمل ما يلي:
وهناك أيضًا بعض المنهجيات التي تجمع بين الاثنين، مثل النموذج اللولبي، أو العملية الموحدة لراشيونال والتي يرمز لها بـ (RUP)[9] أو أُطر حلول مايكروسوفت والتي يرمز لها بـ MSF.[10]
بغض النظر عن المنهجية المستخدمة، تتكون دورة حياة المنتج دائمًا من ثلاث مراحل على الأقل:
تستغرق كل مرحلة بشكل مثالي 30% من إجمالي الوقت، مع الاحتفاظ بنسبة 10% المتبقية في الاحتياطي. وقد يبدو الرسم التخطيطي التسلسلي للغة النمذجة الموحدة التي يرمز لها بـ UML للتفاعل بين هذه المجموعات كما يلي:
في كل مرحلة تلعب مجموعة مختلفة دورًا أساسيًا، ولكن يجب شراك كل نوع من الأدوار ضمن عملية التطوير بأكملها:
تمتلك شركات البرمجيات المدارة بشكل جيد العديد من الأنظمة والإجراءات التي تنفذ وتعمل داخليًا في جميع الفرق الفرعية. وتشمل ما يلي:
ويوجد أيضًا (إدارة دورة حياة التطبيقات) (ALM)، التي تضم بعض هذه الوظائف في حزمة واحدة وتُستخدم عبر المجموعات. وتُستلم من موردين مختلفين مثل شركة بورلاند للبرمجيات أو شركة إدارة محتوى الشركات ECM أو شركة كومبووير.
عادة ما تمتلك شركات البرمجيات الراسخة وسيلة ما لقياس كفاءتها. ويتم ذلك عادةً من خلال تحديد مجموعة مؤشرات الأداء الرئيسية التي يرمز لها بـ (KPI) مثل:
تركز عدد من المؤسسات على الوصول إلى المستوى الأمثل لنموذج نضج القدرة (CMM)، حيث لا يعني بالضرورة أن يكون (الأمثل) أعلى مستوى. وهناك أيضًا أنظمة أخرى مثل SEMA في جامعة كارنيجي ميلون، أو معايير آيزو الخاصة (المنظمة الدولية للمعايير).
تستخدم شركات البرمجيات الصغيرة أحيانًا أساليب أقل رسمية. وكل منظمة تعمل على نفس النمط، والذي يكمن في مكان ما بين التكنوقراطية الكلية (حيث يُعرف كل شيء بالأرقام) والفوضى الكاملة (حيث لا توجد أرقام على الإطلاق). ومهما كانت طريقة عمل المنظمة، فإنها تُعتبر الهرم الذي يصف تكلفة ومخاطر إدخال التغيير على عمليات التطوير التي بدأت بالفعل.