1. Trang chủ
  2. » Giáo Dục - Đào Tạo

tài liệu Công nghệ Phần mềm (Software Engineering)

55 408 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 55
Dung lượng 5,3 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Mục tiêu„ Những luồng công việc và sự kiện trong nỗ lực phát triển phần mềm „ Vai trò của kỹ sư phần mềm trong việc xây dựng phần mềm „ Cung cấp những kiến thức nền tảng, tạo điều kiện c

Trang 1

Công nghệ Phần mềm (Software Engineering)

Tài liệu tham khảo

„ Software Engineering - A practitioner’s approach, R.S Pressman, McGraw-Hill (ebook)

„ Ian Sommerville’s , “Software Engineering 7th Ed.”

„ Nhập môn kỹ nghệ phần mềm; Ngô Trung Việt, Nguyễn kim Ánh; NXB Khoa học và kỹ thuật

„ http://www.mhhe.com/pressman

Trang 2

Mục tiêu

„ Những luồng công việc và sự kiện trong nỗ lực phát triển phần mềm

„ Vai trò của kỹ sư phần mềm trong việc xây dựng phần mềm

„ Cung cấp những kiến thức nền tảng, tạo điều kiện cần thiết để sinh viên vận dụng trong thực tế sản xuất phần mềm: phân

tích, thiết kế, tạo code, kiểm thử và bảo trì, cũng như các công việc hỗ trợ như: Quản lý chất lượng, quản lý dự án…

Trang 3

Kế hoạch học

„ Thời gian: 45 tiết (9 tuần x 5)

„ Kiểm tra

„ Điểm giữa học kỳ được tính 20% (tuần 5 – tự luận)

„ Điểm tiểu luận được tính 30% (nhận vào tuần thứ 2)

„ Điểm thi kết thúc học phần được tính 50% (trắc nghiệm)

Trang 4

Yêu cầu

„ Có kiến thức về ngôn ngữ lập trình và đã từng lập trình các ứng dụng cơ bản, cấu trúc dữ liệu và giải thuật

„ Có hiểu biết về mạng máy tính, Cơ sở dữ liệu

Trang 7

1 Phần mềm (Software)?

„ Sản phẩm phần mềm là những chương trình điều khiển máy tính để thực hiện các chức năng hữu ích, nó thường bao gồm các tài liệu hướng dẫn

„ Trong sản xuất phần mềm, các tài liệu đi theo với phần mềm

là hết sức cần thiết Các tài liệu đó là: tài liệu phân tích, tài liệu

về kiến trúc phần mềm, các dữ liệu kiểm thử (testing), các tài liệu về các thành phần sử dụng lại, tài liệu theo dõi các phiên bản…

„ Ngoài việc cung cấp phần mềm, đơn vị sản xuất thường kèm theo các công việc như: cài đặt, bảo trì, nâng cấp, huấn

luyện…

Trang 8

Phần mềm dùng làm gì?

„ Phần mềm là một sản phẩm

„ Dùng cho tính toán.

„ Tạo, quản lý, thu nhận, biến đổi, thể hiện hay là truyền thông tin.

„ Phần mềm là một phương tiện tạo sản phẩm

„ Hỗ trợ hay cung cấp trực tiếp các chức năng cho hệ thống.

„ Điều khiển những chương trình khác (HĐH).

„ Thực hiện truyền thông (PM Mạng).

„ Giúp cho việc tạo các chương trình khác (Tool, Framework).

Trang 10

source codes

object

reports

manuals documents

data test results

Phần mềm gồm những gì?

Trang 12

Lỗi theo thời gian

Trang 13

„ Nhiều phần mềm thiết kế nghèo nàn đang gây lỗi.

„ Nhu cầu phần mềm không ngừng gia tăng

„ Chúng ta đang ở trong tình trạng khủng hoảng không

ngừng (‘SW crisis’)

Chúng ta phải học để phát triển phần mềm

Trang 14

Hai loại sản phẩm phần mềm

„ Các sản phẩm phần mềm được chia thành 2 nhóm:

„ Sản phẩm đại trà (Generic Product)

„ Sản phẩm theo đơn hàng (Bespoke Product hoặc

Customised Product)

„ Một phần mềm mới có thể được tạo ra bằng cách phát triển các chương trình mới, thay đổi và điều chỉnh các hệ thống phần mềm đại trà hoặc tái sử dụng lại các phần

mềm đã tồn tại…

Trang 16

1.16

Trang 17

2 Công nghệ phần mềm?

„ Công nghệ phần mềm là sự thiết lập và sử dụng những

nguyên lý công nghệ đúng đắn nhằm đạt được phần mềm có tính kinh tế tức là phần mềm có tính tin cậy và làm việc hiệu quả trên những máy móc thực

„ Công Nghệ Phần Mềm (software engineering): là sự áp dụng những phương pháp có tính hệ thống, có qui tắc và có thể

định lượng được nhằm phát triển, vận hành và bảo trì phần

mềm, tức là áp dụng những kiến thức công nghệ vào phần

mềm (theo IEEE)

Trang 18

„ Software engineering is the establishment and use of

sound engineering principles in order to obtain

economically software that is reliable and works efficiently

on real machines

„ Software engineering is the application of a systematic,

disciplined, quantifiable approach to the development,

operation and maintenance of software, that is , the

application of engineering to software [IEEE90a]

Software Engineering?

Trang 19

Phát triển sản phẩm phần mếm

Công nghệ phần mềm

Nguyên tắc :

1 Tập trung vào vào việc phát triển hệ thống phần mềm chất lượng

cao với chi phí hiệu quả.

2 Tập trung vào tất cả các khía cạnh của sản phẩm phần mềm

• Từ: Đặc tả.

• Tới: Phát hành và sử dụng.

Trang 20

„ Chi phí phần mềm chiếm phần lớn trong những hệ

thống dựa vào phần mềm

„ Đối với những hệ thống có chu kỳ sống dài chi phí

bảo trì có thể cao hơn chi phí phát triển nhiều lần

„ Công nghệ phần mềm thì bị chi phối bởi lợi nhuận.

Tại sao phải kỹ nghệ phần mềm?

Trang 21

Công nghệ học trong CNPM ?

„ Như các ngành công nghệ học khác, CNPM cũng lấy các

phương pháp khoa học làm cơ sở

„ 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 thành phương pháp luận và hình thành nên CNPM

„ Toàn bộ qui trình phát triển phần mềm gắn liền với khái niệm chu kỳ sống phát triểncủa phần mềm (Software development Life Cycle).

Trang 22

3 Lịch sử phát triển CNPM…

„ Năm 1968: Tại Tây Đức, Hội nghị khoa học của NATO đã đưa

ra từ “Software Engineering” Bắt đầu bàn luận về khủng

khoảng phần mềm và xu hướng hình thành CNPM như một ngành riêng

„ Giữa những năm 1970: Hội nghị quốc tế đầu tiên về CNHPM được tổ chức (1975): International Conference on SE (ICSE)

„ Nửa sau những năm 1970: Cuộc “cách tân sản xuất phần

mềm” đã bắt đầu trên phạm vi các nước công nghiệp

„ Nửa đầu những năm 1980: Xuất hiện các sản phẩm phần

mềm và các công cụ khác nhau làm tăng năng suất sản xuất phần mềm đáng kể, phát triển các kỹ thuật bảo trì

Trang 23

Lịch sử phát triển CNPM

„ Nửa cuối những năm 1980 đến nay: Chất lượng phần mềm tập trung chủ yếu ở năng suất, độ tin cậy và việc bảo trì

Nghiên cứu hỗ trợ tự động hóa sản xuất phần mềm Nhiều

trung tâm, viện nghiên cứu CNPM ra đời Các trường đưa vào giảng dạy SE

„ Hiện nay:

„ Công nghiệp hóa sản xuất phần mềm bằng cách đưa những kỹ thuật công nghệ học (Engineering techniques) thành cơ sở khoa học của CNPM.

„ Vận dụng những lý luận trong sản xuất phần mềm và áp dụng các phương pháp luận một cách nhất quán.

„ Tăng cường nghiên cứu và tạo công cụ trợ giúp sản xuất phần mềm.

Trang 24

Sự tiến triển của các phương pháp phát triển PM

„ 1970

„ Phương pháp luận về quy trình thiết kế phần mềm với phương pháp phân chia môđun và thiết kế trong từng môđun.

„ Phát triển: nửa đầu 1980

„ Ngôn ngữ đối thoại đơn giản (4GL, DB SQL).

„ Hệ trợ giúp: Hệ trợ giúp kiểm thử; Hệ trợ giúp quản lý thư viện mã; Hệ trợ giúp tái sử dụng.

„ Biến đổi: nửa cuối 1980 đến nay

„ Đưa ra các môi trường mới về phát triển phần mềm Triển khai mới về kết hợp giữa CNPM và CN Tri thức (Knowledge

Engineering).

„ Triển khai những môi trường bậc cao về phát triển phần mềm;

Tự động hóa sản xuất phần mềm; Tạo bản mẫu (Prototyping); Lập trình hướng đối tượng - OOP; Hướng sử dụng thành phần (component).

Trang 25

4 Những thách thức đối với CNPM…

„ Cứ 6 đề án triển khai thì có 2 bị huỷ bỏ.

„ Trung bình thời gian thực hiện thực tế bị kéo dài 50% (cá biệt 200-300%).

„ Các đề án lớn dễ thất bại.

„ 3/4 các hệ thống lớn có lỗi khi thực thi.

„ Quá trình phân tích yêu cầu (5% công sức): để lại 55% lỗi, có 18% phát hiện được.

„ Quá trình thiết kế (25% công sức): để lại 30% lỗi, có 10% phát hiện được.

„ Quá trình mã hoá, kiểm tra và bảo trì: để lại 15% lỗi, có 72%

phát hiện được.

Trang 26

Những thách thức đối với CNPM

Nguyên nhân

„ Phát triển phần mềm giống như một nghệ thuật, chưa được xem như một ngành khoa học

„ Quá trình phát triển phần mềm chưa được thống nhất

„ Phải viết lại s/w mỗi khi có sự thay đổi về ngôn ngữ, h/w hoặc o/s

„ Chưa đạt được 1 chuẩn cho việc đo lường hiệu suất và sản phẩm

„ Độ phức tạp của phần mềm quá cao đối với 1 “kiến trúc sư”

„ Kỹ thuật đặc tả để lại sự nhập nhằng trong các yêu cầu phần mềm

„ Làm việc nhóm không đúng kỷ luật gây ra các lỗi

Trang 28

Những thách thức chính phải đối mặt

„ Thách thức về hệ thống cũ (The Legacy Challenge)

„ Thách thức về tính không đồng nhất (The Heterogeneity

Challenge)

„ Thách thức về phát hành (The Delivery Challenge) và độ tin cậy

Trang 29

Ariane 5

Trang 30

Các tầng trong công nghệ phần mềm

Software Engineering

a “quality” focus

process methods tools

5 Một số thuật ngữ công nghệ phần mềm

Trang 31

Qui trình phần mềm

„ Qui trình (process) phần mềm

„ Gồm một tập hợp các hoạt động được tổ chức mà mục đích của nó là xây dựng và phát triển phần mềm.

„ Quy trình phần mềm xác định một bộ khung và tiêu chuẩn để triển khai công nghệ phần mềm.

„ Tất cả các qui trình đều có những bước 5 cơ sở: phân tích;

thiết kế; hiện thực mã; kiểm thử; triển khai.

„ Qui trình: Phải thực hiện những công việc gì?

„ Phương pháp (method): chỉ ra cách thực hiện những công việc cụ thể (“how to”)

Trang 32

„ Yêu cầu chức năng

„ Yêu cầu phi chức năng

Trang 33

Hiện thực, Kiểm thử, Triển khai

„ Hiện thực: Tạo mã theo thiết kế

„ Chuyển giao công nghệ

„ Hướng dẫn sử dụng: đào tạo, tài liệu hướng dẫn

„ Bảo trì và tiến hóa

Trang 35

CASE (Computer Aided Software Engneering)

„ Các công cụ CASE thường được sử dụng để hỗ trợ các

hoạt động trong quy trình xây dựng phần mềm Có hai loại công cụ CASE:

„ Upper-CASE: công cụ để hỗ trợ các hoạt động đầu tiên như đặc tả yêu cầu và thiết kế

„ Lower-CASE: công cụ để hỗ trợ các hoạt động sau như lập

trình, gỡ lỗi và kiểm thử.

Trang 36

CASE

Trang 37

Hạn chế của công cụ CASE

„ Công nghệ phần mềm đòi hỏi khả năng suy nghĩ sáng tạo

điều này hầu như không thể được tạo tự động

„ Công nghệ phần mềm là hoạt động nhóm, tốn nhiều thời gian cho những tương tác nhóm mà kỹ thuật CASE không thể hỗ trợ tốt

Trang 38

Những yêu cầu đối với phần mềm

Phần mềm phải đáp ứng

„ Khả năng bảo trì (Maintainability): phần mềm có thể duy trì hoạt động, có thể điều chỉnh và mở rộng để thoả mãn những yêu cầu luôn thay đổi

„ Mức độ tin cậy (Reliability-Dependability): phần mềm phải

được tin cậy, bảo mật và chính xác

„ Hiệu quả (efficiency): phần mềm không nên sử dụng lãng phí tài nguyên của hệ thống

„ Khả năng được chấp nhận (acceptability-Usability): người sử dụng phải chấp nhận phần mềm Điều đó có nghĩa là nó phải

dễ hiểu, sử dụng được và tương thích với các hệ thống khác

Trang 39

Các nhân tố chất lượng

Trang 40

Chất lượng và Stakeholder

QUALITY SOFTWARE

Development manager:

sells more and pleases customers while costing less

to develop and maintain

Trang 41

CNPM và Khoa học máy tính, Công nghệ hệ thống

„ Khoa học máy tính đề cập tới lý thuyết và những vấn đề cơ bản; còn công nghệ phần mềm đề cập tới các hoạt động xây dựng và đưa ra một phần mềm hữu ích

„ Khi sự phát triển của phần mềm trở lên mạnh mẽ thì các lý thuyết của khoa học máy tính vẫn không đủ để đóng vai trò là nền tảng hoàn thiện cho công nghệ phần mềm

„ Công nghệ hệ thống liên quan tới tất cả các khía cạnh của

quá trình phát triển hệ thống dựa máy tính bao gồm: phần

cứng, phần mềm, và công nghệ xử lý Công nghệ phần mềm chỉ là một phần của Công nghệ hệ thống

Trang 42

6 Nghề nghiệp

Kỹ sư phần mềm

„ Các kỹ sư phần mềm nên tuân theo một phương pháp luận có

hệ thống và có tổ chức trong công việc của họ Đồng thời, họ nên sử dụng các công cụ và kỹ thuật thích hợp với vấn đề cần giải quyết, các ràng buộc và tài nguyên sẵn có

Trang 43

Kỹ năng

ƒ Phân tích thiết kế hệ thống, mô hình hóa

ƒ Sử dụng bản mẫu (prototype)

ƒ Chọn phần cứng, phần mềm

ƒ Quản lý cấu hình, lập sơ đồ và kiểm soát tiến trình

ƒ Lựa chọn ngôn ngữ và phát triển chương trình

ƒ Xác định, đánh giá, cài đặt, chọn phương pháp, công cụ CASE

ƒ Kiểm tra, kiểm Thử (testing)

ƒ Lựa chọn và sử dụng kỹ thuật bảo trì phần mềm

ƒ Đánh giá và quyết định khi nào loại bỏ và nâng cấp các ứng dụng

Trang 44

Contemporary IS Services Organization

Trang 45

Tester (Người kiểm thử)

„ Nghiên cứu yêu cầu của khách hàng, các chi tiết yêu cầu về phần mềm và cách đánh giá.

„ Lập kế hoạch kiểm thử (test plan) dựa trên phân tích rủi ro, mức độ quan trọng, tần suất sử dụng và xác định các yếu tổ liên quan như: phương pháp, đo lường, nguồn lực, điều kiện kiểm tra…

„ Tạo test cases/specs/scripts.

„ Tiến hành test dựa trên test case và ghi báo cáo (Thành công hoặc Lỗi).

„ Log các lỗi tìm được và lập báo cáo (test report).

„ Phân tích các biến đổi (change), cập nhật các tài liệu kiểm thử (Test plan, test cases…).

Trang 46

„ Nghiên cứu automation test tools và áp dụng vào test dự án

„ Đề xuất cải tiến qui trình kiểm thử, lập lưu đồ, hướng dẫn, biểu mẫu… để thực hiện và quản lý việc kiểm thử.

Trang 47

QA (Quality Assurance - bảo đảmchất lượng)

„ Các nhân viên QA sẽ kiểm tra chất lượng công việc trong cả quá trình sản xuất, ví dụ xem xét tài liệu yêu cầu, tài liệu thiết

kế hay xem xét mã nguồn Họ cũng xem xét các ý kiến phản hồi của khách hàng và cách thức các đội dự án xử lý vấn đề

„ QA thu thập thông tin của các dự án, các chỉ báo chất lượng của dự án, từ đó vẽ nên bức tranh chung về tình hình chất

lượng sản xuất của cả công ty

„ Công việc của QA vừa mang tính chất giám sát, vừa mang tính hỗ trợ cho hoạt động của dự án

Trang 48

Người Quản lý dự án (Project Manager)

„ Thỏa mãn các mục tiêu phạm vi, thời gian, chi phí và chất lượng dự án

„ Thỏa mãn được nhu cầu và mong đợi của mọi người

có liên quan hoặc bị ảnh hưởng bởi dự án.

„ PM thực hiện các nhiệm vụ chính sau: lập kế hoạch, tạo lịch biểu, cộng tác, và giao tiếp để đạt mục tiêu của dự án

„ 97% sự thành công của dự án là nhờ vào PM.

Trang 50

Các kỹ năng cần thiết của người Quản lý Dự án.

„ Kỹ năng giao tiếp: lắng nghe, thuyết phục.

„ Kỹ năng tổ chức: lập kế hoạch, xác định mục tiêu, phân tích.

„ Kỹ năng xây dựng nhóm: thấu hiểu, thúc đẩy, tinh thần đồng

đội

„ Kỹ năng lãnh đạo: năng động, có tầm nhìn, biết giao nhiệm

vụ, lạc quan

„ Kỹ năng đối phó: linh hoạt, sáng tạo, kiên trì, chịu đựng.

„ Kỹ năng công nghệ: kinh nghiệm, kiến thức về dự án

Trang 51

Các khu công nghiệp tập trung (2005)

„ Sài gòn Software Park – SSP: thành lập năm 2000, 15 doanh nghiep thành viên, 500 người làm việc

„ Đà Nẵng Software Park – DSP: 2001, 9 doanh nghiệp, trên

„ E-Town: 2001, 20 doanh nghiệp IT, 1000 làm về IT

„ Huế Software Park: 2001

„ Unisoft: 2003, 5 doanh nghiệp thành viên, 100 người

Trang 52

7 Các nhận thức sai lầm

„ Tôi dễ dàng biến đổi phần mềm

„ Thực tế: Những thay đổi yêu cầu là nguyên nhân chính làm giảm giá trị phần mềm.

„ Tôi có thể giải quyết vấn đề lịch biểu bằng cách thêm người

„ Thực tế: Nó có thể đòi hỏi gia tăng nỗ lực phối hợp làm giảm

hiệu suất.

„ Định luật Brooks: “Thêm người vào một Dự án phần mềm bị

chậm thì chỉ làm cho nó chậm hơn”.

„ Chỉ cần xem xét sơ lược các yêu cầu, chúng tôi có thể bắt

đầu viết code

„ Thực tế: đó thường là nguyên nhân chính gây ra lỗi.

Trang 54

Những sai lầm

„ Phần quan tâm hầu như duy nhất là mã

„ Tài liệu, thông tin kiểm thử và cấu hình phần mềm cũng là

những phần then chốt trong việc chuyển giao.

„ Lập trình giỏi thì hầu như là sẽ tạo được phần mềm chất

lượng

„ Những dự án phần mềm được hoàn tất bởi những nhóm, không phải cá nhân, để thành công cần nhiều hơn là tạo mã.

„ Tạo mã là công việc nặng nhọc nhất

„ Tạo mã: ít hơn 10% công sức.

Ngày đăng: 15/03/2015, 21:20

TỪ KHÓA LIÊN QUAN

w