công nghệ phần mềm (software engineering) · pdf filecnpm/nn 1 công nghệ...

55
1 CNPM/NN Công nghPhn mm (Software Engineering) Tài liu tham kho Software Engineering - A practitioner’s approach, R.S. Pressman, McGraw-Hill (ebook) Ian Sommerville’s , “Software Engineering 7th Ed.” Nhp môn knghphn mm; Ngô Trung Vit, Nguyn kim Ánh; NXB Khoa hc và kthut http://www.mhhe.com/pressman

Upload: dangkhue

Post on 07-Feb-2018

237 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

1CNPM/NN

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

Tài liệu tham khảoSoftware 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ậthttp://www.mhhe.com/pressman

Page 2: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

2CNPM/NN

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ềmVai trò của kỹ sư phần mềm trong việc xây dựng phần mềmCung 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…

Page 3: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

3CNPM/NN

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)

Page 4: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

4CNPM/NN

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.

Page 5: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

5CNPM/NN

CÔNG NGHỆ PHẦN MỀM

Chương 1

Tổng quan

MÔN HỌC

TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP TP.HCM

Page 6: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

6CNPM/NN

Nội dung

1. Phần mềm2. Công nghệ Phần mềm.3. Lịch sử phát triển của Công nghệ Phần mềm.4. Những thách thức trong Công nghệ phần mềm.5. Một số thuật ngữ công nghệ phần mềm.6. Nghề nghiệp.7. Các nhận thức sai lầm.

Page 7: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

7CNPM/NN

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…

Page 8: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

8CNPM/NN

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

Phần mềm là một sản phẩmDù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ẩmHỗ 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).

Page 9: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

9CNPM/NN

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

Phần mềm là tập hợp những mục hay là đối tượng mà hình thành một cấu hình bao gồm:

• Chương trình. • Tài liệu.• Dữ liệu…

Page 10: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

10CNPM/NN

sourcecodes

objectobjectcodes

plans

reports

manuals

documentsdocuments

test suitestest suites prototypesprototypes

data

test results

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

Page 11: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

11CNPM/NN

Đặc điểm của phần mềm?

Phần mềm phải được tạo bằng cách phát triển (develop or engineer) chứ không phải đơn thuần là sản xuất (manufacture).Phần mềm không hao mòn.Phần mềm thì phức tạp, chi phí cho những thay đổi (change) ở những giai đoạn sau rất cao.Hầu hết phần mềm vẫn phải xây dựng bằng cách tùy biến.

Page 12: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

12CNPM/NN

Lỗi theo thời gian

Page 13: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

13CNPM/NN

Bản chất của phần mềm

Phần mềmPhần mềm không sờ thấy được.Phần mềm dễ dàng nhân bản.Phần mềm khó đánh giá về chất lượng.Phần mềm dễ dàng thay đổi.Phần mềm không hao mòn.

Nhận xétNhiề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

Page 14: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

14CNPM/NN

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…

Page 15: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

15CNPM/NN

Những loại phần mềm

Phần mềm hệ thống.Phần mềm ứng dụng.Phần mềm khoa học kỹ thuật.Phần mềm nhúng. Phần mềm máy tính cá nhân.Ứng dụng Web.Phần mềm AI (Artificial Intelligence)…

Page 16: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

16CNPM/NN

1.161.16

Page 17: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

17CNPM/NN

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ựcCô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)

Page 18: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

18CNPM/NN

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

Page 19: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

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

19

Phần mềm(Hệ thống)

(Chương trình, Tài liệu, cấu hình...)

Kỹ sưPhần mềm

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

Công nghệ phần mềmNguyê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.

Page 20: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

20CNPM/NN

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?

Page 21: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

21CNPM/NN

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

Page 22: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

22CNPM/NN

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

Page 23: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

23CNPM/NN

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.

Page 24: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

24CNPM/NN

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

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

Page 25: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

25CNPM/NN

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.

Page 26: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

26CNPM/NN

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.

Page 27: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

27CNPM/NN

Vấn đề thời gian.Vấn đề chi phí.Vấn đề phát hiện lỗi trước khi chuyển giao.Vấn đề đo lường.

Các vấn đế về phần mềm?

Page 28: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

28CNPM/NN

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.

Page 29: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

29CNPM/NN

Ariane 5

Page 30: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

30CNPM/NN

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

Page 31: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

31CNPM/NN

Qui trình phần mềmQui 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”).

Page 32: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

UML/NN32

Phân tích, thiết kếPhân tích

Phân tích viên phân tích hiện trạng và yêu cầu của khách hàngMô hình hệ thốngLập bảng các chức năng của hệ thống

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

Xác định phạm vi của hệ thống

Thiết kếThiết kế dữ liệu, xử lý, giao diệnThiết kế kiến trúcThiết kế thành phần…

Page 33: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

UML/NN33

Hiện thực, Kiểm thử, Triển khaiHiện thực: Tạo mã theo thiết kếKiểm thử:

Kiểm thử đơn vịKiểm thử tích hợpKiểm thử thẩm tra hay kiểm thử tính năngKiểm thử hệ thống

Triển khai hệ thống:Giải pháp phần cứngCài đặt phần mềmChuyển giao công nghệ

Hướng dẫn sử dụng: đào tạo, tài liệu hướng dẫnBảo trì và tiến hóa

Page 34: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

Các hoạt động

34CNPM/NN

CommunicationPlanningModeling

Analysis of requirementsDesign

ConstructionCode generationTesting

Deployment

Page 35: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

35CNPM/NN

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

Page 36: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

CASE

Page 37: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

37CNPM/NN

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.

Page 38: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

38CNPM/NN

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.

Page 39: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

39CNPM/NN

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

Page 40: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

40CNPM/NN

Chất lượng và Stakeholder

QUALITY SOFTWARE

Developer:easy to design; easy to maintain; easy to reuse its parts

User: easy to learn; efficient to use; helps get work done

Customer:solves problems at an acceptable cost in terms of money paid and resources used

Development manager:sells more and pleases customers while costing less to develop and maintain

Page 41: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

41CNPM/NN

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.

Page 42: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

42CNPM/NN

6. Nghề nghiệp

Kỹ sư phần mềmCá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ó.

Page 43: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

43CNPM/NN

Kỹ năngPhân tích thiết kế hệ thống, mô hình hóaSử dụng bản mẫu (prototype)Chọn phần cứng, phần mềmQuản lý cấu hình, lập sơ đồ và kiểm soát tiến trìnhLựa chọn ngôn ngữ và phát triển chương trìnhXác định, đánh giá, cài đặt, chọn phương pháp, công cụ CASEKiể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

Page 44: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

Contemporary IS Services Organization

Page 45: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

45CNPM/NN

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…).

Page 46: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

46CNPM/NN

…Tester

Đối với Kiểm thử phần mềm có 2 năm kinh nghiệm trở lên (Senior Tester):

Lập kế hoạch kiểm thử.Phụ trách một nhóm tester, xem xét các test case do các tester tạo ra, tính toán và phân tích các chỉ số liên quan đến việc kiểm thử.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ử.

Page 47: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

47CNPM/NN

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.

Page 48: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

48CNPM/NN

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ự án97% sự thành công của dự án là nhờ vào PM.

Page 49: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

49

Page 50: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

50CNPM/NN

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

Page 51: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

51CNPM/NN

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 200 chuyên viên ITCông viên phần mềm Quang Trung (QTSC): 2000, 61 doanh nghiệp, 3800 chuyên viênCần Thơ Software Park – CSP: 2001, 5 doanh nghiệp, 60 ngườiE-Town: 2001, 20 doanh nghiệp IT, 1000 làm về ITHuế Software Park: 2001Unisoft: 2003, 5 doanh nghiệp thành viên, 100 người

Page 52: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

52CNPM/NN

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.

Page 53: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

53CNPM/NN

Những sai lầmTôi không thể nói chúng tôi đang làm tốt thế nào cho đến khi đến khi thực thi những phần của nó.

Kiểm tra hình thức cho một thông tin tốt và đưa tới thành công cho những dự án tốt.

Page 54: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

54CNPM/NN

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.

Page 55: Công nghệ Phần mềm (Software Engineering) · PDF fileCNPM/NN 1 Công nghệ Phần mềm (Software Engineering) Tài liệu tham khảo Software Engineering - A practitioner’s

55CNPM/NN