Luận văn: Nghiên cứu SEMAT và ứng dụng EssWork trong phát triển phần mềm (ĐH Công Nghệ)

Luận văn thạc sĩ: Nghiên cứu SEmat và ứng dụng công cụ EssWork trong phát triển phần mềm. Tìm hiểu phương pháp SEmat, công cụ EssWork hỗ trợ quy trình.

Chuyên ngành

Công Nghệ Thông Tin

Người đăng

Ẩn danh

Thể loại

Luận văn thạc sĩ

2014

97
1
0

Phí lưu trữ

35 Point

Mục lục chi tiết

LỜI CẢM ƠN

LỜI CAM ĐOAN

MỤC LỤC

DANH SÁCH CÁC HÌNH VẼ

Lý do chọn đề tài

Mục đích nghiên cứu

Đối tượng và phạm vi nghiên cứu

Kết cấu của luận văn

1. CHƯƠNG 1: GIỚI THIỆU SEMAT

1.1. Giới thiệu SEMAT

1.2. Giới thiệu về Kernel

1.3. Các kỹ năng cần thiết (competencies)

2. CHƯƠNG 2: GIỚI THIỆU ESSWORK

2.1. Sử dụng EssWork

2.2. Giao diện EssWork

2.3. Các thành phần sử dụng trong EssWork

3. CHƯƠNG 3: ỨNG DỤNG CÔNG CỤ ESSWORK

3.1. Mô tả bài toán

3.2. Giai đoạn khởi đầu

3.3. Way of Work

3.4. Giai đoạn phác thảo

3.5. Way of Working

3.6. Giai đoạn hoàn thành

3.7. Way of Working

3.8. Giai đoạn chuyển giao

3.9. Way of Working

4. CHƯƠNG 4: NHẬN XÉT, ĐÁNH GIÁ, THẢO LUẬN

4.1. Ưu điểm của SEMAT

4.2. Ưu điểm của EssWork

4.3. Nhược điểm của SEMAT và EssWork

KẾT QUẢ ĐẠT ĐƯỢC

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng Quan SEMAT EssWork Cách Phát Triển Phần Mềm Hiệu Quả

Công nghệ phần mềm đã trải qua hơn 40 năm phát triển, nhưng các phương pháp phát triển phần mềm vẫn liên tục được nghiên cứu và cải tiến. Mục tiêu là giúp các dự án phần mềm hiệu quả hơn, giải quyết các vấn đề thường gặp như thay đổi yêu cầu, trễ tiến độ và vượt ngân sách. Nhiều phương pháp như Waterfall, Agile (XP, Scrum, RUP) tồn tại, mỗi phương pháp có ưu nhược điểm riêng. Tuy nhiên, giữa chúng có nhiều điểm chung nhưng lại thiếu sự thống nhất về thuật ngữ và một nền tảng chung. Các phương pháp phát triển luôn thay đổi theo thời gian, tạo cảm giác như một ngành thời trang hơn là một ngành kỹ thuật. Ví dụ, 15 năm trước người ta thường dùng RUP, sau đó đến CMMI, XP và bây giờ là Scrum, Lean và Kanban. SEMAT là một nỗ lực để tạo ra một nền tảng chung, thống nhất và kết hợp các phương pháp và quy trình phần mềm. Nó chứa các thành phần cơ bản, chung nhất trong quá trình phát triển bất kỳ phần mềm nào. Khi kết hợp SEMAT với một quy trình phát triển cụ thể, sẽ có hướng dẫn chi tiết hơn, giúp người mới bắt đầu không bỏ sót bước nào và giải quyết các khó khăn gặp phải. Nếu chỉ sử dụng RUP, ta chỉ biết đầu ra của từng giai đoạn, một số hướng dẫn tổng quát mà không có những hướng dẫn cụ thể từng việc phải làm trong từng giai đoạn. SEMAT còn khá mới mẻ trên thế giới và đặc biệt ở Việt Nam. Vì vậy, việc hiểu rõ và áp dụng được SEMAT để đưa ra một số nhận xét, đánh giá có ý nghĩa rất lớn trong việc giúp các đơn vị làm phần mềm tiếp cận với SEMAT, đồng thời cũng giúp các tổ chức giảng dạy về kỹ thuật phần mềm có những hướng đi mới trong việc giảng dạy về kỹ thuật phần mềm. Theo nghiên cứu của Đặng Thị Phước (2014), SEMAT giúp 'tạo ra nền tảng cho việc thống nhất, kết hợp các phương pháp, qui trình phần mềm'.

1.1. EssWork Là Gì Ứng dụng trong quản lý dự án phần mềm

EssWork là một công cụ hỗ trợ triển khai SEMAT. Nó cung cấp giao diện trực quan để mô hình hóa quy trình phát triển phần mềm dựa trên các khái niệm cốt lõi của SEMAT. EssWork giúp người dùng tạo ra các Work Package, mô tả các Alpha (như Requirement, System), Activity (hoạt động) và Competency (năng lực) cần thiết trong dự án. Bằng cách sử dụng EssWork, các nhóm phát triển có thể quản lý dự án một cách có cấu trúc và dễ dàng theo dõi tiến độ. Công cụ này đặc biệt hữu ích cho các dự án sử dụng các phương pháp Agile như Scrum hoặc Kanban, giúp đảm bảo rằng các hoạt động phát triển tuân thủ các nguyên tắc cốt lõi của SEMAT. Các thành phần sử dụng trong EssWork bao gồm các khái niệm cơ bản của SEMAT, cho phép người dùng mô hình hóa quy trình phát triển một cách linh hoạt và tùy chỉnh theo nhu cầu cụ thể của dự án. Nó cho phép tạo một Process mới, xây dựng một Process từ các Practice, tạo một Work Pack mới. Quan trọng là nó giúp mô tả một Alpha trong Work Package. Nó còn mô tả một ví dụ về Work Pad.

1.2. Các Thành Phần Chính Của SEMAT Kernel Practice Method Language

Kiến trúc SEMAT bao gồm bốn phần chính: Practices, Method, Kernel, Language. Methods bao gồm các Practice, tất cả các Method đều có nền tảng chung. Có rất nhiều phương thức để phát triển phần mềm như: SADT, RUP, XP, Scrum, Kanban, Lean. 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… Kernel gồm các thành phần cơ bản và cần thiết cho mọi nỗ 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. 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. 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.

II. Thách Thức Khi Phát Triển Phần Mềm SEMAT Giải Quyết Thế Nào

Trong thực tế, việc tạo ra một phần mềm tốt luôn đố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, bạn hiểu sai yêu cầu khách hàng hoặc khách hàng đư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.

2.1. Vấn Đề Về Yêu Cầu Khách Hàng SEMAT Giúp Xác Định Yêu Cầu Chính Xác

Một trong những vấn đề lớn nhất trong phát triển phần mềm là xác định và quản lý yêu cầu khách hàng. Yêu cầu không rõ ràng, mâu thuẫn hoặc thay đổi liên tục có thể dẫn đến trễ tiến độ, vượt ngân sách và sản phẩm không đáp ứng mong đợi. SEMAT giải quyết vấn đề này thông qua Kernel, đặc biệt là Alpha Requirement. Bằng cách xác định rõ các trạng thái của Requirement (Conceived, Bounded, Coherent, Acceptable, Addressed, Fulfilled) và các checklist tương ứng, SEMAT giúp đảm bảo rằng yêu cầu khách hàng được thu thập, phân tích và quản lý một cách có hệ thống. SEMAT tập trung vào việc thống nhất các yêu cầu, xác định phạm vi và đảm bảo rằng các bên liên quan chấp nhận các mô tả về hệ thống. Quá trình này giúp giảm thiểu rủi ro do yêu cầu không rõ ràng hoặc thay đổi, đồng thời tăng cường sự hợp tác giữa nhóm phát triển và khách hàng. Việc áp dụng SEMAT giúp các nhóm phát triển tạo ra phần mềm hiệu quả hơn bằng cách đảm bảo rằng yêu cầu khách hàng được hiểu rõ và quản lý một cách hiệu quả.

2.2. Khó Khăn Trong Quản Lý Nhóm Cách SEMAT Xây Dựng Đội Hiệu Quả

Quản lý nhóm là một thách thức khác trong phát triển phần mềm. Các thành viên trong nhóm có thể có kỹ năng, kinh nghiệm và quan điểm khác nhau, dẫn đến xung đột, giao tiếp kém và hiệu suất thấp. SEMAT giải quyết vấn đề này thông qua Alpha Team trong Kernel. Bằng cách xác định rõ các trạng thái của Team (Seeded, Formed, Collaborating, Performing, Adjourned) và các checklist tương ứng, SEMAT giúp xây dựng và quản lý đội ngũ phát triển một cách hiệu quả. SEMAT tập trung vào việc xác định nhiệm vụ của nhóm, đảm bảo các thành viên cam kết thực hiện nhiệm vụ, khuyến khích sự hợp tác và làm việc hiệu quả. Theo tài liệu gốc, việc các thành viên 'cộng tác làm việc với nhau một cách chặt chẽ như một đơn vị' là một yếu tố then chốt. Quá trình này giúp cải thiện giao tiếp, giảm thiểu xung đột và tăng cường sự gắn kết trong nhóm. Việc áp dụng SEMAT giúp các nhóm phát triển tạo ra phần mềm hiệu quả hơn bằng cách xây dựng một đội ngũ mạnh mẽ, có khả năng làm việc cùng nhau để đạt được mục tiêu chung.

III. SEMAT Kernel Cốt Lõi Các Alpha và Trạng Thái Để Thành Công

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. 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. 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ọ. 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.

3.1. Alpha Opportunity Xác Định Cơ Hội và Giá Trị Cho Phần Mềm

Opportunity là tập hợp những tình huống thích hợp để phát triển hoặc thay đổi hệ thống phần mềm. Nó nêu ra các lý do cho việc tạo ra cái mới hoặc những thay đổi của hệ thống phần mềm cũ. Hiểu rõ những tình huống, những ý tưởng ban đầu là rất quan trọng, việc này sẽ giúp cho nhóm phát triển: Xác định được hệ thống. Đề nghị giúp đỡ từ các bên liên quan. Hiểu rõ tại sao hệ thống phần mềm cần được phát triển. SEMAT chỉ rõ ra các trạng thái của Opportunity như: Indentified: Xác định được cơ hội để phát triển một hệ thống phần mềm từ một vấn đề xã hội, thương mại hay một nghiệp vụ kinh doanh. Solution Needed: Nêu ra những lý giải về sự cần thiết phải có một giải pháp mới. Value Established: Xác nhận giá trị của giải pháp nêu ra. Viable: Sự tồn tại của giải pháp. Addressed: Giải pháp đã được đưa ra để giải quyết các cơ hội nêu ra. Benefit Accrued: Những lợi ích thu được từ việc sử dụng hoặc bán các giải pháp nêu ra.

3.2. Alpha Requirement Mô Tả Chi Tiết Những Gì Hệ Thống Cần

Requirement là những gì hệ thống phần mềm phải làm để giải quyết những tình huống được mô tả ở Opportunity và làm hài lòng các bên liên quan, nó cung cấp những gì mà hệ thống cần đạt được. Các Requirement được lưu giữ như một tập hợp các Requirement Item. Các tài liệu mô tả Requirement có thể có nhiều hình thức và có thể ngắn gọn như một câu chuyện sử dụng (use story) hoặc toàn diện như một ca sử dụng (Use Case). Các trạng thái của Requirement Alpha bao gồm: Conceived: Những điều cần thiết cho hệ thống mới được thống nhất. Bounded: Xác định mục đích và phạm vi của hệ thống. Coherent: Các Requirement cung cấp các mô tả về đặc điểm của hệ thống mới. Acceptable: Các bên liên quan chấp nhận các mô tả về hệ thống của các Requirement. Addressed: Một số Requirement đã được xử lý để đáp ứng những điều cần thiết cho hệ thống và được các bên liên quan chấp nhận. Fulfilled: Các Requirement đã được giải quyết để đáp ứng đầy đủ hệ thống mới.

IV. Ứng Dụng EssWork trong Phát Triển Phần Mềm Ví Dụ Cụ Thể

Ứng dụng Kernel Alpha để xây dựng quy trình phát triển cho một chương trình quản lý khách hàng của công ty nội thất A. Khách hàng của công ty có thể là khách hàng lẻ hoặc khách hàng thường xuyên, vì vậy việc phân biệt loại khách hàng và thông tin về khách hàng đã có là việc rất quan trọng. Mỗi một giai đoạn của quy trình sẽ có những trạng thái cần đạt được của giai đoạn đó, từ đó người phát triển có thể dựa vào đó để có thể theo dõi xem dự án của mình đang ở trạng thái nào của giai đoạn nào. Việc chia các Alpha thành các trạng thái như thế này giúp cho người quản lý dự án có thể dễ dàng theo dõi tiến độ của dự án, từ đó có các biện pháp can thiệp kịp thời nếu dự án có nguy cơ bị chậm trễ hoặc đi sai hướng. Thêm vào đó, các thành viên của dự án đều nắm rõ mục tiêu chung của dự án, họ biết mình cần phải hoàn thành cái gì để đạt được một trạng thái nhất định của một Alpha nào đó.

4.1. Giai Đoạn Khởi Đầu Xác Định Yêu Cầu và Lựa Chọn Kiến Trúc

Kết quả cuối của giai đoạn này cần đạt được đó là xác định được tập các yêu cầu khách hàng, lựa chọn kiến trúc. Các trạng thái cần đạt được ở giai đoạn này được mô tả như trong hình. Để hoàn thành các công việc trong giai đoạn này thì các công việc cần thực hiện được chia làm ba vùng với ba nhóm công việc tương ứng với từng vùng, các nhóm công việc đó chính là: Xác định cơ hội và các bên liên quan chịu tác động hoặc tác động vào dự án. Công việc thứ hai của giai đoạn này là hiểu rõ mục đích của giải pháp. Công việc thứ ba trong giai đoạn này là chuẩn bị một số điều cần thiết trước khi bắt đầu thực hiện công việc phát triển. Trong quá trình này, việc sử dụng EssWork giúp nhóm phát triển hệ thống hóa các Alpha, trạng thái và các checklist liên quan. Chẳng hạn, EssWork có thể được dùng để theo dõi tiến độ của Alpha Requirement, đảm bảo rằng tất cả các yêu cầu quan trọng đều được thu thập và phân tích.

4.2. Giai Đoạn Phác Thảo Xây Dựng Nền Tảng Kiến Trúc và Quy Trình

Ở giai đoạn này nền tảng kiến trúc đã được xác định, quy trình, cơ sở hạ tầng, môi trường phát triển cũng đã được mô tả rõ ràng. Trong giai đoạn này, EssWork có thể được sử dụng để mô hình hóa kiến trúc hệ thống, xác định các thành phần chính và mối quan hệ giữa chúng. EssWork cung cấp các công cụ để tạo ra sơ đồ kiến trúc và mô tả chi tiết các thành phần hệ thống. Điều này giúp nhóm phát triển hiểu rõ về cấu trúc của hệ thống và đảm bảo rằng tất cả các thành phần đều tương thích với nhau. Ví dụ, EssWork có thể được sử dụng để mô tả kiến trúc microservices của hệ thống, xác định các API và giao thức giao tiếp giữa các microservice.

V. Ưu Nhược Điểm SEMAT và EssWork Đánh Giá Chi Tiết

Việc áp dụng SEMATEssWork mang lại nhiều lợi ích, nhưng cũng đi kèm với một số thách thức. Ưu điểm lớn nhất là khả năng cung cấp một khung khổ chung để phát triển phần mềm, giúp các nhóm làm việc hiệu quả hơn và giảm thiểu rủi ro. EssWork giúp hệ thống hóa các Alpha, trạng thái và các checklist liên quan. Nhóm phát triển có thể dễ dàng theo dõi tiến độ, quản lý yêu cầu khách hàng và phối hợp hoạt động. Tuy nhiên, SEMATEssWork cũng có một số nhược điểm. SEMAT có thể phức tạp và khó hiểu đối với những người mới bắt đầu, đòi hỏi một quá trình học tập và đào tạo. EssWork có thể tốn thời gian và công sức để thiết lập và duy trì, đặc biệt là đối với các dự án lớn và phức tạp. Thêm vào đó, việc áp dụng SEMATEssWork đòi hỏi sự thay đổi trong tư duy và cách làm việc của nhóm phát triển.

5.1. Ưu Điểm Của SEMAT Thống Nhất Linh Hoạt và Dễ Thích Ứng

SEMAT mang lại sự thống nhất cho các phương pháp phát triển khác nhau, cung cấp một ngôn ngữ chung để mô tả và so sánh các quy trình phát triển phần mềm. Điều này giúp các tổ chức lựa chọn và tùy chỉnh quy trình phù hợp với nhu cầu cụ thể của họ. SEMAT linh hoạt và dễ thích ứng với các dự án khác nhau, từ các dự án nhỏ đến các dự án lớn và phức tạp. Nó có thể được sử dụng để phát triển các loại phần mềm khác nhau, từ ứng dụng web đến ứng dụng di động và hệ thống nhúng. Ngoài ra, SEMAT giúp các nhóm phát triển cải thiện hiệu suất, giảm thiểu rủi ro và tăng cường sự hợp tác.

5.2. Nhược Điểm Của SEMAT Độ Phức Tạp và Yêu Cầu Đào Tạo

Một trong những nhược điểm lớn nhất của SEMAT là độ phức tạp của nó. Các khái niệm và thuật ngữ trong SEMAT có thể khó hiểu đối với những người mới bắt đầu. Điều này đòi hỏi một quá trình học tập và đào tạo để các thành viên trong nhóm có thể hiểu rõ và áp dụng SEMAT một cách hiệu quả. Thêm vào đó, việc triển khai SEMAT có thể tốn thời gian và công sức. Cần phải xác định các Alpha, trạng thái và các checklist phù hợp với dự án. Ngoài ra, cần phải đào tạo các thành viên trong nhóm về SEMATEssWork. Tuy nhiên, những nhược điểm này có thể được khắc phục bằng cách bắt đầu với các dự án nhỏ và đơn giản, sau đó dần dần mở rộng phạm vi áp dụng SEMAT.

VI. Tương Lai SEMAT EssWork Xu Hướng Phát Triển Phần Mềm

SEMATEssWork đóng vai trò quan trọng trong tương lai của phát triển phần mềm. Với sự gia tăng của các phương pháp Agile và DevOps, SEMAT cung cấp một khung khổ chung để đảm bảo rằng các hoạt động phát triển tuân thủ các nguyên tắc cốt lõi và đạt được hiệu quả cao. EssWork giúp các nhóm phát triển tự động hóa các quy trình phát triển, giảm thiểu lỗi và tăng cường sự hợp tác. Bằng cách tích hợp EssWork với các công cụ Agile và DevOps khác, các tổ chức có thể tạo ra một quy trình phát triển liên tục và hiệu quả. Ngoài ra, SEMATEssWork có tiềm năng lớn trong lĩnh vực giáo dục và đào tạo. Chúng có thể được sử dụng để giảng dạy các nguyên tắc cơ bản của kỹ thuật phần mềm và giúp sinh viên phát triển các kỹ năng cần thiết để thành công trong ngành.

6.1. Hội Nhập Với Agile và DevOps Nâng Cao Hiệu Quả Phát Triển

SEMATEssWork có thể được tích hợp với các phương pháp Agile và DevOps để nâng cao hiệu quả phát triển. SEMAT cung cấp một khung khổ chung để đảm bảo rằng các hoạt động Agile tuân thủ các nguyên tắc cốt lõi và đạt được hiệu quả cao. EssWork có thể được sử dụng để tự động hóa các quy trình Agile và DevOps, giảm thiểu lỗi và tăng cường sự hợp tác. Ví dụ, EssWork có thể được tích hợp với Jira để theo dõi tiến độ của các sprint và đảm bảo rằng các yêu cầu được thực hiện đúng hạn. Nó còn có thể được tích hợp với các công cụ CI/CD để tự động hóa quá trình build, test và triển khai phần mềm.

6.2. Giáo Dục và Đào Tạo Trang Bị Kỹ Năng Cho Thế Hệ Kỹ Sư Phần Mềm Tương Lai

SEMATEssWork có tiềm năng lớn trong lĩnh vực giáo dục và đào tạo. Chúng có thể được sử dụng để giảng dạy các nguyên tắc cơ bản của kỹ thuật phần mềm và giúp sinh viên phát triển các kỹ năng cần thiết để thành công trong ngành. Bằng cách sử dụng SEMATEssWork, sinh viên có thể hiểu rõ về các khái niệm cốt lõi của phát triển phần mềm, chẳng hạn như yêu cầu khách hàng, kiến trúc hệ thống, quản lý dự án và kiểm thử. Nó có thể giúp sinh viên phát triển các kỹ năng mềm quan trọng, chẳng hạn như giao tiếp, làm việc nhóm và giải quyết vấn đề. Các trường đại học và cao đẳng có thể sử dụng SEMATEssWork để xây dựng các chương trình đào tạo kỹ thuật phần mềm hiệu quả và đáp ứng nhu cầu của thị trường lao động.

24/09/2025

Trích đoạn nội dung tài liệu

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.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ