Công nghệPhần mềm (software engineering)Công nghệphần mềm là sựthiết lập và...

64
1 CNPM/NN Công ngh Công ngh Ph Ph n m n m m (software engineering) m (software engineering) Tài liu tham kho Software Engineering - A practitioner’s approach, R.S. Pressman, McGraw-Hill (ebook) KK Aggarwal, Yogesh Singh, Software Engineering, 2nd Ed. New Age Publications, 2005 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

Transcript of Công nghệPhần mềm (software engineering)Công nghệphần mềm là sựthiết lập và...

Page 1: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

1CNPM/NN

Công nghCông nghệệ PhPhầần mn mềềm (software engineering)m (software engineering)

Tài liệu tham khảo

Software Engineering - A practitioner’s approach, R.S. Pressman, McGraw-Hill (ebook)KK Aggarwal, Yogesh Singh, Software Engineering, 2nd Ed. New Age Publications, 2005Ian 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)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 (sound) nhằm đạt được

2CNPM/NN

MMụục tiêuc 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 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)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 (sound) nhằm đạt được

3CNPM/NN

KKếế hohoạạch hch họọcc

Thời gian: 60 tiết (12 tuần x 5, 15 tuần x4 )Kiểm tra

Điểm giữa học kỳ được tính 20% (tuần 7, tuần 8)Điểm tiểu luận được tính 30% Điểm thi kết thúc học phần được tính 50%

Page 4: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

4CNPM/NN

Yêu cYêu cầầuu

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ảnCó khả năng áp dụng những cấu trúc dữ liệu và giải thuật.Có hiểu biết về kiến trúc máy tính, mạng máy tính.

Page 5: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

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)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 (sound) nhằm đạt được

6CNPM/NN

NNộội dungi dung

Phần mềm và Công nghệ Phần mềmLịch sử phát triển của Công nghệ Phần mềmNhững thách thức trong Công nghệ phần mềmMột số khái niệm trong Công nghệ Phần mềmNhững vấn đề thực tế trong xây dựng phần mềm

Page 7: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

7CNPM/NN

PhPhầần mn mềềm (Software)? 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ẫnTrong 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 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)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 (sound) nhằm đạt được

8CNPM/NN

PhPhầần mn mềềm dm dùùng lng lààm gm gìì??

Phần mềm là một sản phẩmDùng cho tính toánTạ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)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 (sound) nhằm đạt được

9CNPM/NN

PhPhầần mn mềềm gm gồồm nhm nhữững gng 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)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 (sound) nhằm đạt được

10CNPM/NN

sourcecodes

sourcecodes

objectcodesobjectcodes

plansplans

reportsreports

manualsmanuals

documentsdocuments

test suitestest suitesprototypesprototypes

datadata

test resultstest results

PhPhầần mn mềềm gm gồồm nhm nhữững gng gìì??

Page 11: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

11CNPM/NN

ĐĐặặc đic điểểm cm củủa pha phầần mn mềề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ònPhầ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

Page 12: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

12CNPM/NN

LLỗỗi theo thi theo thờời giani gian

idealized curve

change

actual curve

Failurerate

Time

increased failurerate due to side effects

Page 13: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

13CNPM/NN

The Nature of SW...The Nature of SW...

SW is intangible (không thể thấy được)Hard to understand development effort (nỗ lực)

SW is easy to reproduce (tái sản xuất)Cost is in its development

In other engineering products, manufacturing is the costly stage

Quality problems are hard to notice

Page 14: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

14CNPM/NN

The Nature of SW...The Nature of SW...

SW is easy to modifyPeople make changes without fully understanding it

SW does not ‘wear out’It deteriorates (hư hỏng) by having its design changed:

Erroneously (sai), orIn ways that were not anticipated (thấy trước), thus making it complex (phức tạp)

Page 15: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

15CNPM/NN

The Nature of SWThe Nature of SW

Conclusions (kết luận)Much SW has poor design and is getting worseDemand for SW is high and risingWe are in a perpetual (không dừng) ‘SWcrisis’We have to learn to ‘engineer’ SW

Page 16: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

16CNPM/NN

Hai loHai loạại si sảản phn phẩẩm phm phầần mn mềềmm

Các sản phẩm phần mềm được chia thành 2 loại:Sản phẩm đại trà (Generic Product) Sản phẩm theo đơn đặt 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 17: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

17CNPM/NN

NhNhữững long loạại phi phầần mn mềềmm

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

Page 18: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

18CNPM/NN

1.181.18

Page 19: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

19CNPM/NN

Software engineering is the establishment and use of sound engineering principles in order to obtain economically (về mặt kinh tế) software that is reliable and works efficiently on real machinesSoftware engineering is the application of a systematic (có hệ thống), disciplined (có kỷ luật), quantifiable approach to the development, operation and maintenance of software, that is , the application of engineering to software [IEEE90a]

SoftwareSoftware Engineering?Engineering?

Page 20: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

20CNPM/NN

Công nghCông nghệệ phphầần mn mềề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 (sound) 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ó kỷ luật 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 21: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

21CNPM/NN

Nền kinh tế của tất cả các quốc gia phát triển phụthuộc vào phần mềmNgày càng nhiều hệ thống được phần mềm điều khiểnChi tiêu cho phần mềm chiếm tỷ lệ đáng kể trong những quốc gia phát triển

Why Software Why Software Engineering?Engineering?

“Ideas and technological discoveries (khám phá) are the driving engines of economic growth” The Wall Street Journal

“In Modern Society (xã hội), the role of engineering is to provide systems and products that enhance (làm tăng) the material aspect (vẻ bề ngoài) of human life, thus making life easier, safer, more secure (an tâm) and more enjoyable” Richard Fairley and Mary Willshire

Page 22: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

22CNPM/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 chí phí phát triển nhiều lầnCông nghệ phần mềm thì bị chi phối bởi lợi nhuận

Why Software Why Software Engineering?Engineering?

Page 23: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

23CNPM/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 hóa thành phương pháp luận vàhình thành nên CNPMToà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 của phần mềm (Software Life Cycle)

Page 24: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

24CNPM/NN

LLịịch sch sửử titiếến trin triểển cn củủa CNPM a CNPM Nửa đầu 1960: ít quan tâm đến phần mềm, chủ yếu tập trung nâng cao tính năng và độ tin cậy của phần cứngGiữa những năm 1960: Phát triển hệ điều hành như phần mềm lớn (IBM OS/360, EC OS). Xuất hiện nhu cầu về quy trình phát triển phần mềm lớn và quy trình gỡ lỗi, kiểm thử trong phạm vi giới hạnNă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êngNửa đầu những năm 1970: Nhằm nâng cao chất lượng phần mềm, không chỉ có các nghiên cứu về lập trình, kiểm thử, mà có cả những nghiên cứu đảm bảo tính tin cậy trong quy trình sản xuất phần mềm. Kỹ thuật: lập trình cấu trúc hóa, lập trình môđun, thiết kế cấu trúc hóa…

Page 25: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

25CNPM/NN

LLịịch sch sửử titiếến trin triểển cn củủa CNPM a CNPM

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: Quan tâm đến mọi giai đoạn trong quy trình phát triển phần mềm, nhưng tập trung chính ở những giai đoạn đầu. 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ệpNửa đầu những năm 1980: Trình độ học vấn và ứng dụng CNPM được nâng cao, các công nghệ được chuyển vào thực tế. 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 26: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

26CNPM/NN

LLịịch sch sửử titiếến trin triểển cn củủa CNPM a CNPM

Nửa cuối những năm 1980 đến nay: Từ học vấn sang nghiệp vụ! 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 SEHiệ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 CNPMVậ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ánTă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 27: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

27CNPM/NN

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

Sơ khởi: nửa đầu 1970Khái niệm về tính môđun, cụ thể hóa từng bước trong phương pháp luận thiết kếN. Wirth: Chi tiết hóa từng giai đoạn. Thiết kế từ trên xuống. Lập trình môđun

Trưởng thành: nửa cuối 1970Phươ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.L.L. Constantine, 1974: Thiết kế cấu trúc hóa (phân chia môđun);E.W. Dijkstra, 1972: Lập trình cấu trúc hóa (trong môđun) . Phương pháp M.A. Jackson (1975) và J.D. Warnier (1974)Trừu tượng hóa dữ liệu: B.H. Liskov (1974);D.L. Parnas (1972)

Page 28: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

28CNPM/NN

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

Phát triển: nửa đầu 1980Triển khai các công cụ hỗ trợ phát triển phần mềm dựa trên các phương pháp và kỹ thuật đưa ra những năm 1970Bộ tạo chương trình (program generators; graphics-input editors, etc.)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; 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);Hỗ trợ phát triển phần mềm từ các hệ chuyên gia

Page 29: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

29CNPM/NN

NhNhữững thng tháách thch thứức đc đốối vi vớới CNPM 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ại3/4 các hệ thống lớn có lỗi khi thực thiQuá 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 đượcQuá trình thiết kế (25% công sức): để lại 30% lỗi, có 10% phát hiện đượcQuá trình mã hoá, kiểm tra và bảo trì: để lại 15% lỗi, có 72% phát hiện được

Page 30: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

30CNPM/NN

NhNhữững thng tháách thch thứức đc đốối vi vớới CNPM 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ọcQuá trình phát triển phần mềm chưa được thống nhấtPhải viết lại s/w mỗi khi có sự thay đổi về ngôn ngữ, h/w hoặc o/sChư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ềmLàm việc nhóm không đúng kỷ luật gây ra các lỗi

Page 31: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

31CNPM/NN

Why does it take so long to get software finished?Why are development costs so high?Why can’t we find all the errors before we give the software to customers?Why do we continue to have difficulty in measuring progress as software is being developed? …

NhNhữững câu hng câu hỏỏi vi vềề phphầần mn mềềm?m?

Page 32: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

32CNPM/NN

NhNhữững thng tháách thch thứức chc chíính phnh phảải đi đốối mi mặặtt

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 33: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

33CNPM/NN

ThTháách thch thứức vc vềề hhệệ ththốống cng cũũ

The challenge is the challenge of maintaining and updating legacy software in such a way that excessive (quá mức, thừa) cost are avoided and essential (cần thiết) business services continue to be delivered

Page 34: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

34CNPM/NN

ThTháách thch thứức vc vềề ttíính không đnh không đồồng nhng nhấấtt

Increasingly, systems are required to operate as distributed systems across networks that include different types of computer and with different kinds of support systems. The heterogeneity (khôngđồng nhất) challenge is the challenge of developing techniques to build dependable (đángtin cậy, có căn cứ) software which is flexible(mềm dẻo) enough to cope (đương đầu) with this heterogeneity

Page 35: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

35CNPM/NN

ThTháách thch thứức vc vềề phpháát ht hàành vnh vàà đ độộ tin ctin cậậyy

Many traditional software engineering techniques are time-consuming. The time they take is required to achieve (đạtđược) software quality. However, businesses today must be responsive (trả lời, đáp lại) and change very rapidly. Their supporting software must change equally rapidly. The delivery challenge is the challenge of shortening delivery times of large and complex systems without compromising (làm hại) system quality

Page 36: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

36CNPM/NN

Ariane 5Ariane 5

Page 37: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

37CNPM/NN

CCáác tc tầầng trong công nghng trong công nghệệ phphầần mn mềềmm

Software Engineering

a a ““qualityquality”” focusfocus

process modelprocess model

methodsmethods

toolstools

Page 38: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

38CNPM/NN

Qui trQui trìình phnh phầần mn mềềmmQui 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ềmTấ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 và bảo trì, tiến hóa (evolve)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 39: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

39CNPM/NN

CASE (Computer Aided Software Engneering)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 40: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

40CNPM/NN

HHạạn chn chếế ccủủa công ca công cụụ CASECASE

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ự độngCô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 41: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

41CNPM/NN

NhNhữững yêu cng yêu cầầu đu đốối vi vớới phi phầần mn mềề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 42: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

42CNPM/NN

CCáác nhân tc nhân tốố chchấất lưt lượợngng

Page 43: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

43CNPM/NN

ChChấất lưt lượợng vng vàà StakeholderStakeholder

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 44: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

44CNPM/NN

CNPM vCNPM vàà Khoa hKhoa họọc mc mááy ty tíính, Công nghnh, Công nghệệ hhệệ ththốốngng

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, nó có liên quan tới việc phát triển hạ tầng phần mềm (software infrastructure), việc điều khiển các ứng dụng và cơ sở dữ liệu trong hệ thống.

Page 45: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

45CNPM/NN

BBảản đn đồồ công nghcông nghệệ phphầần mn mềềmm

Page 46: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

46CNPM/NN

KKỹỹ sư ph sư phầần mn mềềmm

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

Page 47: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

47CNPM/NN

KKỹỹ năng 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ìnhĐịnh danh, đá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 48: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

48CNPM/NN

NghNghềề Tester ( KiTester ( Kiểểm thm thửử))Nghiên cứu yêu cầu của khách hàng, 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 các 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/scriptsTiế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 yêu cầu thay đổi và cập nhật các tài liệu kiểm thử (Test plan, test cases…)

Page 49: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

49CNPM/NN

NghNghềề Tester ( KiTester ( Kiểểm thm thửử phphầần mn mềềm)m)

Đố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 testPhụ trách một nhóm testers, test cases do các testers tạo ra Tính toán và phân tích các chỉ số liên quan đến testNghiê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ưu đồ, hướng dẫn, biểu mẫu… để thực hiện và quản lý việc kiểm thử.

Page 50: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

50CNPM/NN

NghNghềề QA (Quality AssuranceQA (Quality Assurance -- đđảảm bm bảảo cho chấất lưt lượợng)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 độ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 tyCô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 51: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

51CNPM/NN

NgưNgườời Qui Quảản lý dn lý dựự áán (n (PProject roject MManager)anager)

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: planning, scheduling, co-ordinating, 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 52: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

52CNPM/NN

CCáác kc kỹỹ năng c năng cầần thin thiếết ct củủa ngưa ngườời qui quảản trn trịị ddựự áán.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 53: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

53CNPM/NN

CCáác đc đặặc trưng quan trc trưng quan trọọngng

Page 54: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

54CNPM/NN

Công nghiCông nghiệệp php phầần mn mềềm Vim Việệt Namt Nam

Cả nước năm 2005 : 250 triệu USD, 2500 công ty đăng ký, 600 doanh nghiệp thực sự hoạt động.Thành phố HCM Năm 2005 có 340 công ty phần mềm đang hoạt động

88% sản xuất phần mềm, 73% cung cấp giải pháp, 37% gia công xuất khẩu, 26% hoạt động đại lý phần mềm nước ngoài 82% dưới 50 người, 18% trên 100 người

Hoạt độngSản xuất, kinh doanh dịch vụ phần mềmĐào tạo, tư vấn giải pháp phần mềmThiết kế website và dịch vụ thương mại điện tử

Page 55: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

55CNPM/NN

CCáác khu công nghic khu công nghiệệp tp tậập trung (2005)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 56: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

56CNPM/NN

Vinasa (HiVinasa (Hiệệp hp hộội doanh nghii doanh nghiệệp php phầần mn mềềm VN)m VN)

Báo cáo 9/2005. Những chiến lược đột pháThị trường Nhật Bản (2005: 35 triệu USD)Phát triển GameSản xuất phần mềm nhúngERP

Page 57: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

57CNPM/NN

NhNhữững sai lng sai lầầmm

Tôi dễ dàng biến đổi phần mềmThự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ể gia tăng nỗ lực phối hợp là giảm hiệu suất

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 58: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

58CNPM/NN

NhNhữững sai lng sai lầầmmTô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 59: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

59CNPM/NN

NhNhữững sai lng sai lầầmm

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ấtTạo mã: ít hơn 10% công sức

Page 60: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

60CNPM/NN

As long as (chỉ cần) there are good standards and clear procedures in my company, I shouldn’t be too concerned (lo lắng).

But the proof (chứng cớ, kiểm chứng) of the pudding (món ăn tráng miệng)

is in the eating; not in the Recipe (công thức làm món ăn)!

SW myths (nhSW myths (nhữững hoang tưng hoang tưởởng)ng)

Page 61: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

61CNPM/NN

As long as my SW engineers (!) have access to the fastest and the most sophisticated computer environments and state-of-the-art SW tools, I shouldn’t be too concerned.

The environment is only one of the several factors

that determine the quality of the end SW product!

SW mythsSW myths

Page 62: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

62CNPM/NN

A general statement of objectives is sufficient (đủ) to get started with the development of SW.

Missing/vague requirements (nhu cầu không rõràng) can easily be incorporated (kết hợp chặtchẽ)/detailed out as they get concretized (cụ thểhóa).Application requirements can never be stable (ổnđịnh); SW can be and has to be made flexible enough to allow changes to be incorporated as they happen.

SW mythsSW myths

Page 63: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

63CNPM/NN

Once the SW is demonstrated, the job is done.

Usually, the problems just begin!

SW mythsSW myths

Page 64: Công nghệPhần mềm (software engineering)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 (sound) nhằm đạt được

64CNPM/NN

Until the SW is coded and is available for testing, there is no way for assessing(đánh giá, ước định) its quality.

Usually, there are too many Usually, there are too many tiny bugs inserted at every stage tiny bugs inserted at every stage that grow in size and complexity that grow in size and complexity

as they progress thru further stages!as they progress thru further stages!

SW mythsSW myths