* Theo quan điểm của nhà tin học người Mỹ Regor Pressman phần mềm là một tổ hợp gồm 3 thành tố: - Chương trình máy tính: mã nguồn, mã máy - Các cấu trúc dữ liệu: Cấu trúc làm việc bộ nhớ
Trang 11 Trình bày khái niệm phần mềm và KNPM? -2
2 Phương pháp phân loại phần mềm? -4
3 Trình bày tổng quan về các ngôn ngữ lập trình? -5
4 Trình bày khái niệm và mô hình thác nước biểu diễn vòng đời phát triển của phần mềm? -7
5 Trình bày quy trình làm bản mẫu phần mềm Phân tích các bước của quy trình này? -8
6 Trình bày các phương pháp thu thập thông tin cho quá trình phân tích trong KNPM? -10
7 Khái niệm mô hình BFD, các thành phần của BFD Cho ví dụ minh họa? -11
8 Khái niệm sơ đồ ngữ cảnh, các thành phần của sơ đồ ngữ cảnh Cho ví dụ minh họa? -13
9 Khái niệm sơ đồ luồng dữ liệu DFD Cho ví dụ minh họa? -14
10 Vai trò của thiết kế phần mềm trong KNPM? -15
11 Ký pháp lưu đồ trong KNPM Cho ví dụ minh họa? -15
12 Tiến trình thiết kế phần mềm Mối liên hệ giữa khía cạnh quản lý và khía cạnh kỹ thuật trong thiết kế phần mềm? -17
13 Trình bày khái niệm kiến trúc phần mềm? Mối liên hệ giữa vần đề cần giải quyết P và giải pháp phần mềm S Cho một ví dụ minh họa? -18
14 Trình bày phương pháp thiết kế Top Down Design Cho ví dụ minh hoạ? -19
15 Trình bày phương pháp thiết kế Bottom Up Design Cho ví dụ minh hoạ? -21
16 Trình bày vấn đề thiết kế dữ liệu trong KNPM Cho ví dụ minh họa? -23
17 Trình bày khái niệm thiết kế giải thuật trong KNPM Cho ví dụ minh họa? -24
18 Trình bày khái niệm thiết giao diện trong KNPM Cho ví dụ minh họa? -26
19 Trình bày mục đích, dấu hiệu, lưu đồ và các hoạt động chính của quy trình xác định yêu cầu người sử dụng trong KNPM? -28
20 Trình bày mục đích, dấu hiệu, lưu đồ và các hoạt động chính của quy trình xây dựng và quản lý hợp đồng phần mềm? -29
21 Trình bày mục đích, dấu hiệu, lưu đồ và các hoạt động chính của quy trình thiết kế phần mềm? 30 22 Trình bày mục đích, dấu hiệu, lưu đồ và các hoạt động chính của quy trình lập trình? -33
23 Trình bày mục đích, dấu hiệu, lưu đồ và các hoạt động chính của quy trình Test phần mềm?- 34 24 Trình bày mục đích, dấu hiệu, lưu đồ và các hoạt động chính của quy trình triển khai phần mềm? -36
25 Trình bày mục đích, dấu hiệu, lưu đồ và các hoạt động chính của quy trình quản lý dự án phần mềm? -38
26 Trình bày phương pháp KLOC xác định quy mô phần mềm? -43
27 Trình bày phương pháp FP xác định quy mô phần mềm? -44
28 Trình bày phương pháp lập lịch thực hiện dự án phần mềm? -46
29 Vấn đề quản lý rủi ro trong KNPM? -47
30 Trình bày mô hình tổng quát các quy trình sản xuất phần mềm ở quy mô công nghiệp? Phân tích mối liên hệ giữa các quy trình? -49
Trang 21 Trình bày khái niệm phần mềm và KNPM?
a Khái niệm phần mềm
Phần mềm là một tập hợp những câu lệnh được viết bằng một hoặc nhiều ngôn ngữ lậptrình theo một trình tự xác định nhằm tự động thực hiện một số chức năng hoặc giải quyếtmột vấn đề tính toán nào đó
* Theo quan điểm của nhà tin học người Mỹ Regor Pressman phần mềm là một tổ hợp gồm
3 thành tố:
- Chương trình máy tính: mã nguồn, mã máy
- Các cấu trúc dữ liệu: Cấu trúc làm việc (bộ nhớ trong); Cấu trúc lưu trữ (bộ nhớ ngoài)
- Các tài liệu liên quan: Hướng dẫn sử dụng (người dùng); Tham khảo kỹ thuật (ngườibảo trì); Tài liệu phát triển (nhà phát triển)
- Phần mềm được kỹ nghệ hóa, nó không được chế tạo theo nghĩa cổ điển
- Phần mềm không bị hỏng đi trong quá trình sử dụng
- Phần mềm được sáng chế theo đơn đặt hàng chứ không lắp ráp từ các thành phần có sẵn
* Các giai đoạn của quy trình phát triển phần mềm: mỗi phần mềm không phục thuộc vàoquy mô, lĩnh vực ứng dụng và chức năng đa dạng của nóm toàn bộ quy trình thực phát triểnphần mềm đều bao gồm 3 công đoạn:
Kế hoạch
phần mềm Đặc tả yêucầu Thiếtkế trìnhLập
Chươn
g trình làm việc
Tiêu chuẩnkiểm thử
Trang 3Giai đoạn 1: XÁC ĐỊNH
Giai đoạn 2: PHÁT TRIỂN
Giai đoạn 3: BẢO TRÌ
=> Cái gì?
=> Như thế nào?
=> Thay đổi ra sao
- Giai đoạn 1: Xác định (Phân tích hệ thống, kế hoạch, phân tích yêu cầu): Trả lời cho
câu hỏi cái gì? - đặc biệt quan trọng vì nó đưa ra mục tiêu dự án cần đạt được,những phương tiện và công cụ để đạt tới mục tiêu đó Thực tế cho thấy mục tiêu của
1 dự án cần phải được đặt ra 1 cách rõ ràng, cụ thể
- Giai đoạn 2: Phát triển (thiết kế, mã hóa, kiểm thử): Trả lời cho câu hỏi như thế
nào?- thực hiện nội dung của dự án
- Giai đoạn 3: Bảo trì (sửa đổi, thích nghi, hoàn thiện): Trả lời cho câu hỏi Thay đổi
ra sao? - thực tiễn cho thấy công việc này có vai trò rất quyết định đến doanh thusản phẩm của 1 công ty phần mềm
b Khái niệm kỹ nghệ phần mềm
- Kỹ nghệ phần mềm là lĩnh vực nghiên cứu của tin học nhằm đề xuất các nguyên lý,phương pháp, công cụ, cách tiếp cận và phương tiện phục vụ cho việc thiết kế và cài đặtcác sản phẩm phần mềm nhằm đạt được các chỉ tiêu cơ bản sau:
Tính độc lập đối với thiết bị
- Kỹ nghệ phần mềm là việc áp dụng các công cụ, các kỹ thuật một cách có hệ thống trongviệc phát triển các ứng dụng dựa trên máy tính
- Theo Roger Pressman kỹ nghệ phần mềm là 1 tổ hợp gồm 3 thành tố là công cụ, phươngpháp, thủ tục nhằm giúp cho quản trị viên dự án nắm được xu thế tổng quát phát triển dự ánphần mềm và giúp cho các kỹ sư lập trình có 1 nền tảng để triển khai các định hướng củaphần mềm
Trang 4Cấu trúc kỹ nghệ phần mềm
- KNPM chỉ được ĐN rõ trong giai đoạn phần mềm trở thành ngành CN vì trong giai đoạnnày quá trình sx phần mềm mới được chuyên môn hóa cao độ thành các chức danh, mỗichức danh thực hiện 1 nhiệm vụ cụ thể và đều có vai trò quan trọng như nhau đến chấtlượng của 1 sản phẩm phần mềm được tung ra thị trường
*****
2 Phương pháp phân loại phần mềm?
Có nhiều cách phân loại phần mềm khác nhau như phân loại theo thời gian xuất hiện, phânloại theo chức năng ứng dụng, phân loại theo sự tiến hóa của các ngôn ngữ biểu diễn phầnmềm
* Phân loại theo chức năng: cách phân loại được sử dụng phổ biến
Trang 5- Phần mềm được viết theo đơn đặt hàng của 1 khách hàng cụ thể: phần mềm hỗ trợ bánhàng, phần mềm điều khiển thiết bị
- Phần mềm không được viết theo 1 đơn đặt hàng cụ thể, nó có thể được bán cho bất kỳkhách hàng nào
*****
3 Trình bày tổng quan về các ngôn ngữ lập trình?
a Khái niêm:
Ngôn ngữ lập trình chính là các công cụ để thiết kế nên phần mềm Ngôn ngữ lập trình là 1
hệ thống được ký hiệu hóa để miêu tả những tính toán (qua máy tính) trong một dạng mà
cả con người và máy đều có thể đọc và hiểu được
Việc lựa chọn NNLT có ý nghĩa rất lớn Khi đánh giá về các ngôn ngữ lập trình, người tathường căn cứ và các tiêu chuẩn sau đây:
- Lĩnh vực ứng dụng tổng quát
- Độ phức tạp thuật toán của ngôn ngữ
- Môi trường hoạt động của phần mềm
- Hiệu năng của phần mềm
- Độ phức tạp của cấu trúc chương trình
- Trr thức của cán bộ phát triển phần mềm
- Có chương tình dịch tốt
b Phân loại: Hiện nay có rất nhiều ngôn ngữ thiết kế phần mềm khác nhau được chia
thành 3 nhóm gọi là 3 thế hệ:
- Thế hệ 1: bắt đầu từ những năm 50 của thế kỷ trước, khi máy tính điện tử mới ra đời và
phần mềm chưa được thương mại hóa, trong giai đoạn này chủ yếu sử dụng các ngôn ngữ
máy Ngôn ngữ máy – là ngôn ngữ duy nhất mà máy tính “hiểu được” (được viết ở dạng
nhị phân hoặc hệ đếm 16) là dãy các lệnh máy mà CPU có thể thực hiện trực tiếp Việc lậptrình bằng ngôn ngữ máy làm cho máy tính có thể hiểu được ngay mà không cần chươngtrình dịch nhưng tốn nhiều công sức của lập trình viên
- Thế hệ 2: Người ta sử dụng một số từ tiếng anh để chuyển việc lập trình từ ngôn ngữ máy
cụ thể sang các câu lệnh viết bằng tiếng anh, nhờ thế việc lập trình trở nên đơn giản hơnnhưng bản thân máy tính không hiểu được những câu lệnh tiếng anh này Vì thế trong phầnmềm hệ thống phải bố trí các chương trình dịch để dịch các câu lệnh từ tiếng anh thànhngôn ngữ máy
Trong thế hệ 2 có thể liệt kê 3 đại diện tiêu biểu:
FORTRAN (FORTRAN chuẩn, FORTRAN - 77): đây là ngôn ngữ chuyên dụngcho khối kỹ thuật và công nghệ
COBOL: chủ yếu giải quyết các bài toán kinh tế và thương mại, nhờ khả năng mô tảbảng biểu 1 cách cô đọng
BASIC: là ngôn ngữ lập trình phi cấu trúc, thuận tiện cho người mới sử dụng vớicác phiên bản trên máy tính
Trang 6- Thế hệ 3: được gọi là thế hệ các ngôn ngữ lập trình vạn năng mà ngôn ngữ tiêu biểu đầu
tiên là Pascal được sử dụng rộng rãi nhất trong các trường đại học trên thế giới để biểu diễngiải thuật nhờ khả năng cấu trúc cao của ngôn ngữ Sau đó vào những năm 60 xuất hiệnthêm một ngôn ngữ là ALGOL-60, trên cơ sở ngôn ngữ này người ta phát triển thành nhiềuloại ngôn ngữ khác ứng dụng trong kỹ thuật và kinh tế, cũng phải kể đến ngôn ngữ ứngdụng rộng hiện nay là C++ phát triển từ phòng làm việc Mỹ có tên là A Ngôn ngữ C++cho phép người sử dụng can thiệp vào phần cứng của máy và là nền tảng xây dựng lên hệđiều hành UNIX
=> Tóm lại khi nghiên cứu về các ngôn ngữ thiết kế phần mềm ta thấy có một xu hướng làcác ngôn ngữ ngày càng đa dạng, tính năng được nâng cao và đơn giản hóa cho người sửdụng
c Đặc điểm:
- Mỗi ngôn ngữ lập trình có thể được xem như là một tập hợp của các chi tiết kỹ thuật chútrọng đến cú pháp, từ vựng, và ý nghĩa của ngôn ngữ
Những chi tiết kỹ thuật này thường bao gồm:
Dữ liệu và cấu trúc dữ liệu
Câu lệnh và dòng điều khiển
Các tên và các tham số
Các cơ chế tham khảo và sự tái sử dụng
- Các ngôn ngữ có kiểu động là ngôn ngữ mà các kiểu chỉ được gán lên các dữ liệu trong
thời gian chương trình được thực thi (ngôn ngữ Objective-C, Lisp, JavaScript, Tcl, Prolog,Python và Ruby )
- Các ngôn ngữ có kiểu mạnh không cho phép dùng các giá trị của kiểu này như là một
kiểu khác Việc phát hiện này sẽ xảy ra ở thời gian thi hành đối với các ngôn ngữ có kiểuđộng và xảy ra ở thời gian dịch đối với các ngôn ngữ có kiểu tĩnh (ngôn ngữ ADA, Java,
ML và Oberon)
- Ngôn ngữ có kiểu yếu không quá khắt khe trong các quy tắc về kiểu hoặc cho phép một
cơ chế tường minh để xử lý các vi phạm ( C, ASM, C++, Tcl và Lua )
e Vai trò
NNLT vừa là công cụ giúp các nhà tin học giải quyết các vấn đề thực tế nhưng đồng thờicũng là nơi mà những nghiên cứu mới nhất của tin học được đưa vào Lĩnh vực này vừamang tính truyền thống vừa mang tính hiện đại
f Lợi ích việc nghiên cứu NNLT
- Cho phép lựa chọn 1 NNLT phù hợp vs dự án thực tế
- Sử dụng 1 cách có hiệu quả các công cụ của ngôn ngữ
- Làm tăng vốn kinh nghiệm khi xây dựng các chương trình
- Tạo sự dễ dàng để học 1 ngôn ngữ mới
- Tạo tiền đề để thiết kế 1 ngôn ngữ mới
*****
Trang 74 Trình bày khái niệm và mô hình thác nước biểu diễn vòng đời phát triển của phần mềm?
a Trình bày khái niệm vòng đời phát triển của phần mềm và mô hình thác nước biểu diễn vòng đời phát triển của phần mềm
- Vòng đời phát triển phần mềm(SDLC), là nền tảng đối với sự phát triển của một sảnphẩm phần mềm Là tập hợp các thao tác và các kết quả tương quan để sản xuất ra một sảnphẩm phần mềm Hầu hết các thao tác này được tiến hành bởi các kỹ sư phần mềm
- Theo nhà tin học người Mỹ Roger Pressman, bao gồm 6 công đoạn cơ bản và được biểudiễn bằng mô hình gọi là mô hình thác nước
+ Tiếp cận hệ thống:
- Đây là quá trình đầu tiên của mô hình thác nước -> tác động đến các quá trình còn lại
- Đây là một quan điểm bao trùm khi giải quyết các bài toán bằng công cụ phần mềm,tiếp cận hệ thống tức là phải xem xét trong tổng thể có liên quan mật thiết với nhau,không được tách rời hoặc biệt lập, đây cũng là quan điểm chung khi giải quyết các vấn
đề kinh tế - xã hội
+ Phân tích:
Bản chất của phân tích trong kỹ nghệ phần mềm khác với khái niệm phân tích thôngthường, phân tích ở đây được hiểu là thu thập thông tin từ đối tượng và mô hình hóa cácthực thể của đối tượng đó Mục đích của phân tích là tìm hiểu kỹ về HT, đưa ra 1 cái nhìntổng thể về HT sẽ xây dựng phần mềm, phân tích hệ thống có cấu trúc bao gồm sử dụngcác công cụ như BFD, DFD, IFD, sơ đồ thông tin ma trận, mô hình dữ liệu, ngôn ngữ cócấu trúc
+ Thiết kế
Bản chất là giải quyết vấn đề, chuyển từ bài toán đặt ra thành giải pháp phần mềm.Thiết kế tập trung vào bốn thuộc tính phân biệt của chương trình: cấu trúc dữ liệu, kiến trúcphần mềm, các thủ tục, các đặc trưng giao diện Trong quy trình này người ta tiến hành 2bước quan trọng:
trì
Trang 8• B2: Thiết kế chi tiết từng bộ phận (như thiết kế dữ liệu, giải thuật, giao diện)
Kết quả của giai đoạn thiết kế là 1 bộ hồ sơ thiết kế hoàn chỉnh
+ Mã hóa
- Mã hóa trong KNPM được hiểu vs khái niệm mã hóa thông thường
- Bản chất của mã hóa trong KNPM là coding tức là lập trình viên sử dụng hồ sơ thiết kế
và lựa chọn 1 ngôn ngữ lập trình nào đó để cung cấp từ hồ sơ thiết kế thành phần mềm
+ Kiểm thử: là giai đoạn trước khi triển khai phần mềm cho khách hàng ND thuộc giai
đoạn này không phải là kiểm tra lỗi và sửa lỗi thuộc chương trình mà là xây dựng 1 kịchbản đế đánh giá chức năng phần mềm tùy vào mỗi bài toán khác nhau
+ Bảo trì
Đây là công đoạn cuối cùng, còn gọi là công đoạn hậu mãi, là công việc sau khi bánhàng cho khách hàng Thực tế ở Việt Nam cho thấy tính năng của các phần mềm khôngchênh nhau nhiều, nên công ty nào có chế độ hậu mãi tốt thì sẽ được khách hàng ưachuộng Nội dung bảo trì gồm:
- Bảo trì sửa đổi để sửa chữa các lỗi nhỏ hơn thuộc phần mềm khi cài đặt cho kháchhàng
- Bảo trì thích nghi giữa máy tính để sản xuất phần mềm thuộc công ty tin học và máytính thuộc khách hàng đôi khi có cấu hình khác nhau do đó phải tiến hành bảo trìthích nghi để phần mềm hoạt động tốt trong máy tính thuộc khách hàng
- Bảo trì hoàn thiện: cán bộ thuộc công ty phần mềm nâng cấp ở mức độ nào đó sảnphẩm của PM cho KH
=> Toàn bộ 6 quá trình thuộc vòng đời trên phần mềm có mối liên quan mật thiết vs nhau
và trong các công ty PM được phân chia thành các chức năng giao cho các phòng ban thựchiện
**b Vai trò việc nghiên cứu vòng đời phát triển của phần mềm
- Nghiên cứu về SDLC cho thấy mối quan hệ mật thiết, thống nhất không tách rời giữa cácgiai đoạn Các công đoạn càng ở dưới càng phải chịu tác động của các giai đoạn phía trên.-> Từ đó giúp nhà xây dựng PM có một cách nhìn đúng đắn trong việc quy chuẩn hóa cácgiai đoạn phát triển của 1 PM nhằm đưa ra các giải pháp vận dụng hiệu quả nhất trước mỗigiai đoạn
*****
5 Trình bày quy trình làm bản mẫu phần mềm Phân tích các bước của quy trình này?
a Trình bày quy trình làm bản mẫu phần mềm
* KN: Bản mẫu phần mềm là mô hình thuộc PM sẽ xây dựng gồm những chức năng chính
để KH đánh giá sơ bộ và để kỹ sư phần mềm có 1 phiên bản để tiếp tục hoàn thiện sảnphẩm
- Bản mẫu phầm mềm có thể được thực hiện theo 3 phương án
+ Bản mẫu vẽ giấy
Trang 9+ Bản mẫu là một mô hình bao gồm một vài chức năng tiêu biểu nhất của phần mềmtương lai
+ Bản mẫu là 1 chương trình đã bao gồm các chức năng cơ bản của phần mềm nhưngcần được chi tiết thêm tùy trình độ tin học của khách hàng mà kỹ sư phần mềm sử dụngmột hình thức nào đó cho phù hợp nhất
* Quy trình làm bản mẫu
b Phân tích các bước của quy trình
(1) Yêu cầu của khách hàng: là công đoạn đầu tiên khi KH đến công ty phần mềm để đặt
vấn đề ký kết hợp đồng và trình bày nguyện vọng của mình Khách hàng đưa ra các yêucầu về sản phẩm của mình, các kỹ sư phần mềm ghi nhận và cố gắng đáp ứng tối đa yêucầu của khách hàng Cán bộ KD cần phải nắm bắt được những vấn đề chính trước mongmuốn của KH để nhanh chóng đưa ra 1 bản mẫu cho phương án thích hợp
(2) Thiết kế nhanh: Sau khi đã thống nhất với KH về quá trình xây dựng phần mềm thì kỹ
sư phần mềm tiến hành thiết kế nhanh 1 bản mẫu thuộc 1 trong 3 phương án nêu ở trên, căn
cứ vào trình độ hiểu biết về tin học của KH Yêu cầu quan trọng nhất là đơn giản, dễ hiểu
và dễ sử dụng cho khách hàng
(3) Xây dựng bản mẫu: trong giai đoạn này, kỹ sư phần mềm tiến hành xây dựng bản mẫu
bao gồm những nét cơ bản nhất của phần mềm tương lai Yêu cầu: cố gắng trình bày cho
KH nhìn thấy được hình dáng bên ngoài của PM mà không đi vào vấn đề kỹ thuật
(4) KH đánh giá bản mẫu: Kỹ sư phần mềm trình bày bản mẫu để KH xem xét, đánh giá
trên quan điểm của người sử dụng, đồng thời ghi nhận yêu cầu của KH về mọi vấn đề liênquan đến bản mẫu để chỉnh sửa để đáp ứng tối đa nguyện vọng KH
(5) Làm mịn bản mẫu: là quy trình chi tiết hóa các chức năng từ tổng quát đến cụ thể, chi
tiết
Trang 10(6) Sản phẩm bản mẫu PM: kết thúc quá trình làm bản mẫu phần mềm chúng ta thu được 1
sản phẩm gọi là bản mẫu phần mềm - đây là phiên bản đầu tiên của 1 sp phần mềm nào đó,
sẽ được tiếp tục hoàn thiện cho các phiên bản tiếp theo ngay cả khi đã đưa vào thị trường
=> Tóm lại, trong sản xuất phần mềm ở quy mô công nghiệp, quy trình làm bản mẫu là đặctrung riêng, có vai trò quan trọng trong kinh doanh phần mềm
**c Vai trò của bản mẫu trong sản xuất phần mềm công nghiệp
Bản mẫu là phiên bản đầu tiên của phần mềm giúp phần hỗ trợ cho việc phân tích, thiết
kế và xây dựng phần mềm sau này
Giúp kỹ sư phần mềm nắm bắt được nguyện vọng của khách -> Tăng khả năng thuyếtphục khách hàng ký hợp đồng sản xuất phần mềm của công ty
-> Như vậy, làm bản mẫu pm là một quy trình đặc thù của việc sản xuất phần mềm ở quy
mô công nghiệp và có vai trò rất quyết định đến hoạt động của một doanh nghiệp phầnmềm vì công đoạn này thực hiện tốt thì sẽ thu hút được khách hàng => thu hút được lợinhuận trong công ty
(1) Nghiên cứu tài liệu về hệ thống
- Đây là phương pháp cơ bản và quan trọng nhất để tiến hành thu thập thông tin về hệthống đang nghiên cứu Bản chất của phương pháp này là nghiên cứu đầy đủ tài liệu mô tảhoạt động; các tài nguyên về phần cứng, phần mềm; những đặc điểm trước quá trình xử lýthông tin của hệ thống
- Các nội dung nghiên cứu : tổng quan về lịch sử phát triển hệ thống, cơ cấu tổ chức của hệthống, các đặc điểm về kinh tế - kỹ thuật, HTTT của hệ thống, các vấn đề cần hoàn thiện đểquản lý hệ thống bằng công cụ phần mềm
- Ưu điểm nổi bật: Trong một thời gian ngắn, chúng ta nắm được cơ chế hoạt động tổngquát và những vấn đề quan trọng nhất của hệ thống cần giải quyết trong đó
- Kết quả của việc thu thập được tóm lại trong 1 bảng tổng hợp nghiên cứu tài liệu về hệthống: chủ đề, mục đích, ng thực hiện, thời gian thực hiện, ND cụ thể (cơ cấu tổ chức, hiệuquả hoạt động, điểm mạnh, điểm yếu )
(2)Quan sát hệ thống
- Trong trường hợp tài liệu về hệ thống không mô tả đầy đủ chi tiết hoạt động của nó hoặckhông được đề cập đến thì người ta phải tiến hành quan sát hệ thống (tức là dùng phươngpháp quan sát thực tế trực tiếp thực địa để phát hiện ra cơ chế hoạt động đặc thù của hệthống) Việc quan sát các quy trình mấu chốt và chi tiết sẽ cho ta những thông tin bổ sung
Trang 11- Đây là 1 pp của thống kê học, sau khi xác định được mục tiêu thu thập thông tin, người talập ra một bảng gồm nhiều câu hỏi khác nhau -> xử lý kết quả của bảng hỏi để thu đượcnhững thông tin cần thiết Có 2 phương pháp thu thập thông tin bằng bảng hỏi:
+ PP điều tra toàn bộ : thiết kế phiếu điều tra với rất nhiều câu hỏi và phát cho tất cả cácđối tượng trong hệ thống
Ưu: TT đầy đủ, chi tiết, có độ chính xác cao
Nhược: Tốn kém chi phí (điều tra, xử lý TT)
+ PP điều tra đại diện (chọn mẫu): Chọn ra 1 số đại diện của HT rồi phát phiếu điều tra chonhững đối tượng đó KQ thu được sẽ suy rộng cho tổng thể
- Yêu cầu đặt ra: các câu hỏi đưa ra phải rõ ràng, đơn nghĩa, tránh những câu hỏi có tínhchất tế nhị
- Phỏng vấn là 1 nghệ thuật phụ thuộc rất nhiều vào năng lực của người phỏng vấn, từ cáchđặt câu hỏi đến cách gợi mở vấn đề
*****
7 Khái niệm mô hình BFD, các thành phần của BFD Cho ví dụ minh họa?
a Khái niệm mô hình BFD
Mô hình phân rã chức năng (BFD) là công cụ biểu diễn việc phân rã có thứ bậc đơn giảncác công việc cần thực hiện Mỗi công việc được chia ra làm các công việc nhỏ, số mứcchia ra phụ thuộc kích cỡ và độ phức tạp của hệ thống
- Đầu vào của các chức năng
- Đầu ra của các chức năng
Trang 12+ Cần ngắn, giải thích đủ nghĩa chức năng và phải sử dụng thuật ngữ nghiệp vụ
- Mỗi chắc năng có 1 tên duy nhất, các chức năng khác nhau phải có tên khác nhau
Để xác định tên cho chức năng có thể bàn luận và nhất trí với người sử dụng
- Hình thức biểu diễn: hình chữ nhật
- Ví dụ:
* Quan hệ phân cấp
- Mỗi chức năng được phân rã thành các chức năng con Các chức năng con có quan
hệ phân cấp với chức năng cha
Trang 138 Khái niệm sơ đồ ngữ cảnh, các thành phần của sơ đồ ngữ cảnh Cho ví dụ minh họa?
a Khái niệm
- Sơ đồ ngữ cảnh thường được xây dựng ở giai đoạn đầu tiên của quá trình phân tích vàđược dùng để vạch ra biên giới của hệ thống cũng như để phân tích viên hệ thống xem xétmọi tham số ở bên ngoài hệ thống
- Sơ đồ ngữ cảnh là một dạng sơ đồ được dùng để hỗ trợ cho quá trình xây dựng sơ đồdòng dữ liệu, giúp phân tích viên có được cái nhin tổng quát về quan hệ của hệ thống vớimôi trường bên ngoài Từ đó cũng có thể làm rõ các hoạt động của hệ thống Cùng với cácthông tin vào, ra của hệ thống
+ Cả hệ thống như 1 thực thể/ chức năng duy nhất
+ Các tác nhân ngoài và các luồng dữ liệu vào ra từ tác nhân ngoài đến hệ thống đượcxác định
b Các thành phần
- Gồm 3 thành phần:
+ Thành phần chính là một vòng tròn nằm ở vị trí trung tâm vủa sơ đồ, biểu thị cho toàn bộ
hệ thống đang được nghiên cứu – quá trình chức năng
+ Xung quanh vòng tròn trung tâm này là các thực thể, có quan hệ với hệ thống (tác nhânngoài) – Nguồn or đích
+ Tất cả các đường truyền thông tin vào và ra khỏi hệ thống (nghĩa là nối hệ thống với mọitác nhân ngoài của nó) – dòng dữ liệu
Lưu ý: Các dòng TT giữa thực thể và quá trình chức năng luôn là thông tin 2 chiều bảođảm đúng quá trình quản lý đang diễn ra
c Ví dụ
Phân hệ kế toán
TT Yêu cầu,
*****
Trang 149 Khái niệm sơ đồ luồng dữ liệu DFD Cho ví dụ minh họa?
Trong công đoạn phân tích: DFD dùng để xác định yêu cầu của người sử dụng
Trong công đoạn thiết kế: DFD dùng để vạch kế hoạch và minh họa các phương án cho phân tích viên hệ thống và người dùng khi thiết kế hệ thống mới
Trong công đoạn biểu diễn hồ sơ: DFD là công cụ đơn giản, dễ hiểu đối với phân tích viên hệ thống và người dùng, biểu diễn tài liệu phân tích hệ thống một cách đầy
đủ, súc tích và ngắn gọn
- Ký pháp:
Tên người/bộ phận phát/nhận tin Nguồn hoặc đíchTên dòng dữ liệu
Dòng dữ liệu
Tên tiến trình xử lý Tiến trình xử lý
Tệp dữ liệu Kho dữ liệu
b Ví dụ: DFD mức 0 chức năng Thống kê bạn đọc
Ban quản lý
Bạn đọc Bạn đọc
Trang 1510 Vai trò của thiết kế phần mềm trong KNPM?
Thiết kế đóng vai trò trung tâm trong SE ở quy mô công nghiệp Về lý thuyết, quá trìnhthiết kế gồm 3 công đoạn: thiết kế, lập trình, kiểm thử Về mặt thực tiễn ở các công ty phầnmềm, người ta chia thành các chức năng khác nhau và được tổ chức thành 3 phòng chứcnăng: phòng thiết kế, phòng lập trình, phòng kiểm thử
Thiết kế có vai trò rất quan trọng vì lý do sau:
- Thiết kế tạo ra một cơ sở chuẩn mực khi muốn sửa chữa hoặc nâng cấp phần mềm
- Nhờ có một thiết kế hoàn chỉnh mà khi có những thay đổi về dữ liệu phần mềm vẫn
có thể hoạt động khi chúng ta tiến hành sửa đổi
- Một phần mềm không có thiết kế chuẩn, rất dễ dàng bị hỏng khi có sự thay đổi về môitrường và dữ liệu
- Tạo ra một nền tảng vững chắc để có thể thay đổi và phát triển phần mềm
- Nhờ thiết kế một cách chắc chắn mà phần mềm có thể hoạt động một cách hiệu quảhơn Với những phần mềm không có thiết kế hoặc thiết kế không hoàn chỉnh thì chỉcần một thay đổi nhỏ trong dữ liệu hay tác động nhỏ bên ngoài cũng dẫn đến sự hoạtđộng lệch lạc của phần mềm
- Là yếu tố chủ chốt để xác định chất lượng sản phẩm của phần mềm bán ra trên thịtrường
- Một thiết kế tốt mang tính mở thì sẽ tốt để phát triển phần mềm trong tương lai
Toàn bộ khâu thiết kế chiếm 75% các chi phí về nhân lực và tài chính cho 1 phần mềm
ở quy mô công nghiệp
Người ta quy ước qúa trình thiết kế trong KNPM phải đảm bảo yêu cầu:
- Thiết kế là quá trình chuyển đổi từ hồ sơ sang giải pháp PM nhằm giải quyết vấn đềđặt ra 1 cách hiệu quả nhất bằng công cụ tin học
- Quá trình thiết kế phải đảm bảo sự phân rã và tiến hành thiết kế từng vấn đề cụ thể
- QT thiết kế phải đảm bảo tính quy lui tức là đảm bảo quay lại bước trước đó để bổsung và hoàn thiện (phân rã và quay lui thật ra là nguyên lý chung để giải quyết mọivấn đề của XH)
=> Tóm lại, thiết kế với 3 công đoạn chính là thiết kế, lập trình và kiểm thử có vai trò đặc biệt trong kỹ nghệ phần mềm và thường được coi là trung tâm của toàn bộ quy trình phát triển phần mềm
*****
11 Ký pháp lưu đồ trong KNPM Cho ví dụ minh họa?
a Ký pháp lưu đồ trong kỹ nghệ PM:
- Khi thiết kế phần mềm ở quy mô công nghiệp người ta thường trình bày vấn đề dưới dạng
một mô hình tổng quát được gọi là lưu đồ Trong các công ty phần mềm hiện nay đây làphương pháp thông dụng nhất khi trình bày một đề án hay việc thiết kế một phần mềm cụthể
Trang 16- Tác dụng của lưu đồ là cho ta 1 cái nhìn bao quát trực quan và tổng thể về vấn đề mà tanghiên cứu Nhìn vào lưu đồ, chúng ta có thể hiểu được trình tự các công việc cần thựchiện và mối liên hệ giữa các công việc với nhau.
- Để xây dựng lưu đồ, người ta quy ước dùng 1 số ký pháp cơ bản sau đây:
S
=> Dùng mũi tên chỉ các dòng thông tin và dữ liệu lưu chuyển trong toàn bộ lưu đồ từ đầuđến cuối của quá trình
Lưu đồ tổng quát (gốc) cho ta một cái nhìn tổng thể các quy trình
Lưu đồ chi tiết cung cấp các quá trình xử lý công việc cụ thể
b Ví dụ: lưu đồ quy trình quản lý dự án ở công ty phần mềm FPT:
Trang 1712 Tiến trình thiết kế phần mềm Mối liên hệ giữa khía cạnh quản lý và khía cạnh kỹ thuật trong thiết kế phần mềm?
a Tiến trình thiết kế phần mềm
Tiến trình thiết kế trong công nghệ phần mềm được xem xét từ nhiều góc độ khác nhau,xuất phát từ quan điểm quản lý dự án thì quy trình thiết kế phần mềm tiến hành theo 2bước: thiết kê sơ bộ và thiết kế chi tiết
- Thiết kế sơ bộ: quan tâm tới việc dịch các yêu cầu thành kiến trúc dữ liệu và phầnmềm
- Thiết kế chi tiết: tập trung vào việc làm mịn biểu diễ kiến trúc để dẫn tới cấu trúc dữliệu chi tiết và biểu diễn thuật toán cho phần mềm
Còn xét ở góc độ kỹ thuật thì quá trinh thiết kế bao gồm 4 công đoạn:
- Thiết kế kiến trúc
- Thiết kế dữ liệu
- Thiết kế thủ tục
- Thiết kế giao diện
b Mối liên hệ giữa khía cạnh quản lý và khía cạnh kỹ thuật trong thiết kế phần mềm
Hai khía cạnh kỹ thuật và quản lý của quy trình thiết kế có mối liên quan mật thiết với nhau
và được biểu diễn trong hình vẽ tổng quát sau:
Hình vẽ này biểu diễn mỗi quan hệ hữu cơ của một quá trình thống nhất nhưng bào gồmphần mảng: quản lý và thiết kế nếu xét từ góc độ quản lý dự án phần mềm, chúng ta sẽthực hiện các bước:
Thiết kế Giao diện
Thiết kế sơ bộ Thiết kế Chi tiết
Góc độ kỹ thuật
Góc độ quản lý
Design Thiết kế Giải thuật
Trang 18B2:
- Thiết kế chi tiết kiến trúc
- Thiết kế chi tiết DL
- Thiết kế chi tiết giải thuật
- Thiết kế chi tiết thủ tục
*****
13 Trình bày khái niệm kiến trúc phần mềm? Mối liên hệ giữa vần đề cần giải quyết
P và giải pháp phần mềm S Cho một ví dụ minh họa?
a Khái niệm kiến trúc phần mềm
Thiết kế kiến trúc phần mềm là phát triển một cấu trúc chương trình mô đun và biểudiễn mối quan hệ điều khiển giữa các mô đun Bên cạnh đó, thiết kế kiến trúc còn trộn lẫncấu trúc chương trinh và cấu trúc dữ liệu, xác định các giao diện làm cho dữ liệu chảy quatoàn bộ chương trình
Thiết kế kiến trúc cho ta một cái nhìn tổng thể về toàn bộ hệ thống
b Mối liện hệ giữa vấn đề cần giải quyết P và giải pháp phần mềm S
- Bản chất của thiết kế kiến trúc là chuyển từ P → S Tức là chuyển từ vấn đề (Problem)sang giải pháp phần mềm (Solution) Quá trình xây dựng một kiến trúc phần mềm gồm 2bước:
+ B1: Cấu trúc hóa vấn đề
+ B2: P=>S, lựa chọn cấu trúc
- Nguyên tắc khi chuyển tiếp từ P sang S là chia thành khối công việc nhỏ ở mức vừa phải,tránh mô hình kiến trúc quá phức tạp Các vấn đề nhỏ đã được cấu trúc hóa
- Mô hình hóa quá trình chuyển từ P → S bằng sơ đồ dưới đây:
- Sau khi đặt tương ứng mỗi vấn đề nhỏ Pi → Si ta chuyển sang bước thứ 2 là bố trí sắpxếp các Si theo 1 trình tự nào đó được gọi là cấu trúc của phần mềm
- Kiến trúc hệ thống có thể là nền tảng cho các quá trình thiết kế tiếp sau, tức là thiết kế dữliệu, giải thuật và giao diện Căn cứ vào thiết kế kiến trúc mà các phương án thiết kế sau sẽthay đổi Vì vậy, việc sai sót trong thiết kế kiến trúc sẽ dẫn đến nguy cơ cho toàn bộ phần
Trang 19mềm Còn nếu có những sai sót cho những phần thiết kế chi tiết về dữ liệu, giải thuật vàgiao diện thì chỉ là những sai sót có tính chất cục bộ.
c Ví dụ
Cấu trúc 1
Cấu trúc 2
*****
14 Trình bày phương pháp thiết kế Top Down Design Cho ví dụ minh hoạ?
a Phương pháp thiết kế Top Down Design:
Đây là 1 trong 2 phương pháp thiết kế cơ bản dựa trên ý tưởng của module hoá, tức là khigiải quyết 1 bài toán trong thực tiễn, chúng ta phải đi từ tổng quát đến chi tiết Trước hếtchúng ta thiết kế các module có tính chất bao trùm toàn hệ thống, sau đó tiếp tục phân chiathành những phần nhỏ hơn
b Lĩnh vực ứng dụng phương pháp thiết kế Top Down Design:
Khi thiết kế 1 phần mềm ứng dụng, người ta đi từ tổng quát đến chi tiết, để tạo thành 1 hệthống thống nhất Trên cơ sở của hệ thống này, người ta phân chia công việc cho các nhóm
mà vẫn đảm bảo tính mục tiêu của chương trình
Phương pháp thiết kế từ đỉnh xuống áp dụng cho các hệ thống xử lý thủ công và tạo nênmột bản hồ sơ thiết kế tương đối triệt để và hiệu quả
c Ví dụ
Trang 20- Chúng ta xem xét bài toán tin học hoá 1 trung tâm thương mại: Trên cơ sở thực tế, chúng
ta lần lượt đưa ra các mô hình của bài toán dưới dạng phác thảo:
+ Phác thảo 1:
Quản lý trung tâm thương mại
Quản lý bán hàng
Quản lý nhân lực
Quản lý kho hàngTrên cơ sở phác thảo nền thứ nhất, chúng ta tiếp tục phân rã thành các khối chi tiết hơn
+ Phác thảo 2:
Quản lý bán hàng
Quản lý theo quầy
Quản lý theo mặt hàng
Lập bảng tổng hợp
+ Phác thảo 3:
Quản lý nhân lực
Quản lý đào tạo
Quản lý tuyển dụng
Quản lý đề bạt khen thưởng kỉ luật
+ Phác thảo 4:
Quản lý kho hàng
Quản lý xuất kho
Quản lý nhập kho
Quản lý lưu khoTrên cơ sở của 4 phác thảo trên đây, người ta tích hợp lại thành hệ quản lý trung tâmthương mại, với giả sử rằng quá trình không được phân rã tiếp Trên thực tế các quá trìnhphải được cụ thể hơn nữa
+ Phác thảo 5:
Trang 21Quản lý trung tâm thương mại
Quản lý bán hàng
Quản lý nhân lực
Quản lý kho hàngQuản lý theo
quầyQuản lý theo mặt hàngLập bảng tổng hợp
Quản lý đào tạo
Quản lý tuyển dụng
QL đề bạt khen thưởng kỉ luật
Quản lý xuất khoQuản lý nhập khoQuản lý lưu kho
*****
15 Trình bày phương pháp thiết kế Bottom Up Design Cho ví dụ minh hoạ?
a Phương pháp thiết kế Bottom Up Design
Phương pháp thiết kế từ đáy lên về ý tưởng hiểu theo một nghĩa nào đó ngược với phươngpháp từ đỉnh xuống Trong phương pháp này, chúng ta xuất phát từ chi tiết đến tổng quát
- Trước hết tiến hành giải quyết các vấn đề cụ thể sau đó trên cơ sở đánh giá mức độ tương
tự về chức năng của các vấn đề này trong việc giải quyết bài toán, chúng ta gộp lại thànhtừng nhóm cùng chức năng từ dưới lên trên cho đến module chính
- Sau đó sẽ thiết kế thêm 1 số chương trình làm phong phú hơn, đầy đủ hơn chức năng củacác phân hệ
- Cuối cùng thiết kế chương trình tập hợp các module thành 1 thể thống nhất, hoàn chỉnh
b Lĩnh vực ứng dụng phương pháp thiết kế Bottom Up Design
Lĩnh vực nghiên cứu của phương pháp này là những cơ sở đã được tin học hoá từng phần.Phương pháp này cho phép vừa sử dụng được những chương trình đã có và phát huy hiệuquả mà không phải xoá đi để làm lại từ đầu mà vẫn đảm bảo chỉnh thể của 1 hệ thống
c Ví dụ
Trong 1 Doanh nghiệp, việc ứng dụng tin học trong quản lý đã được thực hiện ở 1 số bộphận khác nhau Người ta liệt kê các ứng dụng cụ thể như sau:
- Prog 1: Nạp dữ liệu cho hồ sơ cán bộ
- Prog 2: Sửa chữa, bổ sung, cập nhật hồ sơ
- Prog 3: Nạp dữ liệu cho tệp quản lý NVL
- Prog 4: Nạp dữ liệu cho hóa đơn
- Prog 5: Tính lương
- Prog 6: Dự toán NVL
- Prog 7: Quản lý cán bộ
- Prog 8: Tính doanh số
Trang 22Bước 1: Người ta tiến hành phân tích các chương trình và ghép chúng theo chức năng.
- Phác thảo 1: Gộp Prog 1,2,5,7 thành phân hệ quản lý nhân lực
Quản lý nhân lực
- Phác thảo 2: Gộp Prog 4,8 thành phân hệ quả lý bán hàng
Bước 2: Phát triển các chức năng cho mỗi nhóm Giả sử chúng ta phát triển thêm:
Prog 9: Dự báo mức tiêu thụ hàng hóa và Prog 10: Lập bảng tổng hợp hàng tồn kho
Bước 3: Tích hợp (Integration) (lưu ý vẽ có mũi tên)
Quản lý doanh nghiệp
Quản lý nhân lực
Quản lý bán hàng
Quản lý kho hàngProg 1
Prog 2
Prog 5Prog 7
Trang 2316 Trình bày vấn đề thiết kế dữ liệu trong KNPM Cho ví dụ minh họa?
a Thiết kế dữ liệu trong KNPM
* Khái niệm dữ liệu:
Dữ liệu là những sự kiện hoặc quan sát về các hiện tượng vật lí hoặc các giao dịch kinhdoanh Dữ liệu là các phản ánh khách quan về thuộc tính của các thực thể như người, địađiểm, sự kiện, Nó có thể ở dạng văn bản hay thường mang tải giá trị thông tin
Dữ liệu là mạch máu của các hệ thống kinh tế và thương mại, do đó mô tả sự vận động của
dữ liệu cũng chính là bản chất hoạt động của hệ thống Đây cũng là cơ sở của một trườngphái lập trình gọi là lập trình hướng luồng dữ liệu (DFD)
* Khái niệm và chức năng CSDL:
CSDL là một tập hợp dữ liệu được tổ chức đặc biệt và được lưu trữ trên các thiết bị nhớcủa máy tính nhằm cung cấp thông tin cho những người sử dụng khác nhau hay cho nhữngứng dụng khác nhau
Một CSDL có những chức năng:
- Có khả năng lưu trữ và nhập thêm thông tin
- Có thể cập nhật được DL
- Có khả năng cung cấp thông tin cho người sử dụng
* Tiêu chuẩn: Một CSDL sau khi chuẩn hóa phải đảm bảo được những tiêu chuẩn sau:
- Giảm lượng dư thừa thông tin sau khu lưu trữ
- Có thể sử chung cơ sở dữ liệu cho những bộ phận trong hệ thống thông tin quản lý
và sử dụng với nhiều mục đích khác nhau
- Đảm bảo tính nhất quán của dữ liệu trong hệ thống Dễ dàng bảo trì dữ liệu và traođổi dữ liệu với các hệ thống thông tin khác
- Đảm bảo an toàn và toàn vẹn dữ liệu bằng cách áp dụng các biện pháp bảo vệ
* Thiết kế dữ liệu có thể tóm tắt qua các bước sau:
B1: Liệt kê tất cả các dữ liệu cần thiết cho bài toán
B2: Xđ các thực thể, về bản chất là gộp DL thành các bảng gần gũi nhau về thôngtin
B3: Xđ trường khóa cho mỗi file DL
b Ví dụ:Thiết kế dữ liệu cho thông tin đầu ra: “Hóa đơn bán hàng”
- CSDL đã được chuẩn hóa:
Trang 2417 Trình bày khái niệm thiết kế giải thuật trong KNPM Cho ví dụ minh họa?
a KN thiết kế giải thuật trong KNPM:
- Thiết kế giải thuật là quá trình xử lý 1 vấn đề nào đó trong bài toán đặt ra, thiết kế giảithuật chính là nội dung cơ bản để giải quyết bài toán
- Thuật toán (giải thuật) là 1 thủ tục tính toán xác định nhận các giá trị or 1 tập hợp các giátrị gọi là input và sinh ra 1 vài giá trị hoặc 1 tập giá trị gọi là output
- Có 2 cách biểu diễn giải thuật
+ Cách 1: Mô tả các bước thực hiện thuật toán
Ngôn ngữ sử dụng: ngôn ngữ tự nhiên or đoạn giả mã lệnh (lai ghép giữa ngôn ngữ tựnhiên và lập trình)
+ Cách 2: Sử dụng sơ đồ (lưu đồ) giải thuật
Trang 25- Các giải thuật được thiết kế bởi 3 cấu trúc điều khiển cơ bản:
• Cấu trúc tuần tự : các bước được thực hiện theo trình tự 1 cách chính xác, mỗi bướcđược thực hiện đúng 1 lần
• Cấu trúc chọn lọc: một trong nhiều thao tác được chọn và thực hiện
• Cấu trúc chu trình: một hay nhiều bước thực hiện được lặp lại