67
1 CHƯƠNG 1. TNG QUAN VCÔNG NGHPHN MM Bmôn Công nghthông tin Trường Đạihc Thương mi

Chuong 1. cnpm

Embed Size (px)

DESCRIPTION

fsfsdf

Citation preview

Page 1: Chuong 1. cnpm

1

CHƯƠNG 1. TỔNG QUAN VỀ CÔNG NGHỆ

PHẦN MỀM

Bộ môn Công nghệ thông tinTrường Đại học Thương mại

Page 2: Chuong 1. cnpm

2

Nội dung1.1. Phần mềm

1.1.1. Khái niệm 1.1.2. Tiến hóa của phần mềm1.1.3. Đặc trưng và phân loại phần mềm1.1.4. Chất lượng phần mềm1.1.5. Khủng hoảng phần mềm1.1.6. Khó khăn trong phát triển phần mềm

1.2. Công nghệ phần mềm1.2.1. Khái niệm1.2.2. Đặc điểm công nghệ phần mềm1.2.3. Một số nguyên tắc CNPM1.2.4. Các hoạt động chính trong CNPM

Page 3: Chuong 1. cnpm

3

1.1.1. Khái niệm phần mềmKhái niệm phần mềm– Một phần mềm gồm 3 thành phần:

Chương trình máy tính: mã nguồn, mã máyCấu trúc dữ liệu: cấu trúc làm việc (bộ nhớ trong) và cấu trúc lưu trữ (bộ nhớ ngoài)Các tài liệu liên quan: tài liệu hướng dẫn sử dụng (dành cho người dùng), tài liệu phát triển (dành cho người phát triển hệ thống), tài liệu tham khảo kỹ thuật (dành cho người bảo trì)

– Phần mềm được coi là tất cả các kỹ thuật ứng dụng để thực hiện những dịch vụ chức năng cho mục đích nào đó bằng phần cứng, làm cho sửdụng phần cứng máy tính đạt hiệu quả cao.

Page 4: Chuong 1. cnpm

4

1.1.1. Khái niệm phần mềm

Page 5: Chuong 1. cnpm

5

Nhóm kỹ thuật, phương pháp luận

Các khái niệm và trình tự cụ thể hóa một hệthốngCác phương pháp tiếp cận giải quyết vấn đềCác trình tự thiết kế và phát triển được chuẩn hóaCác phương pháp đặc tả yêu cầu, thiết kế hệthống, thiết kế chương trình, kiểm thử, toàn bộ quy trình quản lý phát triển phần mềm

Page 6: Chuong 1. cnpm

6

Nhóm chương trìnhLà phần giao diện với phần cứng, tạo thành từ các nhóm lệnh chỉ thị cho máy tính biết trình tự thao tác xử lý dữ liệuPhần mềm cơ bản: với chức năng cung cấp môi trường thao tác dễ dàng cho người sử dụng nhằm tăng hiệu năng xử lý của phần cứng (ví dụ như OS là chương trình hệ thống)Phần mềm ứng dụng: dùng để xử lý nghiệp vụ thích hợp nào đó (quản lý, kế toán, . . .), phần mềm đóng gói, phần mềm của người dùng, . . .

Page 7: Chuong 1. cnpm

7

Nhóm các tư liệu

Những tư liệu hữu ích, có giá trị cao và rất cần thiết để phát triển, vận hành và bảo trìphần mềmĐể xây dựng phần mềm với độ tin cậy cao cần tạo ra các tư liệu chất lượng cao: đặc tảyêu cầu, mô tả thiết kế từng loại, điều kiện kiểm thử, thủ tục vận hành, hướng dẫn thao tác, …

Page 8: Chuong 1. cnpm

8

1.1.2. Tiến hoá của phần mềm

Bản thân phần mềm vốn phức tạp.Yêu cầu sử dụng phần mềm không ngừng thay đổiSự tiến bộ nhanh của hạ tầng – phần cứng

=> Sự tiến hóa phần mềm là tất yếu

Page 9: Chuong 1. cnpm

9

1.1.2. Tiến hoá của phần mềm (2)

Giai đoạn thứ nhất: (~1960)Phần cứng thay đổi liên tục, theo tính chuyên dụng Xử lý theo lôMôi trường lập trình có tính cá nhânSản xuất đơn chiếc

Ngôn ngữ: mã máy, đặc thù cho từng máy

Lập trình: là một nghệ thuật theo bản năng, chưa có phương pháp

Page 10: Chuong 1. cnpm

10

1.1.2. Tiến hoá của phần mềm(3)

Giai đoạn 2: (~giữa thập kỷ 70)Phần mềm đa nhiệm, đa người sử dụngHệ thống thời gian thựcXuất hiện lưu trữ trực tuyến

Nhiều dự ánthất bạiPhần mềm trở nên phức tạp

Nhu cầu tăng cao Chi phí tăngNgôn ngữ: có cấu trúc: PL1, Algo60, Fortran, COBOL

Lập trình: có phương pháp lập trình

Phát triển HT: chưa có phương pháp, kinh nghiệm là chính

Page 11: Chuong 1. cnpm

11

1.1.2. Tiến hoá của phần mềm(4)

Giai đoạn 3: (~đến nay)Hệ thống phân tánMạng cục bộ, toàn cầuBộ vi xử lý phát triển mạnh

Phần mềm ngày càng phức tạpSử dụng nhiều máy tính cá nhân, phần mềm nhúngSố người dùng tăng nhanh

Ngôn ngữ: Ngôn ngữ bậc cao, hướng đối tượng

Phát triển HT: có phương pháp, công cụ tự động

Page 12: Chuong 1. cnpm

12

1.1.2. Tiến hoá của phần mềm(5)

Phần mềm ngày càng phức tạpUNIX: 4M dòng lệnhWindow2K: ~100M dòng lệnhLý do:– Năng lực máy tính ngày càng mạnh– Các hệ thống máy tính được liên kết lại– Nhu cầu của người dùng ngày càng lớn.

Page 13: Chuong 1. cnpm

13

1.1.2. Tiến hoá của phần mềm(6)

Chi phí cho phần mềm caoPhần mềm trở thành ngành công nghiệp khổng lồ:– Chi phí phát triển OS360 (63~66): 200M$– Chi phí phần mềm năm 1985: 70B$– Chi phí phần mềm năm 2000: 770B$

(mức tăng 12%/năm)Năng suất lập trình vẫn thấp– Phát triển phần mềm mang nặng tính thủ công

Page 14: Chuong 1. cnpm

14

1.1.3. Đặc điểm phần mềm

“Phát triển phần mềm khác chế tạo phần cứng”Sản xuất mang tính thủ công.Khó kiểm soát chất lượng ở khâu trung gian.Khó dự đoán trước về hiệu năng.

– Áp dụng các phương pháp tiên tiến– Công cụ tự đông

Page 15: Chuong 1. cnpm

15

1.1.3. Đặc điểm phần mềm(2)

Phần mềm thoái hóa theo thời gian. – Môi trường sử dụng, nhu cầu thay đổi– Lỗi sinh ra do nâng cấp

Phần mềm không được lắp ráp theo mẫu– Không có danh mục phụ tùng– Được đặt hàng hoàn chỉnh theo từng yêu cầu riêng

“Bảo trì phần mềm phức tạp hơn hẳn so với bảo trì phần cứng”

Page 16: Chuong 1. cnpm

16

1.1.3. Đặc điểm phần mềm(3)

Phần mềm được phát triển theo nhóm– Năng lực của nhóm không tuyến tính với số thành

viên– Người giỏi > 5 lần người trung bình– Thời gian cho trao đổi thông tin chiếm tỷ lệ cao

– Khó kiểm soát– Khó tăng tốc độ bằng cách thêm người.

Page 17: Chuong 1. cnpm

17

1.1.3. Đặc điểm phần mềm(4)

Phần mềm không đơn giản chỉ là chương trìnhChương trình

– 1 người viết, 1 người dùng– dùng với mục đích thu thập xử lý số liệu (dùng 1 lần)– không cần tài liệu, không kiểm thử triệt để

Sản phầm phần mềm– Nhiều người viết, nhiều người sử dụng– Độ phức tạp cao, đảm bảo đồng bộ.

Kinh nghiệm viết chương trình nhỏ không áp dụng được cho sản phẩm lớn

Page 18: Chuong 1. cnpm

18

1.1.3. Đặc điểm phần mềm(5)

Là hàng hóa vô hình, không nhìn thấy đượcChất lượng phần mềm: không mòn đi mà có xu hướng tốt lên sau mỗi lần có lỗi (error/bug) được phát hiện và sửaPhần mềm vốn chứa lỗi tiềm tàng, nếu quy mô càng lớn thì khả năng chứa lỗi càng caoLỗi phần mềm dễ được phát hiện bởi người ngoài (những người không trực tiếp tham gia xây dựng phần mềm).

Page 19: Chuong 1. cnpm

19

1.1.3. Đặc điểm phần mềm(6)

Chức năng của phần mềm thường biến hóa, thay đổi theo thời gian (theo nơi sử dụng).Phần mềm luôn chứa những ý tưởng, sáng tạo của tác giả / nhóm tác giả làm ra nó.Có thể sao chép phần mềm rất đơn giản

Page 20: Chuong 1. cnpm

20

1.1.3. Phân loại phần mềmPhần mềm hệ thống

– Tập hợp các chương trình – Tương tác trực tiếp với phần cứng– Phục vụ nhiều người dùng

Phần mềm thời gian thực– Thu thập xử lý các dữ kiện thế giới thực– Đáp ứng yêu cầu chặt chẽ về thời gian

Thu thập dữ liệuPhân tích dữ liệuKiểm soát, điều khiểnĐiều phối.

– Ví dụ: Phần mềm đa phương tiện.

Page 21: Chuong 1. cnpm

21

1.1.3. Phân loại phần mềm(2)Phần mềm nghiệp vụ

– Xử lý các thông tin nghiệp vụ, thường gắn với CSDL– Xử lý các giao tác– Lĩnh vực ứng dụng rất lớn

Phần mềm khoa học kỹ thuật– Đặc trưng bởi thuật toán (tính toán vật lý, mô phỏng)– Đòi hỏi năng lực tính toán cao.

Phần mềm nhúng (embedded software)– Chỉ đọc khi thiết bị khởi động– Thực hiện chức năng hạn chế (điều khiển sản phẩm)– Là sự kết hợp giữa hệ thống và thời gian thực.

Page 22: Chuong 1. cnpm

22

1.1.3. Phân loại phần mềm(3)Phần mềm máy tính cá nhân– Các bài toán nghiệp vụ nhỏ (ứng dụng văn

phòng)– Giao diện đồ họa phát triển.– Có nhu cầu rất cao.

Phần mềm trí tuệ nhân tạo– Dùng các thuật toán phi số– Ví dụ: Hệ chuyên gia, nhận dạng, trò chơi,...

Phần mềm công cụ cho kỹ nghệ phần mềm– Ví dụ: các công cụ CASE,...

Page 23: Chuong 1. cnpm

23

1.1.4. Chất lượng phần mềm

Những yếu tố chất lượng bên trong như dễ đọc, dễ hiểu mà chỉ những người làm tin học chuyên nghiệp mới biết được.Những yếu tố chất lượng bên ngoài người dùng có thể nhận biết được như: tốc độnhanh, chạy ổn định, dễ sử dụng, dễ thích nghi với những thay đổi.. => Thông thường chất lượng phần mềm tốt thì giá thành phần mềm cao

Page 24: Chuong 1. cnpm

24

1.1.4. Chất lượng phần mềm(2)

Những yếu tố chính trong chất lượng phần mềm:– Tính hiệu quả (efficiency): sử dụng hiệu quả các

nguồn tài nguyên (bộ nhớ, CPU)– Tính thân thiện (user friendlyness): dễ sử dụng– Tính dễ kiểm tra (verifiability): dễ kiểm tra chất

lượng– Tính dễ bảo trì (maintainability): dễ xác định và

sửa lỗi, dễ tạo ra những phiên bản mới khi có sựmở rộng.

Page 25: Chuong 1. cnpm

25

1.1.4. Chất lượng phần mềm(3)Tính tái sử dụng (reusability): dễ tái sử dụng trong những phần mềm mớiTính khả chuyển (portability):dễ sử dụng trong các môi trường mới.Tính dễ hiểu (understandability): dễ hiểu đối với người sử dụng cũng như đối với người phát triểnTính hợp tác (interoperability): dễ hợp tác với các phần mềm khácSản xuất hiệu quả (productivity): tiến trình sản xuất phần mềm phải hiệu quả.

Page 26: Chuong 1. cnpm

26

1.1.4. Chất lượng phần mềm(4)

Khả năng giao sản phẩm đúng hạn (timeliness): giao sản phẩm theo từng góiTính trong suốt (visibility):– Đối với người phát triển/ người quản lý

Hiểu rõ tiến độ phát triểnHiểu rõ ảnh hưởng của các quyết định

– Đối với khách hàngHiểu rõ tiến độ phát triểnHiểu rõ ảnh hưởng của các quyết định

Page 27: Chuong 1. cnpm

27

1.1.4. Chất lượng phần mềm(5)

Sự thỏa hiệp giữa các tiêu chuẩn chất lượng– Tính thân thiện / tính bền vững– Tính khả chuyển / tính hiệu quả

Page 28: Chuong 1. cnpm

28

1.1.4. Chất lượng phần mềm(6)

Tính bảo trì được“Phần mềm luôn luôn cần được sửa đổi”Để sửa đổi được phần mềm

Thiết kế dễ hiểu, dễ sửa đổi (thiết kế tốt)Cài đặt bằng ngôn ngữ bậc caoCó đầy đủ tài liệu

– Có tuổi thọ cao– Đem lại hiệu quả kinh tế

Page 29: Chuong 1. cnpm

29

1.1.4. Chất lượng phần mềm(7)

Tính tin cậyPhần mềm không có khiếm khuyết

lỗi lập trìnhlỗi phân tích, thiết kế: sai, thiếu chức năng, hoạt động không hiệu quả.Phần mềm phải đáng tin cậy

Đáp ứng được nhu cầu người sử dụng

Page 30: Chuong 1. cnpm

30

1.1.4. Chất lượng phần mềm(8)Tính hiệu quảKhi vận hành không lãng phí tài nguyên phần

cứngBộ nhớ trongTốc độBộ nhớ ngoàiTối ưu nhiều sẽ dẫn tới khó bảo trì, giá thành cao– Dùng ngôn ngữ bậc thấp– Truy cập trực tiếp đến thiết bị

Page 31: Chuong 1. cnpm

31

1.1.4. Chất lượng phần mềm(9)

Giao diện nhất quán, phù hợp với trình độcủa người dùng.Có tài liệu, tiện ích trợ giúp

Quyết định thành công của sản phẩm

Tính dễ dùng

Page 32: Chuong 1. cnpm

32

1.1.4. Chất lượng phần mềm(10)

Khó tối ưu đồng thời các thuộc tínhhiệu quả >< dễ bảo trì, dễ sử dụng

Chi phí cho tối ưu là không tuyến tính

=> Giá cả chi cho việc tối ưu PM phải hợp lýhiệu năng

giá

thàn

h

Nhận xét

Page 33: Chuong 1. cnpm

33

1.1.5. Khủng hoảng phần mềm

o Về mặt sản phẩm

o Chất lượng sản phẩm phần mềm

oKhông đáp ứng yêu cầu thực tế

o Khó sử dụng

o Không tin cậy

o Khó bảo trì

o Khách hàng không hài lòng

Page 34: Chuong 1. cnpm

34

1.1.5. Khủng hoảng phần mềm(2)

Về mặt quản lý– Kế hoạch

Không đánh giá đúng giá thành PMKhông đúng tiến độChi phí phát triển / chi phí bảo trì

– Về mặt pháp lýHợp đồng không rõ ràng, không chặt chẽ

– Nhân lựcĐào tạo sử dụng phần mềmGiao tiếp giữa bên xây dựng PM và bên sử dụng PM

– Thiếu tiêu chuẩn đánh giá sản phẩm– Thiếu quy trình quản lý

Page 35: Chuong 1. cnpm

35

1.1.5. Khủng hoảng phần mềm(3)

Điều tra của General Acounting Office trên nhiều dự án với tổng vốn đầu tư hàng trăm triệu $ thì phần mềm:– Không giao sản phẩm: 29%– Không được sử dụng: 47%– Được sử dụng sau khi đã chỉnh sửa: 3%– Tốt: 2%

Page 36: Chuong 1. cnpm

36

1.1.6. Khó khăn trong phát triển PM

“Khó sản xuất được phần mềm có chất lượng theo đúng lịch trình và kinh phí cho trước”Phần mềm là phần tử logic: không kiểm soát được theo phương pháp thông thường

trong sản xuất (rủi ro, tính thủ công)

trong bảo trì (lớn, phức tạp, thay đổi nhanh)

trong kiểm soát chất lượng ( làm thủ công, nhiều người, nhiều công đoạn )

Page 37: Chuong 1. cnpm

37

1.1.6. Khó khăn trong phát triển PM(2)

Khả năng xây dựng phần mềm không đáp ứng kịp nhu cầu tăng nhanh trong mọi lĩnh vực xã hội.Quy mô, độ phức tạp PM ngày càng tăng khiến chi phí phát triển bảo trì ngày càng tốn kémSự tinh vi của phần cứng vượt xa khả năng tạo ra phần mềm để khai thác nó.

Cần có những phương pháp, công cụ hiện đạiđể phát triển phần mềm.

Page 38: Chuong 1. cnpm

38

1.1.6. Khó khăn trong phát triển PM(3)

(1) Không có phương pháp mô tả rõ ràng định nghĩa yêu cầu của người dùng (khách hàng), sau khi bàn giao sản phẩm dễ phát sinh những trục trặc (troubles)(2) Với những phần mềm quy mô lớn, tư liệu đặc tả đã cố định thời gian dài, do vậy khó đáp ứng nhu cầu thay đổi của người dùng một cách kịp thời trong thời gian đó.

Page 39: Chuong 1. cnpm

39

1.1.6. Khó khăn trong phát triển PM(4)

(3) Nếu không có Phương pháp luận thiết kếnhất quán mà thiết kế theo cách riêng (của công ty, nhóm), thì sẽ dẫn đến suy giảm chất lượng phần mềm (do phụ thuộc quá nhiều vào con người).(4) Nếu không có chuẩn về làm tư liệu quy trình sản xuất phần mềm, thì những đặc tảkhông rõ ràng sẽ làm giảm chất lượng phần mềm.

Page 40: Chuong 1. cnpm

40

1.1.6. Khó khăn trong phát triển PM(4)

(5) Nếu không kiểm thử tính đúng đắn của phần mềm ở từng giai đoạn mà chỉ kiểm thửở giai đoạn cuối và phát hiện ra lỗi, thì thường bàn giao sản phẩm không đúng hạn.(6) Nếu coi trọng việc lập trình hơn khâu thiết kế thì thường dẫn đến làm giảm chất lượng phần mềm.(7) Nếu coi thường việc tái sử dụng phần mềm (software reuse), thì năng suất lao động sẽ giảm.

Page 41: Chuong 1. cnpm

41

1.1.6. Khó khăn trong phát triển PM(5)

(8) Trong quy trình phát triển phần mềm cónhiều thao tác do con người thực hiện, do vậy năng suất lao động thường bị giảm.(9) Khi không chứng minh được tính đúng đắn của phần mềm đang xây dựng thì độ tin cậy của phần mềm sẽ giảm.(10) Chuẩn về một phần mềm tốt không thể đo được một cách định lượng, do vậy khó cóthể đánh giá được một hệ thống đúng đắn hay không.

Page 42: Chuong 1. cnpm

42

1.1.6. Khó khăn trong phát triển PM(6)

(11) Khi đầu tư nhân lực lớn vào bảo trì sẽlàm giảm hiệu suất lao động của nhân viên.(12) Công việc bảo trì kéo dài làm giảm chất lượng của các tài liệu liên quan và ảnh hưởng xấu đến những việc khác.(13) Quản lý dự án lỏng lẻo kéo theo quản lý lịch trình cũng không rõ ràng

Page 43: Chuong 1. cnpm

43

1.1.6. Khó khăn trong phát triển PM(7)

(14) Nếu không có tiêu chuẩn để ước lượng nhân lực và dự toán sẽ làm kéo dài thời hạn và vượt kinh phí của dự án.

=> Đây là những vấn đề phản ánh các khía cạnh khủng hoảng và khó khăn trong phát triển phần mềm, hãy tìm N cách nỗ lực vượt qua để tạo ra phần mềm tốt!

Page 44: Chuong 1. cnpm

44

1.2. Công nghệ phần mềm

1.2.1. Khái niệm1.2.2. Đặc điểm công nghệ phần mềm1.2.3. Một số nguyên tắc CNPM1.2.4. Các hoạt động chính trong CNPM

Page 45: Chuong 1. cnpm

45

1.2.1. Khái niệm Công nghệ phần mềm

Khái niệm– Larousse (1996): Công nghệ phần mềm là

tập hợp các phương pháp, mô hình, kỹthuật, công cụ và thủ tục liên quan đến các giai đoạn xây dựng một sản phẩm phần mềm.

– Các giai đoạn đó là: đặc tả (specifiction), thiết kế(design), lập trình(programming), thử nghiệm(testing), sửa sai(debugging), cài đặt(setup) để đem vào ứng dụng (application),bảo trì(maintenance) và lập hồ sơ(documentation).

Page 46: Chuong 1. cnpm

46

1.2.1. Khái niệm Công nghệ phần mềm

Khái niệm– Bauer [1969]: CNPM là việc thiết lập và sử dụng

các nguyên tắc công nghệ học đúng đắn dùng để thu được phần mềm một cách kinh tế vừa tin cậy vừa làm việc hiệu quả trên các máy thực.

– IEEE [1993]: CNPM là việc áp dụng phương pháp tiếp cận có hệ thống, bài bản và được lượng hóa trong phát triển, vận hành và bảo trì phần mềm vàviệc nghiên cứu các phương pháp tiếp cận nó.

Page 47: Chuong 1. cnpm

47

1.2.1. Mục đíchMục đích chính của công nghệ phần mềm là đểsản xuất ra những phần mềm có chất lượng. Phần mềm có chất lượng là PM thỏa mãn:– Những yếu tố bên ngoài của một sản phẩm như:

tính đúng đắn, tính bền vững, tính có thể mở rộng được, tính sử dụng lại, tính tương thích…;

– Những yếu tố chất lượng bên trong như: tính dễ đọc, dễ hiểu, sản phẩm trực quan, sinh động…

Page 48: Chuong 1. cnpm

48

1.2.1. Mục đích

Mục đích– Áp dụng thực tế

Các kiến thức khoa học,Các nguyên tắc kinh tếCác nguyên tắc quản lýCác kỹ thuật và công cụ thích hợp

– Để sản xuất và bảo trì các phần mềm nhằm bảo đảm 4 yêu cầu

Phần mềm tạo ra phải đáp ứng được yêu cầu người sử dụngPhần mềm phải đạt được các tiêu chuẩn về chất lượngGiá thành phải nằm trong giới hạn đặt raTiến độ xây dựng phần mềm phải đảm bảo

Page 49: Chuong 1. cnpm

49

1.2.2. Đặc điểm CNPM

CNPM là một lĩnh vực của khoa học máy tính, liên quan đến việc xây dựng các hệthống phần mềm vừa lớn vừa phức tạp bởi một hay một nhóm kỹ sư.CNPM tích hợp cả quy trình, các phương pháp, các công cụ để phát triển phần mềm máy tính.CNPM liên quan đến lý thuyết, phương pháp và công cụ dùng cho phát triển phần mềm.

Page 50: Chuong 1. cnpm

50

1.2.2. Đặc điểm CNPM(2)Các kỹ thuật về thiết kế, chế tạo, kiểm thử vàbảo trì phần mềm đã được hệ thống hóa hóa thành phương pháp luận và hình thành nên CNPM.Trong vòng đời phần mềm không chỉ có xây dựng mà bao gồm cả thiết kế, vận hành và bảo trì (tính quan trọng của thiết kế và bảo trì).Nghiên cứu Công nghệ phần mềm nhằm nâng cao năng suất và độ tin cậy của phần mềm, đồng thời giảm chi phí giá thành phần mềm.

Page 51: Chuong 1. cnpm

51

1.2.3. Một số nguyên tắc CNPM

Các nguyên tắc cơ bản– Chặt chẽ (rigor and formality)– Chia nhỏ (separation of concerns)– Mô-đun hóa (modularity)– Trừu tượng (abstraction)– Phòng ngừa sự thay đổi (anticipation of change)– Tổng quát hóa (generality)– Giải quyết từng bước (incrementality)

Page 52: Chuong 1. cnpm

52

1.2.3. Một số nguyên tắc CNPM(2)

Chặt chẽ (rigor and formality)– Sử dụng mô hình lý thuyết và toán học– Áp dụng cho tất cả các bước, tất cả các sản

phẩm– Ví dụ:

“chọn z là giá trị lớn nhất của x và y”Z = max(x,y)

Page 53: Chuong 1. cnpm

53

1.2.3. Một số nguyên tắc CNPM(3)

Chia nhỏ (separation of concerns)Làm chủ độ phức tạp– Chỉ tập trung một lĩnh vực cùng một lúc– Chia vấn đề thành các phần nhỏ hơn

Giải quyết một phần nhỏ sẽ đơn giản hơn– Sử dụng thuật toán “chia để trị” (divide and conquer)

– Có thể chia nhỏ theoThời gian: lập kế hoạchKhái niệm: giao diện / thuật toánXử lý: chia các xử lý con

Page 54: Chuong 1. cnpm

54

1.2.3. Một số nguyên tắc CNPM(4)

Mô-đun hóa (modularity)– Chia nhỏ độ phức tạp nhằm

Dễ hiểuDễ quản lý các hệ thống phức tạp

– Quan hệ mật thiết với nguyên tắc “chia nhỏ”– Các phương pháp mô-đun hóa

Chiến lược từ trên xuống (top-dow)Chiến lược từ dưới lên (bottom-up)

– Chất lượng của mô-đun hóaLiên kết lỏng lẻo (low coupling)Kết cấu cao (high cohesion)

Page 55: Chuong 1. cnpm

55

1.2.3. Một số nguyên tắc CNPM(5)

Trừu tượng (abstraction)– Loại bỏ những gì không quan trọng– Chỉ xem xét các yếu tố quan trọng– Sử dụng các mô hình

Mô hình cho người sử dụngMô hình cho người phát triển

– Ví dụ:Ngôn ngữ lập trình / cấu trúc phần cứngXây dựng tài liệuĐặc tả bởi điều kiện trước và sau

Page 56: Chuong 1. cnpm

56

1.2.3. Một số nguyên tắc CNPM(6)

Phòng ngừa sự thay đổi (anticipation of change)– Phần mềm là sản phẩm thường xuyên phải thay đổi

– Dự báo các yếu tố có thể thay đổi, các ảnh hưởng có thể

– Các thay đổi thường gặpTrong đặc tả yêu cầuTrong ngữ cảnh sử dụngKhả năng về công nghệ

Page 57: Chuong 1. cnpm

57

1.2.3. Một số nguyên tắc CNPM(7)

Tổng quát hóa (generality)– Xem xét vấn đề trong ngữ cảnh tổng quát– Giải quyết vấn đề lớn hơn– Mục đích

Tái sử dụng dễ dàngCó thể sử dụng các công cụ có sẵn như sử dụng design patternsChi phí có thể tăng cao

Page 58: Chuong 1. cnpm

58

1.2.3. Một số nguyên tắc CNPM(8)

Giải quyết từng bước (incrementality)– Nguyên tắc:

Xác định một phần (tập con)Phát triểnĐánh giáBắt đầu lại

– Áp dụng choPhát triển một sản phẩm

– Một đặc tả / một kiến trúcMô hình phát triển

– Mô hình lặp

Page 59: Chuong 1. cnpm

59

1.2.4. Các hoạt động chính trong CNPM

1. Xác định2. Phát triển3. Kiểm thử4. Tiến hoá

Page 60: Chuong 1. cnpm

60

1.2.4. Các hoạt động chính trong CNPM

Xác định: Hệ thống làm gi?

Những ràng buộc gì nó cần tuân thủ?Phân tích hệ thốngVai trò của phần mềm cần phát triển trong hệ thống

Lập kế hoạchƯớc lượng công việc, lập lịch biểu, phân công công việc

Phân tích yêu cầuXác định yêu cầu chi tiết (chức năng, ràng buộc) đặc tả yêu cầu

Page 61: Chuong 1. cnpm

61

Các hoạt động chính trong CNPM

Phát triển: Tiến hành sản xuất phần mềm như thế nào?Thiết kế (design)Dịch các yêu cầu thành bản thiết kế (kiến trúc, dữ liệu, thủ tụcxử lý, giao diện)

Mã hóa (coding)Chuyển thiết kế thành chương trình máy tính (trong một ngôn ngữlập trình)

Page 62: Chuong 1. cnpm

62

Các hoạt động chính trong CNPM

Kiểm thử: Phát hiện và sửa lỗi chương trình (lỗi lập trình, lỗi thiết kế...

Unit testIntegration testSystem test

Black testGray testWhite test

Page 63: Chuong 1. cnpm

63

Các hoạt động chính trong CNPM

Tiến hoá: Hoàn thiện hệ thống sau khi đưa vào hoạt động?

Sửa lỗiSửa lỗi phần mềm

Thích nghiSửa đổi để thích nghi với môi trường thay đổi

Nâng caoThêm các chức năng mới, hoàn thiện chức năng cũ

Page 64: Chuong 1. cnpm

64

1.2.4. Các hoạt động chính trong CNPM

Tªn pha Néi dung nghiÖp vô Ph−¬ng ph¸p, kü

thuËt X¸c ®Þnh yªu cÇu

§Æc t¶ yªu cÇu ng−êi dïng X¸c ®Þnh yªu cÇu phÇn mÒm

Ph©n tÝch cÊu tróc hãa

ThiÕt kÕ hÖ thèng

ThiÕt kÕ c¬ b¶n phÇn mÒm ThiÕt kÕ cÊu tróc ngoµi cña phÇn mÒm

ThiÕt kÕ cÊu tróc hãa

ThiÕt kÕ ch−¬ng tr×nh

Lµ thiÕt kÕ chi tiÕt: ThiÕt kÕ cÊu tróc bªn trong cña phÇn mÒm (®¬n vÞ ch−¬ng tr×nh hoÆc m«®un)

LËp tr×nh cÊu tróc Ph−¬ng ph¸p Jackson Ph−¬ng ph¸p Warnier

LËp tr×nh M· hãa bëi ng«n ng÷ lËp tr×nh M· hãa cÊu tróc hãa §¶m b¶o chÊt l−îng

KiÓm tra chÊt l−îng phÇn mÒm ®· ph¸t triÓn

Ph−¬ng ph¸p kiÓm thö ch−¬ng tr×nh

VËn hµnh B¶o tr×

Sö dông, vËn hµnh phÇn mÒm ®· ph¸t triÓn. BiÕn ®æi, ®iÒu chØnh phÇn mÒm

Ch−a cô thÓ

Phương pháp luận và kỹ thuật cho từng pha

Page 65: Chuong 1. cnpm

65

Kết luậnPhần mềm có tầm quan trọng đặc biệt: tạo nên sựkhác biệt của tổ chức, của hệ thốngPhát triển phần mềm là công việc phức tạp, rủi ro:

– Không được định hình trước, khó dự đoán hiệu năng khi chưa có sản phẩm

– phụ thuộc vào con người– bị ảnh hưởng lớn từ môi trường => nhiều rủi ro

Cần áp dụng các phương pháp tiên tiến trong việc xây dựng phần mềm.

Page 66: Chuong 1. cnpm

66

Câu hỏi ôn tập

1. Nêu tầm quan trọng của phần mềm ? (mức độ: quốc gia, tổ chức, hệ thống, ứng dụng)

2. Kể các loại hệ thống phần mềm ứng dụng? Giải thích nội dung ?

3. Định nghĩa phần mềm ?4. Sản phầm phần mềm gồm mấy loại?

Sự khác nhau giữa chúng?

Page 67: Chuong 1. cnpm

67

Câu hỏi ôn tập(2)

5. Các đặc trưng của phần mềm?6. Các thuộc tính của phần mềm kỹ nghệ tốt?7. Khó khăn phát triển phần mềm thể hiện ở

những mặt nào (bản chất, sự thay đổi: quy mô, môi trường)

8. Thách thức đối với phát triển phần mềm? (nhu cầu, bảo trì, thời gian, giá cả, khả năng phần cứng)