CHƯƠNG 1- GIỚI THIỆU SEMAT 1.1 Giới thiệu SEMAT được thành lập vào tháng 9 năm 2009 bởi Ivar Jacobson, Bertrand Meyer, và Richard nhằm xây dựng lại các tiêu chuẩn tổng quát, các yêu tố cốt lõi như một nền tảng chung cho quá trình phát triển phần mềm. SEMAT hoạt động trong bốn khu vực: Khu vực thực hành, khu vực lý thuyết, khu vực giáo dục và khu vực cộng đồng. Khu vực thực hành: Thiết lập một thư viện thực hành để mọi người cùng trao đổi với nhau trên toàn thế giới, tạo tài liệu hướng dẫn sử dụng Essence, làm việc với các dự án mã nguồn mở mà được hỗ trợ bởi Essence.[1] Khu vực giáo dục: Khu vực này nhằm tổ chức các khóa học, các tài liệu giúp mọi người có thể hiểu rõ về một số vấn đề như: Giới thiệu về công nghệ phần mềm, những khái niệm cơ bản về hạt nhân trong công nghệ phần mềm, đưa ra những thực hành trong Kernel Language, đánh giá sự tiến bộ và sức mạnh của công nghệ phần mềm khi sử dụng Kernel và Alpha từ đó có thể mang những kiến thức thu được áp dụng vào trong thực hành.[1] Khu vực lý thuyết: Là khu vực nghiên cứu nhằm tìm ra lý thuyết chung cho công nghệ phần mềm.[1] Khu vực cộng đồng: Khu vực này nhằm tối đa hóa những chia sẻ về SEMAT trên toàn thế giới bằng những cách như: Tạo ra và duy trì bài viết về SEMAT trên những trang web, tạo ra các nhóm sử dụng SEMAT. [1] Như vậy chúng ta thấy có sự gắn kết giữa thực hành, lý thuyết và giáo dục.
Khu vực lý thuyết tạo ra những nghiên cứu nền tảng chung vững chắc giúp cho khu vực thực hành áp dụng vào thực tế. Những nghiên cứu về lý thuyết sẽ được công bố rộng rãi qua khu vực cộng đồng, khu vực giáo dục giúp cộng đồng hiểu được các nghiên cứu mà khu vực lý thuyết đã nghiên cứu tổng hợp thành. Khu vực thực hành giống như khách hàng của khu vực lý thuyết bởi muốn áp dụng được các nghiên cứu vào thực tế thì những nhà phát triển cần hiểu rõ những nghiên cứu đó và khu vực giáo dục sẽ có nhiệm vụ truyền tải 4 TIEU LUAN MOI download : skknchat@gmail.com những nghiên cứu thông qua tài liệu, qua các buổi đào tạo và giúp cho các nhà phát triển có thể hiểu rõ nghiên cứu và mang nó áp dụng vào thực tế. Các chi nhánh hoạt động được đặt ở: Trung Quốc, Mỹ Latin, Nam Phi, Nhật Bản, Hàn Quốc, Nga và Ấn Độ.
Kiến trúc SEMAT gồm 4 phần: Practices, Method, Kernel, Language. - Methods: Method bao gồm các Practice, tất cả các Method bao giờ cũng có nền tảng chung. Thực tế có rất nhiều phương thức để phát triển phần mềm như: SADT, RUP, XP, Scrum, Kaban, Lean, v.[4] - Practices: Một Practice là một cách tiếp cận lặp lại để làm một việc gì đó với một mục đích cụ thể, nó cung cấp cách giải quyết một khía cạnh của vấn đề một cách có hệ thống. Có khoảng hơn 250 practice ví dụ như: Ca sử dụng, đặc tính, thành phần…[4] - Kernel: Kernel gồm các thành phần cơ bản và cần thiết cho mọi lỗ lực của công nghệ phần mềm như: Requirement, Stakeholder, Way of work, Team, System, Work, các khả năng cần thiết của người tham gia vào quá trình phát triển như: Phân tích, kiểm thử, quản lý dự án… Nó là thành phần ở giữa giúp đỡ cho những người thực hiện như: Nhân viên thiết kế, người phát triển, nhân viên kiểm thử, v.v lựa chọn phương thức nào tốt hơn cho công việc của họ.
Kernel được tổ chức thành 3 vùng: Customer, Solution, Endeavor.[4] - Language: Là ngôn ngữ kịch bản được thực hiện bởi người tham gia phát triển phần mềm, nó được dùng để mô tả Kernel.[4] Trong luận văn này tôi tập trung nghiên cứu vào việc tìm hiểu Kernel và áp dụng nó để hỗ trợ cho việc phát triển phần mềm.1 Giới thiệu về Kernel Như đã giới thiệu ở trên Kernel gồm những thành phần cơ bản, cần thiết cho phát triển phần mềm. Nó ở giữa giúp những người thực hành như nhân viên thiết kế, nhân viên lập trình, nhân viên kiểm thử, v.v có thể lựa chọn cho mình phương thức nào tốt hơn trong công việc của mình. 5 TIEU LUAN MOI download : skknchat@gmail.com Trong thực tế để tạo ra một phần mềm tốt luôn phải đối mặt với những khó khăn thường trực như: - Khó khăn về việc xác định yêu cầu khách hàng: Yêu cầu khách hàng không tập trung tức là có thể là bạn hiểu sai yêu cầu khách hàng hoặc tại phía khách hàng có thể đưa ra nhiều yêu cầu không thống nhất. - Khó khăn trong việc xây dựng tài liệu làm việc: Mất quá nhiều thời gian cho việc xây dựng tài liệu hướng dẫn về quy trình làm việc nhưng nó lại không hữu ích.
- Khó khăn trong quản lý nhóm: Nhóm làm việc bao gồm nhiều thành viên có thể biết nhau hoặc chưa biết nhau trước đó vì vậy khi tham gia vào cùng một nhóm thì việc giúp nhóm cộng tác tốt với nhau là khá khó khăn, đặc biệt là khi dự án đã được bắt đầu mà người quản lý lo lắng về tiến độ của dự án nên thêm một vài thành viên thì khi đó sự cộng tác giữa các thành viên cũ và mới cũng là một vấn đề khó khăn cần giải quyết. - Khó khăn về hệ thống phần mềm: Mục đích của kiến trúc phần mềm dường như không giải quyết đúng vấn đề và người phát triển không biết làm gì tiếp theo. Những khó khăn mà chúng ta gặp phải đều tồn tại trong các thành phần của Kernel như: Yêu cầu khách hàng, cơ hội, các bên liên quan, đội làm việc, công việc, cách làm việc, hệ thống phần mềm. Kernel có thể giải quyết những khó khăn về kiến trúc, kiểm thử, quản lý dự án …trong dự án của của chúng ta.
Như vậy hiểu rõ Kernel sẽ giúp chúng ta có thể đối mặt với những khó khăn thường gặp phải trong quá trình phát triển phần mềm. Kernel gồm 3 thành phần: - Kernel Alpha: Là những thành phần cơ bản trong quá trình phát triển phần mềm. Alpha là một phần rất quan trọng mang lại thành công hay không thành công của phần mềm. - Activity space: Những thực hiện cơ bản.
- Competence: Năng lực cần thiết trong quá trình phát triển phần mềm. Kernel được tổ chức thành ba khu vực riêng biệt, mỗi một khu mục tập trung vào một khía cạnh của kỹ nghệ phần mềm. 6 TIEU LUAN MOI download : skknchat@gmail.com - Customer: Khu vực này quan tâm đến việc sử dụng và khai thác phần mềm được triển khai trong thực tế. - Solution: Khu vực này chứa những đặc tả về hệ thống và phát triển hệ thống phần mềm.
- Endeavor: Là khu vực quan tâm đến nhóm làm việc và cách làm việc mà họ hướng tới trong công việc của họ.2 Kernel Alpha Alpha là những thành phần cơ bản trong quá trình phát triển phần mềm, nhờ vào nó người phát triển có thể kiểm soát phần nào những rủi ro, đáp ứng yêu cầu nêu ra, khắc phục những khó khăn phải đối mặt trong quá trình phát triển. Chức năng của nó là: - Đưa ra những khái niệm chính liên quan đến công nghệ phần mềm. - Cung cấp những nền tảng chung cho quá trình phát triển phần mềm. - Đánh giá và theo dõi sự tiến bộ và sức mạnh của bất kỳ một kỳ vọng nào của phần mềm Kernel Alpha gồm nhiều Alpha, mỗi Alpha lại có nhiều trạng thái từ bắt đầu phát sinh Alpha đó cho đến trạng thái kết thúc Alpha đó.
Mỗi một trạng thái sẽ gồm danh sách các hướng dẫn người dùng đạt được trạng thái đó, đó chính là các Checklist. Ví dụ như với trạng thái Conceived của Alpha Requirement gồm các Checklist như: - Các bên liên quan đồng ý về hệ thống đưa ra. - Xác định được những người sử dụng hệ thống mới. - Xác định được những người tài trợ cho cho công việc ban đầu của hệ thống - Một Opportunity cho hệ thống được giải quyết.
Các Alpha đều có mối liên hệ chặt chẽ khăng khít với nhau.1 sẽ mô tả các Alpha và mối liên hệ giữa các Alpha. 7 TIEU LUAN MOI download : skknchat@gmail.1: Mối quan hệ giữa các Alpha. Các Oppornity phải tập trung vào các Requirement. Khi các Requirement đã được xác định thì nhóm làm việc lúc này sẽ có nhiệm vụ thực hiện Work (công việc), Work được giới hạn trong phạm vi của Requirement đã nêu ra và giải quyết các tình huống của Opportunity, quá trình làm việc của Team (nhóm làm việc) sẽ được sự hướng dẫn từ tài liệu hướng dẫn trong Way of Work (cách làm việc) để tạo ra Software System (hệ thống phần mềm), quá trình làm việc này sẽ liên tục làm cho Software System được thay đổi.
Khi hệ thống phần mềm được tạo ra hoàn thiện thì sẽ được các Stakeholder sử dụng, và hệ thống này phải thỏa mãn các Requirement, giải quyết được các vấn đề mà Opportunity đặt ra.1 Stakeholder - Khái niệm: Stakeholder là người hoặc nhóm người tác động hoặc chịu tác động của hệ thống. Stakeholder là những người cung cấp các Opportunity, là nguồn gốc của các 8 TIEU LUAN MOI download : skknchat@gmail.com Requirement và họ liên quan đến những Opporturnity của hệ thống phần mềm, hỗ trợ nhóm làm việc để đảm bảo rằng hệ thống được tạo ra đáp ứng các Requirement. [4] - Các trạng thái của Stakeholder: [4] Recognized: Xác nhận các Stakeholder tham gia vào dự án. Represented: Chọn ra đại diện cho Stakeholder, có thể mỗi một nhóm Stakeholder sẽ có một đại diện hoặc sẽ có một người đại diện cho toàn bộ các Stakeholder.
Involved: Các đại diện tham gia vào dự án và hoàn thành trách nhiệm của mình. In Agreement: Trạng thái này xuất hiện khi có sự không thống nhất về Requirement thì cần phải có sự thỏa thuận của các đại diện nhóm Stakeholder. Satisfied for Deployment: Những kỳ vọng khi triển khai dự án của Stakeholder đã đạt được. Satisfied in Use: Hệ thống khi đưa vào sử dụng đã đạt được kỳ vọng của các Stakeholder.
- Quá trình phát triển các trạng thái của Stakeholder [4] Khi phát triển hệ thống chúng ta sẽ phải xác định xem những người nào sẽ bị tác động hoặc chịu tác động từ hệ thống sau đó chia các ra thành các nhóm khác nhau, mỗi nhóm sẽ có những điểm chung về việc tác động vào hệ thống. Chúng ta cũng cần phải xác định xem nhóm nào có tác động quan trọng đến dự án, tác động đến sự thành công của dự án. Những nhóm này sẽ tham gia vào dự án.