Cải tiến qui trình phần mềm?
Cải tiến qui trình phần mềm
Hỏi: Thầy có thể cho lời khuyên về làm sao để thành công trong cải tiến qui trình phần mềm?
Đáp: Bước đầu tiên trong cải tiến qui trình hiệu quả là thay đổi hành vi của người quản lí và người phát triển. Là người kĩ sư phần mềm, bạn có thể hỗ trợ cho thay đổi nhưng thay đổi thực sự chỉ xảy ra khi người quản lí chấp nhận thái độ mới đối với cải tiến.
Vấn đề là làm sao để người phát triển phần mềm làm những điều không liên quan trực tiếp tới việc chuyển giao sản phẩm phần mềm? Đây là vấn đề khó bởi nhiều lí do. Thứ nhất, người phát triển bao giờ cũng bận rộn. Thứ hai, họ có thể không hiểu điều bạn muốn họ làm hay tại sao phải làm. Và thứ ba, họ có thể không tin rằng điều bạn gợi ý sẽ giúp họ trong việc của họ.
Do đó, điều quan trọng nhất là làm cho cấp lãnh đạo hành xử khác đi. Đây là lí do tại sao chúng ta cần giải thích cho cấp lãnh đạo về rủi ro của việc không cải tiến để cho họ có thể nhận ra sự khẩn thiết. Nếu họ sẵn lòng sống với các hậu quả của quá trình hỗn độn và rủi ro, chẳng cái gì sẽ xảy ra.
Đây là vài gợi ý mà bạn có thể thấy có ích:
- 1. Phải chắc rằng cấp quản lí thừa nhận việc cải tiến qui trình là trách nhiệm của họ. Nếu người phát triển không tham gia vào hay hỗ trợ tích cực cho việc cải tiến qui trình, nó sẽ không xảy ra.
- 2. Có được thoả thuận từ cấp quản lí về vài hành động mấu chốt cần thực hiện trước nhất. Tôi gợi ý mỗi lúc làm một thay đổi nhỏ thôi. Đừng cố làm cái gì đó mơ hồ và vô nghĩa như “Lấy CMMI mức 5”. Để tạo ra tiến bộ, bạn cần tập trung vào cái gì đó có ích, thực tế, như giám định phần mềm để loại bỏ lỗi. Hành động này là đo được nếu đầu tiên bạn đặt ra tuyến sở sở. Bạn phải thu thập một số lỗi của việc đưa ra trước đó và số lỗi được tìm thấy trong giám định sản phẩm.
- 3. Bạn cần chắc rằng mọi người đều biết trách nhiệm của mình. Một ý hay là viết tất cả những điều đó ra.
- 4. Thiết lập kế hoạch vận hành, giữ nó đơn giản và có các điểm kiểm (trạng thái tuần) và nhận diện tài nguyên rõ ràng.
- 5. Biểu thị những điều tham gia vào việc làm cho một thay đổi được hoàn thành.
Bạn có thể làm điều này qua báo cáo tiến độ cho cấp quản lí và phải chắc đưa vào lịch biểu và cam kết tài nguyên. Những điều này sẽ giúp mọi người nhận ra cái gì được tham dự vào và nó chiếm bao lâu.
- 6. Làm vì thành công. Đều đặn nhận diện những thành tựu thực, tuyên dương những người có trách nhiệm và công bố thành tựu của họ. Tuy nhiên bạn phải khiêm tốn và vẫn ở ngoài quá trình thừa nhận này, việc của bạn là điều phối cải tiến và làm cho nó xảy ra. Điều này sẽ tạo ra nhiệt tình trong những người phát triển và biểu lộ tiến bộ. Một khi đà này diễn ra, khó mà dừng được nó và bạn sẽ đi vững chắc trên con đường của mình.
- 7. Chìa khoá cho cải tiến qui trình là làm nhiều thay đổi qui trình nhỏ và đơn giản.
Ích lợi chính từ phần lớn những thay đổi tới từ vài hành động. Đừng làm thay đổi lớn, bạn sẽ không thành công đâu. Nhớ câu hỏi “Làm sao ăn được voi?” Đáp: “Bằng nhiều miếng nhỏ”.
- 8. Nhớ cung cấp đủ thông tin để cho mọi người biết điều cần làm và khi nào làm.
Thử điều đó trong dự án nhỏ, lấy phản hồi từ người trong dự án, người dùng qui trình cải tiến rồi tinh lọc nó dựa trên các kết quả. Bạn có thể phải huấn luyện mọi người và chắc chắn phải giúp họ được bắt đầu bởi vì cải tiến là quá trình học hỏi. Bạn sẽ học nhiều từ việc thực hiện hơn là từ lập kế hoạch hay nói về nó. Học từ thực tế chứ đừng từ ý kiến, cho nên trước khi làm cho người khác thay đổi, bạn phải tự thay đổi mình trước.
- 9. Nếu cấp quản lí không phân việc cho người phát triển để làm việc với những nhiệm vụ cải tiến, hãy đi tới quản lí cấp cao và nêu rõ ràng rằng nếu thiếu sự tham dự của người phát triển, việc cải tiến qui trình là phí thời gian và tiền bạc. Với những điều kiện này, hoặc quản lí cấp cao phải tiến bước và giúp đỡ, hoặc bạn sẽ phải tìm việc ở đâu đó khác.
- 10. Nếu quản lí cấp cao từ chối giải quyết vấn đề, họ không thực sự được thuyết phục về nhu cầu cải tiến. Bất kể điều họ nói, bạn cần dừng lại hay ngắt nỗ lực cho tới khi bạn thu được sự chú ý của họ. Đừng phí thời gian của bạn. Ý tưởng là để làm cho người ta thành công nhanh chóng, với dữ liệu cải tiến vững chắc thì phần còn lại sẽ vào cuộc. Hãy nhớ, thay đổi cần thời gian và bạn phải kiên nhẫn.
Qui trình là nhân tố thành công quan trọng cho bất kì doanh nghiệp nào nhưng nó là điều mấu chốt nhất trong phần mềm. Qui trình phần mềm bao gồm các hoạt động, thủ tục, phương pháp, công cụ, mục đích và nguyên tắc hướng dẫn cho các hành vi, và các quyết định của nhóm. Khi mọi người cùng chia sẻ một mục đích chung và tuân theo qui trình, họ có thể làm gia tăng hiệu quả và cơ hội thành công.
Tất cả các tổ chức thành công đều yêu cầu mọi người làm việc đúng và làm đúng việc. Tôi biết nhiều kĩ sư phần mềm làm “việc” đúng bởi vì họ được huấn luyện tuân theo qui trình đã xác định nhưng làm đúng việc thì đòi hỏi hiểu biết về điều khách hàng mong đợi.
Người quản lí dự án phải làm việc cần mẫn để tăng sự tham gia của khách hàng vào các hoạt động phát triển bởi vì thất bại của hầu hết các dự án phần mềm là chỗ sản phẩm không đáp ứng được trông đợi của khách hàng. Để làm giảm bớt vấn đề này, mọi dự án đều phải trải qua các cuộc họp kiểm điểm yêu cầu chính thức bằng việc chuẩn bị bản kiểm điểm tường minh, nhất quán, nhận diện rõ ràng mọi chức năng phải có trong sản phẩm để đáp ứng mong đợi của khách hàng.
Trong pha kiến trúc, người quản lí dự án phải nhận diện các nhân tố chất lượng riêng như an ninh, tính khả dụng, tính mở rộng được, tính khả chuyển, tính tin cậy, và hiệu năng. Bằng việc nhận diện các nhân tố này người quản lí dự án phải nghĩ trước về chúng thay vì chờ đợi cho tới khi hệ thống được chuyển giao cho khách hàng và làm cho họ thất vọng vì một nhu cầu quan trọng chưa bao giờ được thực hiện.
Tại cuối mọi pha phát triển, người quản lí dự án phải tiến hành giám định bằng một nhóm người lấy từ bộ phận đảm bảo chất lượng và một người bên ngoài, người không tham gia đặc biệt vào dự án. Người ngoài có thể là ai đó từ một nhóm phần mềm khác, có khả năng đánh giá phê phán về hiệu năng của dự án từ cảnh quan không thiên lệch. Lỗi được nhận diện trong các cuộc giám định này được ghi lại để có hành động sửa chữa và người quản lí phải kiểm lại để đảm bảo rằng tất cả đều đã được sửa chữa trước khi tiếp tục sang pha sau.
Trong phần mềm, chất lượng rất quan trọng. Thời gian đầu tư cho việc xây dựng sản phẩm có chất lượng cao tốn nhiều hơn thời gian sửa lỗi và hầu hết các khách hàng sẽ sẵn lòng chờ đợi lâu thêm chút ít để có được sản phẩm tốt hơn, giúp họ làm việc đúng đắn, không phí thời gian qua việc hỏng hóc và sửa lỗi.
Sau khi chuyển giao sản phẩm cho khách hàng, phần lớn các công ti cũng sẽ cung cấp dịch vụ bảo trì. Về căn bản, pha bảo trì có thể được phân loại thành bốn loại: sửa chữa (chữa lỗi), hoàn thiện (nâng cao), thích nghi (sửa đổi đáp ứng theo thay đổi môi trường), và hỗ trợ khách hàng. Với việc có sản phẩm chất lượng, công ti có thể làm giảm thời gian cần cho bảo trì sửa chữa và có nhiều thời gian hơn để hỗ trợ cho khách hàng.
Từng giờ không mất cho chữa lỗi là giờ người ta có thể thực hiện cái gì đó mới để giúp khách hàng. Chúng ta càng hỗ trợ cho khách hàng tốt hơn, họ càng thoả mãn hơn và công việc của công ti cũng tốt hơn cho những người làm việc ở đó.
Qui trình là gì?
Một sinh viên viết cho tôi: “Em không hiểu thuật ngữ “Qui trình” và tại sao chúng ta cần tuân theo qui trình trong phát triển phần mềm? Cải tiến liên tục là gì?”
Đáp: Qui trình là một trình tự có tổ chức các hoạt động để hoàn thành cái gì đó. Chẳng hạn: Dự án phần mềm. Trong trường hợp này, dự án là việc áp dụng tài nguyên vào qui trình đó. Tài nguyên là con người, công cụ và kĩ thuật mà bạn áp dụng khi tuân theo qui trình. Thuật ngữ “con người” cũng chỉ ra kĩ năng và kinh nghiệm của thành viên tổ. Trình tự là trật tự theo đó mọi sự được hoàn thành. Thuật ngữ “trật tự” nghĩa là bạn phải tuân theo nó “từng bước một” tương ức theo qui tắc. Chẳng hạn, bạn phải hiểu yêu cầu trước khi bắt đầu thiết kế; chỉ khi thiết kế được hoàn thành thì bạn mới có thể bắt đầu viết mã v.v.
Qui trình được đại diện bởi ba yếu tố: Hiệu quả: Mối quan hệ giữa việc dùng tài nguyên và kết quả được hoàn thành. Thời gian chu kì: “Tốc độ” của qui trình, tức là, thời gian cần để hoàn thành một qui trình. Và Chất lượng: Chất lượng của qui trình như được xác định bởi người dùng như đáp ứng yêu cầu, không có lỗi v.v. Tổ hợp của ba yếu tố này xác định ra năng lực của tổ hay tổ chức. Cải tiến liên tục là việc thay đổi hay nâng cấp từ năng lực mức thấp hơn lên năng lực mức cao hơn.
Không có đào tạo đúng, người phát triển phần mềm sẽ làm bất kì cái gì họ muốn chỉ để làm cho công việc của họ được thực hiện. Vì phát triển phần mềm là hoạt động “làm việc theo tổ”, không phải là hoạt động cá nhân, điều quan trọng là mọi thành viên tổ đều tuân theo những qui tắc nào đó như tuân theo “Qui trình được xác định” cho dự án đó. Người quản lí dự án phải nhận diện “Qui trình được xác định” trong bản kế hoạch dự án và giám sát các hoạt động để đảm bảo rằng các thành viên tổ tuân theo nó để có được kết quả mong muốn như hiệu quả, chất lượng và tốc độ.
Một trong những vấn đề chính trong đào tạo khoa học máy tính là sinh viên có xu hướng làm việc cô lập. Điển hình, từng người được trao cho một vấn đề để giải quyết, một chương trình để viết mã, và từng người được cho điểm tương ứng theo thành tích cá nhân. Khi sinh viên đi làm, từng người sẽ tiếp tục làm bất kì cái gì có thể để làm cho việc làm của họ được thực hiện, giống như khi họ còn trong trường. Không có hiểu biết về làm việc tổ bằng việc tuân theo qui trình, nhiều dự án sẽ không chuyển giao được phần mềm cho khách hàng trong lịch biểu và có chất lượng. Nhiều dự án thường chậm và có chất lượng kém. Chúng thất bại vì thiếu sự phối hợp và làm việc tổ điều cho phép các thành viên tổ làm việc cùng nhau. Chúng thất bại vì một số thành viên vội vàng viết mã mà không thực sự hiểu các yêu cầu. Chúng thất bại vì có quá nhiều thay đổi trong dự án điều thường tới trễ và không có qui trình giải quyết thay đổi. Chúng thất bại vì người quản lí dự án không biết cách lập kế hoạch, tổ chức hay ước lượng thời gian, lịch biểu và nỗ lực được cần để hoàn thành dự án.
Qui trình được xác định là bản lộ trình cho dự án. Nó yêu cầu các thành viên tổ tuân theo “con đường” từng bước một. Từng bước phải có vai trò và trách nhiệm được xác định rõ ràng cho từng thành viên tổ. Khi thay đổi xảy ra, bản lộ trình nhận diện rõ ràng ai làm cái gì để cho tổ có thể làm cho công việc của họ được thực hiện có hiệu quả, chất lượng và đáp ứng lịch biểu dự án (tốc độ).
Tuần trước, một sinh viên nói với tôi: “Phần mềm quá phức tạp và không thể nào loại bỏ mọi lỗi được. Em càng thử phần mềm, càng tìm ra nhiều lỗi hơn, và càng chữa các lỗi đó, lại càng nhiều lỗi xuất hiện thêm”. Tôi hiểu thất vọng của sinh viên này bởi vì không thể nào loại bỏ được các lỗi dựa trên việc kiểm thử.
Tôi làm việc trong công ti hàng không và tôi có thể nói với bạn rằng máy bay là hệ thống phần cứng và phần mềm phức tạp. Mặc dầu không ai có thể chứng minh được rằng máy bay không có khiếm khuyết nhưng công ti chúng tôi nhận trách nhiệm về mọi khiếm khuyết. Tuy nhiên, chúng tôi không dựa vào việc kiểm thử sản phầm để loại bỏ khiếm khuyết bởi vì chúng tôi biết rằng kiểm thử là cách rất tốn kém và không hiệu quả để khử bỏ khiếm khuyết. Chúng tôi tập trung vào tuân theo các qui trình phát triển và chế tạo đã được xác định rõ, chúng tôi dùng các thủ tục đo được và các phương pháp thống kê để xây dựng mọi thứ đúng đắn ngay từ đầu. Tất nhiên chúng tôi làm kiểm thử sản phẩm của mình nhưng kiểm thử là nỗ lực cuối cùng để đảm bảo sản phẩm có chất lượng rất cao.
Câu hỏi của tôi là tại sao công nghiệp phần mềm không thể áp dụng điều mà công nghiệp chế tạo đã từng làm trong nhiều năm rồi? Điều đó đưa tôi tới một câu hỏi nền tảng khác tại sao người làm phần mềm lại không được dạy về qui trình phần mềm? Tại sao phần lớn các đại học vẫn dạy sinh viên về ngôn ngữ lập trình và kiểm thử mà không dạy về qui trình phát triển phần mềm?
Qui trình là dãy các bước được thực hiện theo một lí do nào đó. Qui trình tích hợp con người, thủ tục và công cụ để tạo ra sản phẩm cuối cùng. Sản phẩm có thể là máy bay, xe hơi, điện thoại di động hay phần mềm máy tính. Qui trình là điều mọi người làm, dùng các thủ tục, phương pháp, công cụ và trang thiết bị để biến đổi vật liệu thô như gỗ, kim loại thành sảnh phẩm như nhà, xe hơi. Qui trình phần mềm là tập các bước (kể cả thủ tục, phương pháp và công cụ) mà mọi người tuân theo để phát triển sản phẩm phần mềm. Khái niệm then chốt ở đây là chỗ chất lượng của sản phẩm được xác định bằng chất lượng của qui trình được dùng để phát triển nó. Cho nên khi sản phẩm có lỗi, bạn phải quay lại qui trình và nhận diện cái gì là nguyên nhân, nó xảy ra ở đâu trong qui trình và sửa nó để cho nó sẽ không xảy ra nữa. Bằng việc áp dụng phương pháp thống kê để đo mọi bước trong qui trình, người kĩ sư có thể tạo ra một miền có hiệu quả các kết quả được trông đợi mà có thể đạt tới được bằng việc tuân thủ theo qui trình phần mềm. Bằng việc cải tiến liên tục qui trình và loại bỏ nguyên nhân lỗi, người kĩ sư phần mềm có thể tạo ra sản phẩm phần mềm với ít khiếm khuyết hơn. Tôi thận trọng không nói “không lỗi” ở đây bởi vì khó chứng minh được điều đó nhưng phần mềm với thật ít lỗi thì tốt hơn là phần mềm đầy lỗi.
Khái niệm về qui trình là yếu tố then chốt trong giáo trình phần mềm mới có tên là Kĩ nghệ phần mềm. Trong lĩnh vực này, sinh viên sẽ học việc áp dụng cách tiếp cận có kỉ luật và có định lượng vào việc phát triển phần mềm. Kỉ luật này bao gồm tri thức, công cụ và phương pháp xác định yêu cầu, kiến trúc hệ thống phần mềm, thiết kế và thực hiện sản phẩm phần mềm, tiến hành kiểm thử và kiểm chứng rằng sản phẩm đáp ứng yêu cầu. Triết lí của bộ môn này là chất lượng phần mềm thuộc vào trách nhiệm của người làm phần mềm, người tạo ra sản phẩm phần mềm. Tuy nhiên, nếu người làm phần mềm không cải tiến kĩ năng của mình, không phân biệt giữa “kĩ nghệ phần mềm” và “lập trình phần mềm” thì ngành công nghiệp phần mềm không thể đi rất xa được. Chừng nào mà người làm phần mềm vẫn cứ khăng khăng rằng chất lượng không phải là trách nhiệm của họ, thì chất lượng không thể được cải thiện.
(voer)
Có thể bạn quan tâm:
Quy trình Logistics trong xuất khẩu đường biển
Quy trình công việc thực tế của các bộ phận công ty forwarder
Quy trình thực hiện công tác điều động ô tô đi công tác của Đại học ...
Quy trình làm việc của nhân viên kinh doanh, bán hàng ngành ...
Quy trình quản lý và sử dụng ô tô trong doanh nghiệp mới nhất
Quy trình quản lý, điều hành xe ô tô Trường Đại Học Hồng Đức
Quy trình cấp phép mạng xã hội, điều kiện thiết lập mạng xã hội đầy
Hướng dẫn xác định chi phí, giá phần mềm, giá website, giá ứng dụng
Giá gia công phần mềm, giá viết ứng dụng, giá thiết kế website
Top phần mềm ERP mã nguồn mở miễn phí
Phần mềm CRM (phần mềm quản lý khách hàng) cho lĩnh vực vận ...
Tính năng cơ bản của một hệ thống giám sát hành trình, hộp đen và ...
Phần mềm quản lý vận chuyển TMS thường có những tính năng gì?
Phần mềm và ứng dụng quản lý xe, vận chuyển, logistics của hợp ...
DVMS chuyên:
- Tư vấn, xây dựng, chuyển giao công nghệ Blockchain, mạng xã hội,...
- Tư vấn ứng dụng cho smartphone và máy tính bảng, tư vấn ứng dụng vận tải thông minh, thực tế ảo, game mobile,...
- Tư vấn các hệ thống theo mô hình kinh tế chia sẻ như Uber, Grab, ứng dụng giúp việc,...
- Xây dựng các giải pháp quản lý vận tải, quản lý xe công vụ, quản lý xe doanh nghiệp, phần mềm và ứng dụng logistics, kho vận, vé xe điện tử,...
- Tư vấn và xây dựng mạng xã hội, tư vấn giải pháp CNTT cho doanh nghiệp, startup,...
Vì sao chọn DVMS?
- DVMS nắm vững nhiều công nghệ phần mềm, mạng và viễn thông. Như Payment gateway, SMS gateway, GIS, VOIP, iOS, Android, Blackberry, Windows Phone, cloud computing,…
- DVMS có kinh nghiệm triển khai các hệ thống trên các nền tảng điện toán đám mây nổi tiếng như Google, Amazon, Microsoft,…
- DVMS có kinh nghiệm thực tế tư vấn, xây dựng, triển khai, chuyển giao, gia công các giải pháp phần mềm cho khách hàng Việt Nam, USA, Singapore, Germany, France, các tập đoàn của nước ngoài tại Việt Nam,…
Quý khách xem Hồ sơ năng lực của DVMS tại đây >>
Quý khách gửi yêu cầu tư vấn và báo giá tại đây >>