Tải bản đầy đủ (.pptx) (45 trang)

chuong6xaydungchuongtrinh xuanhiens weblog

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.59 MB, 45 trang )

<span class='text_page_counter'>(1)</span><div class='page_container' data-page=1></div>
<span class='text_page_counter'>(2)</span><div class='page_container' data-page=2>

1. Tổng quan về thiết kế và hiện thực phần mềm


2. Thiết kế hướng đối tượng sử dụng UML



3. Mẫu thiết kế



4. Vấn đề thực hiện



</div>
<span class='text_page_counter'>(3)</span><div class='page_container' data-page=3>

<b><sub>Thiết kế và hiện thực phần mềm</sub></b>

<sub> là </sub>

<b><sub>một giai đoạn </sub></b>

<sub>trong </sub>

<b><sub>quy </sub></b>



<b>trình công nghệ phần mềm</b>

.



<sub>Hoạt động </sub>

<i><b><sub>thiết kế </sub></b></i>

<sub>và </sub>

<i><b><sub>hiện thực </sub></b></i>

<sub>phần mềm luôn xen kẽ nhau.</sub>



<i><b><sub>Thiết kế phần mềm </sub></b></i><sub>là một </sub><i><b><sub>hoạt động sáng tạo </sub></b></i><sub>trong đó các kỹ sư phần </sub>


mềm phải xác định các thành phần phần mềm và các mối quan hệ của
chúng, dựa trên yêu cầu của khách hàng.


<i><b><sub>Hiện thực phần mềm </sub></b></i><sub>là quá trình thực hiện các thiết kế như một chương </sub>


trình.


</div>
<span class='text_page_counter'>(4)</span><div class='page_container' data-page=4>

<sub>Thơng thường, có một giai đoạn thiết kế riêng biệt và thiết kế này </sub>



được mơ hình hóa và ghi dưới dạng các bảng vẽ thiết kế.



<sub>Ngồi ra, cũng có một thiết kế từ những lập trình viên hoặc được </sub>



phác họa sơ bộ trên giấy về cách giải quyết vấn đề.



<sub>Tuy nhiên, luôn cần một </sub>

<i><b><sub>mô tả chi tiết các thiết kế hệ thống </sub></b></i>




bằng cách

<i><b>sử dụng UML </b></i>

hoặc ngôn ngữ mô tả thiết kế khác.



</div>
<span class='text_page_counter'>(5)</span><div class='page_container' data-page=5>

<sub>Một trong những </sub>

<b><sub>quyết định quan trọng nhất </sub></b>

<sub>phải được đưa ra ở </sub>



<b>giai đoạn đầu của dự án phần mềm </b>

là nên

<b>mua</b>

hay

<b>xây dựng </b>



<b>phần mềm mới</b>

.



<sub>Hiện nay, trong một số lĩnh vực, đã có các giải pháp đóng gói </sub> <i><b><sub>(COTS </sub></b></i>


<i><b>-Commercial off-the-shelf) gồm đầy đủ các dịch vụ,</b></i> sau đó được điều
chỉnh để đáp ứng nhu cầu của người dùng.


<b>Ví dụ, </b><i>nếu muốn thực hiện một hệ thống hồ sơ y tế, người dùng có thể mua </i>
<i>một gói đã được sử dụng trong bệnh viện. Nó rẻ hơn và nhanh hơn thay vì </i>


<i>phát triển một hệ thống theo ngơn ngữ lập trình thơng thường</i>.


</div>
<span class='text_page_counter'>(6)</span><div class='page_container' data-page=6>

<b><sub>Quy trình thiết kế hướng đối tượng </sub></b>

<sub>có cấu trúc liên quan đến </sub>



việc

<i><b>phát triển các mơ hình hệ thống khác nhau</b></i>

.



<sub>Quy trình thiết kế hướng đối tượng đòi hỏi rất </sub><i><b><sub>nhiều nỗ lực để phát triển </sub></b></i>


<i><b>và bảo trì</b></i>, đối với các <i><b>hệ thống nhỏ</b></i>, <i><b>điều này không hiệu quả về chi </b></i>
<i><b>phí</b></i>.


<sub>Tuy nhiên, đối với các hệ thống lớn được phát triển bởi các nhóm khác </sub>



nhau, các <b>mơ hình thiết kế là một cơ chế giao tiếp quan trọng</b>.


</div>
<span class='text_page_counter'>(7)</span><div class='page_container' data-page=7>

<b><sub>Các giai đoạn xử lý: </sub></b>

<sub>Có nhiều quy trình thiết kế hướng đối tượng </sub>



khác nhau phụ thuộc vào tổ chức sử dụng quy trình.



<i><b><sub>Các hoạt động phổ biến trong các quy trình thiết kế hướng đối tượng: </sub></b></i>


– Xác định bối cảnh và phương thức sử dụng của hệ thống;
– Thiết kế kiến trúc hệ thống;


– Xác định các đối tượng hệ thống chính;
– Xây dựng mơ hình thiết kế;


– Chỉ định các giao diện của đối tượng.


</div>
<span class='text_page_counter'>(8)</span><div class='page_container' data-page=8>

<sub>Hiểu được </sub>

<i><b><sub>mối quan hệ giữa phần mềm </sub></b></i>

<sub>đang được thiết kế và </sub>


<i><b>mơi trường bên ngồi </b></i>

của nó là điều cần thiết để

<i><b>quyết định </b></i>


<i><b>cách cung cấp chức năng hệ thống cần thiết</b></i>

và cách

<i><b>cấu trúc </b></i>


<i><b>hệ thống </b></i>

để

<i><b>giao tiếp với mơi trường của nó</b></i>

.



<sub>Hiểu biết về ngữ cảnh giúp </sub>

<i><b><sub>thiết lập các ranh giới (boundary) </sub></b></i>



<i><b>của hệ thống </b></i>

<i><b>quyết định các tính năng nào được triển khai </b></i>


<i><b>trong hệ thống </b></i>

và những tính năng nào

<i><b>trong các hệ thống liên </b></i>


<i><b>kết khác</b></i>

.



</div>
<span class='text_page_counter'>(9)</span><div class='page_container' data-page=9>

<b><sub>Mơ hình ngữ cảnh </sub></b>

<b><sub>hệ thống </sub></b>

<sub>là một </sub>

<b><sub>mơ hình cấu trúc </sub></b>

<sub>thể hiện </sub>



<i><b>các hệ thống con</b></i>

trong

<i><b>môi trường của hệ thống đang được </b></i>



<i><b>phát triển</b></i>

.



<i><b><sub>Mô hình ngữ cảnh hệ thống </sub></b></i>

<sub>như một </sub>

<i><b><sub>bản đồ cấp cao của hệ </sub></b></i>



<i><b>thống </b></i>

<i><b>môi trường xung quanh, </b></i>

được

sử dụng xác định phạm


vi hoạt động của hệ thống.



<sub>Sơ đồ ngữ cảnh hệ thống gồm </sub>

<i><b><sub>ba phần tử biểu đồ:</sub></b></i>

<sub> Phần tử ngữ </sub>



cảnh, các thực thể bên ngồi và các luồng dữ liệu



</div>
<span class='text_page_counter'>(10)</span><div class='page_container' data-page=10>

<b><sub>Ví dụ</sub></b>

<sub>: Mơ hình ngữ </sub>



cảnh của hệ thống đặt


hàng hiển thị tất cả các


hướng dẫn nội bộ và xử


lý tự động



</div>
<span class='text_page_counter'>(11)</span><div class='page_container' data-page=11>

<i><b><sub>Mô hình tương tác </sub></b></i>

<sub>là một </sub>

<i><b><sub>mơ hình động </sub></b></i>

<sub>thể hiển cách mà </sub>

<b><sub>hệ </sub></b>



<b>thống tương tác </b>

với

<b>môi trường của nó </b>

khi nó được sử dụng.



<sub>Hiển thị các </sub>

<b><sub>tương tác giữa các thành phần của hệ thống </sub></b>

<sub>hoặc </sub>



<b>giữa hệ thống với các hệ thống khác</b>



</div>
<span class='text_page_counter'>(12)</span><div class='page_container' data-page=12>

<b><sub>Vai trị của mơ hình tương tác</sub></b>



<i><b><sub>Mơ hình hóa tương tác người dùng </sub></b></i><sub>giúp xác định các yêu cầu của người </sub>



dùng.


<i><b><sub>Mơ hình hóa hệ thống </sub></b></i><sub>làm nổi bật các vấn đề giao tiếp có thể phát sinh.</sub>


<i><b><sub>Mơ hình hóa tương tác thành phần </sub></b></i><sub>giúp hiểu nếu cấu trúc hệ thống được </sub>


đề xuất có khả năng cung cấp các yêu cầu phi chức năng cần thiết.


</div>
<span class='text_page_counter'>(13)</span><div class='page_container' data-page=13>

<b><sub>Sơ đồ use case</sub></b>

<sub>: mơ hình hóa các tương tác giữa hệ thống và các </sub>



tác nhân bên ngoài (người dùng hoặc các hệ thống khác).



<i><b><sub>Xác định các actor: </sub></b></i><sub>Các đối tượng tương tác với hệ thống, có thể là người </sub>


hoặc các hệ thống khác bên ngoài hệ thống đang xây dựng.


<i><b><sub>Xác định các use case: </sub></b></i> <sub>Một use case đại diện cho một </sub> <i><b><sub>hành vi </sub></b></i> <sub>hoàn </sub>


chỉnh, được thực hiện qua nhiều bước, có hoạt động bắt đầu và kết thúc.


<i><sub>Cách xác định use case</sub></i><sub>: </sub>


– dựa vào đặc tả yêu cầu của người dùng, yêu cầu chức năng, chọn ra tập các động từ
– Từ tập động từ, chọn ra những động từ đại diện cho một chức năng hồn chỉnh.


</div>
<span class='text_page_counter'>(14)</span><div class='page_container' data-page=14>

<sub>Ví dụ: </sub>



<b>2.3 Các sơ đồ trong mơ hình tương tác</b>



</div>
<span class='text_page_counter'>(15)</span><div class='page_container' data-page=15>

<b><sub>Sơ đồ use case</sub></b>



<i><b><sub>Đặc tả use case</sub></b></i>



– Truyền đạt các yêu cầu kỹ thuật hoặc các yêu cầu phần mềm cho một
người không biết về kỹ thuật,


– Là cách để các nhà phát triển phần mềm đảm bảo người dùng đạt được
những yêu cầu từ hệ thống phần mềm.


<b><sub>Cách đặc tả use case</sub></b>


– Đặc tả dưới dạng văn bản
– Đặc tả dạng bảng


</div>
<span class='text_page_counter'>(16)</span><div class='page_container' data-page=16>

<b><sub>Các nội dung trong đặc tả use case</sub></b>



<b><sub>Luồng sự kiện chính (main flow): </sub></b> <sub>các bước thực hiện use case, là sự </sub>


tương tác giữa actor và hệ thống, từ lúc bắt đầu đến kết thúc.


– Mỗi bước được đánh số thứ tự.
– Actor thực hiện bước bắt đầu
– Hệ thống đáp trả.


– Actor thực hiện bước tiếp theo …


<b><sub>Luồng sự kiện thay thế (alternate flow): </sub></b><sub>tại một bước trong luồng sự kiện </sub>


chính, buộc actor phải chọn nhánh khác để thực hiện cho đến bước cuối
hoặc quay lại một bước nào đó trong luồng sự kiện chính.



– Luồng sự kiện thay thế được đánh số thứ tự theo bước mà tại đó có luồng rẻ nhánh


</div>
<span class='text_page_counter'>(17)</span><div class='page_container' data-page=17>

Ví dụ: Viết đặc tả


use case <b>Đặt mua </b>
<b>sách</b> của khách
hàng trong hệ
thống


<b>BookstoreOnline</b>


Tên use case: Đặt mua sách


Mô tả sơ lược: Khách hàng thực hiện yêu cầu đặt mua sách trên hệ thống
BooksotreOnline.


Actor chính: khách hàng


Actor phụ: khơng


Tiền điều kiện: khách hàng phải đăng nhập thành công.
Hậu điều kiện: Một đơn hàng được lưu trong hệ thống


Số lượng sách trong kho được cập nhật
Luồng sự kiện chính


Actor System


1. Khách hàng click nút Đặt hàng



3. Khách hàng điền thông tin đặt hàng và
click nút Gửi


6. Khách hàng xác nhận và kết thúc hoạt
động đặt mua sách


2. Hệ thống hiển thị Form đặt hàng
4. Hệ thống kiểm tra (rẽ nhánh)


5. Hệ thống hiển thị thông báo đặt hàng thành công.
7. Hệ thống cập nhật số lượng sách.


Luồng sự kiện thay thế


4.1.a Khách hàng chọn kết thúc.
4.1.b. Khách hàng chọn tiếp tục.


</div>
<span class='text_page_counter'>(18)</span><div class='page_container' data-page=18>

<b><sub>Sơ đồ sequence: </sub></b>

<sub>mơ hình các tương tác giữa các đối tượng hoặc </sub>



các thành phần hệ thống.



<i><b><sub>Sơ đồ tuần tự </sub></b></i>

<sub>biểu diễn tuần tự các tương tác giữa các đối tượng </sub>



trong hệ thống bằng các thông điệp (messages), từ các thông điệp


tương tác giữa các đối tượng, xác định các hành vi của đối tượng.



<b>2.3 Các sơ đồ trong mơ hình tương tác</b>



</div>
<span class='text_page_counter'>(19)</span><div class='page_container' data-page=19></div>
<span class='text_page_counter'>(20)</span><div class='page_container' data-page=20>

<b><sub>Hệ thống con (subsystem)</sub></b>




<sub>Một hệ thống thường được chia thành các </sub><b><sub>hệ thống con</sub></b><sub>, mỗi hệ thống con </sub>


thực hiện một cơng việc hồn chỉnh.


<b><sub>Hệ thống con</sub></b><sub> có thể được chia nhỏ một cách đệ quy thành những </sub> <b><sub>hệ </sub></b>
<b>thống con</b> đơn giản hơn


</div>
<span class='text_page_counter'>(21)</span><div class='page_container' data-page=21>

<b><sub>Sơ đồ Package</sub></b>



<sub>Để dễ dàng trong phần thiết kế hướng đối tượng, domain model </sub>



được tổ chức thành các package.



<sub>Tổ chức domain model thành các package là một thủ tục phức </sub>



tạp, dựa trên hai nguyên tắc cơ bản:

<b>sự gắn kết </b>

<b>độc lập</b>

.



</div>
<span class='text_page_counter'>(22)</span><div class='page_container' data-page=22>

<b><sub>Sơ đồ Package</sub></b>



<b><sub>Nhóm các lớp vào Package: </sub></b><sub>nhóm các lớp vào package phải thỏa các tiêu </sub>


chí <b>gắn kết </b><i>(coherence) </i>sau:


– <i><b>Mục tiêu</b></i>: các lớp phải trả về các dịch vụ đáp ứng yêu cầu người dùng


– <i><b>Ổn định</b></i>: sự cô lập các lớp trong một package phải thực sự ổn định trong
quá trình phát triển dự án, và sau đó.


– <i><b>Thời gian sống của các đối tượng</b></i>: tiêu chí này giúp phân biệt được các
lớp mà đối tượng có thời gian sống rất khác nhau.



</div>
<span class='text_page_counter'>(23)</span><div class='page_container' data-page=23>

<sub>Ví dụ: </sub>

<i><sub>Package </sub></i>

<i><b><sub>Dịch vụ theo dõi </sub></b></i>



<i><b>đặt hàng</b></i>

<i> của một cửa hàng mua </i>


<i>sắm trực tuyến. Dịch vụ theo dõi đặt </i>


<i>hàng có trách nhiệm cung cấp thông </i>


<i>tin theo dõi cho các sản phẩm được </i>


<i>đặt hàng của khách hàng. Các loại </i>


<i>khách hàng trong số sê-ri theo dõi, </i>



<i><b>Dịch vụ theo dõi đặt hàng</b></i>

<i> đề cập </i>


<i>đến hệ thống và cập nhật trạng thái </i>


<i>giao hàng hiện tại cho khách hàng.</i>



</div>
<span class='text_page_counter'>(24)</span><div class='page_container' data-page=24>

<b><sub>Sơ đồ thành phần (Component diagrams)</sub></b>

<b><sub>: </sub></b>

<sub>được sử dụng để </sub>



trực quan hóa tổ chức và mối quan hệ giữa các Component trong


một hệ thống.



<sub>Các sơ đồ này cũng được sử dụng để tạo ra các hệ thống thực </sub>



thi.



<sub>Các thành phần trong Component diagrams</sub>


<sub>Component </sub>


<sub>Interface</sub>
<sub>Port</sub>


</div>
<span class='text_page_counter'>(25)</span><div class='page_container' data-page=25>

<b><sub>Component</sub></b>

<sub>là một khối đơn vị logic của hệ thống, được sử dụng </sub>




để mô hình hóa các khía cạnh vật lý của một hệ thống, là các yếu


tố như tệp thực thi, thư viện, tệp, tài liệu, v.v.



<sub>Thông thường một Component được tạo thành từ nhiều </sub>

<i><sub>class</sub></i>

<sub>, </sub>



<i>package</i>

của các class hoặc các

<i>Component</i>

khác



<sub>Ký hiệu trong UML</sub>



</div>
<span class='text_page_counter'>(26)</span><div class='page_container' data-page=26>

<b><sub>Interface</sub></b>

<i><b><sub>: </sub></b></i>

<sub>Đây là các điểm nhập hoặc cung cấp dịch vụ có thể </sub>



nhìn thấy mà một

<i><b>Component</b></i>

có thể cung cấp cho các



<i><b>Component</b></i>

và lớp phần mềm khác.



<sub>Ký hiệu trong UML</sub>



</div>
<span class='text_page_counter'>(27)</span><div class='page_container' data-page=27>

<b><sub>Loại Interface</sub></b>



<b><sub>Required interfaces</sub></b><sub>: xác định một tập các thuộc tính và các hoạt động </sub>


chung (Public) được yêu cầu bởi các lớp hiện thực interface đã cho.


<b><sub>Provided interfaces </sub></b> <sub>xác định một tập các thuộc tính và các hoạt động </sub>


chung (Public) cần được cung cấp bởi các lớp hiện thực interface đã cho.


</div>
<span class='text_page_counter'>(28)</span><div class='page_container' data-page=28>

<b><sub>Port</sub></b>

<b><sub>: </sub></b>

<sub>chỉ ra component đó khơng cung cấp các interfaces, và </sub>




component ủy quyền interfaces cho một lớp bên trong.

<b>Port</b>

được


sử dụng để giúp

<i><b>hiển thị các interfaces </b></i>

của một component.



<sub>Ký hiệu trong UML</sub>



</div>
<span class='text_page_counter'>(29)</span><div class='page_container' data-page=29>

<b><sub>Sơ đồ triển khai (Deployment diagrams): </sub></b>

<sub>được sử dụng để mơ </sub>



hình hóa các khía cạnh

<i>vật lý </i>

của một hệ thống hướng đối tượng.


Nó thể hiện cách mà hệ thống sẽ được triển khai.



<sub>Các thiết bị phần cứng, bộ xử lý và môi trường thực thi phần mềm </sub>



được phản ánh dưới dạng

<b>Nút</b>

và cấu trúc bên trong có thể được


mơ tả bằng cách

<b>nhúng</b>

hoặc

<b>Nút lồng. </b>



</div>
<span class='text_page_counter'>(30)</span><div class='page_container' data-page=30>

<b><sub>Các thành phần trong </sub></b>

<i><b><sub>Deployment diagrams: </sub></b></i>


<sub>Nodes</sub>


<sub>Artifacts</sub>


<sub>Communication Association</sub>
<sub>Devices</sub>


</div>
<span class='text_page_counter'>(31)</span><div class='page_container' data-page=31>

<b><sub>Nodes</sub></b>

<b><sub>: </sub></b>

<sub>là một thực thể vật lý thực thi một hoặc nhiều thành phần </sub>



(components, subsystems) hoặc tệp thực thi.



<sub>Một nút có thể là một yếu tố phần cứng hoặc phần mềm.</sub>


<sub>Ký hiệu trong UML</sub>




</div>
<span class='text_page_counter'>(32)</span><div class='page_container' data-page=32>

<b><sub>Devices: </sub></b>



<sub>Ví dụ: Sơ đồ triển khai cơ bản của một hệ thống gồm: </sub>


<sub>Một máy chủ web</sub>


<sub>Một máy chủ cơ sở dữ liệu</sub>


<sub>Máy mà người dùng xem trang web. </sub>


</div>
<span class='text_page_counter'>(33)</span><div class='page_container' data-page=33>

<sub>Các phương pháp lập trình</sub>


<sub>Tài liệu phần mềm</sub>



<sub>Thách thức trong triển khai phần mềm</sub>



</div>
<span class='text_page_counter'>(34)</span><div class='page_container' data-page=34>

<b><sub>Lập trình hướng cấu trúc: </sub></b>

<sub>là phương pháp lập trình logic, là tiền </sub>



thân của lập trình hướng đối tượng (OOP). Lập trình có cấu trúc


giúp chương trình rõ ràng, dễ hiểu và dễ sửa đổi.



<b><sub>Cách tiếp cận thiết kế từ trên xuống</sub></b><sub>: một hệ thống được chia thành các </sub>


hệ thống con thành phần hoặc module riêng biệt, và các module có thể
được sử dụng lại trong các chương trình khác


<sub>Sau khi một module đã được thử nghiệm riêng lẻ, nó sẽ được tích hợp với </sub>


các module khác vào cấu trúc chương trình tổng thể.


</div>
<span class='text_page_counter'>(35)</span><div class='page_container' data-page=35>

<b><sub>Lập trình hướng chức năng: </sub></b>

<sub>Đây là phương pháp cận truyền </sub>




thống của ngành công nghiệp phần mềm trong đó, phần mềm


được xem như là một

<b>tập hợp các chương trình hoặc chức </b>



<b>năng </b>

và dữ liệu giả lập.



<i><b>Chương trình = thuật giải + cấu trúc dữ liệu</b></i>



<i><b><sub>Ngơn ngữ lập trình chức năng </sub></b></i>

<sub>được dùng để </sub>

<i><b><sub>xử lý các ứng </sub></b></i>



<i><b>dụng tính tốn</b></i>

và xử lý danh sách. Lập trình chức năng dựa trên


các hàm tốn học.



<sub>Các ngơn ngữ lập trình chức năng phổ biến: Lisp, Python, vv</sub>



</div>
<span class='text_page_counter'>(36)</span><div class='page_container' data-page=36>

<b><sub>Lập trình hướng đối tượng: </sub></b>

<sub>là một phương pháp lập trình mà </sub>



theo đó giải pháp cho một vấn đề lập trình được

<i><b>mơ hình hóa như </b></i>


<i><b>một tập hợp các đối tượng </b></i>

hợp tác.



<sub>Các đối tượng bao gồm thuộc tính và hành vi, và tương tác với </sub>



nhau bằng cách gửi các thông điệp.



<sub>Phương pháp lập trình hướng đối tượng </sub>

<i><b><sub>tập trung vào các đối </sub></b></i>


<i><b>tượng </b></i>

hơn là logic cần thiết để thao tác chúng.



<i><b><sub>Phù hợp cho các hệ thống lớn, phức tạp, có khả năng sử </sub></b></i>



<i><b>dụng lại mã, khả năng mở rộng và hiệu quả.</b></i>




</div>
<span class='text_page_counter'>(37)</span><div class='page_container' data-page=37>

<b><sub>Phong cách lập trình: </sub></b>

<i><sub>thiết lập các quy tắc </sub></i>

<sub>mã hóa để các lập </sub>



trình viên tuân thủ khi viết mã.



<sub>Khi nhiều lập trình viên làm việc trên cùng một dự án phần mềm, </sub>



họ cần phải làm việc với mã chương trình được viết bởi các nhà


phát triển khác, do đó, các nhà phát triển phải

<i><b>tuân theo một số </b></i>


<i><b>phong cách lập trình tiêu chuẩn </b></i>

để mã hóa chương trình.



</div>
<span class='text_page_counter'>(38)</span><div class='page_container' data-page=38>

<b><sub>Phong cách lập trình: </sub></b>



<sub>Sử dụng hàm và tên biến có liên quan đến tác vụ đang hiện thực</sub>
<sub>Sử dụng thụt lề được đặt đúng vị trí.</sub>


<sub>Chú thích cho code để thuận tiện cho người đọc </sub>


<sub>Cách trình bày code tổng thể sao cho mã chương trình có thể đọc và dễ </sub>


hiểu bởi tất cả các thành viên, giúp việc gỡ lỗi và giải quyết lỗi dễ dàng hơn.


<sub>Ngoài ra, phong cách lập trình phù hợp giúp dễ dàng viết và cập nhật tài </sub>


liệu phần mềm.


</div>
<span class='text_page_counter'>(39)</span><div class='page_container' data-page=39>

<b><sub>Tài liệu phần mềm</sub></b>

<sub> là một phần quan trọng của quy trình phần </sub>



mềm. Một tài liệu được viết tốt cung cấp một cơng cụ hữu ích, và



<i><b>phương tiện lưu trữ thơng tin </b></i>

cần thiết để biết về

<i><b>quy trình phát </b></i>



<i><b>triển phần mềm</b></i>

.



<sub>Tài liệu phần mềm cũng cung cấp thông tin </sub>

<i><b><sub>về cách sử dụng sản </sub></b></i>



<i><b>phẩm</b></i>

.



</div>
<span class='text_page_counter'>(40)</span><div class='page_container' data-page=40>

<b><sub>Nội dung trong tài liệu phần mềm:</sub></b>



<b><sub>Tài liệu yêu cầu (Requirement documentation): </sub></b>


– Cơng cụ chính cho nhà <i>thiết kế phần mềm</i>, <i>nhà phát triển </i>và <i>nhóm thử </i>


<i>nghiệm </i>để thực hiện các nhiệm vụ tương ứng của họ.


– Tài liệu này <i>chứa tất cả các mô tả chức năng, phi chức năng và hành vi </i>


<i>của phần mềm dự định</i>.


– <i>Là nền tảng cho phần mềm </i>được phát triển và được sử dụng trong các


giai đoạn <i>xác minh và xác nhận</i>. Hầu hết các trường hợp thử nghiệm
được xây dựng trực tiếp từ tài liệu yêu cầu.


</div>
<span class='text_page_counter'>(41)</span><div class='page_container' data-page=41>

<b><sub>Nội dung trong tài liệu phần mềm:</sub></b>



<b><sub>Tài liệu thiết kế phần mềm (Software Design documentation): </sub></b><sub>cung cấp </sub>


tất cả <b>thông tin cần thiết để mã hóa và triển khai</b><i><b>, </b></i>bao gồm các nội dung:
– Kiến trúc phần mềm cấp cao,



– Chi tiết thiết kế phần mềm,
– Sơ đồ luồng dữ liệu,


– Thiết kế cơ sở dữ liệu


</div>
<span class='text_page_counter'>(42)</span><div class='page_container' data-page=42>

<b><sub>Nội dung trong tài liệu phần mềm:</sub></b>



<b><sub>Tài liệu kỹ thuật (Technical documentation): </sub></b><sub>được tạo và duy trì bởi các </sub>


nhà phát triển và các lập trình viên thực tế.


– Các tài liệu này chứa <i><b>thơng tin về mã chương trình</b></i>. Trong khi viết mã,
các lập trình viên đưa ra mục tiêu của mã, ai đã viết nó, nó sẽ được yêu
cầu ở đâu, làm gì và làm như thế nào, những tài nguyên khác mà mã sử
dụng, v.v.


– Làm tăng sự <i><b>hiểu biết giữa các lập trình viên khác nhau </b></i>làm việc trên
cùng một mã.


– Nó <i><b>tăng cường khả năng tái sử dụng </b></i>và giúp việc <i><b>gỡ lỗi dễ dàng</b></i>


</div>
<span class='text_page_counter'>(43)</span><div class='page_container' data-page=43>

<b><sub>Nội dung trong tài liệu phần mềm:</sub></b>



<b><sub>Tài liệu người dùng (User documentation): </sub></b>


– Giải thích cách sản phẩm phần mềm nên hoạt động và cách sử dụng nó
để có kết quả mong muốn.


– Các tài liệu này có thể bao gồm, quy trình cài đặt phần mềm, hướng dẫn
cách làm, hướng dẫn sử dụng, phương pháp gỡ cài đặt và tài liệu tham


khảo đặc biệt để có thêm thơng tin như cập nhật giấy phép,


</div>
<span class='text_page_counter'>(44)</span><div class='page_container' data-page=44>

<sub>Các thách thức mà nhóm phát triển phải đối mặt trong khi hiện </sub>



thực phần mềm:



<b><sub>Tái sử dụng mã</sub><sub>: </sub></b><sub>các ngôn ngữ ngày nay được trang bị các thư viện khổng </sub>


lồ. Tuy nhiên, để giảm chi phí cho sản phẩm cuối cùng, ban quản lý tổ chức
thích sử dụng lại mã được tạo trước đó cho một số phần mềm khác. Do đó,
các lập trình viên phải đối mặt để <b>kiểm tra tính tương thích và quyết định </b>
<b>sử dụng lại bao nhiêu mã</b>.


</div>
<span class='text_page_counter'>(45)</span><div class='page_container' data-page=45>

<b><sub>Quản lý phiên bản </sub></b> <b><sub>- </sub></b> <sub>Mỗi khi một phần mềm mới được phát hành cho </sub>


khách hàng, các nhà phát triển phải duy trì tài liệu liên quan đến phiên bản
và cấu hình. Tài liệu này cần phải có độ chính xác cao và có sẵn đúng thời
điểm.


<b><sub>Target-Host</sub></b><sub> - Chương trình phần mềm, đang được phát triển trong tổ chức, </sub>


cần được thiết kế cho các máy chủ khách hàng. Nhưng đôi khi, không thể
thiết kế một phần mềm hoạt động trên các máy mục tiêu.


</div>

<!--links-->

×