cnpm Full
CHƯƠNG 1
Câu 1: Nhân tố con người có vai trò thế nào trong ngành công nghiệp phần mềm? Tại sao lại có sự phân loại nghề nghiệp.
Trả lời:
1.1. Nhân tố con người có vài trò trong ngành CNPM :
Đối với một sản phẩn phần mềm, một người không thể hoàn thành mà là kết quả lao động của một nhóm người-ta gọi là nhóm phát triển phần mềm. Mỗi thành viên trong nhóm không được vị kỷ, thành quả lao động của nhóm được xen như là thành quả chung và phải tuyệt đối trung thành với nhóm.
Như vậy, một nhóm phát triển phần mềm như thế nào gọi là một nhóm hợp lý? Sau đây là một vài yếu tố cần xem xét:
- Nhóm có bao nhiêu thành viên,
- Nhóm được tổ chức như thế nào,
- Tình hình thực tế của mỗi thành viên trong nhóm,
- Môi trường, điều kiện mà nhóm đang làm việc,...
Mỗi thành viên trong nhóm phải có một số kiến thức cần thiết tuỳ thuộc vào vai trò trong nhóm để phát triển phần mềm.
1.2. Có sự phân loại nghề nghiệp là tại vì :
Yêu cầu hiện nay của sự phát triển Công nghệ Thông tin (CNTT) ở Việt nam đòi hỏi cần có những người lao động trong tất cả các ngành kinh tế biết sử dụng hữu hiệu CNTT trong công việc của mình, và đồng thời cần có những người trực tiếp tham gia vào sản xuất, kinh doanh, vận hành về CNTT. Do vậy cần có những lớp người lao động sau:
· Những người biết vận dụng sáng tạo CNTT vào nghiệp vụ chuyên môn.
· Những người tham gia quản lí và vận hành các hệ thống CNTT
· Những người tham gia trực tiếp vào việc phát triển và xây dựng ra các sản phẩm CNTT,...
Việc phân loại nghề nghiệp trong các hệ thống thông tin có thể được phân chia dựa vào các tiêu chuẩn như: mức độ kinh nghiệm, loại hình công việc,...
Câu 2: Các đặc tính của phần mềm. Việc phân loại phần mềm có đem lại lợi ích gì trong việc phát triển phần mềm.
Trả lời:
2.1 Các đặc tính của phần mềm:
Các đặc tính phần mềm là tất cả các điểm chung cho mọi ứng dụng: dữ liệu, các tiến trình, các ràng buộc, và các giao diện.
2.1.1. Dữ liệu
Đầu vào: Dữ liệu vào là dữ liệu ở bên ngoài máy tính, và chúng được đưa vào bằng cách sử dụng một thiết bị đầu vào. Thiết bị đầu vào được sử dụng để đưa dữ liệu vào máy tính có thể là: bàn phím, máy quét, hoặc được truyền từ một máy tính khác.
Đầu ra: đầu ra là các dữ liệu được đưa ra ngoài máy tính. Một số các thiết bị đầu ra như máy in, màn hình hiển thị, một máy tính khác...
Sự lưu trữ dữ liệu và sự tìm kiếm dữ liệu: Dữ liệu được mô tả ở dạng vật lý, trong một máy có thể đọc được các khuôn dạng dữ liệu. Việc tìm kiếm dữ liệu được hiểu là bạn có thể truy nhập vào dữ liệu ở dạng lưu trữ của nó. Việc lưu trữ và tìm kiếm luôn đi cùng với nhau (cả ở mức quan niệm lẫn trong các chương trình phần mềm). Việc lưu trữ dữ liệu đòi hỏi hai kiểu định nghĩa dữ liệu là kiểu vật lý và kiểu logic.
2.1.2. Xử lý
Xử lý bao gồm một chuỗi các lệnh hoặc các sự kiện có liên quan với nhau làm việc với các dữ liệu. Kết quả của một xử lý có thể là: làm thay đổi cơ sở dữ liệu, đưa dữ liệu trả lời ra thiết bị đầu cuối, máy in hoặc in ra giấy, có thể là những yêu cầu về các trang thiết bị, sản sinh những chương trình, hoặc lưu trữ những luật, những thông tin mới, được suy diễn ra về các tình huống, các phần tử.
2.1.3. Ràng buộc
Ràng buộc bao gồm: ràng buộc thứ tự trước, ràng buộc thứ tự sau, ràng buộc thời gian, ràng buộc cấu trúc, ràng buộc điều khiển và cả ràng buộc về tham chiếu.
· Ràng buộc về thứ tự trước (Prerequisite Constraint): Bắt buộc về thứ tự trước là điều kiện đầu tiên phải được đáp ứng để có thể bắt đầu quá trình xử lý.
· Ràng buộc về thứ tự sau (Postrequisite Constraint): Ràng buộc loại này là điều kiện cần phải thỏa mãn để quá trình xử lý có thể hoàn thành được. Cụm câu lệnh này được đưa vào cuối quá trình xử lý.
· Ràng buộc về thời gian (Time Constraint): Bao gồm ràng buộc về thời gian xử lý, thời gian phân chia cho một quá trình xử lý, thời gian yêu cầu đối với các quá trình xử lý bên ngoài, thời gian xử lý đồng bộ, thời gian trả lời cho quá trình xử lý với giao diện ngoài.
· Ràng buộc về mặt cấu trúc: Có thể hiểu là bao gồm việc xác định loại đầu vào và đầu ra của dữ liệu nào được cho phép, quá trình xử lý được thực hiện như thế nào và mối quan hệ giữa các quá trình với nhau.
· Ràng buộc về điều khiển: Liên quan đến việc duy trì mối quan hệ về dữ liệu.
· Ràng buộc về suy diễn: Đó là những khả năng có thể xảy ra từ một ứng dụng, dựa vào các kết quả trước đó, hoặc có thể dựa vào các quan hệ về dữ liệu, ta có thể dẫn đến một kết quả khác.
2.1.4. Giao diện
Quan trọng nhất là giao diện người sử dụng - là phương tiện giao tiếp giữa người sử dụng và chương trình. Sau đó là giao diện thủ công - là các mẫu báo cáo, .... và một số giao diện đã được chuẩn hóa như giao diện về mạng LAN của Institue of Electrical and Electronic Engineers, chuẩn OSI (Open System Interface) của International Standards Organization,...
2.2. Trong việc phát triển phần mềm thì việc phân loại phần mềm đem lại những lợi ích sau:
Phân loại phần mềm được định nghĩa như sự định hướng các công việc của một ứng dụng, ví dụ như theo kiểu hướng giao dịch, hỏi đáp, trợ giúp quyết định,...
2.2.1. Ứng dụng hướng giao dịch
Ứng dụng hướng giao dịch còn có tên là hệ thống xử lý giao dịch (TPS – Transaction Processing Systems) được sử dụng nhằm hỗ trợ các hoạt động hằng ngày của một công việc, bao gồm: xử lý đơn hàng, quản lý kiểm kê, ghi quỹ,...Chúng được đặc trưng như là các ứng dụng mà trong đó các yêu cầu, các dữ liệu và quá trình xử lý được biết rõ và có cấu trúc tốt. Theo nghĩa được biết rõ, chức năng đó phải có tính lập lại, thân thiện và rõ ràng. Theo nghĩa cấu trúc tốt, vấn đề đó phải có thể được xác định một cách đầy đủ và rõ ràng. Các yêu cầu có thể được định danh bởi đội ngũ xây dựng phần mềm.
2.2.2. Ứng dụng cơ sơ dữ liệu
Ứng dụng cơ sở dữ liệu được sử dụng như một ứng dụng xử lý câu hỏi về dữ liệu. Ngôn ngữ truy vấn dữ liệu chuẩn SQL cho phép người sử dụng đặt câu hỏi dưới dạng: họ biết họ cần gì nhưng không biết làm cách nào để lấy được dữ liệu đó. Các phần mềm máy tính đưa ra các phương pháp xử lý và truy cập tối ưu để thực hiện các thao tác đó.
Ở đây, có ba loại câu hỏi chính:
1- Tương tác: dữ liệu sử dụng xong là không cần nữa?
2- Dữ liệu được lưu trữ để sử dụng lại và thay đổi trong tương lai?
3- Dữ liệu được lưu trữ để sử dụng thường xuyên trong một số quá trình lập lại?
Ứng dụng truy vấn hỗ trợ một khái niệm là kho chứa dữ liệu (data warehouse). Đó là một sơ đồ lưu trữ xây dựng trên quan điểm: hầu hết dữ liệu cần phải giữ lại cho các truy nhập truy vấn trực tuyến. Tại đây lưu lại các phiên bản cũ của phần lớn các phần tử trong cơ sở dữ liệu, các lần vào ra giao dịch và các bản ghi liên quan đến một số quá trình hoạt động.
2.2.3. Ứng dụng hỗ trợ quyết định (Decision Supports System - DSS)
DSS làm nhiệm vụ xác định và giải quyết bài toán. Với ứng dụng hỗ trợ quyết định, họ phân tích, xác định các xu hướng, thực hiện các phân tích dữ liệu về mặt thống kê hay toán học từ đó giải các bài toán không cấu trúc. Dữ liệu dùng cho DSS thường lấy từ các ứng dụng sử dụng giao dịch.
Vì thông tin thường không đầy đủ, trong DSS thường giải bài toán bằng phương pháp lặp, áp dụng mô hình toán học hoặc thống kê để đi tới quyết định. Dữ liệu hỗ trợ và/hoặc hiệu chỉnh thường được đưa trở lại quá trình mô hình hoá để làm mịn các phân tích.
Ta thường gặp một số hệ thống được xem là một sản phẩm phụ của DSS như: Hệ thống thông tin thi hành, Hệ thống hỗ trợ quyết định theo nhóm
2.2.4. Hệ chuyên gia (Expert Systems - ES)
Các ứng dụng hệ chuyên gia là các ứng dụng tin học tự động hoá tri thức và khả năng lập luận của một hoặc nhiều chuyên gia trong một lĩnh vực cụ thể nào đó. ES phân tích các đặc trưng của một tình huống để đưa ra một lời khuyên, một khuyến nghị hoặc phác hoạ một kết luận bằng các quá trình lập luận tự động. Một hệ ES bao gồm bốn thành phần chính: hệ thống thu thập tri thức, cơ sở tri thức, mô tơ suy diễn (còn gọi là cơ sở luật) và hệ thống diễn giải.
2.2.5. Các hệ thống nhúng (Embedded systems)
Đây là các ứng dụng vốn là một phần của hệ thống lớn hơn. Thường, bản thân ứng dụng thì rất đơn giản nhưng sự phức tạp của chúng là ở giao diện để tạo ra một độ chính xác hoàn hảo, tính theo thời gian thực (real - time) trong phạm vi đời sống của hệ thống lớn hơn. Việc phát triển các ứng dụng kết hợp này là địa phận của các nhà thiết kế theo học ngành khoa học máy tính hơn là những nhà thiết kế hệ thống thông tin.
Câu 3: Phân tích các đặc điểm của các mô hình phát triển phần mềm. Khi xây dựng một phần mềm, người ta dựa vào các yếu tố nào để chọn mô hình phát triển.
Trả lời:
3.1. Phân tích các đặc điểm của các mô hình phát triển phần mềm:
3.1.1. Mô hình tuyến tính (mô hình thác nước):
- Mô hình này xem quá trình xây dựng một sản phẩm phần mềm bao gồm nhiều giai đoạn tách biệt, sau khi hoàn tất một giai đoạn thì chuyển đến giai đoạn sau.
- Có hai hoạt động phổ biến được thực hiện trong mỗi giai đoạn là: kiểm tra - phê chuẩn và quản lý cấu hình. Tổng kết mỗi giai đoạn là sự kiểm tra, phê chuẩn và quản lý cấu hình đây chính là mục tiêu của sản phẩm. Việc kiểm tra đưa ra khuôn mẫu đúng đắn tương ứng giữa sản phẩm phần mềm và các đặc tính của nó. Sự phê chuẩn đưa ra chuẩn mực về sự phù hợp hay chất lượng của sản phẩm phần mềm đối với mục đích của quá trình hoạt động.
- Mô hình này bao gồm các giai đoạn: phân tích yêu cầu, thiết kế, cài đặt và thử nghiệm đơn thể, thử nghiệm tổng thể, bảo trì và phát triển
- Ưu và nhược điểm của mô hình này:
+ Ưu: được sử dụng quen thuộc từ trước đến nay
+ Nhược:
· Mối quan hệ giữa các giai đoạn không được thể hiện
· Hệ thống phải được kết thúc ở từng giai đoạn do vậy rất khó thực hiện được đầy đủ những yêu cầu của khách hàng...
3.1.2. Mô hình mẫu (thăm dò)
- Phát triển càng nhanh càng tốt các chức năng chính sau đó cải tiến hoàn chỉnh dần cho đến khi thỏa mãn tất cả yêu cầu của người sử dụng
- Những điểm chính của mô hình mẫu được tóm tắt theo sơ đồ sau:
- Ưu và nhược điểm của mô hình này:
+ Ưu:
● Mô hình mẫu là 1 cách để phá vỡ sự khắt khe, cứng nhắc trong chu trình tuần tự của dự án
● Sự lựa chọn tốt hơn cho người lập trình
+ Nhược:
● Trong mô hình mẫu, sử dụng sai làm hỏng phân tích và thiết kế, không bao giờ hoàn thiện được mẫu thành các ứng dụng thực sự là các vấn đề cần quan tâm. Thêm vào đó là hệ thống có thể không bao giờ được chuẩn hóa, chi tiết của việc xử lý, việc kiểm tra tính hợp lệ của dữ liệu và các đòi hỏi kiểm toán có thể bị bỏ quên trong việc đưa mẫu vào sản xuất.
● Thích hợp với phần mềm qui mô vừa và nhỏ
3.1.3. Mô hình xoắn ốc (mô hình Boehm’s)
- Nó có thể xem là sự kết hợp giữa mô hình thác nước và mô hình mẫu và đồng thời thêm một thành phần mới - phân tích rủi ro
- Bao gồm bốn hoạt động chính:
· Planning: Xác định mục tiêu, tương tác và ràng buộc.
· Risk analysis: Phân tích các lựa chọn và các chỉ định/giải quyết rủi ro.
· Engineering : Phát triển sản phẩm
· Customer evaluation: Đánh giá kết quả xây dựng.
- Ưu và nhược:
+ Ưu: Mô hình xoáy ốc hiện nay là mô hình hướng tiếp cận hiện thực nhất để phát triển các hệ thống lớn. Nó sử dụng mô hình mẫu như là cơ chế loại trừ lỗi, cho phép nhà phát triển áp dụng mô hình mẫu tại mỗi chu trình phát triển. Nó kế thừa cách tiếp cận hệ thống từng bước từ chu kỳ sống cổ điển nhưng kết hợp với quá trình lặp lại phù hợp với thực tế.
+ Nhược: mô hình xoáy ốc không phải là công cụ vạn năng. Đối với những hệ thống lớn, khó có thể điều khiển sự tiến hóa của phần mềm. Nó đòi hỏi phải có kỹ năng đánh giá lỗi. Cuối cùng là cần phải có thêm thời gian để kiểm nghiệm phương pháp mới này.
3.1.4. Mô hình đài phun nước:
- Đây là mô hình của cách tiếp cận hướng đối tượng, hệ thống được xem như là một hệ thống các thực thể tác động qua lại để đạt được một mục đích nào đó. Mô hình này tương ứng với mô hình thác nước trong cách tiếp cận hướng thủ tục ở trên.
- Các điểm chính của mô hình: Phân tích hướng đối tượng (các đối tượng trong ko gian bài toán), thiết kế hướng đối tượng (các đối tượng trong ko gian lời giải), lập trình hướng đối tượng (các đối tượng chính trong chương trình),sau đó là bảo trì, ứng dụng và phát triển trong tương lai
- Ưu và nhược:
+ Ưu:
+ Nhược: có những phần lặp và giao nhau giữa các bước phân tích, thiết kế và cài đặt
3.1.5.Mô hình phát triển dựa trên thành phần (hay thi)
- Tư tưởng của phát triển dựa trên thành phần là lắp ráp hệ thống từ những thành phần đã có. Do vậy, kiến trúc phần mềm của hệ thống dựa vào kiến trúc phần mềm của các thành phần phần mềm tiêu chuẩn nên hệ thống đạt chất lượng cao hơn.
- Phương pháp phát triển dựa trên thành phần gần tương tự như phương pháp phát triển hướng đối tượng. Hoạt động công nghệ bắt đầu với sự chỉ ra các lớp tham dự để phát triển hệ thống. Nếu các lớp này được tìm thấy trong thư viện và sự thích nghi là tốt, chúng sẽ được lấy ra và phát triển hệ thống. Ngược lại, chúng sẽ được phát triển để sử dụng và bổ sung vào thư viện sử dụng lại.
- Thành phần phần mềm được sử dụng lại có độ chính xác cao và có thể nói là không chứa lỗi. Mặc dầu không thường xuyên được chứng minh về mặt hình thức nhưng với việc sử dụng lại, lỗi được tìm thấy và loại trừ; chất lượng của thành phần được cải thiện như là một kết quả.
- Ưu và nhược:
+ Ưu: Khi những thành phần sử dụng lại được ứng dụng thông qua tiến trình phần mềm, chúng ta ít tốn thời gian để tạo ra kế hoạch, mô hình, tài liệu, mã và dữ liệu mà chúng là cần thiết để tạo ra hệ thống. Thêm vào, chức năng cùng mức được phân phối cho người sử dụng với đầu vào ít công sức hơn, do vậy, hiệu suất phần mềm được cải thiện.
+ Nhược: Tùy từng trường hợp, hạn chế trong ngôn ngữ sử dụng
Câu 4: . Hãy chỉ ra các lợi ích khi có được người sử dụng tham gia vào quá trình phát triển phần mềm.
Trả lời:
- Có rất nhiều lợi ích từ việc tham gia của người sử dụng trong phát triển ứng dụng.
+ Trước tiên nó xây dựng sự cam kết của những người sử dụng - những người đương nhiên đảm nhiệm quyền sở hữu của hệ thống.
+ Thứ hai, những người sử dụng là những chuyên gia thực sự của những công việc đang được tự động - lại được đại diện hoàn toàn thông qua sự phát triển.
+ Thứ ba, những nhiệm vụ được người sử dụng thực hiện bao gồm việc thiết kế màn hình, các mẫu, các báo cáo, sự phát triển tài liệu của người sử dụng, sự phát triển và tiến hành của các cuộc kiểm tra công nhận,...
- Sự tham gia của người sử dụng không chỉ là ước muốn mà còn là một mệnh lệnh đối với tiến trình và sản phẩm phát triển ứng dụng hoàn toàn hiệu quả. Khía cạnh quan trọng nhất của sự tham gia của người sử dụng là nó phải có ý nghĩa. Người sử dụng phải là những người quyết định và là những người mong muốn tham gia vào quá trình phát triển
- Mục tiêu của việc tham gia của người sử dụng là cho những người phát triển hệ thống và không phát triển hệ thống làm việc cùng với nhau như những đối tác
**********************************************************
CHƯƠNG 2
Câu 1: Trình bày các tiêu chuẩn của một sản phẩm phần mềm?.Tiêu chuẩn nào là quan trọng nhất?
Trả lời:
1.1. Tính đúng (tiêu chuẩn quan trong nhất)
Một sản phẩm thực hiện được gọi là đúng nếu nó thực hiện chính xác những chức năng đã đặc tả và thỏa mãn các mục đích công việc của khách hàng.
Như vậy, một sản phẩm phải được so sánh chuẩn đặt ra để kiểm tra tính đúng và điều này dẫn đến có nhiều bậc thang về tính đúng.
Liệt kê theo thang giảm dần, tính đúng của phần mềm có thể:
+ Tuyệt đối đúng,
+ Đúng ,
+ Có lỗi,
+ Có nhiều lỗi,...
Ví dụ: Một hệ thống xử lý dữ liệu không chạy được khi file cơ sở dữ liệu rỗng hoặc có quá 104 bảng ghi,...là những hệ thống vi phạm tính đúng.
1.2 Tính an toàn
- Tính an toàn của sản phẩm phần mềm được đánh giá thông qua:
+ Có cơ chế bảo mật và bảo vệ các đối tượng do hệ thống phát sinh hoặc quản lý.
+ Bản thân sản phẩm được đặt trong một cơ chế bảo mật nhằm chống sao chép trộm hoặc làm biến dạng sản phẩm đó.
1.3. Tính đối xứng và đầy đủ chức năng
Sản phẩm cung cấp đủ các chức năng cho người sử dụng và các chức năng của sản phẩm có các cặp loại trừ lẫn nhau, ví dụ các chức năng đối xứng thường gặp:
+ Tạo lập - Hủy bỏ,
+ Thêm - Bớt (xem - xóa),
+ Tăng - Giảm,
+ Dịch chuyển lên - xuống; phải - trái,
+ Quay xuôi - ngược chiều kim đồng hồ,...
1.4. Tính tiêu chuẩn và tính chuẩn
Sản phẩm phần mềm cần đạt được một số tiêu chuẩn tối thiểu được thừa nhận trong thị trường hoặc trong khoa học, và có thể chuyển đổi dạng cấu trúc dữ liệu riêng của hệ thống sang chuẩn và ngược lại.
Tính chuẩn của phần mềm thể hiện ở sản phẩm đó phù hợp với các chuẩn quốc gia hoặc quốc tế.
Trong khi xây dựng phần mềm, cần tuân theo nguyên tắc chuẩn hoá sau:
+ Chỉ thiết kế và xây dựng phần mềm sau khi đã xác định được chuẩn.
+ Mọi thành phần của phần mềm phải được thiết kế và cài đặt theo cùng một chuẩn (tối tiểu thì các chuẩn phải tương thích nhau).
1.5. Tính độc lập
Phần mềm cần và nên đảm bảo được tính độc lập với các đối tượng sau:
- độc lập với thiết bị,
- độc lập với cấu trúc của đối tượng mà sản phẩm đó quản lý,
- độc lập với nội dung của đối tượng mà sản phẩm đó quản lý.
1.6. Tính dễ phát triển, hoàn thiện
Thể hiện ở phần mềm có thể mở rộng cho các phương án khác hoặc mở rộng, tăng cường về mặt chức năng một cách rõ ràng.
1.7 Tính khoa học
Tính khoa học của phần mềm được thể hiện qua các mặt:
- Khoa học về cấu trúc: các sản phẩm phần mềm đc chia thành các đơn vị nhỏ cân đối và có quan hệ hữu cơ ko trùng lặp và có thể tổ hợp từng nhóm để tạo ra các chức năng mới.Thuật toán và chức năng đc xây dựng một cách có cấu trúc
- Khoa học về nội dung: Thuật toán đc xây dựng dựa trên những thành tựu mới của toán học và tin học. Các chương trình phải đc xây dựng trên các ngôn ngữ lập trình mới và phổ dụng
- Khoa học về hình thức thao tác: mỗi lệnh của chương trình cần phải đc tối ưu. Muốn vậy, các lệnh phải đc xd một cách hợp lý, logic và phù hợp với tư duy tự nhiên của người sử dụng. Các lỗi phải đc thông báo một cách rõ ràng
1.8. Tính tin cậy
Tính tin cậy của sản phẩm phần mềm thể hiện ở sản phẩm được trông chờ thực hiện các chức năng dự kiến của nó với độ chính xác được yêu cầu.
1.9 Tính kiểm thử được
Phần mềm có thể kiểm thử được là phần mềm mà nó có cách dễ dàng để có thể kiểm tra được. Đảm bảo rằng nó thực hiện đúng các chức năng dự định.
1.10. Tính hữu hiệu
Tính hữu hiệu của phần mềm được xác định qua các tiêu chuẩn sau:
- Hiệu quả kinh tế hoặc ý nghĩa; giá trị thu được do áp dụng sản phẩm đó.
- Tốc độ xử lý sản phẩm.
- Giới hạn tối đa của sản phẩm hoặc miền xác định của chương trình được xác định qua khối lượng tối đa của các đối tượng mà sản phẩm đó quản lý.
1.11. Tính sáng tạo
Một sản phẩm phần mềm có tính sáng tạo khi nó thảo mãn một trong các tính chất sau:
- Sản phẩm được thiết kế và cài đặt đầu tiên.
- Sản phẩm được phục vụ cho những đặc thù riêng.
- Sản phẩm có những đặc điểm khác về mặt nguyên lý so với các sản phẩm hiện hành.
- Sản phẩm có những ưu thế nổi bậc so với sản phẩm hiện hành.
1.12. Tính toàn vẹn
Sản phẩm phần mềm có tính toàn vẹn khi nó:
- Có cơ chế ngăn ngừa việc thâm nhập bất hợp pháp vào phần mềm hay dữ liệu và ngăn ngừa việc phát sinh ra những đối tượng (dữ liệu, đơn thể...) sai quy cách hoặc mâu thuẩn với các đối tượng sẳn có.
- Không gây ra nhập nhằng trong thao tác. Đảm bảo nhất quán về cú pháp.
Có cơ chế phục hồi lại toàn bộ hoặc một phần những đối tượng thuộc toàn bộ hoặc một phần những đối tượng thuộc diện quản lý của sản phẩm trong trường hợp có sự cố như hỏng máy, mất điện đột ngột
1.13. Một số tính chất khác
Ngoài các tính chất trên, tuỳ theo công dụng mà sản phẩm phần mềm cần phải được bổ sung các tính chất sau:
1. Tính phổ dụng: có thể áp dụng cho nhiều lĩnh vực theo nhiều chế độ làm việc khác nhau.
2. Tính đơn giản: mang những yếu tố tâm lý: dễ thao tác, dễ học, dễ hoàn thiện kỹ năng khai thác sản phẩm, trong sáng, dễ hiểu, dễ nhớ...
3. Tính liên tác: là tính chất cần có để có thể gắn hệ thống này với hệ thống khác.
4. Tính súc tích: là độ gọn của chương trình tính theo số mã dòng lệnh.
5. Tính dung thứ sai lầm: tức là những hỏng hóc xuất hiện khi chương trình gặp phải lỗi được chấp nhận.
6. Tính module: là sự độc lập chức năng của các thành phần trong chương trình.
7. Tính đầy đủ hồ sơ: hệ thống phải có đầy đủ hồ sơ pháp lý khi xây dựng.
8. Tính theo dõi được, tính dễ vận hành,...
9.
Câu 2: Hồ sơ của sản phẩm phần mềm bao gồm những gì ?
Trả lời:
Hồ sơ của sản phẩm phần mềm bao gồm các thành phần liệt kê sau: tuy nhiên theo yêu cầu quản lý và bản quyền của tác giả phần mềm có thể bỏ bớt hay bổ sung thêm một số thành phần khi cần thiết:
1. Đặc tả hệ thống.
2. Kế hoạch dự án phần mềm.
a. Đặc tả yêu cầu phần mềm.
b. Bản mẫu thực hiện được hay "trên giấy".
3. Tài liệu người dùng sơ bộ
4. Đặc tả thiết kế.
a. Mô tả thiết kế dữ liệu.
b. Mô tả thiết kế kiến trúc.
c. Mô tả thiết kế module.
d. Mô tả thiết kế giao diện.
e. Mô tả sự vật (nếu kỹ thuật hướng sự vật được dùng).
5. Bản in chương trình gốc.
a. Chương trình nguồn.
b. Bản in chương trình nguồn (listing).
c. Bản mô tả thuật toán tương ứng với chương trình nguồn.
d. Kế hoạch và thủ tục kiểm thử.
e. Các trường hợp kiểm thử và kết quả ghi lại.
6. Tài liệu vận hành và cài đặt.
a. Bản liệt kê các lỗi và cách xử lý.
b. Bản liệt kê các thông số đặc trưng của hệ thống.
7. Chương trình thực hiện được.
a. Các module mã - thực hiện được.
b. Các module móc nối.
c. Chương trình đích lưu trữ trên vật mang tin.
8. Mô tả cơ sở dữ liệu.
a. Sơ đồ và cấu trúc tệp.
b. Nội dung ban đầu.
9. Tài liệu người sử dụng đã xây dựng.
a. Bản hướng dẫn sử dụng chi tiết.
b. Bản tóm tắt hướng dẫn sử dụng.
c. Các chương trình trợ giúp có liên quan.
10. Tài liệu bảo trì.
a. Báo cáo vấn đề phần mềm.
b. Yêu cầu bảo trì.
c. Trình tự thay đổi kỹ nghệ.
11. Các chuẩn và thủ tục cho kỹ thuật phần mềm .
12. Các tư liệu khác: hợp đồng, phiên bản, tài liệu pháp lý,...
**************************************************************
CHƯƠNG 3
Câu 1: Hãy phân tích và chỉ rõ các mâu thuẫn cần giải quyết trong khi xác định yêu cầu của bài toán
Trả lời:
Các yêu cầu của phần mềm được chia thành hai loại:
- Các yêu cầu hệ thống chức năng: các dịch vụ mà hệ thống phải cung cấp.
- Các yêu cầu không chức năng: các ràng buộc mà hệ thống phải tuân theo.
- Về nguyên tắc các yêu cầu của một hệ thống phải là vừa đầy đủ, vừa tráng kiện. Đầy đủ có nghĩa là mọi yêu cầu đều phải được đặc tả. Tráng kiện có nghĩa là các yêu cầu không gây ra mâu thuẫn. Thực tế đối với các hệ lớn và phức tạp thì thực là không thể đạt được tính đầy đủ và tính tráng kiện cho phiên bản đầu của tư liệu yêu cầu phần mềm. Vấn đề là khi duyệt lại hoặc trong các pha sau này của vòng đời phần mềm, người ta phát hiện ra các sự không thỏa mãn đó thì tư liệu yêu cầu phải được chỉnh lý lại.
- Về bản chất, chúng ta phải hiểu và xác định rõ những yêu cầu của khách hàng. Tuy nhiên, thường bài toán được khách hàng phát biểu bằng ngôn ngữ tự nhiên cộng thêm với việc dùng các bảng các biểu đồ cho các người dùng dễ hiểu (xem là người dùng không biết các khái niệm chuyên môn công nghệ thông tin). Không may là ngôn ngữ được dùng này lại thường là không chính xác và mơ hồ, đôi khi có sự lầm lẫn giữa các biểu thị khái niệm và các biểu thị chi tiết làm cho việc mô tả chứa các thông tin hổ lốn được biểu diễn ở nhiều mức chi tiết khác nhau.
Ở đây, chúng ta cần chú ý rằng người đặt hàng có thể vì không hiểu biết gì về tin học nên họ không thể phát biểu chính xác và đầy đủ các yêu cầu của họ, đôi lúc thì những cái mà người sử dụng yêu cầu và những cái mà họ cần là không giống nhau. Thêm vào đó, chúng ta lại không hiểu biết đầy đủ về đối tượng, địa bàn cho nên không thể thu thập đầy đủ và chính xác các thông tin của đối tượng và đây chính là một trong những mâu thuẩn giữa khách hàng và chúng ta. Vì vậy, trong thực tế, đối với các hệ thống lớn và phức tạp, rất khó có thể đạt được tính đầy đủ và thống nhất của tài liệu yêu cầu.
Các yêu cầu được tìm hiểu còn chứa các mâu thuẩn:
· Thiếu rõ ràng: Rất khó sử dụng ngôn ngữ tự nhiên mô tả chính xác không nhầm lẫn mà không làm khó khăn cho người đọc.
· Nhầm lẫn yêu cầu: Các yêu cầu chức năng, các ràng buộc, mục đích của hệ thống và các thông tin thiết kế không được phân biệt rõ ràng.
· Trộn lẫn yêu cầu: Một số các yêu cầu khác nhau có thể được thể hiện như là một yêu cầu đơn.
Giải quyết mâu thuẩn này, chúng ta phải: trên cơ sở nghiên cứu kỹ lĩnh vực ứng dụng và thảo luận với người sử dụng để định nghĩa chính xác các yêu cầu của bài toán. Xác định rõ và đầy đủ bài toán là yếu tố quan trọng góp phần đảm bảo thành công của dự án. Nhiệm vụ của giai đoạn này là xây dựng được các hồ sơ mô tả chi tiết về các yêu cầu, nhiệm vụ, chức năng của hệ thống dự kiến.
Câu 2: Các công việc phải làm để có đc một tài liệu yêu cầu chính xác:
Trả lời:
- Cấu trúc chung của tài liệu yêu cầu phần mềm gồm các phần như sau:
+ Giới thiệu: mô tả sự cần thiết của hệ thống. Nó cần sự mô tả sơ lược các chức năng của mình và giải thích cách làm việc với các hệ thống khác. Nó cũng cần mô tả làm thế nào hệ thống đáp ứng được toàn bộ các mục tiêu chiến lược và nghiệp vụ.
+ Thuật ngữ: nó cần định nghĩa các khái niệm kỹ thuật được sử dụng trong tài liệu này. Không được giả định người đọc đã có kinh nghiệm.
+ Mô hình hệ thống: phần này lập một hoặc nhiều mô hình hệ thống cho biết các quan hệ giữa các cấu thành hệ thống với hệ thống và môi trường của nó. Nó cần bao gồm các mô hình đối tượng, mô hình luồng dữ liệu và ngữ nghĩa dữ liệu.
+ Định nghĩa yêu cầu chức năng: các dịch vụ cung cấp cho người dùng cần được mô tả trong mục này. Mô tả có thể dùng ngôn ngữ tự nhiên, sơ đồ hoặc các dạng ghi chép khác cho phép khách hàng có thể hiểu được.
Các dịch vụ cung cấp cho người dùng cần được mô tả trong mục này. Mô tả có thể dùng ngôn ngữ tự nhiên, sơ đồ hoặc các dạng ghi chép khác cho phép khách hàng có thể hiểu được.
+ Định nghĩa yêu cầu phi chức năng: các ràng buộc về phần mềm và các hạn chế đối với thiết kế cần phải được mô tả trong phần này. Nó có thể bao gồm các chi tiết của biểu diễn dữ liệu, thời gian đáp ứng và yêu cầu bộ nhớ,...Các tiêu chuẩn về sản phẩm và quy trình cần tuân thủ cũng được mô tả.
+ Tiến triển hệ thống: phần này mô tả các giả thiết căn bản làm cơ sở cho hệ thống và dự đoán các thay đổi về phát triển phần cứng, yêu cầu người dùng
+ Đặc tả yêu cầu: mô tả các yêu cầu cơ bản chi tiết hơn. Nếu cần các chi tiết hơn có thể được thêm vào các yêu cầu phi chức năng, ví dụ giao diện với các hệ thống có thể được định nghĩa.
+ Ngoài ra, tài liệu yêu cầu phần mềm có thể bao gồm thêm các phần sau:
● Phần cứng: nếu hệ thống được phát triển trên một phần cứng đặc biệt, phần cứng này và giao diện cần được mô tả. Nếu phần cứng bán sẵn được sử dụng, các cấu hình cực tiểu và cực đại phải được mô tả.
● Yêu cầu dữ liệu: tổ chức logic của dữ liệu được sử dụng bởi hệ thống và các quan hệ giữa chúng được mô tả, có thể dùng sơ đồ thực thể liên kết.
● Chỉ mục có thể được cung cấp. Ví dụ chỉ mục theo chữ cái, chỉ mục theo chương, theo chức năng....
Do hệ thống được vận hành trong thời gian dài, nên môi trường hệ thống và mục đích nghiệp vụ có thể thay đổi. Khi đó tài liệu yêu cầu cũng cần phải thay đổi. Với mục đích tiến triển, tài liệu yêu cầu thường được chia theo hai phân loại:
* Các yêu cầu ổn định: được suy dẫn từ các hoạt động cốt lõi của tổ chức tương đối liên quan trực tiếp tới miền hệ thống.
* Các yêu cầu bất thường: các yêu cầu có thể thay đổi khi phát triển hệ thống sau này như: các yêu cầu xuất hiện như là sự hiểu biết của khách hàng về sự phát triển của hệ thống trong quá trình xây dựng hệ thống, các yêu cầu được sinh ra do sự xuất hiện của việc tin học hóa làm thay đổi các quy trình nghiệp vụ,...
Câu 3: Hãy nêu và phân tích các đặc tính dữ liệu của yêu cầu
Trả lời:
- Trong quá trình xác định yêu cầu, các dữ liệu thu được của bài toán chứa một số tính chất mà ta gọi là đặc tính dữ liệu như:
· Tính định hướng thời gian,
· Tính cấu trúc,
· Tính đầy đủ,
· Nhập nhằng,
· Ngữ nghĩa,
● Độ lớn của dữ liệu
3.1 Tính định hướng thời gian:
Tính hướng thời gian của dữ liệu đề cập tới quá khứ, hiện tại hoặc các đòi hỏi tương lai của ứng dụng đã đề ra.
Các dữ liệu quá khứ: có thể mô tả công việc đã được biến đổi thế nào qua thời gian, các quy định ảnh hưởng thế nào tới nhiệm vụ, vị trí của nó trong tổ chức và nhiệm vụ. Các thông tin quá khứ là chính xác, đầy đủ và xác đáng.
Các thông tin hiện tại: là các thông tin về cái gì đang xảy ra. Ví dụ, thông tin ứng dụng hiện tại liên quan tới quá trình hoạt động của công ty, số lượng của các lệnh được thực hiện trong ngày hoặc số lượng các hàng hoá được sản xuất, các chính sách, sản phẩm, đòi hỏi nghiệp vụ, yêu cầu pháp quy hiện tại hoặc các ràng buộc khác cũng rất cần thiết cho phát triển ứng dụng. Các thông tin hiện tại nên được tư liệu hoá theo cách thích hợp với đội ngũ phát triển để tăng trí thức của họ về ứng dụng và phạm vi bài toán.
Các đòi hỏi trong tương lai: liên quan tới các sự thay đổi sẽ xảy ra, chúng không chính xác và rất khó kiểm tra. Ví dụ: các dự đoán kinh tế, khuynh hướng tiếp thị, bán hàng,...
3.2. Tính cấu trúc
Cấu trúc của thông tin định hướng về phần mở rộng theo đó thông tin có thể được phân loại theo cách nào đó. Cấu trúc có thể tham chiếu tới các hàm, môi trường hoặc dạng dữ liệu hay dạng xử lý. Các thông tin thay đổi từ phi cấu trúc cho tới cấu trúc mà phần cấu trúc được xác định bởi kỹ sư phần mềm. Cấu trúc là đặc biệt quan trọng bởi vì thiếu nó ta có thể tạo ứng dụng sai
3.3. Tính đầy đủ
Tính đầy đủ thể hiện ở chổ các thông tin cần thiết phải được biểu diễn. Một kiểu ứng dụng đòi hỏi một mức độ đầy đủ khác nhau. Các hệ thống xử lý giao dịch luôn tiếp cận các thông tin đầy đủ và chính xác, trong khi các hệ hỗ trợ quyết định đòi hỏi thông tin ít đầy đủ hơn. Các hệ thông tin điều hành, hệ chuyên gia, hoặc là các ứng dụng trí tuệ nhân tạo có mức độ cao nhất về tính không đầy đủ trong phạm vi của ứng dụng.
3.4. Nhập nhằng
Tính nhập nhằng là một thuộc tính của dữ liệu, thể hiện ở chổ không trong sáng về nghĩa hoặc có nhiều nghĩa một cách hữu ý. Tính này liên quan nhiều đến mức độ ngữ nghĩa. Vấn đề này nảy sinh khi gặp một vấn đề có thể được hiểu theo nhiều cách - ví dụ câu phát biểu: "Ông cụ già đi mau quá!". Để giải quyết tính nhập nhằng cần căn cứ vào ngữ cảnh.
3.5. Ngữ nghĩa
Ngữ nghĩa là một tập hợp các định nghĩa được chia sẻ cho biết các thuật ngữ, chính sách hoặc các hành động được hiểu như thế nào cho mọi người trong một tổ chức nào đó.
Ngữ nghĩa rất quan trọng trong phát triển ứng dụng và đối với bản thân ứng dụng. Nếu mọi người dùng chung một thuật ngữ nhưng có quan niệm khác nhau sẽ xuất hiện sự không hiểu và không trao đổi thông tin được. Đối với bản thân ứng dụng nếu dữ liệu bị nhập nhằng về ý nghĩa có thể sẽ không bao giờ được xử lý cho đến khi người sử dụng hiểu được ý nghĩa của dữ liệu. Các ứng dụng sẽ có ngữ nghĩa cố định với các mục dữ liệu được định tính thông qua việc đào tạo và quá trình sử dụng lâu dài. Khi đánh mất ngữ nghĩa của thông tin có thể gây tổn thất rất lớn đối với các bên liên quan.
3.6. Độ lớn của dữ liệu
Độ lớn của dữ liệu là số lượng các sự kiện nghiệp vụ hệ thống phải tiến hành trong vài chu kỳ nào đó. Độ lớn của tạo mới hoặc thay đổi khách hàng được tiến hành theo tháng hoặc năm, trong khi độ lớn của giao dịch nghiệp vụ được tiến hành theo ngày hoặc giờ và độ lớn tối đa. Độ lớn tối đa là số lượng các giao dịch hoặc các sự kiện nghiệp vụ được xử lý trong thời kỳ bận nhất. Thời kỳ cao điểm có thể theo năm hoặc cuối vài tháng, ví dụ chuẩn bị cho báo cáo nộp thuế. Độ lớn của dữ liệu là một nguồn thông tin phức tạp bởi vì số lượng thời gian cần thiết xử lý một giao dịch đơn có thể trở thành rất quan trọng đối với lượng lớn dữ liệu cần xử lý.
***************************************************************
CHƯƠNG 4
Câu 1: Phân tích ưu và nhược điểm của các chiến lược thiết kế (thiết kế hướng chức năng và thiết kế hướng đối tượng)
Trả lời:
1.1.Phương pháp thiết kế hướng chức năng:
- Thiết kế hướng chức năng là một cách tiếp cận thiết kế phần mềm trong đó bản thiết kế được phân giải thành một bộ các đơn thể được tác động lẫn nhau, mà một đơn thể có một chức năng được xác định rõ ràng. Các chức năng có các trạng thái cục bộ nhưng chúng chia sẻ với nhau trạng thái hệ thống, trạng thái này là tập trung và mọi chức năng đều có thể truy cập được.
- Có người nghĩ rằng thiết kế hướng chức năng đã lỗi thời và nên được thay thế bởi cách tiếp cận hướng đối tượng. Thế nhưng, nhiều tổ chức đã phát triển các chuẩn và các phương pháp dựa trên sự phân giải chức năng. Nhiều phương pháp thiết kế kết hợp với các công cụ CASE đều là hướng chức năng và có nhiều hệ thống đã được phát triển bằng cách sử dụng phương pháp tiếp cận hướng chức năng. Các hệ thống đó sẽ phải được bảo trì cho một tương lai xa xôi. Bởi vậy thiết kế hướng chức năng vẫn sẽ còn được tiếp tục sử dụng rộng rãi
- Ưu điểm:
+ quen thuộc
+ Xây dựng hệ thống thông qua biểu đồ luồng dữ liệu, mô tả việc biến đổi dữ liệu một cách logic. Đây là kết quả hợp nhất của nhiều phương pháp diễn tả dữ liệu vào ra qua 1 dãy biến đổi. Ngoài ra người ta còn phải xây dựng các bảng biểu dữ liệu , các mối liên kết cũng như lược đồ cấu trúc để thể hiện cấu trúc của hệ thống
- Nhược:
+ Do chung nhau trạng thái hoạt động nên việc thay đổi một chức năng nào đó thì sẽ ảnh hưởng đến các chức năng khác
Kết luận: Phương pháp này chỉ được sử dụng tốt khi các biến dùng chung, các trạng thái chung ít và phải đc xác định 1 cách rõ ràng
1.2. Phương pháp thiết kế hướng đối tượng:
- Thiết kế hướng đối tượng là dựa trên việc che dấu thông tin, nhìn hệ phần mềm như là một bộ các đối tượng tương tác với nhau chứ không phải là một bộ các chức năng như cách tiếp cận chức năng. Các đối tượng này có một trạng thái được che dấu và các phép toán trên các trạng thái đó. Thiết kế biểu thị các dịch vụ được yêu cầu và được cung cấp bởi các đối tượng có tương tác với nó.
- Thiết kế hướng đối tượng có ba đặc trưng:
i) Vùng dữ liệu dùng chung là bị loại bỏ. Các đối tượng liên lạc với nhau bằng cách trao đổi thông báo chứ không phải bằng các biến dùng chung.
ii) Các đối tượng là các thực thể độc lập mà chúng sẵn sàng được thay đổi vì rằng tất cả các trạng thái và các thông tin biểu diễn là chỉ ảnh hưởng trong phạm vi chính đối tượng đó thôi. Các thay đổi về biểu diễn thông tin có thể được thực hiện không cần sự tham khảo tới các đối tượng hệ thống khác.
iii) Các đối tượng có thể phân tán và có thể hành động tuần tự hoặc song song.
- Ưu điểm:
i) Dễ bảo trì vì các đối tượng là độc lập. Các đối tượng có thể hiểu và cải biên như là một thực thể độc lập. Thay đổi trong thực hiện một đối tượng hoặc thêm các dịch vụ sẽ không làm ảnh hưởng tới các đối tượng hệ thống khác.
ii) Các đối tượng là các thành phần dùng lại được thích hợp (do tính độc lập của chúng). Một thiết kế có thể dùng lại được các đối tượng đã được thiết kế trong các bản thiết kế trước đó.
iii) Đối với một vài lớp hệ thống, có một phản ánh rõ ràng giữa các thực thể có thực (chẳng hạn như các thành phần phần cứng) với các đối tượng điều khiển nó trong hệ thống. Điều này cải thiện được tính dễ hiểu của thiết kế.
- Nhược:
Sự nhận minh các đối tượng hệ thống thích hợp là khó khăn. Cách nhìn tự nhiên nhiều hệ thống là cách nhìn chức năng và việc thích nghi với cách nhìn hướng đối tượng đôi khi là khó khăn
********************************************************************CHƯƠNG 5
Câu 1: Trong cài đặt ứng dụng để nâng cao hiệu suất của hệ thống, bạn đã làm gì? Hãy nêu và phân tích sự cải tiến đó
Trả lời:
Để nâng cao hiệu suất của hệ thống ta phải:
1.1 Tốc độ xử lý
Trong hầu hết các trường hợp, tốc độ của chương trình là quan trọng như các ứng dụng thời gian thực, ứng dụng về xử lý trên các cơ sở dữ liệu lớn,... Để một ứng dụng có tốc độ nhanh, người lập trình chúng phải quan tâm đến nhiều yếu tố như: thuật toán sử dụng, lựa chọn cấu trúc dữ liệu, tinh chế mã cho chương trình,...
1.1.1 Thuật toán sử dụng
* Xác định lại bài toán
Yêu cầu: Trước khi bắt tay vào giải bài toán, hãy tìm hiểu kỹ các yêu cầu mà bài toán đặt ra và tận dụng mọi điều đã biết từ bài toán.
Bài toán minh hoạ: Cho một mảng số nguyên gồm 1.000.000 phần tử; các giá trị nằm trong khoảng từ 0..10 một cách ngẫu nhiên. Hãy sắp xếp để được một mảng có thứ tự giảm dần.
+ Giải bài toán tổng quát: là một bài toán sắp xếp; dùng một đoạn chương trình sắp xếp có sẳn của hệ thống hay sử dụng một thuật toán sắp xếp có sẳn như Insert - Sort hay Quick - Sort chẳng hạn. Chi phí về độ phức tạp là o(n2) hay o(nlogn).
+ Tuy nhiên, ta đã bỏ qua một tính chất của bài toán đó là các giá trị chỉ nằm trong khoảng 0..10. Sau khi nghiên cứu bài toán ta quyết định sử dụng thuật toán đếm cho việc sắp xếp bài toán.
+ Khởi tạo 10 biến nguyên với giá trị 0.
+ Với mỗi giá trị i trong mảng, tăng biến thứ i lên một đơn vị
+ Thực hiện rải giá trị cho mảng ứng với số lần là giá trị của biến thứ i;
Như thế, chi phí về độ phức tạp của bài toán là o(n).
* Sức mạnh của thuật toán
Yêu cầu: Việc nghiên cứu thuật toán giúp ích rất nhiều cho các nhà lập trình. Các thuật toán có ảnh hưởng quan trọng đến các hệ thống phần mềm và đặc biệt chúng tăng nhanh tốc độ vận hành.
Bài toán minh hoạ: Quay mảng một chiều chứa N phần tử về bên trái I một vị trí. Với N = 8; I = 3 ta được mảng ABCDEFGH sẽ quay thành DEFGHABC.
Thuật toán 1: Ta có thể giải bài toán bằng cách sao I phần tử đầu tiên của mảng sang một mảng đoạn; dịch chuyển N - I phần tử còn lại của mảng về bên trái I vị trí; sau đó sao I phần tử đầu tiên từ mảng tạm về cuối mảng. Trong trường hợp N và I lớn, như thế việc cần mảng tạm khá tốn bộ nhớ; xét trong trường hợp bộ nhớ của máy không dồi dào thì giải quyết như thế nào?
Các thuật toán khác: tham khảo thêm
* Các kỹ thuật thiết kế thuật toán và tinh chế thuật toán.
Yêu cầu: Thực hiện theo các nguyên tắc sau:
· Lưu trữ các trạng thái cần thiết để tránh tính lại,
· Tiền xử lý thông tin để đưa vào các cấu trúc dữ liệu,
· Sử dụng các thuật toán thích hợp,
· Chỉ ra được cận dưới của thuật toán,
· Sử dụng các kết quả được tích luỹ,...
Bài toán minh hoạ: Cho vector X chứa N số thực X[1], X[2], ...,X[N]. Gọi vector con của X là vector mà phần tử của nó là các phần tử liên tiếp trong X. Tổng của một vector được tính là tổng các phần tử của vector đó. Tính tổng lớn nhất trong các vector con, tức tìm L,UÎ1..N để tổng X[i], iÎL..U là lớn nhất
1.1.2. Lựa chọn cấu trúc dữ liệu
Việc chọn lựa cấu trúc dữ liệu ảnh hưởng lớn đến hiệu suất chương trình và nó tác động đến bản thân thuật toán bởi cấu trúc dữ liệu gắn bó mật thiết với thuật toán.
Việc chọn đúng đắn cấu trúc dữ liệu làm giảm không gian bộ nhớ, giảm thời gian chạy, tăng tính chuyển đặc và dễ bảo trì, đặc biệt là các cấu trúc dữ liệu cao cấp, mặc dầu chúng không thường được dùng nhưng khi cần thiết thì không thể thiếu chúng được.
1.1.3 Tinh chế mã
- Phần này thường làm sau cùng
- Các phương pháp thường dùng của tinh chế mã.
+ Tính trước các giá trị,
+ Thay tương đương,
+ Dùng biến trung gian thích hợp, không tính lại các hằng trong vòng lặp.
Bài toán: Cho một chuỗi gồm 1 triệu ký tự. Hãy phân loại mỗi ký tự theo 4 kiểu sau: kiểu chữ in, kiểu chữ hoa, kiểu số hay là các kiểu "khác".
Lời giải mà ta thường làm: là thực hiện các so sánh đối với mỗi ký tự. Như vậy, trong bảng mã ASCII, để xác định mỗi ký tự thuộc loại nào phải mất rất nhiều lần so sánh; và đây chính là điểm "nóng" của chương trình.
Tinh chế mã: Ở đây, nếu ta xem mỗi ký tự như là một chỉ số của mảng mà thành phần của nó là các kiểu ký tự. Như vậy, kiểu ký tự C là mảng [C] và để xác định kiểu của một ký tự, ta chỉ cần truy cập đến một mảng đơn giản thay vì phải thực hiện các chuỗi so sánh phức tạp.
1.2 Không gian bộ nhớ
1.2.1. Không gian dữ liệu
Nguyên tắc để làm giảm không gian lưu trữ dữ liệu.
+ Đảm bảo tính đơn giản,
+ Trong một số trường hợp đừng lưu trữ, hãy tính lại khi cần thiết,
+ Đặc biệt, việc nghiên cứu kỹ các cấu trúc dữ liệu, (thường là cấu trúc dữ liệu thưa thớt) sẽ làm giảm nhiều không gian cần thiết để lưu trữ các thông tin cho trước,
+ Nén dữ liệu sau đó giải nén khi dùng,
+ Sử dụng các nguyên tắc cấp phát bộ nhớ: chẳng hạn như cấp phát bộ nhớ động,...
1.2.2. Không gian chương trình
Trong một số chương trình, đôi lúc thì kích thước của chính bản thân nó là vấn đề. Hãy định nghĩa các chương trình con hay sử dụng các bộ thông dịch chuyên dụng để làm cho chương trình đơn giản, trong sáng hơn làm cho nó rõ ràng hơn và dễ bảo trì.
1.3. Lựa chọn hệ thống và phần cứng
Nên lựa chọn các ngôn ngữ lập trình phù hợp với ứng dụng của bạn. Đôi lúc cần hãy thay thế các chương trình con viết trên ngôn ngữ khác để có tốc độ lớn hơn.
Trong xu thế phát triển của phần cứng hiện nay, cần phải tận dụng thế mạnh của phần cứng để có hiệu suất của chương trình cao, mặc dù điều này làm hạn chế tính phổ cập của nó nhưng hiện nay yêu cầu về phần cứng cao là chấp nhận được
*********************************************************************
CHƯƠNG 6
Câu 1: Độ tin cậy của phần mềm ? Một số cách đo độ tin cậy của phần mềm? Vì sao phải đảm bảo chất lượng phần mềm
Trả lời:
1.1 Độ tin cậy của phần mềm:
- Độ tin cậy của 1 hệ phần mềm là độ đo về mức độ tốt của các dịch vụ mà hệ cung cấp cho máy tính
- Độ tin cậy là 1 đặc trưng động của hệ thống, nó là 1 hàm của số các thất bại phần mềm
1.2 Một số cách đo độ tin cậy của phần mềm:
+ Xác suất thất bại tính theo đòi hỏi.
+ Tỷ lệ xuất hiện thất bại
+ Thời gian trung bình giữa hai thất bại kế tiếp nhau.
+ Độ đo mức sẵn sàng hoạt động của hệ.
1.3 Phải đảm bảo chất lượng phần mềm là tại vì:
- Kiểm tra chất lượng phần mềm là một hoạt động khó khăn để chấp nhận về mặt ý thức
- Kiểm tra chất lượng phần mềm lại là một hoạt động khó được chấp nhận đối với việc quản lý vì nó tốn kém, mất thời gian và hiếm khi phát hiện được lỗi. Kết quả là phần lớn các ứng dụng không được kiểm tra đầy đủ và được phát hành với lỗi tiềm ẩn
Do vậy, cần và phải đảm bảo các tiêu chuẩn của phần mềm như đã đề cập ở chương 2. Đảm bảo chất lượng phần mềm là một hoạt động có hệ thống và kế hoạch. Nó bao gồm nhiều nhiệm vụ liên kết với các hoạt động chính sau:
+ Áp dụng các phương pháp kỹ thuật,
+ Tiến hành các cuộc xét duyệt kỹ thuật chính thức,
+ Kiểm thử phần mềm,
+ Buộc tôn trọng các chuẩn,
+ Kiểm soat thay đổi,
+ Đo chất lượng,
+ Báo cáo, lưu giữ kết quả.
Câu 2: Thế nào là kiểm thử phần mềm ? Các đặc điểm của việc kiểm thử phần mềm ? Hãy nêu các giải pháp thường được sử dụng để TEST một sản phẩm phần mềm đạt hiệu quả
Trả lời:
2.1 Kiểm thử một sản phẩm phần mềm là xây dựng một cách có chủ đích những tập dữ liệu và dãy thao tác nhằm đánh giá một số hoặc toàn bộ các tiêu chuẩn của sản phẩm phần mềm đó.
Thử nghiệm có hai mục đích: chỉ ra hệ thống phù hợp với đặc tả và phơi ra được các khuyết tật của hệ thống
2.2 Các đặc điểm của việc kiểm thử phần mềm:
2.2.1 Các hạn chế của kiểm thử
- Do kiểm thử là chạy thử chương trình với tập dữ liệu giả nên không thể khẳng định tính đúng của chương trình do bản chất quy nạp không hoàn toàn của nó.
- Trong nhiều trường hợp, việc kiểm thử thường được thực hiện từ những giai đoạn đầu của quá trình cài đặt sản phẩm.
- Các chương trình nên được kiểm chứng theo hai kỹ thuật: kiểm thử và chứng minh. Và nếu có thể nên khẳng định tính đúng của chương trình thông qua văn bản chương trình
Như vây, một chương trình tuyệt đối đúng phải được thực hiện thông qua: tính đúng đắn của thuật toán và tính tương đương của chương trình với thuật toán
- Trong quá trình kiểm thử, ta thưòng mắc phải các đặc trưng của nguyên lý chủ quan như sau:
· Bộ dữ liệu Test không thay đổi trong quá trình xây dựng phần mềm
· Chỉ Test các trường hợp chính thống, hợp lệ, không quan tâm đến các cận và các sự cố
· Cài đặt chức năng nào thì chỉ Test riêng chức năng đó, không chỉ Test tổng hợp chức năng vừa cài đặt với các chức năng đã cài đặt trước đó.
· Người Test đồng thời là người xây dựng phần mềm tức vừa đá bóng, vừa thổi còi.
2.2.2 Các loại hình kiểm thử
● Kiểm thử lược đồ hệ thống: chỉ quan tâm đến các bản chọn (menu) đánh giá tính hợp lý, khả năng chọn một mục, khả năng di chuyển qua mục khác, tính đủ, tính khoa học của các chức năng.
· Kiểm thử cận dưới
· Kiểm thử cận trên: cho hệ thống thực hiện đến mức tối hạn.
· Kiểm thử qua sự cố: tạo ra các sự cố để kiểm thử phần mềm.
2.2.3 Nguyên tắc kiểm thử
● Nguyên tắc khách quan: người kiểm thử không phải là tác giả của phần mềm đang kiểm thử
● Nguyên tắc ngẫu nhiên: dữ liệu và chức năng được chọn, tuy có chủ đích nhưng không phải xuất hiện theo thứ tự nhất định.
● Nguyên tắc "người sử dụng kém": hệ thống được một người sử dụng có trình độ thấp (ở mức chấp nhận được) dùng thử. (Người này có thể gây các sự cố có thể không lường trước được của hệ thống )
● Nguyên tắc "kẻ phá hoại": hệ thống rơi vào tay có trình độ nghiệp vụ cao, chủ ý phá hoại. "Trình độ" ở đây thuộc lĩnh vực công nghệ thông tin hoặc lĩnh vực phần mềm đang hướng tới.
2.2.4 Kỹ thuật kiểm thử
● Kỹ thuật đối xứng: dựa vào tính đối xứng của các thao tác hoặc tập dữ liệu để xậy dựng bộ dữ liệu Test.
· Kỹ thuật đám đông
· Kỹ thuật kiểm thử trên dữ liệu thật: cho hệ thống vận hành với các tập dữ liệu thật đã thu được từ trước để so sánh và đánh giá kết quả
· Kỹ thuật kiểm thử trên thị trường thật: cho hệ thống vận hành trên thị trường thật (không chính thức) để so sánh với các hệ thống chính được dùng và đánh giá kết quả.
· Kỹ thuật đối sánh: cho thực hiện với một vài sản phẩm khác với cùng các chức năng giống nhau và trên cùng các tập dữ liệu rồi lập bảng so sánh các chức năng.
2.2.5 Quá trình kiểm thử
Quá trình kiểm thử có thể chia 5 giai đoạn:
1. Thử đơn vị
2. Thử module
3. Thử hệ con
4. Thử hệ thống
5. Thử nghiệm thu: còn gọi thử anpha.
Khi hệ thống được đem bán còn phép thử beta: phân phối hệ thống cho một số người dùng đồng ý dùng thử và báo cáo lại các vấn đề cho người phát triển hệ thống.
Câu 3: Đặc điểm của kiểm tra phần mềm và hãy nêu các chiến lược kiểm tra phần mềm
Trả lời:
3.1 Đặc điểm của kiểm tra phần mềm: Xác minh và thẩm định một hệ phần mềm là một quá trình liên tục xuyên suốt mọi giai đoạn của quá trình phần mềm.Xác minh và thẩm định là một quá trình kéo dài suốt vòng đời. Nó bắt đầu khi duyệt xét yêu cầu. Xác minh và thẩm định có hai mục tiêu:
i) Phát hiện các khuyết tật trong hệ thống.
ii) Đánh giá xem hệ thống liệu có dùng được hay không?
Sự khác nhau giữa xác minh và thẩm định là:
i) Thẩm định: Xem xét cái được xây dựng có là sản phẩm đúng không? Tức là kiểm tra xem chương trình có được như mong đợi của người dùng hay không.
ii) Xác minh: Xem xét cái được xây dựng có đúng là sản phẩm không? Như thế, xác minh là kiểm tra chương trình có phù hợp với đặc tả hay không.
3.2 Chiến lược kiểm tra phần mềm : có hai kiểu chiến lược kiểm tra. Kiểu thứ nhất liên quan logic được kiểm tra thế nào trong ứng dụng. Chiến lược kiểm tra logic có thể là black-box hoặc white-box. Kiểu thứ hai liên quan tới việc kiểm tra được tiến hành thế nào, không quan tâm chiến lược kiểm tra logic. Nó là top-down hoặc bottom-up.
Kiểm tra Black-box: Phân hoạch cân bằng, Phân tích cực biên, Đoán lỗi.
White-box testing: Có ba loại kiểm tra hộp trắng là kiểm tra logic -logic test, chứng minh toán học -mathematical proof và Cleanroom testing.
Logic test, Chứng minh bằng toán học, Cleanroom testing
Kiểm tra top-down: Phương pháp kiểm tra top-down cần một mã ngoài, được hiểu như là một bộ khung để gắn các chức năng gốc, các modul, và các phần khác của ứng dụng. Bộ khung này thường bắt đầu với ngôn ngữ điều khiển công việc và logic chính của ứng dụng. Khi các module thiết yếu nhất đã được kiểm tra và chạy tốt thì mã của các modul ít quan trọng hơn sẽ được gắn vào khung và tiếp tục kiểm tra.
. Kiểm tra bottom-up: Nguyên tắc của bottom-up là kiểm tra mọi thay đổi tại module có thể ảnh hưởng tới chức năng của nó. Trong kiểm tra bottom-up, toàn bộ khối là đơn vị để đánh giá. Tất cả các module được mã hoá và kiểm tra riêng rẽ.
Bạn đang đọc truyện trên: AzTruyen.Top