Các công ty sản xuất các thành phần phần mềm, chẳng hạn như Developer Express, Dundas, ElementOne và Sohn Software
Nhà cung cấp dịch vụ ứng dụng như Salesforce
Các công ty sản xuất phần mềm bespoke cho các ngành dọc hoặc các khu vực địa lý cụ thể
Tất cả có thể được phân loại theo một hoặc nhiều điều sau đây: Lỗi chú thích: Thẻ mở <ref> bị hỏng hoặc có tên sai
hợp đồng - khi công ty phần mềm được ký hợp đồng cung cấp một số phần mềm cụ thể từ bên ngoài (gia công phần mềm)
phát triển sản phẩm - khi nó sản xuất sẵn sàng để sử dụng, phần mềm đóng gói; Phân phối thương mại
Vai trò phổ biến trong công ty phần mềm
Tổ chức một công ty phần mềm là loại kỹ năng quản lý rất chuyên biệt, nơi những người có kinh nghiệm có thể biến vấn đề tổ chức thành một lợi ích duy nhất. Ví dụ: có các nhóm phụ trải đều ở các múi giờ khác nhau có thể cho phép một ngày làm việc của công ty 24 giờ, nếu các nhóm, hệ thống và quy trình được thiết lập tốt. Một ví dụ điển hình là nhóm thử nghiệm ở múi giờ 8 giờ trước hoặc sau nhóm phát triển, người đã sửa các lỗi phần mềm được tìm thấy bởi những tester.
Một công ty phần mềm chuyên nghiệp thường bao gồm ít nhất ba nhóm phụ chuyên dụng:
Các nhà phân tích kinh doanh xác định nhu cầu kinh doanh của thị trường
Trong các công ty phần mềm lớn hơn, chuyên môn hóa lớn hơn được sử dụng và thường cũng có:
Technical writers viết tất cả các tài liệu như hướng dẫn sử dụng
Các chuyên gia phát hành chịu trách nhiệm xây dựng toàn bộ phiên bản sản phẩm và phần mềm
Nhà thiết kế trải nghiệm người dùng, những người đang tạo ra kiến trúc thiết kế dựa trên yêu cầu kinh doanh, nghiên cứu người dùng và chuyên môn về khả năng sử dụng
Các kỹ sư bảo trì đứng sau hai, ba hoặc nhiều dòng hỗ trợ
Tư vấn chịu trách nhiệm làm cho giải pháp hoạt động, đặc biệt là nếu một số kiến thức chuyên môn là cần thiết. Ví dụ về điều này bao gồm: xây dựng các khối đa chiều trong phần mềm thông minh kinh doanh, tích hợp với các giải pháp hiện có và triển khai các kịch bản kinh doanh trong phần mềm Quản lý quy trình nghiệp vụ.
Vào tháng 9 năm 2017, Allegion đã hợp tác với Software House để mở rộng các tùy chọn kiểm soát truy cập điện tử.[3]
Cấu trúc
Người quản lý của một công ty phần mềm thường được gọi là Trưởng phòng Phát triển (HOD),[4] và báo cáo cho các bên liên quan. Người đó trực tiếp lãnh đạo các nhóm phụ hoặc thông qua người quản lý/lãnh đạo tùy thuộc vào quy mô của tổ chức. Thông thường các đội có tối đa 10 người là những người hoạt động nhiều nhất. Trong các tổ chức lớn hơn, nói chung có hai mô hình phân cấp:
Tất cả các đội hoàn toàn độc lập và họ làm việc riêng trên các dự án khác nhau. Cấu trúc khá đơn giản và tất cả các nhân viên báo cáo cho một người, điều làm cho tình hình khá rõ ràng tuy nhiên nó không phải là một giải pháp tốt về trao đổi kiến thức và sử dụng tối ưu nguồn nhân lực.
Trong mô hình này, có những người quản lý / lãnh đạo tận tâm cho từng chuyên môn chính, "thuê" người của họ cho các dự án cụ thể do người quản lý sản phẩm / dự án dẫn đầu, họ chính thức hoặc không chính thức thuê người và trả tiền cho thời gian của họ. Điều này dẫn đến mỗi nhân viên tư nhân có hai ông chủ - người quản lý sản phẩm / dự án và người quản lý "tài nguyên" chuyên ngành. Một mặt, nó tối ưu hóa việc sử dụng nguồn nhân lực, mặt khác nó có thể làm phát sinh mâu thuẫn về việc một người quản lý được ưu tiên trong cấu trúc.
Ngoài ra còn có một số biến thể của các cấu trúc này, và một số tổ chức có cấu trúc này lan rộng và phân chia trong các phòng ban và đơn vị khác nhau.
Phương pháp
Công ty phần mềm có thể sử dụng một số phương pháp khác nhau để tạo mã. Chúng có thể bao gồm:
Ngoài ra còn có một số phương pháp kết hợp cả hai, như mô hình xoắn ốc, Quy trình hợp nhất (RUP)[9] hoặc MSF.[10]
Vòng đời sản phẩm
Bất kể phương pháp nào được sử dụng, vòng đời sản phẩm luôn bao gồm ít nhất ba giai đoạn:
Thiết kế - bao gồm cả đặc điểm kỹ thuật và kinh doanh
Mã hóa - sự phát triển của chính nó
Kiểm tra - quản lý chất lượng
Mỗi giai đoạn lý tưởng chiếm 30% tổng thời gian, với 10% còn lại trong dự trữ.
Sơ đồ trình tự tương tác UML giữa các nhóm này có thể trông như sau:
Ở mỗi giai đoạn, một nhóm khác nhau đóng vai trò chính, tuy nhiên mỗi loại vai trò phải tham gia trong toàn bộ quá trình phát triển:
Các nhà phân tích, sau khi hoàn thành các đặc điểm kỹ thuật kinh doanh, quản lý tình hình kinh doanh thay đổi để giảm thiểu khả năng thay đổi theo thời gian. Họ cũng hỗ trợ cả lập trình viên và người thử nghiệm trong toàn bộ quá trình phát triển để đảm bảo rằng sản phẩm cuối cùng đáp ứng nhu cầu kinh doanh được chỉ định khi bắt đầu. Quá trình này lý tưởng đặt các nhà phân tích kinh doanh là những người chơi chính trong quá trình cung cấp giải pháp cuối cùng cho khách hàng, vì họ được đặt tốt nhất để cung cấp lớp kinh doanh tốt nhất.
Các lập trình viên thực hiện các đặc tả kỹ thuật trong giai đoạn thiết kế, đó là lý do tại sao họ được gọi là lập trình viên/nhà thiết kế và trong thời gian thử nghiệm họ sửa các lỗi.
Người kiểm thử hoàn thành các kịch bản thử nghiệm trong giai đoạn thiết kế và đánh giá chúng trong giai đoạn mã hóa
Hệ thống và thủ tục
Các nhà phần mềm chạy tốt sở hữu các hệ thống và quy trình khác nhau được triển khai và làm việc nội bộ trên tất cả các nhóm phụ. Bao gồm các:
Chuyên viên phân tích kinh doanh
Các công cụ mô hình hóa như Sparx Systems Enterprise Architect hoặc IBM Rational Rose
Lập trình viên
Hệ thống kiểm soát phiên bản và quy trình phiên bản phần mềm
Các công cụ phân tích mã và tiêu chuẩn mã hóa, được xác thực bằng tay hoặc tự động
Các hệ thống và thủ tục Quản lý dự án doanh nghiệp (EPM)
Quản lý danh mục sản phẩm (PPM)
Thay đổi hệ thống quản lý và thủ tục
Ngoài ra còn có Quản lý vòng đời ứng dụng (ALM), nhúng một số chức năng này trong một gói và được sử dụng trên các nhóm. Chúng được phân phối từ nhiều nhà cung cấp khác nhau như Borland, ECM hoặc Compuware.
Kiểm toán hiệu quả
Các công ty phần mềm được thiết lập tốt thường có một số cách đo lường hiệu quả của chính họ. Điều này thường được thực hiện bằng cách xác định bộ chỉ số hiệu suất chính (KPI), chẳng hạn như
Số lỗi trung bình được thực hiện bởi nhà phát triển trên mỗi đơn vị thời gian hoặc dòng lệnh
Số lượng lỗi được tìm thấy bởi người kiểm tra trên mỗi chu kỳ kiểm tra
Thời gian dự kiến của nhiệm vụ so với thời gian thực của nhiệm vụ (tính chính xác của kế hoạch)
Số lần sửa lỗi cho đường cơ sở
Một số tổ chức tập trung vào việc đạt đến mức tối ưu của Mô hình trưởng thành khả năng (CMM), trong đó "tối ưu" không nhất thiết có nghĩa là cao nhất. Ngoài ra còn có các hệ thống khác như SEMA của Đại học Carnegie-Mellon, hoặc hoặc các chuẩn ISO đặc biệt. Công ty phần mềm nhỏ đôi khi sẽ sử dụng các phương pháp ít chính thức hơn. Mỗi tổ chức thực hiện phong cách riêng của mình, nằm ở đâu đó giữa tổng công nghệ (nơi tất cả được xác định bằng số) và tổng vô chính phủ (nơi không có số nào cả). Dù tổ chức đi theo hướng nào, họ đều xem xét kim tự tháp mô tả chi phí và rủi ro khi đưa ra thay đổi cho các quy trình phát triển đã bắt đầu: