Tổng quan về đề tài
Tổng quan về đề tài
Trong những năm gần đây, ngành công nghiệp di động đã chứng kiến sự tăng trưởng mạnh mẽ về số lượng thiết bị và công nghệ Bảng thống kê dưới đây trình bày chi tiết tỷ lệ phát triển của thị trường smartphone từ năm 2010 đến 2014.
Hình 1.1 Mô tả quá trình phát triển của Smartphone từ năm 2010-2014 (Nguồn http://techlomedia.in)
Với sự bùng nổ của Smartphone toàn cầu, thị trường Smartphone tại Việt Nam cũng đang trên đà phát triển mạnh mẽ Theo thống kê của tổ chức GFT Forecasts vào năm 2015, Việt Nam đã vươn lên vị trí thứ 9 thế giới về số lượng người sử dụng Smartphone.
Hình 1.2: Danh sách 10 quốc gia sử dụng Smartphone nhiều nhất (Nguồn http://blog.gfk.com)
Sự phát triển của smartphone không chỉ về số lượng mà còn về công nghệ, dẫn đến sự gia tăng không ngừng của các ứng dụng dành cho thiết bị này Biểu đồ dưới đây minh họa rõ nét sự tiến bộ trong việc phát triển các ứng dụng cho smartphone.
Hình 1.3: Biểu đồ thể hiện sự phát triển ứng dụng từ năm 2009-2013
Ngành công nghiệp di động hiện nay đang trải qua sự cạnh tranh mạnh mẽ và năng động Để phát triển ứng dụng cho Smartphone, các công ty phần mềm di động cần có quy trình phát triển nhanh chóng và đáp ứng đầy đủ các yêu cầu của khách hàng.
Agile là quy trình phát triển phần mềm nhanh gọn và linh hoạt, giúp thích ứng nhanh với sự thay đổi công nghệ Phương pháp này đặc biệt quan trọng trong phát triển ứng dụng trên Smartphone, nơi yêu cầu của người dùng thường thay đổi liên tục Đối với các đội ngũ tập trung vào nhu cầu khách hàng, Agile là phương pháp lý tưởng để phát triển sản phẩm hiệu quả và kịp thời.
Phương pháp nghiên cứu
Phương pháp phát triển phần mềm Agile là một cách tiếp cận linh hoạt, tập trung vào việc cải tiến liên tục và phản hồi nhanh chóng từ người dùng So với các quy trình phát triển phần mềm truyền thống, Agile cho phép các nhóm làm việc hiệu quả hơn thông qua việc chia nhỏ dự án thành các giai đoạn ngắn, dễ quản lý Điều này giúp tăng cường khả năng thích ứng với thay đổi và nâng cao chất lượng sản phẩm cuối cùng Agile cũng khuyến khích sự hợp tác chặt chẽ giữa các thành viên trong nhóm và khách hàng, tạo ra một môi trường làm việc sáng tạo và năng động.
Quy trình phát triển phần mềm Agile-Scrum là một phương pháp linh hoạt, tập trung vào việc cải tiến liên tục và phản hồi nhanh chóng từ người dùng Agile-Scrum giúp nhóm phát triển tối ưu hóa hiệu suất thông qua việc chia nhỏ dự án thành các phần nhỏ hơn, dễ quản lý Phương pháp này khuyến khích sự hợp tác chặt chẽ giữa các thành viên trong nhóm và thường xuyên tổ chức các cuộc họp để đánh giá tiến độ, đảm bảo sản phẩm cuối cùng đáp ứng được nhu cầu của khách hàng.
Nghiên cứu các đặc điểm của thiết bị Smartphone và các dự án liên quan, đồng thời khám phá quy trình phát triển phần mềm cho Smartphone như Mobile D, MASAM và SLeSS.
Nghiên cứu cách thực hiện dự án Smartphone dựa trên mô hình Agile-Scrum là cần thiết để áp dụng vào dự án phát triển ứng dụng SEF Dự án này tập trung vào việc phát triển trên Website và nền tảng iOS, nhằm cung cấp các đánh giá và nhận xét chi tiết về quy trình phát triển ứng dụng cho Smartphone sử dụng phương pháp Agile-Scrum.
Tổng quan về Agile
Tìm hiểu chung về Agile
Phương pháp Agile đã trở thành xu hướng phát triển phần mềm phổ biến, đặc biệt từ khảo sát của Scrum Alliance vào tháng 2 năm 2015 Nguồn gốc của Agile bắt nguồn từ phương pháp lặp của Lean Manufacturing (1940) và Agile Manufacturing (1990), nhấn mạnh khả năng thích nghi của các công ty trong môi trường năng động Các nguyên tắc cốt lõi của Agile được thể hiện trong "Agile Manifesto", trong đó đề cao giá trị cá nhân và tương tác hơn quy trình, cũng như sản phẩm tốt hơn tài liệu.
Phát triển phần mềm linh hoạt (Agile software development) là triết lý và phương pháp phát triển dựa trên nguyên tắc lặp và tăng trưởng, cho phép nhu cầu và giải pháp tiến hóa thông qua sự hợp tác giữa các nhóm tự quản và liên chức năng Agile áp dụng lập kế hoạch thích ứng và phát triển theo hướng tiến hóa, sử dụng khung thời gian ngắn và linh hoạt để phản hồi nhanh chóng với các thay đổi trong quá trình phát triển.
2.1.2 Vì sao nên sử dụng Agile?
- Sản phẩm của một dự án phần mềm là khác nhau nên việc áp dụng một quy trình để phát triển hàng loạt là rất khó khăn
Khách hàng thường gặp khó khăn trong việc hình dung rõ ràng các yêu cầu cho sản phẩm ngay từ đầu Do đó, việc ứng phó linh hoạt với những thay đổi trong yêu cầu là rất quan trọng, giúp giảm thiểu rủi ro cho dự án.
- Đảm bảo sản phẩm đầu ra đúng theo nhu cầu của khách hàng
2.1.3 Các đặc trƣng của Agile
Phương pháp Agile có nhiều cách tiếp cận khác nhau, bao gồm tổ chức công việc và thiết lập quy trình Các phương pháp này cũng nghiên cứu và áp dụng các công cụ và kỹ thuật đặc thù như kiểm thử đơn vị, tích hợp liên tục, mẫu thiết kế, tái cấu trúc, phát triển hướng kiểm thử, phát triển hướng hành vi, và lập trình theo cặp, nhằm đảm bảo và gia tăng tính linh hoạt trong quá trình phát triển.
Dự án sẽ được thực hiện qua các phân đoạn lặp lại, gọi là Sprint, với khung thời gian ngắn từ một đến bốn tuần Trong mỗi Sprint, nhóm phát triển thực hiện các công việc cần thiết như lập kế hoạch, phân tích yêu cầu, thiết kế, triển khai và kiểm thử để tạo ra các phần nhỏ của sản phẩm.
Cuối mỗi phân đoạn phát triển, nhóm thường cung cấp các phần nhỏ của sản phẩm hoàn chỉnh, đã được kiểm thử kỹ lưỡng và có khả năng chạy tốt Qua thời gian, các phần này tích lũy và phát triển dần dần, cho đến khi đáp ứng đầy đủ các yêu cầu của khách hàng.
Với các phân đoạn ngắn và kế hoạch linh hoạt, quá trình phát triển có khả năng thích ứng tốt với những thay đổi như yêu cầu mới, công nghệ phát triển, và điều chỉnh mục tiêu.
Ràng buộc về thời gian (Time - Bound)
Thời gian đóng vai trò then chốt trong phát triển phần mềm theo phương pháp Agile, quyết định thời hạn hoàn thành dự án và từng sprint Điều này giúp đảm bảo sản phẩm được bàn giao đúng hạn để khách hàng kiểm tra xem các yêu cầu và chức năng đã được đáp ứng hay chưa.
Quản lý thực nghiệm (Empirical Process Control)
Các nhóm Agile đưa ra quyết định dựa trên dữ liệu thực tế thay vì lý thuyết hay giả định Việc chia nhỏ dự án thành các phân đoạn ngắn giúp tăng cường các mốc quan trọng, cho phép nhóm phát triển thu thập thông tin và điều chỉnh chiến lược phát triển Qua thời gian, các chiến lược này sẽ dần tiến gần đến trạng thái tối ưu, giúp nhóm kiểm soát tiến trình và nâng cao năng suất lao động.
Dựa trên giá trị (value - based)
Một trong những nguyên tắc cơ bản của Agile là phần mềm hoạt động tốt được coi là thước đo tiến độ, giúp loại bỏ những công việc không mang lại giá trị cho sản phẩm Để thực hiện cơ chế "làm việc dựa trên giá trị", nhóm Agile thường xuyên làm việc trực tiếp với khách hàng hoặc đại diện của họ để xác định các yêu cầu ưu tiên cao hơn Điều này giúp tối ưu hóa giá trị dự án, từ đó gia tăng đáng kể sự hài lòng của khách hàng.
2.1.4 Ưu điểm và nhược điểm của phương pháp Agile
Có một số lý do khiến Agile được sử dụng rộng rãi và bàn giao được một sản phẩm hoàn thiện theo đúng yêu cầu của khách hàng
Sự hài lòng của khách hàng là ưu điểm nổi bật, nhờ vào việc liên tục phát hành các bản cập nhật và cung cấp sản phẩm có giá trị để người dùng có thể trải nghiệm sớm.
Sự tương tác giữa con người được ưu tiên hơn việc tuân theo quy trình và công cụ trong dự án Điều này được thể hiện qua việc trao đổi liên tục giữa các thành viên như development và tester, development và tech leader, cũng như giữa team phát triển và khách hàng thông qua email và Skype trong suốt quá trình thực hiện dự án.
- Sẵn sàng thích ứng với những thay đổi thường xuyên xảy ra, kể cả khi đó là sự thay đổi rất muộn
- Khó khăn hơn để xác định một trường hợp kinh doanh cho dự án và để đàm phán các dự án giá cố định
- Đôi khi sự tương tác giữa con người quá nhiều dẫn đến việc thiếu tập trung vào thiết kế và các tài liệu cần thiết
Để phát triển phần mềm hiệu quả, cần một đội ngũ phát triển có năng lực cao, kinh nghiệm và sự linh hoạt Đội ngũ này sẽ có khả năng đưa ra những quyết định cần thiết khi đối mặt với các khó khăn và trở ngại trong quá trình phát triển.
2.1.5 So sánh mô hình phát triển của Agile với các mô hình phát triển phần mềm truyền thống khác Đặc điểm Waterfall Spiral Scrum
Xác định các giai đoạn phát triển
Trong giai đoạn lập kế hoạch, sản phẩm cuối cùng được xác định rõ ràng, và điều này là bắt buộc trong quy trình Kết thúc quá trình lập kế hoạch cũng đóng vai trò quan trọng trong việc đảm bảo rằng các mục tiêu đã đề ra được thực hiện đầy đủ.
Xác định trong quá trình xây dựng dự án
Chi phí sản phẩm Được xác định trong quá trình lập kế hoạch
Thay đổi cục bộ Xác định trong quá trình xây dựng dự án
Ngày hoàn thành sản phẩm Được xác định trong quá trình lập kế hoạch
Thay đổi cục bộ Xác định trong quá trình xây dựng dự án Đáp ứng với môi trường sử dụng
Trong kế hoạch ban đầu
Trong kế hoạch ban đầu
Xuyên suốt quá trình từ lập kế hoạch đến thực hiện và hoàn thành dự án, kinh nghiệm trao đổi và đào tạo trước khi bắt tay vào thực hiện là rất quan trọng Việc chuẩn bị kỹ lưỡng trong giai đoạn đào tạo sẽ giúp đội ngũ hiểu rõ nhiệm vụ và nâng cao hiệu quả công việc trong dự án.
Thực hiện trong quá trình làm dự án Khả năng thành công Thấp Trung bình thấp Cao
So sánh về giá thành phát triển phần mềm
Quy trình Agile/Scrum trong dự án SMARTPHONE
Đặc điểm của phát triển ứng dụng trên Smartphone
Đặc điểm của thiết bị SmartPhone được xác định bởi 3 đặc điểm riêng biệt
Thiết bị di động nổi bật với khả năng di chuyển linh hoạt và hoạt động liên tục Bất kỳ thiết bị di động nào cũng đều có thể thực hiện chức năng của mình một cách hiệu quả ngay cả khi đang di chuyển.
Các thiết bị di động với màn hình nhỏ và tính năng cảm ứng cho phép người dùng thao tác bằng một tay Vì kích thước màn hình hạn chế, các ứng dụng di động cần được thiết kế tối ưu để thông tin được trình bày rõ ràng và dễ sử dụng.
Thiết bị di động có khả năng giao tiếp với các thiết bị tương tự, máy tính văn phòng, hệ thống mạng và điện thoại di động khác Chúng thường truy cập Internet qua Bluetooth hoặc Wi-Fi, với nhiều mô hình hỗ trợ mạng di động và dữ liệu không dây Email và nhắn tin là phương thức giao tiếp tiêu chuẩn, bên cạnh khả năng gọi điện và một số thiết bị di động chuyên dụng có thể kết nối trực tiếp với thiết bị trung tâm.
3.1.2 Đặc điểm của phát triển ứng dụng trên Smartphone
Hầu hết các dự án trên smartphone thường là những dự án nhỏ với chỉ vài nghìn dòng mã nguồn và số lượng nhà phát triển hạn chế Tuy nhiên, phát triển ứng dụng di động có nhiều điểm tương đồng với việc phát triển phần mềm cho các ứng dụng nhúng khác.
Các ứng dụng trên Smartphone đối mặt với những thách thức như tích hợp phần cứng, an ninh truyền thông, hiệu suất, độ tin cậy và hạn chế lưu trữ Ngoài ra, chúng còn có những yêu cầu đặc thù khác mà các ứng dụng truyền thống không gặp phải.
- Chu kì phát triển ngắn
- Thường xuyên thay đổi nhu cầu sử dụng
- Phải dễ dàng cập nhập
- Tương tác với các ứng dụng khác trong thiết bị di động như là camera, voice
Xử lý cảm biến là một yếu tố quan trọng trong hầu hết các ứng dụng trên smartphone, bao gồm việc theo dõi chuyển động của thiết bị, đáp ứng các cử chỉ trên màn hình cảm ứng và hỗ trợ hệ thống định vị.
- Ứng dụng Native và Hybrid
- Sự phức tạp khi thử nghiệm
3.1.3 Các thành phần khi phát triển một ứng dụng di động
Hình 3.1: Các thành phần phát triển của dự án cho Smartphone
Hiện nay, có nhiều hệ điều hành cho điện thoại di động như Android, iOS, Windows Phone và BlackBerry Để phát triển một ứng dụng di động đáp ứng nhu cầu của đa số người dùng, cần xây dựng ứng dụng riêng cho từng nền tảng Điều này đòi hỏi mỗi ứng dụng phải có một đội phát triển riêng, ví dụ như đội iOS chịu trách nhiệm cung cấp ứng dụng cho hệ điều hành iOS thông qua các gói phát triển chuyên biệt.
Xcode là một môi trường phát triển tích hợp (IDE) của Apple, bao gồm giao diện Builder, giả lập iPhone và các công cụ cần thiết để phát triển ứng dụng cho tất cả các sản phẩm của Apple.
Android Team cung cấp ứng dụng cho hệ điều hành Android, ở nhóm này sử dụng các công cụ phát triển Android plugin cho môi trường lập trình Eclipse
WindowPhone Team sử dụng Visual Studio của Microsofts.… và cần một
Đội ngũ Backend chịu trách nhiệm xử lý cơ sở dữ liệu bằng cách phát triển các API, giúp các đội ngũ Mobile có thể sử dụng hiệu quả Hình ảnh minh họa bên dưới thể hiện quá trình trao đổi dữ liệu giữa các đội Mobile và đội Backend.
Backend API cung cấp dịch vụ cho ứng dụng di động, cho phép truy cập cơ sở dữ liệu và xử lý quy trình Các dịch vụ này được xác định bởi nhóm phát triển nền tảng di động, coi họ như khách hàng của đội Backend API.
3.1.4 Vòng đời phát triển ứng dụng trên Smartphone
Phương pháp phát triển phần mềm truyền thống đã được điều chỉnh để phù hợp với tính chất linh hoạt của các ứng dụng di động Những phương pháp này được tích hợp vào vòng đời phát triển ứng dụng trên thiết bị di động, giúp tối ưu hóa quy trình và nâng cao hiệu quả phát triển.
Hình 3.2: Quy trình phát triển Agile-Scrum cho ứng dụng di động Phương pháp này gồm các giai đoạn cụ thể là:
The software development process consists of five key stages: First, Requirement Analysis focuses on identifying and documenting the needs of stakeholders Next, Design & Development involves creating the architecture and coding the software Following this, Test & Quality ensures that the product meets specified requirements through rigorous testing The fourth stage, Product Acceptance, is where stakeholders evaluate the software to confirm it meets their expectations Finally, the Release to Market stage entails launching the product for users, making it available for public use.
Khi khách hàng yêu cầu thiết kế ứng dụng trên Smartphone, giai đoạn đầu tiên tập trung vào phân tích thị trường và thiết bị, giúp giảm thiểu rủi ro kỹ thuật Trong giai đoạn 2 và 3, mỗi Sprint kéo dài từ 1-4 tuần, với việc tái sử dụng trong phát triển phần mềm được áp dụng triệt để Cuộc họp Sprint hàng ngày là yếu tố quan trọng, cho phép các đội chia sẻ cập nhật về tiến độ công việc, lập kế hoạch cho các nhiệm vụ tiếp theo và giải quyết vấn đề còn tồn đọng.
Giai đoạn 4 là giai đoạn quyết định, nơi phản hồi nhanh chóng và hiệu quả các yêu cầu của khách hàng được thực hiện Đồng thời, giai đoạn này cũng tiến hành so sánh sản phẩm với các yêu cầu ban đầu để đảm bảo sự phù hợp, thông qua việc gửi yêu cầu đến khách hàng.
Giai đoạn 5 là bước quan trọng trong việc hoàn thiện sản phẩm, đảm bảo đáp ứng đầy đủ yêu cầu của khách hàng trước khi ra mắt thị trường Mỗi nền tảng di động đều có kho ứng dụng riêng, như Google Play cho Android và App Store cho iOS, nơi người dùng có thể tải về ứng dụng.
Một số phương pháp phát triển phần mềm cho Smartphone
Một số phương pháp phát triển phần mềm cho Mobile
3.2.1 Mobile-D (Abrahamsson et al, 2004) Được biết đến vào năm 2004 bởi Abrahamsson, Mobile D là cách tiếp cận dựa trên Rational Unified Process RUP, eXtreme Programming XP (Phương pháp phát triển phần mềm) và phương pháp Crystal (khả năng mở rộng) Nghiên cứu này cung cấp một cái nhìn tổng thể về phát triển ứng dụng di động, về những đặc điểm và hạn chế ảnh hưởng đến quá trình phát triển phần mềm di động Nghiên cứu này cũng giới thiệu một cách tiếp cận phát triển phần mềm được rút ra từ phát triển phần mềm linh hoạt Agile
Có 9 yếu tố liên quan đến các hoạt động khác nhau trong suốt chu trình phát triển
Mobile-D gồm 5 giai đoạn: Explore, Initialize, Productionize, Stabilize, and System System Test & Fix Mỗi giai đoạn liên quan đến một giai đoạn thực tiễn
Hình 3.3: Các giai đoạn phát triển của Mobile-D
Trong giai đoạn đầu tiên Explore, nhóm phát triển xây dựng kế hoạch và xác định các đặc điểm của dự án thông qua ba bước chính: thiết lập các bên liên quan, định nghĩa phạm vi và thành lập dự án Nhiệm vụ trong giai đoạn này bao gồm lập kế hoạch dự án và thu thập yêu cầu từ khách hàng.
Trong giai đoạn tiếp theo, nhóm phát triển và các bên liên quan tích cực tìm hiểu về sản phẩm, bao gồm các nguồn lực vật chất, công nghệ và truyền thông Giai đoạn này được chia thành ba phân đoạn: thiết lập dự án, lập kế hoạch ban đầu và ngày thử nghiệm.
Giai đoạn Productionize bao gồm các hoạt động triển khai thực hiện, với mục tiêu hoàn chỉnh hầu hết công việc vào cuối giai đoạn Quá trình này được chia thành ba phần chính: planning days, working days và release days.
Giai đoạn cuối cùng Stabilize và System Test & Fix là quá trình quan trọng để hoàn thiện sản phẩm và thực hiện các thử nghiệm cần thiết Trong giai đoạn này, các sửa đổi được thực hiện nhằm xây dựng tài liệu hướng dẫn và kiểm tra hệ thống một cách hiệu quả.
Mobile-D được sử dụng trong các dự án phát triển để nâng cao khả năng nhận diện quy trình, phát hiện sớm và khắc phục các vấn đề kỹ thuật, cũng như giảm thiểu sai lệch cho sản phẩm cuối cùng.
Jeong et al đã đề xuất rằng phương pháp phát triển phần mềm ứng dụng di động Agile giúp tăng tốc quá trình phát triển bằng cách áp dụng các nguyên tắc Agile Phương pháp này dựa trên Extreme Programming (XP), Agile Unified Process, RUP và Software and Systems Process Engineering Metamodel (SPEM) MASAM, với kiến trúc GUI trung tâm, cho thấy sự kết nối với phương pháp Mobile – D và giới thiệu các thay đổi như quản lý dự án và tích hợp các công cụ theo dõi với Eclipse Process Framework.
MASAM được mô tả theo ba loại tài sản quy định sau
Loại Mô tả Tên Role Nó định nghĩa tập hợp các kĩ năng liên quan, năng lực và trách nhiệm của từng cá nhân
Planner, Manager, UI designer, Developer,
Development team, Initial development team,
Task Nó là một đơn vị chuyển nhượng với vai trò cụ thể, thường kéo dài từ vài giờ đến vài ngày và có tác động đến nhiều Work Product.
Product Summary, Initial Planning, User
Definition, Initial Analysis, Select Resource,
Select Process, Establish Environment, Write
Story Card, UI Design, Define Architecture,
Planning, Iteration plan, Face-to-face Meeting,
Incremental Design, TDD, Refactoring, Release
Plan, Feedback, Pattern Manage, Pair
User Test Figure Work Product Là một thuật ngữ chung cho các đầu vào công việc và kết quả đầu ra
UI Model, UI pattern, Architecture Pattern,
Application Pattern, Story Card, Task Card,
Architecture Model, Component Model, Test
MASAM đề xuất quy trình phát triển ứng dụng di động gồm 4 giai đoạn Giai đoạn đầu tiên là chuẩn bị bản tóm tắt, định nghĩa khái niệm sản phẩm và phân công vai trò Tiếp theo, giai đoạn Embodiment tập trung vào việc hiểu nhu cầu người dùng và xác định cấu trúc phần mềm Giai đoạn phát triển áp dụng các nguyên tắc nhanh nhẹn truyền thống, sử dụng phương pháp Extreme Programming lặp đi lặp lại, với các kỹ thuật như Test-Driven Development, Pair Programming, Refactoring và Continuous Integration Cuối cùng, giai đoạn Commercialization tập trung vào các hoạt động ra mắt và bán sản phẩm.
Preparation Phase Grasping Product Product summary
Pre-planning Product Concept Sharing User Definition
Initial product analysis Project Set-up Development process coordination Project resource coordination
Pre study Embodiment Phase User Need Understanding Story card workshop
UI design Architecting Non-functional requirement analysis Architecture definition Pattern management Development Phase Implementation &
Environment setup Development Planning Release Cycle Release Planning
Commercialization Phase System Test Acceptance Test
User Test Product Selling Launching Test
Ứng dụng Agile/Scrum và phương pháp Scrum of Scrums trong dự án SmartPhone
Trong dự án phát triển Smartphone, các nền tảng di động như Android, iOS và Windows Phone được tổ chức thành các đội Scrum, bao gồm cả đội xây dựng API Quy trình phát triển Scrum bắt đầu với việc Product Owner tạo ra Product Backlog, sau đó chia thành các Sub-Backlog cho từng đội phát triển Các đội phát triển Smartphone sẽ phân tích yêu cầu và thiết kế các giả lập màn hình để làm rõ yêu cầu dự án Những giả lập này sau đó được gửi đến đội API, giúp họ hiểu rõ các yêu cầu cơ bản và xác định các API cần cung cấp cho ứng dụng di động.
Hình 3.4: Mô tả Scrum dự án phát triển Smartphone
Ứng dụng Agile/Scrum trong dự án phát triển ứng dụng trên smartphone 36
Giới thiệu tóm tắt về dự án phần mềm cho điện thoại di động thông minh
Mục tiêu phát triển là kết nối người dùng qua smartphone, cho phép chia sẻ ảnh, video và trạng thái cá nhân, đồng thời tạo điều kiện cho việc trò chuyện trực tiếp giữa các người dùng.
Server Cài đặt nodejs cho chức năng chat pear to pear
Apache cho Web php and mobie Phân quyền người dùng Admin/ customer
App iOS Phát triển bằng iOS cho Customer
Web Phát triển bằng PHP để quản lý hệ thống cho
API Phát triển bằng PHP
Mô tả chức năng ban đầu của dự án
Stt Chức năng Mô tả
1 Download app Download app trên app store
2 Đăng nhập và đăng kí
Mỗi người dùng cần phải đăng nhập hay nếu chưa có tài khoản thì phải đăng kí để sử dụng App
3 Chụp ảnh Sau khi người dùng login thì cần phải chụp ảnh thay đôi avatar
4 Xác định vị trí Xác định vị trí hiện tại của người dùng
5 Tìm kiếm những người dùng
Tìm kiếm những người dùng có cùng sở thích
6 Push notification Gửi thông báo đến cho người dùng
7 Kết bạn Có thể thêm bạn, hủy kết bạn
Một số khó khăn khi đội dự án triển khai
Nhân lực của dự án thay đổi
Công ty Oursource gặp phải thách thức khi có nhiều dự án cùng lúc nhưng nguồn nhân lực hạn chế, dẫn đến việc thay đổi nhân sự trong các dự án Sau khi hoàn thành sprint 1, một số lập trình viên trình độ cao đã được chuyển sang dự án khác, trong khi đó, các lập trình viên có trình độ thấp hơn được đưa vào thay thế.
Yêu cầu của khách hàng thay đổi
Nhưng vì một lý do nào đó khách hàng muốn thay đổi yêu cầu của dự án
Hình 4.1: Những thay đổi của dự án liệt kê trong Excel
Dự án được bắt đầu ngày 17/8 nhưng qua một số mốc thời gian trong file excel
“SEF_Requirements_Management_old.xlsx” được tóm tắt như hình 4.1 ta thấy được là dự án được thay đổi rất nhiều về yêu cầu cho đến ngày 3/9
No Feature group Feature detail Status
1 Chat Chat between 2 users Reject
3 Free User cannot chat with User with no common
Interest, paid User can only if the User with no common Interest allows chat from no common Interest
4 User User registers with email, password, name, date of birth
5 Map User set his location on Map Reject
6 Push notification push new Activity hashtag in area Reject
- Chat permission for no common Interest
- Avatar from image or video (9s)
Như vậy các sẽ mất nhiều thời gian để phân tích thực hiện chức năng
Hình 4.2 minh họa những thay đổi liên tục trong yêu cầu của khách hàng đối với dự án từ ngày 23 đến 28 tháng 9 Để xem xét chi tiết các thay đổi này, vui lòng tham khảo tài liệu “SEF_REQM.xlsx”.
Cách thức đội quản lý dự án theo quy trình Agile/Scrum
4.3.1 Thiết lập kế hoạch thực hiện
Sau khi phân tích yêu cầu phát triển dự án, chúng tôi đã xây dựng kế hoạch thực hiện chi tiết trong tài liệu “SEFSocial_MasterPlan_v1.0.xlsx” Bản tóm tắt kế hoạch được trình bày như hình 4.3.
Hình 4.3: Kế hoạch thực hiện dự án
Kế hoạch dự án ban đầu được xác định bắt đầu từ ngày 17/8 và kết thúc vào ngày 9/11, với tổng nỗ lực thực hiện dự án là 139 man/days.
4.3.2 Thành lập đội dự án
No Name Role Date Start
1 Phạm Vũ Dương Chủ sản phẩm 17/08/2015
3 Lê Thị Thảo Trinh Dev 01/09/2015
9 Nguyễn Văn Tiến Dev 01/09/2015 Áp dụng đội dự án vào quy trình Scrum
Chia dự án thành ba đội Scrum: Team Scrum iOS, Team Scrum API, và Team Scrum Website, đồng thời xác định rõ vai trò của từng thành viên trong nhóm Scrum để tối ưu hóa hiệu quả làm việc.
1 Phạm Vũ Dương Product Owner chính
2 Phạm Thế Duy Scrum master iOs
3 Lê Thị Thảo Trinh Dev
5 Nguyễn Văn Phi PO - Scrum master API
8 Nguyễn Văn Duy PO - Scrum Master Website
4.3.3 Xây dựng print backlog cho iOs và Website Product Owner tạo Product backlog và chia product backlog thành các task nhỏ trong mỗi sprint Mô hình 4.4 diễn tả các công việc của đội phát triển và chia công việc phát triển ứng dụng Đầu tiên Product Owner tạo product backlog Đối với n
Hình 4.4: Chia công việc cho mỗi Scrum Team
Sau khi đã chia xong sprint cho mobile Leader bên mobile xác định các service cần thiết và yêu cầu backend làm các service đó
8 Capture photo / record video, set duration 16 Tring
10 Share created Post on Story 16 Trinh
11 add text to photo/video, free draw 16 Hoang
12 apply filter to photo/video 8 Hoang
13 add lat long, city to Post 8 Hoang
14 add hashtags to Post 8 Hoang
16 open & edit saved Media (trim video), then share / delete
19 group Users into clusters 16 Duy
20 list visible Users on Map 16 Duy
25 list Users that shared something 8 Hoang
Story id Story name Points Name of Dev
7 share Post to Story 8 Trung
12 store latest Post lat long to user info (logic) 8 Trung
13 story length, lat long in get user info 8 Trung
14 get story's posts of a User (public/followed private)
16 list "Feed" Users (Users I followed, with count of "new" seconds)
17 list new Posts of "Feed" user 16 Duy
19 share a new Post to some of the Followers 16 Trung
20 list "Notification" Users (Users who shared something to me)
Trong cuộc họp Sprint, các thành viên trong nhóm sẽ được phân công nhiệm vụ và ước lượng thời gian hoàn thành công việc của mỗi người Việc này giúp đảm bảo tiến độ dự án và tối ưu hóa quy trình phát triển.
Cụ thể các công việc của đội iOS trong Sprint 1 như sau
Story ID Story Name Points Name of Dev Start Date End Date
Story ID Story Name Points Name of Dev Start Date End Date
7 add text to photo/video, free draw
24 Hoang 2/9/2015 5/9/2015 Áp dụng công cụ Trello để quán lý dự án phát triển phần mềm trên Smartphone
Công cụ này giúp phối hợp công việc hiệu quả, cho phép các thành viên trong team dễ dàng nắm bắt các đầu việc, ai đang đảm nhiệm và tiến độ thực hiện Từ các task trong sprint, chúng ta có thể tạo card trên Trello để quản lý công việc của từng thành viên Mỗi card sẽ được chi tiết hóa bằng cách thêm các thành viên tham gia và deadline cho từng nhiệm vụ.
Trello là một công cụ quản lý dự án dễ sử dụng, cho phép người dùng tạo các cột để theo dõi tiến độ công việc Mỗi cột đại diện cho mức độ hoàn thành của các nhiệm vụ Khi áp dụng phương pháp Agile/Scrum, chúng ta có thể xây dựng các cột để tổ chức và quản lý dự án một cách hiệu quả.
Hình 4.5: Luồng thực hiện tác nghiệp
Backlog để chứa các công việc trong một sprint
Todo chứa các task chuẩn bị làm
Review chứa các task trong thời gian test
Done chứa các task đã hoàn thành
4.3.4 Quy trình thực hiện Ban đầu tất cả các task sau khi họp chia sprint sẽ để trong BackLog Trong cuộc họp daily meeting sẽ phân chia công việc cho các thành viên trong đội Khi bắt đầu một công việc sẽ kéo task từ cột backlog sang cột Todo Các task đang làm sẽ kéo sang cột Doing, sau khi hoàn thành xong kéo từ cột doing sang cột review để tester kiểm tra lại Nếu task đó đã đúng rồi tester sẽ kéo sang Done, nếu chưa sẽ kéo lại về
Hình 4.6: Liệt kê các công việc trong sprint 1 của dự án trong trello
Trong mỗi thẻ trong sprint backlog, cần tạo một danh sách kiểm tra để liệt kê các công việc của sprint Mỗi mục trong danh sách kiểm tra nên có đường dẫn đến chi tiết của thẻ đó.
Hình 4.7: Chi tiết của Sprint 1
Sau khi tạo công việc và chia công việc cho mỗi thành viên, các thành viên kéo card của mình sang doing
Trong thời gian thực hiện công việc, vào 8h30 các buổi sáng hàng ngày trừ thứ 7 và chủ nhật nhóm họp scrum hàng ngày
Mỗi khi hoàn thành một công việc, các lập trình viên sẽ tạo một nhánh mới trong Git với tên thẻ công việc của mình và gửi yêu cầu cho team lead để kiểm tra mã nguồn Đồng thời, trong Trello, các developer sẽ kéo thẻ công việc đó sang mục review để nhóm kiểm thử xác nhận tính chính xác Sau khi kiểm tra xong, team lead sẽ chuyển thẻ nào đã hoàn thành sang trạng thái done.
Cuộc họp lúc 8h30 bao gồm các thành viên của đội mobile và backend Nội dung cuộc họp bao gồm
- Trình bày công việc hôm trước làm được của mỗi thành viên trong nhóm
- Mỗi thành viên khó khăn gì nếu ra để cả nhóm cùng giải quyết
- Trình bày công việc ngày hôm nay làm gì
- Đội backend cung cấp cho mobile những service nào đã hoàn thành
4.3.6 Tổng hợp kết quả trên biểu đồ
Biểu đồ tổng hợp kết quả làm việc trong Sprint của Trello cho phép theo dõi tiến độ dự án và thời gian còn lại để hoàn thành Những chuyển biến công việc được thể hiện qua đường diễn tả công việc hoàn thành thực tế, giúp người dùng nhận diện mức chênh lệch giữa kế hoạch ban đầu và thực tế đạt được, từ đó hiểu rõ tình trạng tiến độ đến mốc tiếp theo.
Hình 4.8: Biểu đồ mô tả hoạt động của cả dự án
Hình ảnh bên trái mô tả quá trình thực hiện dự án, trong khi bên phải tóm tắt các số liệu thống kê quan trọng liên quan đến dự án Biểu đồ cung cấp cái nhìn tổng quan về tiến độ và hiệu quả của các hoạt động trong dự án.
- Đường màu xanh là thời gian còn lại của hệ thống
- Đường màu da cam là đường mô tả thời gian thực hiện lý tưởng cho dự án
- Đường màu đỏ là đường mô tả thời gian thực khi thực hiện dự án
Biểu đồ cho thấy rằng thời gian thực hiện dự án hiện tại đã vượt quá thời gian lý tưởng ban đầu Từ khi bắt đầu phát triển vào tháng 9 đến giữa tháng 10 và tháng 11, dự án đã không đạt được mức thời gian lý tưởng So sánh hai mốc thời gian từ đầu dự án đến giữa tháng 10 và từ giữa tháng 10 đến cuối dự án cho thấy sự chậm trễ đáng kể trong tiến độ thực hiện.
- Thời gian thực hiện dự án từ đầu đến giữa tháng 10 ước lượng khoảng 270 giờ
Thời gian thực hiện dự án ước tính kéo dài khoảng 500 giờ, bắt đầu từ giữa tháng 10 cho đến khi hoàn thành Thay đổi về thời gian này xuất phát từ việc sử dụng nguồn nhân lực có trình độ thấp hơn so với các thành viên tham gia ở giai đoạn đầu và giữa tháng 10.
Qua bảng tóm tắt số liệu của dự án ở hình bên phải, bao gồm:
- Phần trăm thực hiện dự án đang là 65%
- Phần trăm thời gian sử dụng để thoàn thành dự án so với thời gian đề ra là 85%
Dự án hiện đang chậm tiến độ so với thời gian ước lượng ban đầu, điều này được thể hiện rõ qua số liệu và biểu đồ hoạt động Một trong những nguyên nhân chính dẫn đến tình trạng này là sự thay đổi yêu cầu thường xuyên từ phía khách hàng, cũng như việc bổ sung các chức năng mới vào dự án.
Đánh giá và nhận xét
Phương pháp Scrum of Scrums đóng vai trò quan trọng trong việc kết nối và phối hợp giữa các đội phát triển phần mềm sử dụng nền tảng khác nhau Trong dự án SEF, việc liên kết giữa các đội dự án độc lập giúp tăng cường khả năng phản ứng nhanh trước những thay đổi yêu cầu từ khách hàng Khi khách hàng yêu cầu thay đổi giao diện màn hình hoặc chức năng của hệ thống, cả hai đội dự án đều có thể kịp thời cập nhật và điều chỉnh công việc cụ thể, đảm bảo sản phẩm cuối cùng đáp ứng đúng nhu cầu.
API mới Như thế, dự án đòi hỏi cả hai đội phải theo kịp trong một chu kỳ để không chậm tiến độ của dự án
Trong quá trình phát triển dự án theo quy trình Scrum, sự linh hoạt trong quan hệ với khách hàng và việc quản lý nguồn nhân lực là cực kỳ quan trọng Để áp dụng quy trình này hiệu quả, cần có đội ngũ nhân lực chuyên nghiệp và phát triển tốt, có khả năng đáp ứng nhanh chóng các thay đổi trong thời gian ngắn.
Dựa vào số liệu báo cáo và biểu đồ quản lý dự án từ từng Sprint, tình trạng phát triển của dự án được đánh giá chính xác, giúp đưa ra quyết định kịp thời để giải quyết vấn đề Quản trị dự án và các thành viên trong đội dễ dàng hình dung và hiểu rõ công việc của từng giai đoạn Khi có thay đổi, việc cập nhật thông tin sẽ diễn ra nhanh chóng và phù hợp với yêu cầu.