SlideShare a Scribd company logo
1 of 67
Download to read offline
CHƯƠNG 1. TỔNG
QUAN VỀ CÔNG NGHỆ
    PHẦN MỀM

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




                                  1
Nội dung
1.1. Phần mềm
  1.1.1. Khái niệm
  1.1.2. Tiến hóa của phần mềm
  1.1.3. Đặc trưng và phân loại phần mềm
  1.1.4. Chất lượng phần mềm
  1.1.5. Khủng hoảng phần mềm
  1.1.6. Khó khăn trong phát triển phần mềm
1.2. Công nghệ phần mềm
  1.2.1. Khái niệm
  1.2.2. Đặc điểm công nghệ phần mềm
  1.2.3. Một số nguyên tắc CNPM
  1.2.4. Các hoạt động chính trong CNPM


                                              2
1.1.1. Khái niệm phần mềm
 Khá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áy
       Cấ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.

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




                            4
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ống
 Cá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óa
 Cá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


                                                5
Nhóm chương trình
 Là 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ệu
 Phầ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, . . .


                                                         6
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, …



                                                 7
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 đổi
  Sự 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




                                             8
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ân
   Sả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

                                                        9
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ụng
  Hệ thống thời gian thực
  Xuất hiện lưu trữ trực tuyến
                                            Nhiều dự án
       Phần mềm trở nên phức tạp            thất bại
       Nhu cầu tăng cao                     Chi phí tăng
Ngô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
                                                           10
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án
     Mạng cục bộ, toàn cầu
     Bộ vi xử lý phát triển mạnh
            Phần mềm ngày càng phức tạp
            Sử dụng nhiều máy tính cá nhân, phần mềm nhúng
            Số 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
                                                      11
1.1.2. Tiến hoá của phần mềm(5)

Phần mềm ngày càng phức tạp
   UNIX:     4M dòng lệnh
   Window2K: ~100M dòng lệnh
   Lý 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.



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

 Chi phí cho phần mềm cao
   Phầ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

                                                      13
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




                                                14
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”

                                                    15
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.



                                                      16
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ình
  Chươ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

                                                                 17
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 được
 Chấ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ửa
 Phầ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 cao
 Lỗ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).

                                               18
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




                                               19
1.1.3. Phân loại phần mềm
 Phầ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ệu
        Phân tích dữ liệu
        Kiểm soát, điều khiển
        Điều phối.
 –   Ví dụ: Phần mềm đa phương tiện.

                                                20
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.


                                                             21
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,...

                                                     22
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

                                               23
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.

                                                          24
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ới
 Tí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ển
 Tính hợp tác (interoperability): dễ hợp tác với các
 phần mềm khác
 Sản xuất hiệu quả (productivity): tiến trình sản xuất
 phần mềm phải hiệu quả.


                                                         25
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ói
 Tí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ển
       Hiểu rõ ảnh hưởng của các quyết định
 –   Đối với khách hàng
       Hiểu rõ tiến độ phát triển
       Hiểu rõ ảnh hưởng của các quyết định



                                               26
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ả




                                               27
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 cao
   Có đầy đủ tài liệu

    –   Có tuổi thọ cao
    –   Đem lại hiệu quả kinh tế
                                                 28
1.1.4. Chất lượng phần mềm(7)
Tính tin cậy
  Phần mềm không có khiếm khuyết
    lỗi lập trình
    lỗ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


                                                29
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ứng
   Bộ nhớ trong
   Tốc độ
   Bộ nhớ ngoài
   Tố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ị
                                               30
1.1.4. Chất lượng phần mềm(9)
Tính dễ dùng
   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




                                               31
1.1.4. Chất lượng phần mềm(10)
Nhận xét
    Khó tối ưu đồng thời các thuộc tính
        hiệu quả >< dễ bảo trì, dễ sử dụng
    Chi phí cho tối ưu là không tuyến tính
           giá thành




                                   hiệu năng
    => Giá cả chi cho việc tối ưu PM phải hợp lý
                                               32
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


                                      33
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 PM
        Khô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ềm
        Giao 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ý
                                                           34
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%




                                              35
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 )

                                                            36
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ém
    Sự 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.

                                                       37
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 đó.



                                               38
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.

                                                39
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.

                                                   40
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.

                                              41
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




                                                42
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!




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

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




                                         44
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).
                                                            45
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ó.



                                                          46
1.2.1. Mục đích
 Mụ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…




                                                          47
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ụng
         Phần mềm phải đạt được các tiêu chuẩn về chất lượng
         Giá thành phải nằm trong giới hạn đặt ra
         Tiến độ xây dựng phần mềm phải đảm bảo


                                                                   48
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.

                                               49
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.

                                                   50
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)



                                                        51
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)




                                                    52
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ỏ theo
        Thời gian: lập kế hoạch
        Khái niệm: giao diện / thuật toán
        Xử lý: chia các xử lý con


                                                                      53
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ểu
        Dễ 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óa
        Liên kết lỏng lẻo (low coupling)
        Kết cấu cao (high cohesion)

                                                    54
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ụng
         Mô 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ứng
         Xây dựng tài liệu
         Đặc tả bởi điều kiện trước và sau


                                                   55
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ặp
        Trong đặc tả yêu cầu
        Trong ngữ cảnh sử dụng
        Khả năng về công nghệ


                                                    56
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àng
        Có thể sử dụng các công cụ có sẵn như sử dụng design
        patterns
        Chi phí có thể tăng cao




                                                               57
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 cho
        Phát triển một sản phẩm
          –   Một đặc tả / một kiến trúc
        Mô hình phát triển
          –   Mô hình lặp


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

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




                                        59
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ống
      Vai 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ầu
     Xác định yêu cầu chi tiết (chức năng, ràng buộc) đặc tả yêu cầu



                                                                   60
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ục
    xử 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)




                                                                       61
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 test                         Black test
   Integration test                  Gray test
   System test                       White test




                                                             62
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ỗi
      Sửa lỗi phần mềm
     Thích nghi
      Sửa đổi để thích nghi với môi trường thay đổi

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



                                                           63
1.2.4. Các hoạt động chính trong CNPM
                                                    Ph−¬ng ph¸p, kü
    Tªn pha            Néi dung nghiÖp vô
                                                          thuËt
  X¸c ®Þnh     §Æc t¶ yªu cÇu ng−êi dïng          Ph©n tÝch cÊu tróc
  yªu cÇu      X¸c ®Þnh yªu cÇu phÇn mÒm          hãa
               ThiÕt kÕ c¬ b¶n phÇn mÒm
  ThiÕt kÕ
               ThiÕt kÕ cÊu tróc ngoµi cña phÇn   ThiÕt kÕ cÊu tróc hãa
  hÖ thèng
               mÒm
               Lµ thiÕt kÕ chi tiÕt: ThiÕt kÕ cÊu LËp tr×nh cÊu tróc
  ThiÕt kÕ
               tróc bªn trong cña phÇn mÒm (®¬n Ph−¬ng ph¸p Jackson
  ch−¬ng tr×nh
               vÞ ch−¬ng tr×nh hoÆc m«®un)        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      KiÓm tra chÊt l−îng phÇn mÒm ®·    Ph−¬ng ph¸p kiÓm
  chÊt l−îng   ph¸t triÓn                         thö ch−¬ng tr×nh
               Sö dông, vËn hµnh phÇn mÒm ®·
  VËn hµnh
               ph¸t triÓn. BiÕn ®æi, ®iÒu chØnh   Ch−a cô thÓ
  B¶o tr×
               phÇn mÒm
                Phương pháp luận và kỹ thuật cho từng pha               64
Kết luận
 Phầ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ống
 Phá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.




                                                             65
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?

                                                 66
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)


                                                67

More Related Content

What's hot

Chuong 4 - CSDL phân tán
Chuong 4 - CSDL phân tánChuong 4 - CSDL phân tán
Chuong 4 - CSDL phân tánduysu
 
Do an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuDo an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuThiênĐàng CôngDân
 
Bài giảng Công Nghệ Phần Mềm
Bài giảng Công Nghệ Phần MềmBài giảng Công Nghệ Phần Mềm
Bài giảng Công Nghệ Phần MềmHoài Phạm
 
Kiem thu phan mem
Kiem thu phan memKiem thu phan mem
Kiem thu phan memTIen Le
 
Ứng dụng chát realtime android
Ứng dụng chát realtime androidỨng dụng chát realtime android
Ứng dụng chát realtime androidNguyen Thieu
 
Các kỹ thuật bảo trì phần mềm
Các kỹ thuật bảo trì phần mềmCác kỹ thuật bảo trì phần mềm
Các kỹ thuật bảo trì phần mềmNguyễn Anh
 
Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmThuyet Nguyen
 
Nhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềmNhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềmTrần Gia Bảo
 
[123doc.vn] thiet ke mang lan cho truong hoc copy
[123doc.vn]   thiet ke mang lan cho truong hoc copy[123doc.vn]   thiet ke mang lan cho truong hoc copy
[123doc.vn] thiet ke mang lan cho truong hoc copynenohap
 
Ứng dụng ngôn ngữ UML trong phân tích và thiết kế website cho giảng viên Việ...
Ứng dụng ngôn ngữ UML trong phân tích và thiết kế  website cho giảng viên Việ...Ứng dụng ngôn ngữ UML trong phân tích và thiết kế  website cho giảng viên Việ...
Ứng dụng ngôn ngữ UML trong phân tích và thiết kế website cho giảng viên Việ...Nguyễn Anh
 
Giáo trình xử lý ảnh
Giáo trình xử lý ảnhGiáo trình xử lý ảnh
Giáo trình xử lý ảnhTùng Trần
 
BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...
BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...
BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...nataliej4
 
Giải pháp ảo hóa máy chủ cho một doanh nghiệp phần mềm nhỏ và ứng dụng
Giải pháp ảo hóa máy chủ cho một doanh nghiệp phần mềm nhỏ và ứng dụngGiải pháp ảo hóa máy chủ cho một doanh nghiệp phần mềm nhỏ và ứng dụng
Giải pháp ảo hóa máy chủ cho một doanh nghiệp phần mềm nhỏ và ứng dụngsunflower_micro
 
Giáo trình mạng máy tính PTIT
Giáo trình mạng máy tính PTITGiáo trình mạng máy tính PTIT
Giáo trình mạng máy tính PTITNguynMinh294
 
Đồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmĐồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmNguyễn Anh
 
Công nghệ phần mềm chuong 1
Công nghệ phần mềm chuong 1Công nghệ phần mềm chuong 1
Công nghệ phần mềm chuong 1laducqb
 

What's hot (20)

Chuong 4 - CSDL phân tán
Chuong 4 - CSDL phân tánChuong 4 - CSDL phân tán
Chuong 4 - CSDL phân tán
 
Báo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin Tức
Báo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin TứcBáo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin Tức
Báo Cáo Bài Tập Lớn Môn Lập Trình Web Xây Dựng Website Tin Tức
 
Do an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tuDo an xay_dung_website_thuong_mai_dien_tu
Do an xay_dung_website_thuong_mai_dien_tu
 
Bài giảng Công Nghệ Phần Mềm
Bài giảng Công Nghệ Phần MềmBài giảng Công Nghệ Phần Mềm
Bài giảng Công Nghệ Phần Mềm
 
Kiem thu phan mem
Kiem thu phan memKiem thu phan mem
Kiem thu phan mem
 
Giải ngân hàng Hệ thống nhúng PTIT - thầy Cước
Giải ngân hàng Hệ thống nhúng PTIT - thầy CướcGiải ngân hàng Hệ thống nhúng PTIT - thầy Cước
Giải ngân hàng Hệ thống nhúng PTIT - thầy Cước
 
Ứng dụng chát realtime android
Ứng dụng chát realtime androidỨng dụng chát realtime android
Ứng dụng chát realtime android
 
Các kỹ thuật bảo trì phần mềm
Các kỹ thuật bảo trì phần mềmCác kỹ thuật bảo trì phần mềm
Các kỹ thuật bảo trì phần mềm
 
Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềm
 
Nhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềmNhập môn công nghệ phần mềm
Nhập môn công nghệ phần mềm
 
[123doc.vn] thiet ke mang lan cho truong hoc copy
[123doc.vn]   thiet ke mang lan cho truong hoc copy[123doc.vn]   thiet ke mang lan cho truong hoc copy
[123doc.vn] thiet ke mang lan cho truong hoc copy
 
Ứng dụng ngôn ngữ UML trong phân tích và thiết kế website cho giảng viên Việ...
Ứng dụng ngôn ngữ UML trong phân tích và thiết kế  website cho giảng viên Việ...Ứng dụng ngôn ngữ UML trong phân tích và thiết kế  website cho giảng viên Việ...
Ứng dụng ngôn ngữ UML trong phân tích và thiết kế website cho giảng viên Việ...
 
Uml hà
Uml hàUml hà
Uml hà
 
Giáo trình xử lý ảnh
Giáo trình xử lý ảnhGiáo trình xử lý ảnh
Giáo trình xử lý ảnh
 
BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...
BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...
BÁO CÁO ĐỒ ÁN MÔN HỌC ĐIỆN TOÁN ĐÁM MÂY ĐỀ TÀI: TÌM HIỂU VÀ SỬ DỤNG AMAZON WE...
 
Giải pháp ảo hóa máy chủ cho một doanh nghiệp phần mềm nhỏ và ứng dụng
Giải pháp ảo hóa máy chủ cho một doanh nghiệp phần mềm nhỏ và ứng dụngGiải pháp ảo hóa máy chủ cho một doanh nghiệp phần mềm nhỏ và ứng dụng
Giải pháp ảo hóa máy chủ cho một doanh nghiệp phần mềm nhỏ và ứng dụng
 
Giáo trình mạng máy tính PTIT
Giáo trình mạng máy tính PTITGiáo trình mạng máy tính PTIT
Giáo trình mạng máy tính PTIT
 
Đồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmĐồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềm
 
Công nghệ phần mềm chuong 1
Công nghệ phần mềm chuong 1Công nghệ phần mềm chuong 1
Công nghệ phần mềm chuong 1
 
Mau bao cao project 1
Mau bao cao project 1Mau bao cao project 1
Mau bao cao project 1
 

Viewers also liked

Mot so khai niem va cau hoi ve cnpm nang cao
Mot so khai niem va cau hoi ve cnpm nang caoMot so khai niem va cau hoi ve cnpm nang cao
Mot so khai niem va cau hoi ve cnpm nang caodinhbien
 
Bài 3 CÁC PHẦN MỀM ỨNG DỤNG CƠ BẢN
Bài 3 CÁC PHẦN MỀM ỨNG DỤNG CƠ BẢNBài 3 CÁC PHẦN MỀM ỨNG DỤNG CƠ BẢN
Bài 3 CÁC PHẦN MỀM ỨNG DỤNG CƠ BẢNMasterCode.vn
 
Multi-Objective Cross-Project Defect Prediction
Multi-Objective Cross-Project Defect PredictionMulti-Objective Cross-Project Defect Prediction
Multi-Objective Cross-Project Defect PredictionSebastiano Panichella
 
How Developers’ Collaborations Identified from Different Sources Tell us Abou...
How Developers’ Collaborations Identified from Different Sources Tell us Abou...How Developers’ Collaborations Identified from Different Sources Tell us Abou...
How Developers’ Collaborations Identified from Different Sources Tell us Abou...Sebastiano Panichella
 
Using IR methods for labeling source code artifacts: Is it worthwhile?
Using IR methods for labeling source code artifacts: Is it worthwhile?Using IR methods for labeling source code artifacts: Is it worthwhile?
Using IR methods for labeling source code artifacts: Is it worthwhile?Sebastiano Panichella
 
Im and o '13 april lc day review
Im and o '13 april lc day reviewIm and o '13 april lc day review
Im and o '13 april lc day reviewaiesechyderabad
 
Bd er '13 april lc day review
Bd  er '13 april lc day reviewBd  er '13 april lc day review
Bd er '13 april lc day reviewaiesechyderabad
 
Expansions '13 april lc day review
Expansions '13 april lc day reviewExpansions '13 april lc day review
Expansions '13 april lc day reviewaiesechyderabad
 
Career confidence report campaign
Career confidence report campaignCareer confidence report campaign
Career confidence report campaignMilkround
 
Big Data Public-Private Forum_European Data Forum 2012
Big Data Public-Private Forum_European Data Forum 2012Big Data Public-Private Forum_European Data Forum 2012
Big Data Public-Private Forum_European Data Forum 2012BIG Project
 
Contenido
ContenidoContenido
Contenidoalemati
 
Reading photographs
Reading photographsReading photographs
Reading photographsSkye19900
 

Viewers also liked (20)

Mot so khai niem va cau hoi ve cnpm nang cao
Mot so khai niem va cau hoi ve cnpm nang caoMot so khai niem va cau hoi ve cnpm nang cao
Mot so khai niem va cau hoi ve cnpm nang cao
 
Bài 3 CÁC PHẦN MỀM ỨNG DỤNG CƠ BẢN
Bài 3 CÁC PHẦN MỀM ỨNG DỤNG CƠ BẢNBài 3 CÁC PHẦN MỀM ỨNG DỤNG CƠ BẢN
Bài 3 CÁC PHẦN MỀM ỨNG DỤNG CƠ BẢN
 
Sola
SolaSola
Sola
 
Multi-Objective Cross-Project Defect Prediction
Multi-Objective Cross-Project Defect PredictionMulti-Objective Cross-Project Defect Prediction
Multi-Objective Cross-Project Defect Prediction
 
How Developers’ Collaborations Identified from Different Sources Tell us Abou...
How Developers’ Collaborations Identified from Different Sources Tell us Abou...How Developers’ Collaborations Identified from Different Sources Tell us Abou...
How Developers’ Collaborations Identified from Different Sources Tell us Abou...
 
Tracking CIM-iGIP
Tracking CIM-iGIPTracking CIM-iGIP
Tracking CIM-iGIP
 
Xd sona
Xd sonaXd sona
Xd sona
 
Using IR methods for labeling source code artifacts: Is it worthwhile?
Using IR methods for labeling source code artifacts: Is it worthwhile?Using IR methods for labeling source code artifacts: Is it worthwhile?
Using IR methods for labeling source code artifacts: Is it worthwhile?
 
The origin
The originThe origin
The origin
 
Im and o '13 april lc day review
Im and o '13 april lc day reviewIm and o '13 april lc day review
Im and o '13 april lc day review
 
Bd er '13 april lc day review
Bd  er '13 april lc day reviewBd  er '13 april lc day review
Bd er '13 april lc day review
 
Constraints
ConstraintsConstraints
Constraints
 
Expansions '13 april lc day review
Expansions '13 april lc day reviewExpansions '13 april lc day review
Expansions '13 april lc day review
 
Career confidence report campaign
Career confidence report campaignCareer confidence report campaign
Career confidence report campaign
 
Big Data Public-Private Forum_European Data Forum 2012
Big Data Public-Private Forum_European Data Forum 2012Big Data Public-Private Forum_European Data Forum 2012
Big Data Public-Private Forum_European Data Forum 2012
 
Mi familia y yo
Mi familia y yoMi familia y yo
Mi familia y yo
 
Contenido
ContenidoContenido
Contenido
 
The ascent
The ascentThe ascent
The ascent
 
GIS = Biryani
GIS = BiryaniGIS = Biryani
GIS = Biryani
 
Reading photographs
Reading photographsReading photographs
Reading photographs
 

Similar to Chuong 1. cnpm

Lecture01_Phan mem va ky nghe phan mem.pdf
Lecture01_Phan mem va ky nghe phan mem.pdfLecture01_Phan mem va ky nghe phan mem.pdf
Lecture01_Phan mem va ky nghe phan mem.pdfMai Hieu
 
Bài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.ppt
Bài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.pptBài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.ppt
Bài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.pptBnhGo3
 
Phan Tich Httt Bang Uml
Phan Tich Httt Bang UmlPhan Tich Httt Bang Uml
Phan Tich Httt Bang Umlhbgfd
 
Giaotrinh hedieuhanh
Giaotrinh hedieuhanhGiaotrinh hedieuhanh
Giaotrinh hedieuhanhHai Nguyen
 
Phan tich httt_bang_uml
Phan tich httt_bang_umlPhan tich httt_bang_uml
Phan tich httt_bang_umlMai Mit
 
Phan tich hệ thống thông tin bằng uml
Phan tich hệ thống thông tin bằng umlPhan tich hệ thống thông tin bằng uml
Phan tich hệ thống thông tin bằng umldlmonline24h
 
Phan tich httt_bang_uml
Phan tich httt_bang_umlPhan tich httt_bang_uml
Phan tich httt_bang_umlAxnet Dung
 
phan tich thiet ke he thong
phan tich thiet ke he thongphan tich thiet ke he thong
phan tich thiet ke he thongvantinhkhuc
 
01.1-Quy trinh phat trien phan mem.pptx
01.1-Quy trinh phat trien phan mem.pptx01.1-Quy trinh phat trien phan mem.pptx
01.1-Quy trinh phat trien phan mem.pptxTunTrung15
 
Giao trinh phan tich thiet ke he thong thong tin
Giao trinh phan tich thiet ke he thong thong tinGiao trinh phan tich thiet ke he thong thong tin
Giao trinh phan tich thiet ke he thong thong tinNguyen Patrick
 
Full tai lieu_giang_day_cong_nghe_phan_mem
Full tai lieu_giang_day_cong_nghe_phan_memFull tai lieu_giang_day_cong_nghe_phan_mem
Full tai lieu_giang_day_cong_nghe_phan_memNhân Siêu
 
Chuong1 tongquanvehedieuhanh
Chuong1 tongquanvehedieuhanhChuong1 tongquanvehedieuhanh
Chuong1 tongquanvehedieuhanhluyenshare
 
Chuong 1_Hieu Biet Ve CNTT.pdf
Chuong 1_Hieu Biet Ve CNTT.pdfChuong 1_Hieu Biet Ve CNTT.pdf
Chuong 1_Hieu Biet Ve CNTT.pdfQuocBaoNguyenTran1
 
Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]
Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]
Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]bookbooming1
 
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdfDuongDo35
 

Similar to Chuong 1. cnpm (20)

Dsd01 sta
Dsd01 staDsd01 sta
Dsd01 sta
 
chuong 1
chuong 1chuong 1
chuong 1
 
Lecture01_Phan mem va ky nghe phan mem.pdf
Lecture01_Phan mem va ky nghe phan mem.pdfLecture01_Phan mem va ky nghe phan mem.pdf
Lecture01_Phan mem va ky nghe phan mem.pdf
 
Bài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.ppt
Bài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.pptBài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.ppt
Bài tập lớn Công nghệ phần mềm Phần mềm và kỹ nghệ phần mềm.ppt
 
Phan Tich Httt Bang Uml
Phan Tich Httt Bang UmlPhan Tich Httt Bang Uml
Phan Tich Httt Bang Uml
 
Giaotrinh hedieuhanh
Giaotrinh hedieuhanhGiaotrinh hedieuhanh
Giaotrinh hedieuhanh
 
Phan tich httt_bang_uml
Phan tich httt_bang_umlPhan tich httt_bang_uml
Phan tich httt_bang_uml
 
Phan tich hệ thống thông tin bằng uml
Phan tich hệ thống thông tin bằng umlPhan tich hệ thống thông tin bằng uml
Phan tich hệ thống thông tin bằng uml
 
Phan tich httt_bang_uml
Phan tich httt_bang_umlPhan tich httt_bang_uml
Phan tich httt_bang_uml
 
phan tich thiet ke he thong
phan tich thiet ke he thongphan tich thiet ke he thong
phan tich thiet ke he thong
 
01.1-Quy trinh phat trien phan mem.pptx
01.1-Quy trinh phat trien phan mem.pptx01.1-Quy trinh phat trien phan mem.pptx
01.1-Quy trinh phat trien phan mem.pptx
 
Mở đầu
Mở đầuMở đầu
Mở đầu
 
Giao trinh phan tich thiet ke he thong thong tin
Giao trinh phan tich thiet ke he thong thong tinGiao trinh phan tich thiet ke he thong thong tin
Giao trinh phan tich thiet ke he thong thong tin
 
Full tai lieu_giang_day_cong_nghe_phan_mem
Full tai lieu_giang_day_cong_nghe_phan_memFull tai lieu_giang_day_cong_nghe_phan_mem
Full tai lieu_giang_day_cong_nghe_phan_mem
 
C1
C1C1
C1
 
Chuong1 tongquanvehedieuhanh
Chuong1 tongquanvehedieuhanhChuong1 tongquanvehedieuhanh
Chuong1 tongquanvehedieuhanh
 
Bài giảng
Bài giảngBài giảng
Bài giảng
 
Chuong 1_Hieu Biet Ve CNTT.pdf
Chuong 1_Hieu Biet Ve CNTT.pdfChuong 1_Hieu Biet Ve CNTT.pdf
Chuong 1_Hieu Biet Ve CNTT.pdf
 
Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]
Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]
Giao trinh he_dieu_hanh_tech24_vn[bookbooming.com]
 
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf
123doc-giai-ngan-hang-cong-nghe-phan-mem-ptit.pdf
 

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 tin Trường Đại học Thương mại 1
  • 2. Nội dung 1.1. Phần mềm 1.1.1. Khái niệm 1.1.2. Tiến hóa của phần mềm 1.1.3. Đặc trưng và phân loại phần mềm 1.1.4. Chất lượng phần mềm 1.1.5. Khủng hoảng phần mềm 1.1.6. Khó khăn trong phát triển phần mềm 1.2. Công nghệ phần mềm 1.2.1. Khái niệm 1.2.2. Đặc điểm công nghệ phần mềm 1.2.3. Một số nguyên tắc CNPM 1.2.4. Các hoạt động chính trong CNPM 2
  • 3. 1.1.1. Khái niệm phần mềm Khá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áy Cấ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. 3
  • 4. 1.1.1. Khái niệm phần mềm 4
  • 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ống Cá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óa Cá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 5
  • 6. Nhóm chương trình Là 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ệu Phầ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, . . . 6
  • 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, … 7
  • 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 đổi Sự 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 8
  • 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ân Sả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 9
  • 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ụng Hệ thống thời gian thực Xuất hiện lưu trữ trực tuyến Nhiều dự án Phần mềm trở nên phức tạp thất bại Nhu cầu tăng cao Chi phí tăng Ngô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 10
  • 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án Mạng cục bộ, toàn cầu Bộ vi xử lý phát triển mạnh Phần mềm ngày càng phức tạp Sử dụng nhiều máy tính cá nhân, phần mềm nhúng Số 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 11
  • 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ạp UNIX: 4M dòng lệnh Window2K: ~100M dòng lệnh Lý 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. 12
  • 13. 1.1.2. Tiến hoá của phần mềm(6) Chi phí cho phần mềm cao Phầ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 13
  • 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 14
  • 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” 15
  • 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. 16
  • 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ình Chươ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 17
  • 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 được Chấ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ửa Phầ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 cao Lỗ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). 18
  • 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 19
  • 20. 1.1.3. Phân loại phần mềm Phầ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ệu Phân tích dữ liệu Kiểm soát, điều khiển Điều phối. – Ví dụ: Phần mềm đa phương tiện. 20
  • 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. 21
  • 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,... 22
  • 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 23
  • 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. 24
  • 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ới Tí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ển Tính hợp tác (interoperability): dễ hợp tác với các phần mềm khác Sản xuất hiệu quả (productivity): tiến trình sản xuất phần mềm phải hiệu quả. 25
  • 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ói Tí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ển Hiểu rõ ảnh hưởng của các quyết định – Đối với khách hàng Hiểu rõ tiến độ phát triển Hiểu rõ ảnh hưởng của các quyết định 26
  • 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ả 27
  • 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 cao Có đầy đủ tài liệu – Có tuổi thọ cao – Đem lại hiệu quả kinh tế 28
  • 29. 1.1.4. Chất lượng phần mềm(7) Tính tin cậy Phần mềm không có khiếm khuyết lỗi lập trình lỗ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 29
  • 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ứng Bộ nhớ trong Tốc độ Bộ nhớ ngoài Tố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ị 30
  • 31. 1.1.4. Chất lượng phần mềm(9) Tính dễ dùng 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 31
  • 32. 1.1.4. Chất lượng phần mềm(10) Nhận xét Khó tối ưu đồng thời các thuộc tính hiệu quả >< dễ bảo trì, dễ sử dụng Chi phí cho tối ưu là không tuyến tính giá thành hiệu năng => Giá cả chi cho việc tối ưu PM phải hợp lý 32
  • 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 33
  • 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 PM Khô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ềm Giao 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ý 34
  • 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% 35
  • 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 ) 36
  • 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ém Sự 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. 37
  • 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 đó. 38
  • 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. 39
  • 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. 40
  • 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. 41
  • 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 42
  • 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! 43
  • 44. 1.2. Công nghệ phần mềm 1.2.1. Khái niệm 1.2.2. Đặc điểm công nghệ phần mềm 1.2.3. Một số nguyên tắc CNPM 1.2.4. Các hoạt động chính trong CNPM 44
  • 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). 45
  • 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ó. 46
  • 47. 1.2.1. Mục đích Mụ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… 47
  • 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ụng Phần mềm phải đạt được các tiêu chuẩn về chất lượng Giá thành phải nằm trong giới hạn đặt ra Tiến độ xây dựng phần mềm phải đảm bảo 48
  • 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. 49
  • 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. 50
  • 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) 51
  • 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) 52
  • 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ỏ theo Thời gian: lập kế hoạch Khái niệm: giao diện / thuật toán Xử lý: chia các xử lý con 53
  • 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ểu Dễ 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óa Liên kết lỏng lẻo (low coupling) Kết cấu cao (high cohesion) 54
  • 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ụng Mô 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ứng Xây dựng tài liệu Đặc tả bởi điều kiện trước và sau 55
  • 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ặp Trong đặc tả yêu cầu Trong ngữ cảnh sử dụng Khả năng về công nghệ 56
  • 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àng Có thể sử dụng các công cụ có sẵn như sử dụng design patterns Chi phí có thể tăng cao 57
  • 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 cho Phát triển một sản phẩm – Một đặc tả / một kiến trúc Mô hình phát triển – Mô hình lặp 58
  • 59. 1.2.4. Các hoạt động chính trong CNPM 1. Xác định 2. Phát triển 3. Kiểm thử 4. Tiến hoá 59
  • 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ống Vai 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ầu Xác định yêu cầu chi tiết (chức năng, ràng buộc) đặc tả yêu cầu 60
  • 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ục xử 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) 61
  • 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 test Black test Integration test Gray test System test White test 62
  • 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ỗi Sửa lỗi phần mềm Thích nghi Sửa đổi để thích nghi với môi trường thay đổi Nâng cao Thêm các chức năng mới, hoàn thiện chức năng cũ 63
  • 64. 1.2.4. Các hoạt động chính trong CNPM Ph−¬ng ph¸p, kü Tªn pha Néi dung nghiÖp vô thuËt X¸c ®Þnh §Æc t¶ yªu cÇu ng−êi dïng Ph©n tÝch cÊu tróc yªu cÇu X¸c ®Þnh yªu cÇu phÇn mÒm hãa ThiÕt kÕ c¬ b¶n phÇn mÒm ThiÕt kÕ ThiÕt kÕ cÊu tróc ngoµi cña phÇn ThiÕt kÕ cÊu tróc hãa hÖ thèng mÒm Lµ thiÕt kÕ chi tiÕt: ThiÕt kÕ cÊu LËp tr×nh cÊu tróc ThiÕt kÕ tróc bªn trong cña phÇn mÒm (®¬n Ph−¬ng ph¸p Jackson ch−¬ng tr×nh vÞ ch−¬ng tr×nh hoÆc m«®un) 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 KiÓm tra chÊt l−îng phÇn mÒm ®· Ph−¬ng ph¸p kiÓm chÊt l−îng ph¸t triÓn thö ch−¬ng tr×nh Sö dông, vËn hµnh phÇn mÒm ®· VËn hµnh ph¸t triÓn. BiÕn ®æi, ®iÒu chØnh Ch−a cô thÓ B¶o tr× phÇn mÒm Phương pháp luận và kỹ thuật cho từng pha 64
  • 65. Kết luận Phầ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ống Phá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. 65
  • 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? 66
  • 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) 67