Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

1.1.

Giới thiệu SEMAT

SEMAT, hay Software Engineering Method and Theory (Phương pháp và Lý


thuyết Kỹ thuật Phần mềm), là một sáng kiến được thành lập vào tháng 12 năm
2009 bởi Ivar Jacobson, Bertrand Meyer và Richard Soley. Mục tiêu chính của
SEMAT là xây dựng lại các tiêu chuẩn quốc tế và yếu tố cốt lõi để cung cấp một
nền tảng lý thuyết và mô hình chung cho các quy trình phát triển phần mềm hiện
nay. SEMAT hoạt động trong bốn khu vực khác nhau nhưng lại có sự liên quan
chặt chẽ với nhau: 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: Mục tiêu chính của khu vực này là xây dựng một nền
tảng thư viện thực hành dưới dạng mã nguồn mở. Nền tảng này sẽ giúp người dùng
trên toàn thế giới trao đổi thông tin và kinh nghiệm về việc sử dụng Essence trong
phát triển phần mềm. Khu vực này thúc đẩy việc sử dụng các công cụ mã nguồn
mở phổ biến trong lĩnh vực quản lý dự án như JIRA, SeeNow Do và các công cụ
Agile/Scrum/Kanban khác. Việc sử dụng các công cụ này có thể kết hợp với
Essence để tạo ra quy trình phát triển phần mềm hiệu quả.

Khu vực giáo dục: Khu vực Giáo dục tổ chức các khóa học về Essence và
các khái niệm liên quan đến công nghệ phần mềm. Những khóa học này giúp
người học hiểu rõ về các khái niệm cơ bản và cách áp dụng chúng vào thực tế. Giới
thiệu cơ bản về công nghệ phần mềm, bao gồm các khái niệm về hạt nhân trong
công nghệ phần mềm,giúp người học hiểu về tầm quan trọng của các khái niệm và
cơ sở kiến thức trong phát triển phần mềm. Khu vực này cung cấp kiến thức về
cách đánh giá tiến độ và tình trạng phát triển của công nghệ phần mềm khi sử dụng
hạt nhân và Alpha. Điều này có thể bao gồm việc đánh giá bởi chuyên gia hoặc tự
đánh giá bởi nhóm phát triển.

Khu vực lý thuyết: Là khu vực nghiên cứu nhằm thúc đẩy nhận thức của
cộng đồng về lợi ích của các lý thuyết chung. Ngoài việc tìm ra lý thuyết chung về
công nghệ phần mềm, đây cũng là khu vực tiến hành các nghiên cứu về cả thực
hành. Khu vực này đặt ra các câu hỏi cụ thể và thực hiện nghiên cứu để tìm ra câu
trả lời. Các nghiên cứu đó nhằm mục đích trả lời các câu hỏi cụ thể"Lập trình theo
cặp có tốt hơn lập trình ngang hàng không?", "Các ca sử dụng có tốt hơn các câu
chuyện người dùng hay không?" và "Các thành phần có tốt hơn các đối tượng
không?" là ví dụ về việc đặt ra các câu hỏi cụ thể và tiến hành nghiên cứu để phân
tích.
Khu vực cộng đồng: đóng vai trò quan trọng trong việc tạo ra một môi
trường mở và sự kết nối giữa các cá nhân, tổ chức và chuyên gia trong lĩnh vực
phát triển phần mềm. Khu vực Cộng đồng tạo ra các nhóm thảo luận và cộng đồng
trực tuyến để người tham gia có thể trao đổi thông tin, chia sẻ kiến thức và kinh
nghiệm. Điều này thúc đẩy sự hợp tác và trao đổi trong lĩnh vực phát triển phần
mềm. Khu vực này thực hiện các kế hoạch để quảng cáo SEMAT và thu hút mọi
người tham gia vào hoạt động SEMAT. Quảng cáo có thể bao gồm tổ chức hội
thảo, hội nghị, và các sự kiện khác để giới thiệu SEMAT và giới thiệu cách sử dụng
nó trong phát triển phần mềm.

Như vậy, ta thấy có sự liên kết chặt chẽ giữa khu vực thực hành, khu vực lý
thuyết và khu vực giáo dục. Khu vực lý thuyết tạo ra các lý thuyết nền tảng chung
giúp cho khu vực thực hành áp dụng vào thực tế. Các nghiên cứu về lý thuyết
chung sẽ được công bố rộng rãi trong khu vực cộng đồng, khu vực giáo dục giúp
cộng đồng người sử dụng trong khu vực cộng đồng hiểu được các nghiên cứu do
khu vực lý thuyết cung cấp. Khu vực thực hành muốn áp dụng được lý thuyết nền
tảng vào thực tế thì nhóm phát triển cần hiểu rõ được những nghiên cứu trong khu
vực lý thuyết và khu vực giáo dục đảm nhiệm vai trò truyền tải kiến thức thông qua
các tài liệu, các khóa học đào tạo.

Ngày nay, SEMAT có bảy chương trên toàn thế giới: Trung Quốc, Ấn Độ,
Nhật Bản, Hàn Quốc, Mỹ Latin, Nga và Nam Phi.
Hình 1.1: Kiến trúc của SEMAT

Hình 1.1 thể hiện kiến trúc SEMAT gồm 4 phần: Thực hành (Practices), Phương
pháp (Methods), Hạt nhân (Kernel) và Ngôn ngữ (Language).

- Phương pháp: Phương pháp là tổ hợp của các thực hành, các phương pháp
không đơn thuần là các mô tả để cho nhà phát triển đọc mà chúng còn hỗ trợ cho
công việc hang ngày của họ. Một phương pháp không chỉ là một mô tả về những gì
dự kiến được hoàn thành mà nó còn mô tả về những gì thực sự được thực hiện.
Thực tế có rất nhiều phương pháp để phát triển phần mềm: Scrum, Kanban, Lean,
Extreme Programming...

- Thực hành: Một thực hành là một cách tiếp cận có thể lặp lại để làm điều gì đó
với một mục tiêu cụ thể trong suy nghĩ. Một thực hành cung cấp cách giải quyết
một khía cạnh cụ thể của công việc một cách có hệ thống và có thể kiểm chứng
được. Một thực hành có thể là một phần của nhiều phương pháp. Có hơn 250 thực
hành được phát hiện từ các diễn đàn: ca sử dụng (Use Case), phát triển lặp lại
(Iterative Development), câu chuyện của người dùng (User Stories), vòng đời rủi
ro - giá trị (Risk - Value Life Cycle), quản lý yêu cầu linh hoạt (Agile
Requirements Management)...
- Hạt nhân: Hạt nhân chứa đựng các thành phần cơ bản nhất và thiết yếu của tất cả
các phương pháp công nghệ phần mềm, các yêu cầu đối với người tham gia vào
quá trình phát triển dự án. Nó có thể giúp người thực hiện lựa chọn được phương
thức nào hiệu quả hơn cho công việc của họ.

- Ngôn ngữ: Là ngôn ngữ cho người tham gia phát triển phần mềm dùng để mô tả
phương pháp, thực hành và hạt nhân.

1.2.1. Giới thiệu hạt nhân

Các nhà phát triển phần mềm đều biết quá trình tạo ra một phần mềm tốt có
nhiều phức tạp và rủi ro. Các khó khăn ta thường thấy như:

- Khi xác định yêu cầu của khách hàng: Khách hàng đưa ra các yêu cầu không
thống nhất, không tập trung, khách hàng hay thay đổi các yêu cầu trong từng giai
đoạn hoặc người thu thập yêu cầu khách hàng không hiểu rõ ý hoặc hiểu sai ý của
khách hàng.

- Trong việc xây dựng tài liệu: Các nhà phát triển phần mềm thường mất thời gian
trong việc xây dựng và chuẩn hóa các tài liệu hướng dẫn, các quy trình trong quá
trình phát triển nhưng không mang lại hiệu quả cao.

- Trong quản trị nhóm phát triển: Một nhóm thường có nhiều thành viên, họ có thể
đã quen nhau hoặc chưa, thậm chí có nhiều trường hợp không thể tìm tiếng nói
chung giữa các cá nhân. Vì vậy việc phát triển tốt nhóm luôn là nhiệm vụ hàng đầu
nhưng rất khó khăn của người quản lý dự án.

Những khó khăn mà các nhà phát triển phần mềm gặp phải đều tồn tại trong
các thành phần của hạt nhân. Như vậy, hạt nhân sẽ giải quyết các vấn đề này giúp
các nhà phát triển có thể xử lý các khó khăn thường gặp trong quá trình phát triển
phần mềm của mình.

Hạt nhân được cấu tạo bởi 03 thành phần chính:

- Alpha: mô tả những yếu tố cần thiết trong quá trình phát triển phần mềm. Chúng
hoạt động như “mỏ neo” cho bất kỳ Alpha con (sub-alphas) nào và các yêu cầu
công việc theo yêu cầu thực tiễn của công nghệ phần mềm.
- Các không gian hoạt động: diễn tả những việc cần thiết phải làm.

- Các kỹ năng cần thiết: trình bày những năng lực chính cần thiết để thực hiện công
việc trong quá trình phát triển phần mềm.

Hạt nhân được tổ chức theo ba lĩnh vực riêng biệt, mỗi lĩnh vực tập trung vào một
khía cạnh cụ thể của công nghệ phần mềm. Hình 1.2 dưới đây mô tả 03 lĩnh vực
được quan tâm: Khách hàng (Customer), Giải pháp (Solution), Nỗ lực (Endeavor).

Hình 1.2: Các lĩnh vực quan tâm [2]

- Khách hàng: Lĩnh vực này chứa đựng mọi thứ liên quan đến việc sử dụng và
khai thác hệ thống phần mềm được sản xuất trong thực tế.

- Giải pháp: Lĩnh vực này chứa đựng các thông tin về đặc tả và phát triển hệ thống
phần mềm.

- Nỗ lực: Lĩnh vực này quan tâm đến nhóm làm việc và cách họ tiếp cận công việc
của mình.

You might also like