1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài tập Mô thức lập trình

12 826 19

Đ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

1 KỸ THUẬT LẬP TRÌNH ĐẠI HỌC BÁCH KHOA HÀ NỘI Bộ môn: Kĩ thuật lập trình TÌM HIỂU VỀ MỘT SỐ MÔ HÌNH LẬP TRÌNH Giảng viên: Vũ Đức Vượng Thực hiện: Sinh viên: Nguyễn Bá Duy MSSV: 20121397 Lớp: CNTT 1.01 Hà Nội 19/01/2015 KỸ THUẬT LẬP TRÌNH Lời nói đầu Bất kì ngôn ngữ lập trình mang tính logic cao tuân theo quy chuẩn toán học Tuy vậy, ngôn ngữ lại có phương thức riêng để thực quy chuẩn đó, đặc biệt lĩnh vực hàm (function), biến (variable), phương thức (method) đối tượng (object) Bên cạnh đa dạng ngôn ngữ lập trình, dần có nhiều mô hình lập trình đời, phổ biến kể đến như: Lập trình hướng đối tượng (object-oriented programming), lập trình thủ tục(procedural programming) lập trình cấu trúc (structured programming) Mỗi mô hình lập trình lại có đặc trưng riêng cách sử dụng tính trừu tượng hóa trình xác định Các nhóm khác công nghệ phần mềm đề xướng phương pháp khác nhau, ngôn ngữ lập trình khác tức mô hình lập trình khác Một số ngôn ngữ thiết kế để hỗ trợ mô hình đặc thù (Java hỗ trợ lập trình hướng đối tượng Haskell hỗ trợ lập trình chức năng) Một số ngôn ngữ khác lại hỗ trợ nhiều mô hình (như Python Common Lisp) Một số mô hình lập trình cấm thao tác mà ngôn ngữ có Chẳng hạn, lập trình cấu trúc không cho phép sử dụng lệnh goto Quan hệ mô hình lập trình ngôn ngữ lập trình phức tạp ngôn ngữ hỗ trợ nhiều mô hình lập trình Thí dụ C++ thiết kế để hỗ trợ phần tử lập trình thủ tục, lập trình hướng đối tượng lập trình tiêu Mặc dù vậy, người thiết kế người lập trình định làm để xây dựng chương trình dùng phần tử mô hình Người ta viết chương trình hoàn toàn theo kiểu lập trình thủ tục C++, viết chương trình hoàn toàn hướng đối tượng, hay viết chương trình có phần tử hai mô hình Ở thời kz đầu, công nghệ phần mềm hoàn toàn dựa thao tác lập trình mã nhị phân mã máy, mà đại diện giá trị Điều khiến cho trình thiết kế, kiểm soát hoạt động sửa lỗi ứng dụng trở nên vô rắc rối không hiệu Chúng ta coi phương thức lập trình thời điểm thuộc mô hình lập trình bậc thấp (low-level programming paradigm) Về sau, với phát triển công nghệ, hạn chế giai đoạn dần xóa bỏ với đời ngôn ngữ lập trình hệ thứ COBOL, Fortran BASIC, đồng thời, mô hình lập trình xuất tiếp tục sử dụng hiệu phổ biến ngày nay, mô hình lập trình thủ tục (procedural paradigm) Dần dần, chứng kiến phát triển mạnh mẽ số lượng mô hình lập trình, mà kể đến mô hình sau: Lập trình cấu trúc - Structured programming 3 KỸ THUẬT LẬP TRÌNH … Lập trình chức - Functional programming Lập trình logic - Logical paradigm Lập trình trực quan - Visual programming Lập trình song song - Parallel programming Lập trình phân tán - Distributed programming Lập trình tương tranh - Concurrent programming Lập trình định hướng đối tượng - Component-oriented programming Lập trình cực độ - Extreme programming 4 KỸ THUẬT LẬP TRÌNH SƠ LƯỢC VỀ MỘT SỐ MÔ HÌNH LẬP TRÌNH PHỔ BIẾN Functional programming Đặc điểm: • • • • • • • Nguyên l{ { tưởng: Toán học lý thuyết hàm Các giá trị tạo biến đổi Trừu tượng hóa biểu thức thành hàm ngược lại, hàm tính toán biểu thức Hàm lớp giá trị Hàm giá trị hoàn chỉnh, tương tự số, danh sách Thích hợp với tính toán theo yêu cầu Mở khả Functional Programming thể loại lâu đời ba paradigm lập trình Ngôn ngữ FP IFP, phát minh vào năm 1955, năm trước có Fortran Sau đó, LISP đời năm 1958, năm trước có COBOL Cả Fortran COBOL ngôn ngữ imperative (hay gọi procedural) Chúng đặc biệt thành công ứng dụng vào tính toán khoa học nghiệp vụ, trở thành paradigm thống trị suốt 30 năm đầu kỉ nguyên thông tin Vào năm 1970, Object-Oriented paradigm bắt đầu phát triển Cùng với trưởng thành ngôn ngữ lập trình hướng đối tượng, OO trở thành paradigm sử dụng phổ biến 5 KỸ THUẬT LẬP TRÌNH Logical paradigm Khi mô tả toán dạng logic vị từ, ta yêu cầu hệ thống tìm kiếm lời giải liên quan đến khai báo Bài toán cần giải xem “mục tiêu” mà hệ thống phải chứng minh sở tri thức khai báo Như thế, toàn kí hiệu ngôn ngữ lập trình suy công thức đặc biệt: - Phát sinh từ yêu cầu Nhằm chứng minh mục tiêu Để trả lời cho câu hỏi hệ thống xem “đích” cố chứng minh “đích” cách tạo suy diễn sở tri thức khai báo Một ngôn ngữ logic dùng giai đoạn đặc tả yêu cầu quy trình xây dựng sản phẩm phần mềm Hơn nữa, logic vị từ cho phép biểu diễn hầu hết khái niệm định lí môn khoa học 6 KỸ THUẬT LẬP TRÌNH Visual programing Trong xu hướng phát triển mạnh mẽ tin học, số người sử dụng máy tính tăng lên nhanh máy tính sử dụng hầu hết lĩnh vực đời sống nên đòi hỏi ngôn ngữ lập trình phải đơn giản dễ sử dụng mang tính đại chúng cao Chính phương pháp lập trình trực quan đời Đặc điểm ngôn ngữ lập trình trực quan dễ sử dụng, triển khai ứng dụng cách nhanh chóng Parallel programming Tính toán song (Parallel Computing) việc chia công việc thành công việc nhỏ cho công việc thực đồng thời với hệ thống có nhiều vi xử lý (multiprocessor) hay vi xử lý đa nhân (multicore) nhằm giảm thời gian thực công việc xuống Việc lập trình để tách công việc nhỏ xếp để xử lý song song gọi lập trình song song Lập trình song song công việc phức tạp so với lập trình thông thường, người phát triển phải thực trình “song song hóa”, biến đổi chương trình thành chương trình song song có khả tận dụng tối đa sức mạnh hệ thống Quá trình song song hóa gồm ba giai đoạn chính: Phân chia chương trình thành công việc (Sub-task decomposition) Phân tích phụ thuộc (Dependence anlysic) Định thời công việc (Task scheduling) Nói cách dễ hiểu lập trình song song lập trình để chạy đa luồng với dòng CPU đa nhân (core i3, core i5, core i7,…) KỸ THUẬT LẬP TRÌNH Concurrent programming Lập trình tương tranh kỹ thuật quan trọng thách thức Một mặt, đem lại khả sử dụng hiệu cho hệ thống song song phân tán Mặt khác, rủi ro việc tương tác tiên trình thực đồng thời gây lỗi phần mềm không dễ dàng để tìm Lập trình tương tranh, số dòng lệnh thực đồng thời Mỗi dòng lệnh chương trình tuần tự, ngoại trừ thực tế dòng lệnh giao tiếp gây trở ngại lẫn Mỗi dòng lệnh luồng, chương trình gọi chương trình đơn luồng, chương trình viết theo phương pháp tương tranh chương trình đa luồng Đặc điểm: Người dùng tương tác với ứng dụng tiến trình thực thi Những tiến trình chạy thời gian dài làm trì hoãn tiến trình ngắn Các chương trình phức tạp thực tốt bọ xử lý đa luồng Những tiến trình đòi hỏi điều khiện tiên tạm dừng đợi đến đáp ứng để tiếp tục xử lý Distributed programming Lập trình phân tán dạng lập trình song song (tính toán song song) Lập trình song song tạo mối liên hệ máy tính đơn vị tính toán, khiến chúng hoạt động đồng thời vấn đề cụ thể (dự báo thời tiết chẳng hạn) Các đơn vị tính toán đặt gần tách rời Khi đơn vị tính toán đặt tách rời, ta gọi lập trình phân tán Với mô hình lập trình này, đơn vị tính toán thường khác nhau, khác hệ điều hành thiết lập mạng máy tính trở nên tương đối phức tạp khó khăn Lập trình mạng phân tán, thường có khái niệm chính: peer to peer client – server peer to peer lập trình ngang hàng máy tính… lập trình client – server lập trình cho phép n máy client kết nối tới m máy server – mô hình gặp nhiều thực tế… KỸ THUẬT LẬP TRÌNH Extreme programming Extreme Programing tiến phương Agile (Agile Method) Nó hình thành tập thực nghiệm (practice) đơn giản phụ thuộc lẫn nhau.Những pactice làm việc với để hình thành dạng tổng quát thành phần Khách hàng thành viên nhóm phát triển (Cutomer team member) Chúng ta mong muốn khách hàng nhóm phát triển làm việc chung với để họ hiểu vấn đề giải vấn đề Vậy khách hàng? Khách hàng nhóm XP nhóm người định nghĩa xác định độ ưu tiên chức hệ thống (hay sản phẩm) Đôi khách hàng nhóm nhà phân tích nghiệp vụ chuyên gia marketing làm việc công ty phần mềm với nhóm phát triển Đôi khách hàng đâị diện người dung Đôi khách hàng người trả tiền Nhưng dự án XP, khách hàng họ thành viên nhóm để phát triển Tình tốt khách hàng làm việc với nhóm phát triển phòng Hoặc chí làm việc nơi cách độ 100 feet so với phòng làm việc nhóm phát triển Khoảng cách xa khó thỏa mãn điều kiện “Customer team member” Nếu khách hàng làm việc tòa nhà khác quốc gia khác khó mà yêu cầu họ tham gia với nhóm Chúng ta làm khách hàng gần nhóm phát triển? Lời khuyên tìm sẵn long làm việc chung đứng vai trò khách hàng thực thụ Chu kỳ ngắn (Short C cles) Một dự án XP giao sản phẩm dở dang (hay dự án thực hiện, dịch từ chữ working project) tuần Mỗi bước lặp tuần Mỗi bước lặp tuần sản xuất phần mềm dở dang đáp ứng số yêu cầu khách hàng Tại thời điểm cuối bước lập, hệ thống demo cho khách hàng xem nhận phản hồi họ Kế hoạch bước lặp: Mỗi bước lặp thường kéo dài tuần Nó đại diện cho lần giao hàng thử, không them vào sản phẩm thức Nó tập user story chọn khách dựa chi phí nhóm phát triển đưa 9 KỸ THUẬT LẬP TRÌNH Nhóm phát triển đưa chi phí cho bước lặp cách đo chi phí bước lặp họ làm trước Khách hàng chọn tùy ý số lượng story cho bước lặp cho tổng chi phí ước lượng vượt ngân sách Mỗi bước lập khởi động, khách hàng đồng ý không thay đổi định nghĩa story độ ưu tiên Trong suốt thời gian này, nhà phát triển tự cắt story thành nhiệm vụ (task) cà tự cài đặt task tùy theo thuận lợi mặt kỹ thuật kinh doanh Kế hoạch phát triển: Nhóm XP thường tạo kế hoạch phát hành tương ứng với bước lặp Một phát hàn thường thành tháng làm việc Nó đại diện cho lần giao hàng thường đưa vào sản phẩm Một phát hành bao gồm tập story phân độ ưu tiên khách hàng dựa ngân sách mà nhóm phát triển đưa Nhóm phát triển xây dựng ngân sách cho phát hành cách đo chi phí tiêu tốn phiên phát hành trước Khách hàng chọn số lượng story cho phát hành cho tổng chi phí ước lượng không vượt ngân sách Khách hàng xác định trình tự story cài đặt phát hành Nếu muốn, nhóm phát triển đưa vài bước lập xác định xem story cài đặt bước lặp Các phát hành không cố định, khách hàng thay đổi nội dung lúc Họ hủy viết story thay đổi độ ưu tiên story Các chương trình kiểm tra thỏa mãn yêu cầu sản phẩm (Acceptance Test) Chi tiết user story thu nhập dạng thức acceptance test đặc tả khách hàng Các acceptance test story viết trước lúc với việc cài đặt story Chúng viết theo ngôn ngữ kịch cho phép chúng chạy tự động lặp lại Ngôn ngữ acceptance test phát triển tiến hóa với hệ thống Khách hàng thuê nhóm phát triển tạo hệ thống thực thi kịch đơn giản họ có phận kểm soát chất lượng (A) riêng để phát triển Nhiều khách hàng nhờ A phát triển công cụ cho việc kiểm tra độ thỏa mãn sản phẩm trực viết acceptance test Mỗi acceptace test thành công, thêm vào nhóm acceptance test thành công trước đó, không phép thất bại 10 KỸ THUẬT LẬP TRÌNH Nhóm acceptance test tăng trưởng lên chạy nhiều lần ngày, chạy build hệ thống Nếu acceptance test thất bại build báo cáo hỏng Như yêu cầu gọi cài đặt xong không bị vỡ Hệ thống chuyển từ trạng thái cũ sang trạng thái mà không phép không làm việc ( nghĩa phải thỏa mãn yêu cầu cũ lẫn mới) lâu vài Lập trình theo cặp (Pải Programming) Mã nguồng sản phẩm viết cặp lập trình viên làm việc với máy tính Một thành viên cặp giữ bàn phím đánh code Thành viên lại quan sát code đánh tìm kiếm lỗi cải tiến mã Cả tương tác với cách lien tục bận rộn với công việc viết phần mềm Vai trò thay đổi thường xuyên Người giữ bàn phím mệt mỏi dẫn đến dễ sai lầm Người lại nhận lại bàn phím điều khiển Bàn phím hoán đổi nhiều lần người Mã nguồn kết thiết kế viết người Công sức Mối quan hệ theo cặp thay đổi lần ngày để lập trình viên làm việc với người ngày Xuyên suốt bước lặp XP, thành viên nhóm phát triển phải làm việc với thành viên khác nhóm Và họ làm công việc nội dung bước lặp mà Điều tăng cường trải rộng kiến thức cho toàn nhóm Trong kỹ thuật đặc trưng nguyên vẹn công việc yêu cầu kỹ thuật đặc trưng thường giao cho chuyên gia chuyên gia làm việc với hầu hết thành viên lại nhóm Điều trải rộng kiến thức cho toàn nhóm để thành viên khác thay cho chuyên gia trường hợp khẩn cấp Nguyên cứu Laurie Williams Nosek việc theo cặp không giảm hiệu đội ngũ lập trình mà gia giảm đáng kể tỉ lệ sai sót Sở hữu tập thể (Collective Ownership) Một cặp có quyền check out chỉnh sửa, cải tiến module Không lập trình viên chịu trách nhiệm cá nhân với module kĩ thuật Mọi người làm việc với GUI Mọi người làm việc với 11 KỸ THUẬT LẬP TRÌNH middle ware Mọi người làm việc với database Không có nhiều quyền lực người khác kỹ thuật hay module Điều nghĩa XP phản đối chuyên viên Nếu bạn có kỹ lập trình GUI, hẳn bạn thích nhiệm vụ lien quan tới GUI, bạn yêu cầu bắt cặp với nhiệm vụ middle ware database Nếu bạn định học chuyên môn thứ 2, bạn đăng kí nhiệm vụ làm việc với chuyên gia chuyên môn Họi dạy bạn bạn không bị giam giữ chuyên môn Chạy bền (Sustainable Pace) Một dự án phần mềm chạy đua nước rút, mà chạy marathon Nhóm vừa rời vạch xuất phát chạy thật nhanh tiêu tốn hết lượng trước họ đến đích Để hoàn tất nhanh team phải kiểm soát tốc độ, họ phải trì lượng tỉnh táo Họ phải chạy với nhịp độ vừa phải vững Quy luật XP nhóm không phép làm việc (Overtime) Ngoại lệ nhát vào tuần cuối phiên phát hành Nếu team phải tình hoàn tất nhanh chóng kịp tiến độ phát hành overtime 12 KỸ THUẬT LẬP TRÌNH Kết luận Với lượng kiến thức vô hạn chế chưa có nhiều thời gian để tìm hiểu sâu, báo cáo không hi vọng mang đến mẻ mà đơn giản tổng hợp, lược dịch chỉnh sửa lại viết có internet, sách in số tài liệu khác Sai sót mặt nội dung khiếm khuyết cách trình bày chắn tránh khỏi, mong nhận thông cảm giúp đỡ thầy để báo hoàn thiện hơn! Em xin chân thành cảm ơn! [...]... KỸ THUẬT LẬP TRÌNH middle ware Mọi người cùng làm việc với database Không ai có nhiều quyền lực hơn người khác về một kỹ thuật hay một module nào đó Điều này không có nghĩa là XP phản đối chuyên viên Nếu bạn có kỹ năng về lập trình GUI, hẳn bạn thích các nhiệm vụ lien quan tới GUI, nhưng bạn sẽ được yêu cầu bắt cặp với các nhiệm vụ ở middle ware và database Nếu bạn quyết định học một chuyên môn thứ... thì có thể overtime 12 KỸ THUẬT LẬP TRÌNH Kết luận Với lượng kiến thức vô cùng hạn chế cũng như chưa có nhiều thời gian để tìm hiểu sâu, báo cáo này không hi vọng mang đến những gì mới mẻ mà đơn giản chỉ là sự tổng hợp, lược dịch và chỉnh sửa lại các bài viết đã có trên internet, sách in và một số tài liệu khác Sai sót về mặt nội dung cũng như khiếm khuyết trong cách trình bày chắc chắn không thể tránh... yêu cầu bắt cặp với các nhiệm vụ ở middle ware và database Nếu bạn quyết định học một chuyên môn thứ 2, bạn có thể đăng kí các nhiệm vụ và làm việc với chuyên gia ở chuyên môn đó Họi sẽ dạy bạn và bạn sẽ không bị giam giữ trong chuyên môn của mình Chạy bền (Sustainable Pace) Một dự án phần mềm không phải là một cuộc chạy đua nước rút, mà nó là một cuộc chạy marathon Nhóm nào vừa rời vạch xuất phát đã ... nhiều mô hình lập trình Thí dụ C++ thiết kế để hỗ trợ phần tử lập trình thủ tục, lập trình hướng đối tượng lập trình tiêu Mặc dù vậy, người thiết kế người lập trình định làm để xây dựng chương trình. .. sau: Lập trình cấu trúc - Structured programming 3 KỸ THUẬT LẬP TRÌNH … Lập trình chức - Functional programming Lập trình logic - Logical paradigm Lập trình trực quan - Visual programming Lập trình. .. nhiều mô hình (như Python Common Lisp) Một số mô hình lập trình cấm thao tác mà ngôn ngữ có Chẳng hạn, lập trình cấu trúc không cho phép sử dụng lệnh goto Quan hệ mô hình lập trình ngôn ngữ lập trình

Ngày đăng: 04/11/2015, 16:07

Xem thêm: Bài tập Mô thức lập trình

TỪ KHÓA LIÊN QUAN

w