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 nhanh chóng về số lượng thiết bị di động cũng như sự tiến bộ vượt bậc trong công nghệ Dưới đây là bảng thống kê 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)
Thị trường Smartphone tại Việt Nam đang phát triển mạnh mẽ, đồng thời đứng thứ 9 trên thế giới về số lượng người dùng, theo thống kê của tổ chức GFT Forecasts năm 2015.
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 nhanh chóng của smartphone không chỉ về số lượng mà còn về công nghệ đã thúc đẩy 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 phát triển ứ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 đang đối mặt với sự cạnh tranh cao và tính năng động lớn Để phát triển ứng dụng cho smartphone, các công ty phần mềm cần có quy trình phát triển nhanh chóng và đáp ứng tốt 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 chóng 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 người dùng thường xuyên thay đổi Đối với các đội ngũ tập trung vào nhu cầu khách hàng, Agile là giải pháp lý tưởng để phát triển ứng dụng hiệu quả và đáp ứng kịp thời yêu cầu thị trường.
Phương pháp nghiên cứu
Phương pháp phát triển phần mềm Agile đang ngày càng trở nên phổ biến nhờ tính linh hoạt và khả năng thích ứng nhanh với thay đổi So với các quy trình phát triển phần mềm truyền thống, Agile tập trung vào việc phân chia dự án thành các giai đoạn ngắn, cho phép nhóm phát triển nhận phản hồi liên tục từ khách hàng và điều chỉnh sản phẩm kịp thời Điều này giúp nâng cao chất lượng sản phẩm và sự hài lòng của khách hàng, đồng thời giảm thiểu rủi ro và chi phí phát triển Việc áp dụng Agile không chỉ cải thiện hiệu suất làm việc của nhóm mà còn thúc đẩy sự sáng tạo và đổi mới trong quá trình phát triển phần mềm.
Quy trình phát triển phần mềm Agile-Scrum là một phương pháp phát triển phần mềm nhanh nhẹn, tập trung vào việc cải tiến hiệu suất và sự linh hoạt trong từng giai đoạn phát triển Agile-Scrum cho phép nhóm phát triển thích ứng nhanh chóng với các thay đổi và yêu cầu mới, mang lại sản phẩm chất lượng cao hơn.
Nghiên cứu các đặc điểm của thiết bị Smartphone và các dự án liên quan giúp hiểu rõ hơn về quy trình phát triển phần mềm cho Smartphone, bao gồm các phương pháp như Mobile D, MASAM và SLeSS.
Nghiên cứu cách thực hiện dự án Smartphone theo mô hình Agile-Scrum nhằm áp dụng vào dự án phát triển ứng dụng SEF trên Website và nền tảng iOS Mục tiêu là cung cấp đá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ổ biến trong phát triển phần mềm, đặc biệt từ tháng 2 năm 2015 theo khảo sát của Scrum Alliance Nguồn gốc của Agile bắt nguồn từ các 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 doanh nghiệp trong môi trường năng động Những đặc điểm nổi bật của phương pháp này đượ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 chất lượng hơn tài liệu đầy đủ.
Phát triển phần mềm linh hoạt (Agile) 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 để nhanh chóng phản hồi 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 linh hoạt ứng phó với những thay đổi trong yêu cầu là rất cần thiết, 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 Ngoài ra, Agile còn sử dụng các công cụ và kỹ thuật đặc thù như kiểm thử đơn vị, công cụ 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ững yếu tố này giúp đảm bảo và gia tăng tính linh hoạt trong quá trình phát triển phần mềm.
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 tiến hành 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ử, nhằm 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 cuối cùng, những phần này được kiểm thử kỹ lưỡng, có khả năng chạy tốt và sẵn sàng sử dụng Qua thời gian, các phần chạy được này sẽ tích lũy và phát triển, cho đến khi toàn bộ yêu cầu của khách hàng được đáp ứ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ó thể dễ dàng điều chỉnh để đáp ứng các thay đổi như yêu cầu mới, công nghệ tiến bộ và định hướng mục tiêu khác nhau.
Ràng buộc về thời gian (Time - Bound)
Thời gian đóng vai trò quan trọng trong phát triển phần mềm theo phương pháp Agile, xác định thời hạn hoàn thành dự án cũng như từng sprint, nhằm đảm bảo sản phẩm được bàn giao cho khách hàng để kiểm tra tính đúng yêu cầu và chức năng.
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 điểm mốc, từ đó nhóm phát triển có thể thu thập thông tin để đ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ẽ ngày càng 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 là thước đo tiến độ, giúp nhóm loại bỏ các 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ọ, từ đó xác định được những yêu cầu ưu tiên cao hơn cho dự án Nhờ vậy, Agile không chỉ tối ưu hóa giá trị của dự án mà còn 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
Một trong những ưu điểm nổi bật là sự hài lòng của khách hàng, 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 trong quá trình phát triển dự án được đặt lên hàng đầu, vượt qua việc tuân thủ quy trình và sử dụng công cụ Điều này thể hiện rõ 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 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
Để đảm bảo quá trình phát triển phần mềm diễn ra suôn sẻ, cần thiết phải có một đội ngũ phát triển với năng lực cao, kinh nghiệm phong phú, cùng với sự năng động và linh hoạt Đội ngũ này sẽ có khả năng đưa ra những quyết định kịp thời và hiệu quả 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 và kết thúc, sản phẩm cuối cùng được xác định rõ ràng Quá trình lập kế hoạch đóng vai trò quan trọng trong việc xác định các yếu tố cần thiết để đạt được kết quả mong muốn.
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
Từ giai đoạn lập kế hoạch cho đến khi hoàn thành dự án, kinh nghiệm trao đổi và đào tạo trước là rất quan trọng Việc chuẩn bị kỹ lưỡng và thực hiện đúng quy trình sẽ giúp đảm bảo thành công cho 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
3.1.1 Đặc điểm của thiết bị 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, cho phép người dùng sử dụng chúng mọi lúc, mọi nơi Mỗi thiết bị di động đều được thiết kế để hoạt động liên tục, đảm bảo hiệu suất tối ưu ngay cả khi đang di chuyển.
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 Để tối ưu trải nghiệm, các ứng dụng di động cần có thiết kế phù hợp, giúp cấu trúc thông tin được trình bày một cách rõ ràng và dễ sử dụng.
Thiết bị di động có khả năng giao tiếp với nhiều loại thiết bị khác, bao gồm máy tính văn phòng, hệ thống mạng và điện thoại di động Hầu hết điện thoại di động đều hỗ trợ truy cập Internet qua Bluetooth hoặc Wi-Fi, và nhiều mẫu còn tích hợp 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 trên các thiết bị này, bên cạnh khả năng gọi điện, trong khi một số thiết bị chuyên dụng có thể giao tiếp 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 ứng dụng di động thường là những dự án nhỏ, với chỉ vài nghìn dòng mã nguồn và đội ngũ 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 một số 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ù mà ít thấy ở các ứng dụng truyền thống khác.
- 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ị, phản hồi của màn hình cảm ứng với nhiều cử chỉ khác nhau và hệ thống định vị chính xác.
- Ứ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 đồng nghĩa với việc mỗi hệ điều hành cần một đội ngũ phát triển riêng, chẳng hạn 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 và giả lập iPhone, phục vụ cho việc phát triển ứng dụng trên 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 để hỗ trợ các đội mobile Hình ảnh minh họa cho thấy sự trao đổi dữ liệu giữa các đội Mobile và đội Backend diễn ra như thế nào.
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ý các quy trình liên quan Các nhóm phát triển ứng dụng di động xác định nhu cầu dịch vụ, trong khi đội ngũ Backend API phục vụ như nhà cung cấp cho họ Do đó, đội phát triển nền tảng di động có thể được xem là 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 đặc điểm linh hoạt của ứng dụng di động Việc áp dụng các phương pháp này vào vòng đời phát triển ứng dụng di động giúp tối ưu hóa quy trình và nâng cao hiệu quả.
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à:
Giai đoạn 1: Yêu cầu phân tích (Requirement Analysis)
Giai đoạn 2: Thiết kế và phát triển (Design & Development)
Giai đoạn 3: Kiểm tra và đảm bảo chất lượng (Test & Quality)
Giai đoạn 4: Nghiệm thu sản phẩm (Product Acceptance)
Giai đoạn 5: Phát hành vào thị trường (Release to Market)
Khi khách hàng yêu cầu thiết kế ứng dụng trên Smartphone, giai đoạn đầu tiên cần phân tích thị trường và thiết bị để 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, nơi tái sử dụng trong phát triển phần mềm được áp dụng hiệu quả Cuộc họp Sprint hàng ngày là yếu tố quan trọng giúp các đội chia sẻ thông tin 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 thực hiện phản hồi nhanh chóng và hiệu quả đối với các yêu cầu của khách hàng, đồng thời so sánh sản phẩm với các tiêu chí ban đầu bằng cách gửi yêu cầu cho 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 chính thức Mỗi nền tảng di động có một cửa hàng ứng dụng riêng, nơi người dùng có thể tải về ứng dụng Cụ thể, trên Android, người dùng truy cập Google Play, trong khi trên iOS, ứng dụng có sẵn trên App Store.
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 giai đoạn: 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ụ chính 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 đang được phát triển, 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 chính: 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 tất hầu hết các công việc cần thiết Giai đoạn này được chia thành ba phần: ngày lập kế hoạch, ngày làm việc và ngày phát hành.
Giai đoạn cuối cùng của quá trình phát triển sản phẩm bao gồm Stabilize và System Test & Fix, nhằm hoàn thiện sản phẩm và thực hiện các thử nghiệm cần thiết Đồng thời, giai đoạn này cũng cho phép thực hiện các sửa đổi cần thiết để 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 để cải thiện khả năng nhận diện quy trình, giúp 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 trong sản phẩm cuối cùng.
Jeong et al đề xuất rằng phương pháp Agile trong phát triển phần mềm ứng dụng di động cho phép quy trình phát triển diễn ra nhanh chóng Phương pháp này dựa trên các khung như Extreme Programming (XP), Agile Unified Process, RUP và Software and Systems Process Engineering Metamodel (SPEM) MASAM áp dụng kiến trúc GUI trung tâm và kết hợp tri thức miền, đồng thời thể hiện sự ràng buộc với phương pháp Mobile – D, giới thiệu các thay đổi trong 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
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,
Tester là một đơn vị chuyển nhượng được gán cho vai trò cụ thể trong quy trình làm việc Mỗi nhiệm vụ thường kéo dài từ vài giờ đến vài ngày và có thể ảnh hưởng đến nhiều sản phẩm công việc khác nhau.
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 chuẩn bị, nơi tạo tóm tắt và xác định khái niệm sản phẩm cùng vai trò trách nhiệm; Giai đoạn Embodiment, tập trung vào việc hiểu nhu cầu người dùng và cấu trúc sản phẩm phần mềm; Giai đoạn phát triển, áp dụng nguyên tắc nhanh nhẹn với quy trình Extreme Programming lặp đi lặp lại thông qua Test-Driven Development, Pair Programming, Refactoring và Continuous Integration; và cuối cùng, giai đoạn Commercialization, chú trọng vào việc 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 sẽ được chia 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 và phân chia thành các Sub-Backlog cho các đội phát triển Sau khi nhận Sub-Backlog, các đội phát triển sẽ phân tích yêu cầu và thiết kế giả lập màn hình để hiểu rõ hơn về yêu cầu dự án Những giả lập này sẽ được gửi cho đội API, giúp họ nắm bắt các yêu cầu cơ bản và xác định các API cần cung cấp cho bên Mobile.
Hình 3.4: Mô tả Scrum dự án phát triển Smartphone