P P L L T
Câu 1: Nhưng tư tưởng CM trong lập trình?
Những tư tưởng cách mạng của những quan điểm kh.học trong giai đoạn này thể hiện bởi những đặc trưng sau :
-Chương trình máy tính và lập trình viên trở thành đối tượng nghiên cứu của lý thuyết lập trình
-Vấn đề cơ bản đặt ra với lý thuyết lập trình là làm thế nào để làm chủ đc độ phức tạp của hoạt động lập trình. Cuộc khủng hoảng lập trình đem lại cho chúng ta nhận thức sau :
· Lập trình là một trong những lĩnh vực khó nhất của toán học ứng dụng, có thể coi lập trình như là một khoa học nhằm đề xuất các nguyên lý,các phương pháp nâng cao năng suất cho lập trình viên.
Năng suất của chương trình cần đề cập đến : tính đúng đắn của chương trình ; chương trình dễ đọc, dễ hiểu ; dễ thực thi ; dễ bảo trì ; tận dụng tối đa các khả năng của thiết bị mà không phụ thuộc vào thiết bị
· Chúng ta chỉ kiểm soát đước tính đúng đắn của một đối tượng nào đó nếu nó được thiết kế một cách đơn giản và trong sáng.
Câu 2: Trình bày các bước triển khai chương trình theo sắc thái công nghệ. Cho vd mình họa.
Ø Công nghệ để sản xuất ra một phần mềm thường trải qua các giai đoạn sau :
1. Tìm hiểu nhu cầu của khách hàng.
2. Xác định các chức năng cần có của SP.
3. Chia nhỏ các chức năng này thành các nhóm chức năng tương đối độc lập với nhau. Mỗi nhóm chức năng này tương ứng với một bộ phận hợp thành của SP.
4. Giao việc thiết kế và sản xuất từng bộ phận cho tứng người, từng nhóm người .
5. Các nhóm triển khai công việc : thực hiện việc phân tích,thiết kế ,thử nghiệm sản phẩm của nhóm mình . Trong quá trình này các nhóm thường xuyên liên lạc với nhau nhằm hạn chế tới mức tối đa công việc trùng lặp và đảm bảo tính tương thích khi ghép nối các bộ phận.
6. Ta ghép nối các bộ phận, các chi tiết thành sản phẩm.
7. Bàn giao lô sản phẩm đầu tiên cho khách hàng.
8. Thu thập thông tin phản hồi từ phía khách hàng è từ đó đi đến quyết định tiếp tục sửa đổi SP , cải tiến SP hay hủy bỏ việc sản xuất SP.
Câu 3: Trình bày những lý do căn bản dẫn đến khủng hoảng phần mềm những năm 1960.
Những năm 60 đã bùng nổ “ cuộc khủng hoảng của đảm bảo phần mềm ” đặc trưng bởi 2 hiện tượng sau đây.
- Chi phí tin học quá lớn, trong đó chi phí cho phần mềm chiếm tỷ lệ cao và ngày càng tăng so với chi phí cho kỹ thuật tin học( phần cứng ). Năm 1965 tổng chi phí cho tin học trên thế giới chiếm 250 tỷ franc.
- Rất nhiều đề án lớn nhằm ứng dụng tin học bị thất bại liên tiếp, nguyên nhân thất bại chủ yếu do phần đảm bảo chương trình.
+ Cứ 6 dự án thì có đến 2 dự án thất bại.
+ Trung bình thời gian kéo dài thực tế kéo dài 50% , cá biệt lên đến 200%, 300%.
+ Các dự án lớn dễ bị thất bại.
+ ¾ hệ thống lớn có lỗi khi thực hiện.
+ Qua trình phân tích yêu cầu ( chiếm 5% công sức ) thì để lại 55% lỗi, có 18% phát hiện được.
è Nguyên nhân thất bại do không đảm bảo chương trình.
Câu 4: Trình bày pp triển khai chương trình theo mức từ trên xuống. Cho vd? Tác dụng của việc triển khia CT theo mức là gì?
(Phương pháp triển khai chương trình từ trên xuống: Đi từ cái chung đến cái riêng, từ kết luận đến cái đã biết, từ tổng thể đến đơn vị. Đây là phương pháp dùng rộng rãi trong quá trình thiết kế và cài đặt chương trình.)
- Khi vận dụng nguyên lý phân mức bài toán theo cấp trừu tượng hóa chúng ta đã làm quen với 2 cách tiếp cận: Từ trên xuống và từ dưới lên. Cách tiếp cận thứ nhất giúp cho chúng ta xuất phát từ một máy giải trừu tượng đi dần tới máy giải cụ thể được trang bị một ngôn ngữ lập trình cụ thể. Cách tiếp cận thứ 2 đòi hỏi xuất phát từ những viên gạch đầu tiên để thiết kế nền móng và từng tầng cho đến khi nhận được một kiến trúc hoàn chỉnh.
Lập trình cấu trúc là nguyên lý chủ đạo trong công nghệ phần mềm. Theo nguyên lý này ta sử dụng rộng rãi khái niệm trừu tượng hóa nhằm mục đích phân rã bài toán thành những bài toán nhỏ hơn để dễ triển khai và đảm bảo tính đúng đắn của chương trình.
Qúa trình trừu tượng hóa được chia thành nhiều mức. Mỗi mức nói chung được xây dựng bởi 4 công cụ:
1. Ngôn ngữ.
2. Cấu trúc dữ liệu.
3. Các thao tác.
4. Máy giải.
Ngôn ngữ là công cụ dùng để mô tả cấu trúc dữ liệu và các thao tác cần thiết. Máy giải ở các mức cao là một máy trừu tượng ( máy giải định ). Càng ở mức trên thì mức độ trừu tượng càng cao theo nguyên tắc “thấy cây chưa quan trọng bằng thấy rừng”. Ngôn ngữ ở các mức trên có thể là ngôn ngữ tự nhiên hoặc ngôn ngữ toán học.
Qúa trình trừu tượng hóa được chính xác dần và mịn dần ở những mức dưới cho đến khi ta nhận được một chương trình hoàn chỉnh viết trên một ngôn ngữ lập trình cụ thể để chạy trên một máy tính cụ thể.
Như trên đã nói, phương pháp triển khai chương trình bằng các bước làm mịn dần chính là tiền thân của pp thiết kế chương trình từ trên xuống.,
- Tác dụng việc triển khai CT theo mức :
+ Dễ dàng tính độ phức tạp của CT.
+Quá trình trừu tượng hóa đc chính xác dần , làm mịn dần cho đến khi ta thu đc một CT hoàn chỉnh đc viết bằng NN cụ thể và chạy trên máy tính cụ thể .
Câu 5: Tại sao nên chia hoạt động lập trình làm 2 bước:
B1: Thiết kế kiến trúc chương trình và các trừu tượng.
B2: Mã hóa
Chia hoạt động LT thành 2 bước đó vì :
- Thiết kế kiến trúc chương trình là hoạt động độc lập với ngôn ngữ LT, là hoạt động quan trọng nhất và khó nhất trong LT.
- Mã hóa chuyển bản thiết kế thành chương trình vận hành đươc, dùng một ngôn ngữ LT cụ thể, phụ thuộc ngôn ngữ LT
Câu 6: Nêu tên các mô hình lập trình? Đặc trưng chính của các mô hình có cấu trúc, hướng đối tượng, hướng lát cắt.
v Các mô hình lập trình:
+ LT hướng thiết bị.
+ LT hướng công tắc.
+ LT có cấu trúc/ LT thủ tục.
+ LT hướng đối tượng.
+ LT hướng lát cắt.
+ LT hướng cấu phần.
v Đặc trưng chính của các mô hình có cấu trúc, hướng đối tượng, hướng lát cắt.
- Có cấu trúc:
Lập trình có cấu trúc là nguyên lý chủ đạo trong CNPM. Theo nguyên lý này ta sử dụng rộng rãi khái niệm trừu tượng hóa. Nhằm mục địch phân rã bài toán thành các bài toán nhỏ hơn để dể triển khai và phải đảm bảo tính đúng đắn của CT => các ngôn ngữ lập trình bậc cao ra đời để hỗ trợ cho nó: pascal, C …
Lập trình có cấu trúc: Câu lệnh cấu trúc, dữ liệu cấu trúc, chương trình theo các cấu trúc.
- Hướng đối tượng:
+ Không thể tách rời CTDL với các thao tác trên CTDL đó, DL phát sinh để chịu sự biến đổi, để được xử lý và nó là đối tượng của thao tác.
+ Nhiều kiểu DL trong thực tế thực ra cũng chỉ là kế thừa và mở rộng từ những kiểu DL trước đó => Do đó khi mô tả các kiểu DL thay vì chúng ta mô tả 1 cách bình đằng, lộn xộn ta sẽ mô tả theo 1 trật tự phân lớp cha con.
+ Sự tồn tại và mất đi của đối tượng phải được thực hiện một cách tường mình.
- Hướng lát cắt (AOP): AOP cho phép đóng gói các hành vi đan nhau vào trong các khối., các lát cắt của hệ thống có thể được thay đổi thêm, sửa, tái sử dụng…
+ mODULE
Câu 7: Phong cách lập trình là gì? Trình bày các nguyên tắc tạo nên phong cách lập trình tốt.
Viết một ct minh họa.
- Phong cách LT là : phong cách LT bao hàm một triết lý về LT.
- Phong cách LT tốt tuân theo các nguyên lý LT đc cảm nhận bởi kinh nghiệm. Các nguyên lý tạo nên phong cách LT tốt :
+ NL 1: LT không chỉ viết một chương trình mà máy tính hiểu mà còn cần phải để mọi người hiểu.
+NL 2 :Chương trình tốt cần đến các chú thích hợp lý.
+NL 3 : Nên nghĩ mỗi phương thức giải quyết một vấn đề.
+NL 4 :Tên nên đặt ngắn gọn ,gợi nhớ , giải thích những gì CT làm một cách chính xác.
(LT hướng cấu trúc thì thì tên cấu trúc là động từ, LT hướng đối tượng thì tên đối tượng là một danh từ.)
+NL 5 : Ẩn thông tin: Một phương thức nên tre đi những gì diễn ra ẩn trong nó.
+NL 6 : Các biểu thức nên mang tính tự nhiên.
+NL 7 : Dùng các dấu ngoặc để tránh tối nghĩa.
+NL 8 : Phân tích các biểu thức phức tạp thành các biểu thức đơn giản.
+NL 9 : Tính sáng sủa của biểu thức.
+NL 10: Đặt tên cho các số tối nghĩa trong chương trình. (các hằng trong chương trình, các chỉ số).
+NL 11 :Nên dùng các hằng ký tự thay vì dùng các hằng nguyên.
Câu 8: Các lỗi có thể phát sinh trong quá trình thiết kế và mã hóa 1 CT.
- Ý đồ thiết kế sai.
Đây là lỗi chiến lược một loại lỗi nặng, nó khiến cho đội phát triển dự án thất bại hoàn toàn. Sản phẩm sau nhiều năm thực hiện đến khi hoàn thành không sử dụng được.
Lỗi này đưa ra quy trình thiết kế sai mục đích è Khi áp dụng quy trình này sẽ thu được sản phẩm sai mục đích.
- Phân tích các yêu cầu không đầy đủ và lệch lạc.
Chú ý khi viết một phần mềm cho một quy trình nghiệp vụ nhất định thì ta gặp 2 khó khăn sau:
+ Khách hàng: Người ta không hiểu biết gì về tin học nên không thể phát biểu chính xác và đầy đủ các yêu cầu của họ.
+ Ta: Không có đủ hiểu biết về địa bàn và đối tượng mà ta định áp dụng tin học. Do đó, ta không thể thu thập được đầy đủ và chính xác các thông tin của đối tượng.
ð Khách hàng và người phát triển dự án không hiểu nhau. è Mâu thuẫn.
è Gây ra lỗi
- Hiểu sai về các chức năng (lỗi giai đoạn thiết kế chức năng):
Hiểu sai chức năngè Đặc tả sai è Cài đặt sai è Chức năng sai.
- Lỗi tại các đối tượng chịu tải (Lỗi thuộc giai đoạn 3):
Đó là các lỗi nằm ở các thủ tục các thao tác, các đối tượng ở mức thấp có mặt trong bộ phận hợp thành của hầu hết các thủ tục khác. è càng mức dưới thì mức độ chịu tải càng lớn, lỗi phát sinh mức dưới được xem là nặng hơn mức trên.
Nguyên lý mức độ lỗi: Lỗi nặng nhất nằm ở mức cao nhất (ý đồ thiết kế) và mức thấp nhất (thủ tục có mức chịu tải lớn nhất)
- Lỗi lây lan: Là loại lỗi đc truyền từ chương trình này sang chương trình khác. Nó được định nghĩa như sau: Giả sử có 2 chương trình: Chương trình A nhiễm lỗi E, chương trình B không nhiễm lỗi E è Đến một thời điểm nào đó B cũng nhiễm lỗi E một cách trực tiếp hay gián tiếp. èE gọi là lỗi lây lan.
- Lỗi cú pháp (xảy ra ở giai đoạn 4): Lỗi cú pháp được tạo ra do ta viết sai các câu lệnh trong chương trình… Sai so với các quy định về văn phạm, cấu trúc của ngôn ngữ lập trình cụ thể. è Nói chung các lỗi cú pháp đều do chương trình dịch phát hiện và thông báo theo nguyên lý an toàn.
+ Nguyên lý an toàn: Mọi lỗi dù nhỏ đều phải được phát hiện ở một bước nào đó của chương trình. Việc phát hiện lỗi phải được thực hiện trước khi lỗi đó hoành hành.
- Hiệu ứng phụ (lỗi ở giai đoạn 5): Đây là hiện tượng xảy ra khi một đơn vị chương trình hay một chương trình con làm thay đổi giá trị của một biến ngoài ý muốn của lập trình viên.
{ Khắc phụ hiệu ứng phụ ta nên áp dụng nguyên lý địa phương sau đây:
+ Các biến địa phươngdù trùng với biến toàn cục không làm thay đổi giá trị của biến toàn cục.
+ Mọi tham biến hình thức, loại truyền theo trị trong các chương trình con đều là các biến địa phương.
+ Các biến khai báo trong các chương trình con đều là biến đụa phương.
ð Khi sử dụng biến phụ thì nên dùng biến địa phương.}
Câu 9: Một số kỹ thuật nâng cao hiệu suất CT?
- Tốc độ xử lý:
+ Thuật toán sử dụng: Tận dụng mọi thông tin đã biến từ bài toán, sử dụng thuật toán phù hợp nhất.
+ Lựa chọn cấu trúc dữ liệu:
Song song với thuật toán, cấu trúc dữ liệu cũng đóng vai trò quan trọng trong việc cải tiến hiệu xuất chương trình và nó có mối quan hệ mật thiết với thuật toán.
Lựa chọn đúng CTDL có tác dụng:
Giảm thời gian thực thi chương trình.
Giảm không gian bộ nhớ.
+ Tinh chế mã:
Tinh chế mã thường được thực hiện ở những phần “tốn kém” hoặc “điểm nóng ” của chương trình, để cải tiến hiệu suất mã dù đây là phương pháp không phải lúc nào cũng cần thiết nhưng đôi lúc nó tạo nên sự khác biệt lớn trong hiệu suất chương trình.
Điểm nóng là đoạn mã chiếm phần lớn thời gian thực hiện của chương trình.
- Không gian bộ nhớ :
Không gian dữ liệu :
· Đảm bảo tính đơn giản của dữ liệu cần xử lý.
· Trong một số trường hợp thì chúng ta đừng lưu trữ àm hãy tính lại khi cần thiết.
· Lựa chọn CTDL thích hợp.
· Nén dữ liệu lại sau đó giải nén khi cần.
· Dùng kiểu dữ liệu có kích thước nhỏ nhất có thể.
Câu 10: Trình bày hệ tiên đề Hoare.
Hệ tiên đề 1(H1) : tính chất của phép gan :
{P} x:=E {Q}.
{ P è Q[x/E] }
+Điều kiện đủ để Q đúng sau khi thực hiện phép gán x=E là (E là một biểu thức) trước khi thực hiện phép gán ta phải có : Q[x/E] là đúng ,Q[x/E] là phép thế mọi x trong Q bằng E.
+Điều kiện đủ để có Q sau khi thực hiện phép gán x=E là trước đó ta phải có P suy diễn được ra Q[x/E].
Hệ tiên đề 2(H2) : tính chất của dãy thao tác:
Nếu {P} T1 {Q} và {Q} T2 {R} thì {p} T1 ; T2 {R}
Hệ tiên đề 3( H3) : Tính chất của cấu trúc rẽ nhánh :
+ Dạng 1:
Nếu {P ,C} A {Q} và {P , !C} è{Q} thì {P} if C then A {Q}
+Dạng 2 :
Nếu {P ,C} A {Q} và {P , !C} B {Q} thì {P} if C then A else B {Q}.
Hệ tiên đề 4 ( H4) : Tính chất của vòng lặp với điều kiện trước :
+ Dạng 1: While B do S { ! B }
+Dạng 2 : Nếu { P và B} S {P} thì {P}
While B do S {P}
{P và !B}
Chú ý dạng 2 của hệ tiên đề 4 : đó là tính chất hết sức quan trọng của vòng lặp.Nếu P là bất biến với S theo điều kiện B (Nghĩa là nếu P và B đúng sau khi thực hiện S ta thu được P đúng) thì P sẽ bất biến đối với chính vòng lặp.
Câu 11: Tính cấu trức trong mô hình lập trình có cấu trức thể hiện ntn?
LT có cấu trúc là nguyên lý củ đạo trog công nghệ phần mềm.Theo nguyên lý này ta sử dụng rộng rãi khái niệm trừu tượng hóa nhằm mục đích phân rã bài toán thành những bài toán nhỏ hơn để dễ triển khai , và phải dảm bảo tính đúng đắn của chương trình.
Tính cấu trúc của mô hình LT có cầu trúc thể hiện ở các lệnh có cấu trúc, dữ liệu có cấu trúc, chương trình theo các cấu trúc è tất cả đều theo các cấu trúc nên gọi là LT có cấu trúc.
Chương trình =Bản mã hóa các thuật toán.
thuật toán =một tập hợp các thao tác ,tác động lên các đối tượng dữ liệu của bài ;
Thao tác : một ngôn ngữ LT cụ thể thì nó đc điều khiển bởi các lệnh, các cấu trúc điều khiển
Đối tượng dữ liệu :được thiết kế và tổ chức thành các cấu trúc.
Câu 12: Trình bày các hoạt động kiểm thử trong quá trình phát triển phần mềm.
- Kiểm thử là tiến trình thực thi chương trình với mục đích tìm ra lỗi.
- Các hoạt động kiểm thử trong quá trình phát triển phần mềm.
1. Kiểm thử đơn vị (unit testing).
· Áp dụng cho các đơn vị phần mềm.
· Thường sử dụng kỹ thuật kiểm thử hộp đen,trong một số TH có thể sử dụng kiểm thử hộp trắng và kiểm thử tĩnh.
· Dữ liệu thử đc tạo ra dựa trên hoạt động thiết kế.
· Thường đc thực hiện trên môi trường phát triển hệ thông.
2. Kiểm thử tích hợp (integration testing).
· Đc tiến hành sau khi kiểm thử đơn vị thành công.
· Gồm hai hoạt động :
i. Ghép nối tích hợp các đơn vị phần mềm lại với nhau.
ii. Kiểm thử ghép nối.
3. Kiểm thử hệ thống (system testing).
- Được thực hiện sau khi kiểm thử tích họp kết thúc. Nhằm chỉ ra rằng phần mềm đã thực hiện đúng những mong đợi hay chưa.
- Chỉ sử dụng kỹ thuật kiểm thử hộp đen.
- Dữ liệu thử được thiết kế dựa vào các yêu cầu cửa người sử dụng.
- Thường được thực hiện trên môi trường mà phần mềm sẽ vận hành.
4. Kiểm thử quy hồi (regression testing).
- Phần mềm sau khi đưa vào sử dụng có thể có nhiều chỉnh sửa cần kiểm thử lại. Hoạt động kiểm thử này gọi là kiểm thử hồi quy.
- Thường tái sử dụng các bộ dữ liệu thử đã sử dụng trong giai đoạn trước, trong một số trường hợp có thể sinh ra các bộ dữ liệu thử mới dựa trên các yêu cầu về sửa đổi.
Câu 13: Ý nghĩa của hoạt động đặc tả hệ thống nói chung và đặc tả CT nói riêng.
+ Sử dụng trong hợp đồng: Làm căn cứ giữa người sử dụng và người phát triển sản phẩm, để làm đánh giá độ lớn độ phức tạp, từ đó tính được chi phí và thời gian phát triển phần mềm.
+ Sử dụng trong hợp thức hóa: Đảm bảo sp làm ra phải thực hiện chính xác những gì người sử dụng mong muốn.
+ Trao đổi: làm tài liệu giữa người sử dụng và người phát triển, giữa người phát triển và người sử dụng.
+ Tái sử dụng.
Bạn đang đọc truyện trên: Truyen4U.Com