Xây dựng hệ thống phần mềm (dạng web trên nền tảng đám mây) hỗ trợ học sinh phổ thông học toán

18 971 11
Xây dựng hệ thống phần mềm (dạng web trên nền tảng đám mây) hỗ trợ học sinh phổ thông học toán

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Xây dựng hệ thống phần mềm (dạng web trên nền tảng đám mây) hỗ trợ học sinh phổ thông học toán

CHƯƠNG 1. GIẢI PHÁP CHO VẤN ĐỀ1.1 Giải pháp chức năng Phát biểu chi tiết bài toán sẽ giải quyếtXây dựng hệ thống phần mềm (dạng web trên nền tảng đám mây) hỗ trợ học sinh phổ thông học toán. Hệ thống là một tập những công cụ giải các dạng toán quen thuộc ở chương trình học phổ thông giới hạn trong lĩnh vực đại số & giải tích. Cụ thể hệ thống sẽ giải quyết những vấn đề sau :− Công cụ tính toán : Hệ thống cho phép học sinh chọn một công cụ tính toán, sau đó nhập vào biểu thức toán học tương ứng. Hệ thống sẽ đưa ra kết quả tính toán và bài giải chi tiết (nếu có) cho học sinh. Danh sách những công cụ được xây dựng :− Giải phương trình (bậc 1, bậc 2, bậc 3, . , phương trình lượng giác).− Giải hệ phương trình.− Tìm giới hạn (biểu thức, hàm số).− Tính đạo hàm biểu thức.− Khảo sát và vẽ đồ thị hàm số.− Tìm nguyên hàm với biểu thức cho trước.− Tính tích phân của biểu thức.− Lý thuyết : ứng với mỗi công cụ tính toán là một bộ lý thuyết tóm tắt xoay quanh vấn đề này. Sau khi chọn công cụ tính toán, học sinh có thể xem những lý thuyết liên quan đến bài toán mà công cụ này giải quyết (ví dụ : với công cụ khảo sát hàm số, tương ứng sẽ có phần lý thuyết về các bước để khảo sát hàm số, ).1.2 Giải pháp công nghệCloud computingHiện nay, chưa có một sự thống nhất về định nghĩa Cloud computing, mỗi tổ chức hay nhà cung cấp dịch vụ đều đưa ra ý kiến riêng. Theo WIKIPEDIACloud Computing là điện toán trên nền tảng Internet. Các Máy Chủ cung cấp tài nguyên, phần mềm, dữ liệu, và các thiết bị khác theo yêu cầu.Theo Ian FosterCloud Computing là mô hình điện toán phân tán có tính co giãn linh hoạt về mặt kinh tế, là nơi chứa sức mạnh về tính toán, lưu trữ dựa trên nền tảng và dịch vụ cung cấp. sự ảo hóa tài nguyên và thay đổi linh hoạt để phù hợp với nhu cầu khách hàng trên Internet.Theo Rajkumar BuyyaCloud là một hệ thống phân tán và xử lý song song gồm nhiều máy tính ảo kết nối với nhau và được cung cấp cho người dùng dựa trên thỏa thuận giữa nhà cung cấp dịch vụ và người dùng.Tại sao phải dùng Cloud Computing ?Lợi ích về chi phí đầu tưThông thường người dùng hoặc các doanh nghiệp phải đầu tư vào nhiều khoản như: mua ứng dụng, đầu tư cho phần cứng để có thể triển khai được ứng dụng đó, chi phí bảo trì phần cứng và phần mềm, chi phí nâng cấp thiết bị, thuê đội ngũ quản lý, …đôi khi nhiều ứng dụng và thiết bị có giá đắt đỏ được mua về tuy nhiên tần suất sử dụng không cao, khả năng đáp ứng kém, đó là một sự lãng phí lớn.Với điện toán đám mây, người dùng và các doanh nghiệp chỉ các thiết bị cấu hình đủ để duyệt web, được kết nối với internet là có thể sử dụng được các tài nguyên mà họ đang có nhu cầu. Không cần tốn quá nhiều chi phí, nhưng người dùng và các doanh nghiệp có thể sử dụng các tài nguyên tốt nhất với khả năng đáp ứng cao và chỉ phải trả chi phí cho lưu lượng mà họ đã sử dụng (thường tính bằng thời gian sử dụng ứng dụng). Công nghệ ảo hóaẢo hóa làm tăng năng xử lý bằng cách kết hợp các server và các thiết bị lưu trữ. Công nghệ ảo hóa đã tạo nên tính linh động của điện toán đám mây. Nếu các nhà cung cấp dịch vụ truyền thống chỉ cung cấp cố định tài nguyên và năng lực xử lý đúng như ràng buộc của hai bên (thường thấp hơn so với hợp đồng), thì điện toán đám mây có khả năng cung cấp thêm tài nguyên, năng lực xử lý một cách nhanh chóng chỉ sau những thao tác cấu hình đơn giản và khách hàng chỉ phải trả chi phí đúng theo lưu lượng mà họ sử dụng. Người dùng hoặc các doanh nghiệp có thể tiếp cận với các tài nguyên tính toán và lưu trữ khổng lồ. Ngoài ra, xét ở góc độ các lập trình viên và các nhà phát triển ứng dụng, điện toán đám mây cung cấp đầy đủ các công cụ hỗ trợ trong quá trình phát triển một ứng dụng như các cơ sở dữ liệu, các máy chủ ứng dụng, hệ thống quản lý source code, hệ thống quản lý thay đổi, các công cụ lần vết tìm lỗi, … mà không cần đầu tư quá nhiều. Cho phép các lập trình viên và nhà phát triển ứng dụng tạo ra các ứng dụng web tùy chỉnh và phát hành nó một cách nhanh chóng , bỏ qua nhiều giai đoạn rắc rối như việc thiết lập hosting, servers, databases, …Các loại hình dịch vụ Các mô hình dịch vụ của điện toán đám mây khá da dạng, nhưng phổ biến nhất có thể được phân thành 3 nhóm: dịch vụ hạ tầng (IaaS), dịch vụ nền tảng (PaaS) và dịch vụ phần mềm (SaaS).Dịch vụ hạ tầng IaaS (Infrastructure as a Service)Dịch vụ hạ tầng IaaS cung cấp dịch vụ cơ bản, cung cấp năng lực tính toán, không gian lưu trữ, kết nối mạng tới khách hàng. Khách hàng (cá nhân hoặc tổ chức) có thể sử dụng tài nguyên hạ tầng này để đáp ứng nhu cầu tính toán hoặc cài đặt ứng dụng riêng tùy theo mục đích sử dụng. Với dịch vụ này khách hàng làm chủ hệ điều hành, không gian lưu trữ và các ứng dụng do khách hàng cài đặt. Khách hàng điển hình của dịch vụ IaaS có thể là mọi đối tượng cần tới một máy tính và tự cài đặt ứng dụng của mình.Ví dụ điển hình về dịch vụ này là dịch vụ EC2 của Amazon. Khách hàng có thể đăng ký sử dụng một máy tính ảo trê dịch vụ của Amazon và lựa chọn một hệ thống điều hành (ví dụ, Windows hoặc Linux) và tự cài đặt ứng dụng của mình.Dịch vụ nền tảng PaaS (Platform as a Service)Dịch vụ nền tảng PaaS cung cấp nền tảng điện toán cho phép khách hàng phát triển các phần mềm, phục vụ nhu cầu tính toán hoặc xây dựng thành dịch vụ trên nền tảng đám mây đó. Dịch vụ PaaS có thể được cung cấp dưới dạng các ứng dụng lớp giữa (middleware), các ứng dụng chủ (application server) cùng các công cụ lập trình với ngôn ngữ lập trình nhất định để xây dựng ứng dụng. Dịch vụ PaaS cũng có thể được xây dựng riêng và cung cấp cho khách hàng thông qua API riêng. Khách hàng xây dựng ứng dụng và tương tác với hạ tầng điện toán đám mây thông qua API đó. Ở mức PaaS, khách hàng không quản lý nền tảng đám mây hay các tài nguyên lớp như hệ điều hành, lưu giữ ở lớp dưới. Khách hàng điển hình của dịch vụ PaaS chính là các nhà phát triển ứng dụng.Dịch vụ App Engine của Google là một dịch vụ PaaS điển hình, cho phép khách hàng xây dựng các ứng dụng web với môi trường chạy ứng dụng và phát triển dựa trên ngôn ngữ lập trình Java hoặc Python.Dịch vụ phần mềm SaaS (Software as a Service)Dịch vụ SaaS cung cấp các ứng dụng hoàn chỉnh như một dịch vụ theo yêu cầu cho nhiều khách hàng. Khách hàng lựa chọn ứng dụng phù hợp với nhu cầu và sử dụng mà không quan tâm tói hay bỏ công sức quản lý tài nguyên tính toán bên dưới.Dịch vụ SaaS nổi tiếng nhất phải kể đến Salesforce.com với các ứng dụng cho doanh nghiệp mà nổi bật nhất là CRM. Các ứng dụng SaaS cho người dùng cuối phổ biến là các ứng dụng office Online của Microsoft hay Google Docs của Google. Mô hình triển khaiĐám mây “công cộng”Mô hình đầu tiên được nói đến khi đề cập tới điện toán đám mây chính là mô hình đám mây công cộng (public cloud). Đây là mô hình mà hạ tầng điện toán đám mây được một tổ chức sỡ hữu và cung cấp dịch vụ rộng rãi cho tất cả các khách hàng thông qua hạ tầng mạng internet hoặc các mạng công cộng diện rộng. Các ứng dụng khác nhau chia sẻ chung tài nguyên tính toán, mạng và lưu trữ. Do vậy, hạ tầng điện toán đám mây được thiết kế để đảm bảo cô lập về dữ liệu giữa các khách hàng và tách biệt về truy cập. Các dịch vụ của đám mây công cộng hướng tới số lượng khách hàng lớn nên thường có năng lực về hạ tầng cao, đáp ứng nhu cầu tính toán linh hoạt, đem lại chi phí thấp cho khách hàng. Do đó khách hàng của các dịch vụ trên đám mây công cộng sẽ bao gồm tất cả các tầng lớp, trong đó khách hàng là cá nhân và doanh nghiệp nhỏ sẽ được lợi thế trong việc dễ dàng tiếp cận các ứng dụng công nghệ cao, chất lượng mà không phải đầu tư ban đầu, chi phí sử dụng thấp, linh hoạt.Đám mây “riêng”Đám mây riêng (private cloud) là mô hình trong đó hạ tầng đám mây được sở hữu bởi một tổ chức và phục vụ cho người dùng của tổ chức đó. Đám mây riêng có thể được vận hành bởi một bên thứ ba và hạ tầng đám mây có thể được đặt bên trong hoặc bên ngoài tổ chức sở hữu (tại bên thứ ba kiêm vận hành hoặc thậm chí là một bên thứ tư).Đám mây riêng được các tổ chức, doanh nghiệp lớn xây dựng cho mình nhằm khai thác ưu điểm về công nghệ và khả năng quản trị của điện toán đám mây. Với đám mây riêng, các doanh nghiệp tối ưu được hạ tầng IT của mình, nâng cao hiệu quả sử dụng, quản lý trong cấp phát và thu hồi tài nguyên, qua đó giảm thời gian đưa sản phẩm sản xuất, kinh doanh ra thị trường. Đám mây “chung”Đám mây chung (community cloud) là mô hình trong đó hạ tầng đám mây được chia sẻ bởi một số tổ chức cho cộng đồng người dùng trong các tổ chức đó. Các tổ chức này do đặc thù không tiếp cận với các dịch vụ của đám mây công cộng và chia sẻ chung một hạ tầng điện toán đám mây để nâng cao hiệu quả đầu tư và sử dụng.Đám mây “lai”Mô hình đám mây lai (hybrid cloud) là mô hình bao gồm hai hoặc nhiều hơn các đám mây trên tích hợp với nhau. Mô hình đám mây lai cho phép chia sẻ hạ tầng hoặc đáp ứng nhu cầu trao đổi dữ liệu. Khảo sát các nhà cung cấp dịch vụ điện toán đám mâyNhững hổ trợ cho DeveloperAmazon Salesfore GAE Microsoft RackspaceHổ trợ HDH Window y y y y yHổ trợ HDH Mac OS y y y n nHổ trợ HDH Linux/Other y y y n y.NET y y n y yJava y y y y yPython y y y n yRuby y y n y nPHP y y n y n Flex n y n n n SQL/ SQL Server y n n y yMySQL y n y n yOracle y n n n yMiễn phí sử dụng y y y y nGhi chú :GAE : Google App Enginey : có cung cấp.n : không cung cấp.Chi phí sử dụng cho người dùngAmazonMiễn phí: http://aws.amazon.com/free/ Có phí: mức phí nhỏ nhất là 1.365$ và sẽ lớn hơn nhiều tùy thuộc nhu cầu sử dụngEC2 : http://aws.amazon.com/ec2/pricing/ . Data Tranfer. Amazon Elastic Block Store. Elastic IP Addresses. Amazon CloudWatch. Elastic Load Balancing. Amazon S3 Salesforce Google App EngineMiễn phí: Có dung lượng lưu trữ 1GB và lượng băng thông là 5 triệu pageview trên tháng.Có phí: Mỗi ứng dụng sẽ phải trả tối thiểu 8$/tháng. Và tối đa là 1000$/tháng tùy thuộc vào những dịch vụ đăng ký sử dụng.Microsoft (Window Azure) Giải pháp được lựa chọnTheo nhu cầu thì loại hình dịch vụ mà nhóm sử dụng là PaaS (nền tảng dịch vụ), với mô hình triển khai là Public Cloud (đám mây chung).Nhà cung cấp dịch vụ : nhóm chúng em quyết định chọn nhà cung cấp dịch vụ là Google vì những lý do sau : Google App Engine tích hợp đầy đủ những công nghệ phổ biến hiện nay để phát triển một ứng dụng web (xét ra thì có phần kém linh hoạt hơn so với Amazon và Rackspace). Chúng ta sẽ không cần phải lo lắng về việc mở rộng cho ứng dụng của mình vì Google sẽ đảm nhận việc này.Hạ tầng của Google đủ tốt để ta có thể tin vào khả năng đáp ứng trước những đột biến bất ngờ có thể xảy ra.Google App Engine hỗ trợ 2 môi trường phát triển ứng dụng là Java và Python. Java là ngôn ngữ đang được ưa chuộng để phát triển ứng dụng. So với Amazon, Salesfore, Microsoft, thì Google không có hổ trợ .NET, một ngôn ngữ cũng rất được yêu thích hiện nay. Google khá thoải mái trong cách tính phí ở thời điểm hiện tại. Bạn sẽ có được 1G lưu trữ và lượng băng thông 5 triệu pageview hàng tháng hoàn toàn miễn phí. Nếu vượt qua mốc này bạn phải thực hiện trả phí. Nhưng một website mới xây dựng thời gian đầu thì khó mà vượt qua được ngưỡng miễn phí này.Tuy nhiên cũng có mặt trái khi ta sử dụng GAE đó là, Hệ thống của chúng ta phải phụ thuộc hoàn toàn vào nền tảng và công nghệ của Google, và rất khó để tách biệt thành một ứng dựng độc lập. Nhưng với mức độ cũng như thời điểm hiện tại, nhóm chúng em chưa cần thiết phải nghĩ ngợi xa như vậy. Do đó chúng em quyết định chọn Google App Engine làm nhà cung cấp dịch vụ cho mình.Google App EngineGoogle App Engine (GAE)Google App Engine cho phép bạn triển khai ứng dụng web của mình trên hạ tầng của Google. Việc xây dựng ứng dụng với App Engine rất dễ dàng, thuận lợi trong quá trình bảo trì, dễ mở rộng khi có lượng truy cập tăng, hoặc khi có thêm nhu cầu lưu trữ. Với App Engine, bạn chỉ cần upload ứng dụng mình lên và ứng dụng sẽ sẵn sàng phục vụ người dùng. GAE hỗ trợ cho chúng ta 2 môi trường phát triển ứng dụng : Java runtime environment và Python runtime environment.Java Runtime Environment : bạn có thể xây dựng ứng dụng trên công nghệ Java bao gồm Java virtual machine (JVM), Java servlet, và Java programming language - hoặc bất kỳ một ngôn ngữ nào được biên dịch trên JVM chẳn hạn như JavaScript hay Ruby.Python Runtime Environment : là một môi trường chuyên dụng bao gồm một trình thông dịch rất nhanh và một bộ thư viện chuẩn.Một số đặc tính của Google App Engine:Hỗ trợ các công nghệ web thông dụng, phổ biến nhất.Tự động mở rộng và cân bằng tải.Cung cấp các API để xác thực người dùng và gửi mail sử dụng tài khoản của Google.Cung cấp một môi trường phát triển với đầy đủ các tính năng.App Engine datastoreApp Engine cung cấp một dịch vụ lưu trữ phân tán. những kho dữ liệu phân tán này sẽ phát triển dần theo dữ liệu của bạn. App Engine sẽ cung cấp cho chúng ta những API để thực hiện thao tác với cở sở dữ liệu bên dưới.Google App Engine cung cấp hai dạng datastore:Master/Slave Datastore: bao gồm một trung tâm dữ liệu (data center) đóng vai trò là master chịu trách nhiệm đọc và truy vấn, các trung tâm dữ liệu khác đóng vai trò slave. Với mô hình này thì dữ liệu được sao lưu không đồng bộ, tuy nhiên lợi thế của mô hình này không gian lưu trữ nhỏ, chi phí CPU thấp. [...]... thức toán học có thể được sử dụng trong dự án MathML MathML (Mathematical Markup Language, Ngôn ngữ đánh dấu toán học) là một dạng ngôn ngữ đánh dấu có cấu trúc XML để thể hiện ký hiệu và công thức toán học với mục đích để trao đổi thông tin toán học trên máy tính, cũng như để tính toán MathML được hỗ trợ bởi các phần mềm văn phòng như Microsoft Word, OpenOffice.org và KOffice và các phần mếm tính toán. .. một hệ thống tính toán mạnh mẽ, ra đời vào năm 1998 và phát triển đến ngày nay nhằm múc đích phục vụ cho mọi mặt của đời sống có cần đến việc tính toán Trong đó, một phần nhỏ của Mathmatica được coi là giải pháp cho học sinh từ tiểu học đến đại học Bên cạnh sự phát triển mạnh mẽ của Mathmatica, cộng đồng mã nguồn mở cũng có nhiều hệ thống tính toán khác Trong đó, Symja là một thư viện java dành cho toán. .. Windown, hay KDESVN dùng trên Linux, Eclipse cũng có một plugin để làm chuyện này, đó là SVN Subeclipse Các ngôn ngữ đánh dấu toán học Để xây dựng một hệ thống tính toán hướng người dùng, cần phải có một giao diện nhập biểu thức dễ sử dụng Tuy nhiên, để nhân tính toán có thể hiểu được, bên dưới bộ nhập biểu thức cần phải có một chuỗi biểu thức toán học tuân theo cú pháp của các chuẩn trên thế giới Dưới đây... hòan chỉnh mà không cần dùng đến phần mềm riêng nào khác.Eclipse SDK bao gồm 3 phần hính: Platform, Java Development Toolkit (JDT), Plugin Development Environment (PDE) Với JDT, Eclipse được xem như là một môi trường hỗ trợ phát triển Java mạnh mẽ PDE hỗ trợ việc mở rộng Eclipse, tích hợp các Plug-in vào Eclipse Platform Eclipse Platform là nền tảng của toàn bộ phần mềm Eclipse, mục đích của nó là cung... tra các thành phần nhỏ trong hệ thống mã nguồn của phần mềm như là hàm, thủ tục, lớp, Ta có thể dùng Ant kết hợp với JUnit để thực thi kiểm tra mã nguồn, và nó cũng là một phân của quá trình build dự án Eclipse và SVN Subclipse Eclipse là phần mềm miễn phí, được các nhà phát triển sử dụng để xây dựng những ứng dụng J2EE, sử dụng Eclipse nhà phát triển có thể tích hợp với nhiều công cụ hỗ trợ khác để... trên Google App Engine (Lựa chọn nền tảng GAE Java) Nhằm hỗ trợ lập trình viên xây dựng ứng dụng, Google App Engine hỗ trợ plugin và có tài liệu hướng dẫn chi tiết để lập trình viên dễ dàng thực hiện việc cài đặt, build, mở rộng ứng dụng web của mình bằng cách sử dụng công nghệ Google Ở đây, chúng tôi lựa chọn phát triển ứng dụng trên nền tảng Java Để tạo một dự án Google App, ta có thể sử dụng Eclipse... trên hình ảnh: thay đổi size, cắt, xoay, lật ảnh JPEG và PNG Google Web Toolkit Là một bộ công cụ được google phát triển để xây dựng, tối ưu hóa những ứng dụng web phức tạp Mục đích của bộ công cụ này là phát triển ứng dụng web với hiệu suất cao mà không cần một chuyên gia về XMLHttpRequest, JavaScript Cài đặt môi trường phát triển ứng dụng trên Google App Engine (Lựa chọn nền tảng GAE Java) Nhằm hỗ. .. và MathCad Tex/LaTex TEX là một hệ thống sắp chữ được viết bởi Donald Knuth Được phổ biến trong môi trường hàn lâm, đặc biệt là trong cộng đồng toán học, vật lí và khoa học máy tính Trong hầu hết các bản cài đặt Unix, nó gần như thế chỗ của troff, cũng là một chương trình định dạng văn bản được ưa thích khác TeX nói chung được xem là cách tốt nhất để gõ công thức toán học phức tạp, đặc biệt là ở dạng... bằng Java Nó cực kì linh hoạt, không áp đặt quy ước code hoặc cách bố trí thư mục đối với dự án Java cần build Hầu hết các IDE cho Java đều có hỗ trợ Ant, đầu vào là một tập tin xml có cấu trúc định sẵn MAVEN Maven là một công cụ quản lý dự án phần mềm, hỗ trợ build, report, tìm kiếm dependences, và tạo document cho project Lợi ích khi sử dụng Maven: Cung cấp cho người dùng một quy trình build chuẩn... hợp những bộ công cụ phát triển phần mếm khách dưới dạng Plug-in, bản thân JDT cũng có thể được coi như là một Plug-in làm cho Eclipse như là một Java IDE (Integrated Development Enviroment) Ngoài ra, để thực hiện làm việc nhóm một cách có hiệu quả, đặt biệt là việc quản lý các phiển bản trong khi lập trình, cần phải có hệ thống hỗ trợ code chung và quản lý sự thay đổi thông tin Bên cạnh TortoiseSVN . biểu chi tiết bài toán sẽ giải quyếtXây dựng hệ thống phần mềm (dạng web trên nền tảng đám mây) hỗ trợ học sinh phổ thông học toán. Hệ thống là một tập. cung cấp nền tảng điện toán cho phép khách hàng phát triển các phần mềm, phục vụ nhu cầu tính toán hoặc xây dựng thành dịch vụ trên nền tảng đám mây

Ngày đăng: 23/01/2013, 14:16

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan