week 03-software process

31
1 Software Process Trình bày: ThS. Lâm Quang Vũ BMôn Công NghPhn Mm Khoa Công Nghệ Thông Tin Trường Đại Hc Khoa Hc TNhiên TPHCM TpHCM, 6/2005 (Tin trình phn mm – SP) 9/18/2006 Software Process 2 Tài liu tham kho SEI – www.sei.cmu.edu OpenCourseWare - MIT Bài ging Software Engineering ca CMU, UIUC Bài ging CNPMNC – TS Trn Đan Thư Lun Văn Thc Sĩ – “Nghiên cu và vn hành các tiến trình phn mm hu dng”, ThS Lâm Quang Vũ Các bài báo và các thông tin kho sát tIEEE, ACM

Upload: nguyen-tran

Post on 06-Dec-2014

424 views

Category:

Documents


6 download

DESCRIPTION

 

TRANSCRIPT

Page 1: Week 03-software process

1

Software Process

Trình bày:

ThS. Lâm Quang VũBộ Môn Công Nghệ Phần MềmKhoa Công Nghệ Thông TinTrường Đại Học Khoa Học Tự Nhiên TPHCM

TpHCM, 6/2005

(Ti�n trình ph�n m�m – SP)

9/18/2006Software Process 2

Tài liệu tham khảo� SEI – www.sei.cmu.edu� OpenCourseWare - MIT� Bài giảng Software Engineering của CMU,

UIUC� Bài giảng CNPMNC – TS Trần Đan Thư� Luận Văn Thạc Sĩ – “Nghiên cứu và vận hành

các tiến trình phần mềm hữu dụng”, ThS Lâm Quang Vũ

� Các bài báo và các thông tin khảo sát từIEEE, ACM

Page 2: Week 03-software process

2

9/18/2006Software Process 3

Nội dung

� Giới thiệu � Các khái niệm cơ bản trong Software

Process � Software Life Cycle Models� Giới thiệu một số tiến trình phần mềm� Tổng kết và thảo luận

9/18/2006Software Process 4

1. Giới thiệu

� Một số vấn đề quan tâm trong việc phát triển phần mềm

� Một số nguyên nhân� Bản chất vấn đề …

Page 3: Week 03-software process

3

9/18/2006Software Process 5

Kinh tế thế giới ngày càng phụ thuộc hơn vào CNPM

Các ứng dụng mở rộng vềkích thước, độ phức tạp, và phân bố

Thương trường đòi hỏi nâng cao năng suất, chất lượng vàgiảm thời gian

Không đủ nhân lực có trình độ

Một số vấn đề

9/18/2006Software Process 6

• Nhiều thành công

• Cũng nhiều thất bại

Chúng ta đã làm việc ra sao?

ProjectManager

PerformanceEngineer

ReleaseEngineer

Analyst

Tester

Developer

$$$

Chất lượng

Thời gian

Chi phí Nhân lực

Page 4: Week 03-software process

4

9/18/2006Software Process 7

Một ví dụ về nguyên nhân thất bại ? [SEI]

� Dự án lớn càng lớn, càng khó kiểm soát� Thực tế, có ít nhân viên có thói quen lập kế

hoạch, tổ chức công việc khoa học� Không có kế hoạch � không biết được

trạng thái công việc� Nếu bạn không biết � quản lý làm sao

biết?� Quản lý không biết � họ không thể quản lý

dự án

9/18/2006Software Process 8

Một số lý do khác …[Rational, RUP]� Hiểu không đúng những gì người dùng cần� Không thể thích ứng với các thay đổi về yêu cầu của

hệ thống � Các Module không khớp với nhau� Phần mềm khó bảo trì và nâng cấp, mở rộng� Phát hiện trễ các lỗ hổng của dự án � Thiếu công cụ hỗ trợ và quản lý� Hiệu năng của phần mềm thấp� Các thành viên trong nhóm không biết được ai đã

thay đổi cái gì, khi nào, ở đâu, tại sao phải thay đổi � Quá trình build-and-release không đáng tin cậy

Page 5: Week 03-software process

5

9/18/2006Software Process 9

Bản chất vấn đề ?

� Làm sao để dung hòa các yếu tố� Con người ?� Độ phức tạp, khối lượng công việc ?� Thời gian ?� Công cụ hỗ trợ ?

� Mục tiêu chính:� Đúng thời gian� Đảm bảo ngân sách� Thỏa mãn nhu cầu người sử dụng

9/18/2006Software Process 10

Cái mà chúng ta cần ???

Page 6: Week 03-software process

6

9/18/2006Software Process 11

2. Tiến trình phần mềm – tổng quan

TIẾN TRÌNH định nghĩa:

AI phải LÀM GÌ,KHI NÀO,làm BẰNG CÁCH NÀO làm ra SẢN PHẨM gì ?

9/18/2006Software Process 12

Một định nghĩa khác

� Tiến trình phần mềm là một tập hợp các hoạt động được thực hiện bởi con người theo một kế hoạch dự kiến nhờ vào:� Vận dụng các phương pháp, tri thức, kinh nghiệm� Sử dụng các công cụ hỗ trợ (CASE Tools)

� Để sản sinh ra các sản phẩn phần mềm (chương trình, đặc tả yêu cầu, hồ sơ thiết kế, hồ sơ kiểm chứng ….)

Page 7: Week 03-software process

7

9/18/2006Software Process 13

Các thuật ngữ trong SP

� Tiến trình phần mềm (software process)� Tiến trình con / bộ phận (sub-process)� Hoạt động (Activities)� Vai trò (Roles)� Sản phẩm (Products)� Công cụ hỗ trợ(Tools)

9/18/2006Software Process 14

Các thành phần chính yếu nhất

Hoaït ñoäng(thuû coâng)

Hoaït ñoäng(töï ñoäng)

Saûnphaåmphaànmeàm

Luoàng döõ lieäu

Luoàng döõ lieäu

Luoàng ñieàu khieån

Vai troø (Role)

Hoaït ñoäng(Activity)

Saûn phaåm(Product)

Page 8: Week 03-software process

8

9/18/2006Software Process 15

Hoạt động (Activities)

� Mô tả một công việc trong tiến trình� Các ràng buộc tuyến tính áp đặt thứ tự

thực hiện những hoạt động này gọi là các luồng điều khiển (control flow) trong tiến trình

� Phân loại� Tự động� Bán tự động� Thủ công

9/18/2006Software Process 16

Vai trò (Roles)

� Tập các đối tượng có trách nhiệm thực hiện một hoạt động của một tiến trình nào đó.

� Phân loại:� Con người� Tác tử đại diện (Software Agents)

Page 9: Week 03-software process

9

9/18/2006Software Process 17

Sản phẩm (Products hoặc Artifacts)

� Là những sản phẩm thông tin cần được tạo thành trong tiến trình phần mềm (chương trình, mã nguồn, báo cáo, mô hình thiết kế ….)

� Phân loại� Đầu vào (có sẵn)� Đầu ra (kết quả)� Trung gian

9/18/2006Software Process 18

Công cụ hỗ trợ (CASE Tools)

� Hỗ trợ thực hiện các hoạt động trong tiến trình phát triển phần mềm

� Hỗ trợ một vài công đoạn hoặc toàn bộcác hoạt động trong tiến trình phát triển phần mềm

Page 10: Week 03-software process

10

9/18/2006Software Process 19

Ví dụ - Tiến trình kiểm lỗi tài liệu

� Hoạt động: chuẩn bị, tìm lỗi ….� Sản phẩm: tài liệu kiểm lỗi, ds lỗi …� Vai trò: tác giả tài liệu, người kiểm lỗi …� Công cụ hỗ trợ (tuỳ thuộc vào thể hiện của SP):

� Đọc tài liệu: Notepad, Word, Visual Studio 6.0 …� Ghi nhận lỗi: Excel, CaseTools tự thiết kế …

9/18/2006Software Process 20

Một tiến trình phần mềm hiệu quả …� Cung cấp các chỉ dẫn để phát triển một cách hiệu quả

một phần mềm có chất lượng� Giảm thiểu rủi ro tăng khả năng tiền định (trưởng

thành trong việc phát triển phần mềm)� Nắm giữ và thể hiện các kinh nghiệm tốt

� Học từ các kinh nghiệm khác� Nắm vững các kiến thức nền tảng� Mở rộng các tài liệu huấn luyện

� Nâng cao năng lực và tầm nhìn trong phát triển phần mềm

� Cung cấp hướng dẫn về cách dùng các công cụ hỗtrợ một cách hiệu quả.

� Chuyển tải thông tin trực tuyến, chỉ dẫn chi tiết

Page 11: Week 03-software process

11

9/18/2006Software Process 21

Một ví dụ về tiến trình phát triển PM

Các Workflownhóm các công việc một cách logic

Trong mộtbước lặp, bạn đi qua tất cảcác workflow

9/18/2006Software Process 22

Các pha (phases) trong tiến trình phần mềm

� Đặc tả phần mềm� Phát triển, xây dựng

phần mềm� Xác nhận phần

mềm� Tiến hoá phần mềm

Tùy theo mô hình chu kỳ sống phần mềm, các hoạt động nầy sẽ được tổ chức, phân rã, sắp xếp đểthực hiện theo các thứtự khác nhau…

Việc tổ chức dựa trên các phương pháp luận, kỹthuật, kinh nghiệm …

Page 12: Week 03-software process

12

9/18/2006Software Process 23

Cách tổ chức các hoạt động

� Software Life-Cycle Models

9/18/2006Software Process 24

Phân biệt !!!

� Software Process Models� Activities� Software Life Cycle Models

� Thường phân biệt tiến trình phát triển phần mềm dựa trên mô hình chu kỳsống của phần mềm (Software Life Cycle Models)

Page 13: Week 03-software process

13

9/18/2006Software Process 25

Một số yếu tố phân biệt các mô hình chu kỳ sống

� Theo phiên bản (Version)� Single-Version Model� Multi-Version Model

� Theo hình thức tổ chức� Waterfall Models (mô hình thác nước)� Incremental Models (mô hình tăng trưởng)� Iterative Models (mô hình lặp)

9/18/2006Software Process 26

Phân biệt Incremental và Interative

� Nghe có vẻ tương tự và thật sự đôi khi có một số điểm giống nhau

� Khác biệt:� Incremental: sản phẩm được bổ sung thêm

dần dần sau mỗi pha� Iterative: sản phẩm được thực hiện lại sau

mỗi pha

� Một số mô hình áp dụng cả hai cách tổchức này

Page 14: Week 03-software process

14

9/18/2006Software Process 27

Một ví dụ cụ thể - Xây một căn nhà

� Incremental: bắt đầu với một căn nhànhỏ sau đó sẽ thêm từng phòng, từng phòng để nâng cấp căn nhà

� Iterative: sau mỗi bước lặp, căn nhà được tái thiết kế và xây lại mới

� Khác biệt: � Incremental: chúng ta có thể sống trong

suốt thời gian xây dựng căn nhà� Iterative: chúng ta phải “di chuyển” sang

căn nhà được xây dựng mới

9/18/2006Software Process 28

3. Một số mô hình chu kỳ sống PM� Big-Bang Model� Build-and-fix model� Waterfall model

� Waterfall Model with “back flow”

� Rapid prototyping model� Synchronize-and-stabilize model� Incremental Model� Iterative Model� Spiral model� Extreme programming and agile processes

Page 15: Week 03-software process

15

9/18/2006Software Process 29

Big-Bang Model

� Tổ chức đơn giản� Developer

� nhận yêu cầu� làm việc độc lập trong một khoảng thời gian

xác định� đưa kết quả� hy vọng thoả mãn nhu cầu người dùng

9/18/2006Software Process 30

Build-and-Fix Model

Implement the 1st Version

Modify until client is satisfied

Postdelivery Maintenance

Maintenance

Development

Page 16: Week 03-software process

16

9/18/2006Software Process 31

Built-and-Fix Model (tt)

� Đặc trưng� Không lập kế hoạch, không phân tích� Chương trình là sản phẩm duy nhất

� Ưu điểm� Thích hợp cho các ứng dụng nhỏ viết bởi 1

người

� Khuyết điểm� Tính dễ hiểu và dễ bảo trì của chương trình

giảm đi nhanh chóng khi kích thước chương trình tăng

9/18/2006Software Process 32

Waterfall Model

Requirements

Design

Implementation

TestHoàn thành từng pha, từng pha một và chuyển tới Pha kế tiếp, không quay lại. (Cách chia Pha tuỳ vào tổ chức)

Page 17: Week 03-software process

17

9/18/2006Software Process 33

Waterfall Model with “Back flow”

Requirements

Design

Implementation

TestDựa trên các vấn đề ở Pha hiện tại, các hiệu chỉnh sẽ được thực hiện ngay ở Pha trước đó

9/18/2006Software Process 34

Waterfall Model

� Đặc trưng� Tuyết tính và tuần tự� Không thể quay lại� Yêu cầu phải được xác định trước

� Ưu điểm� Các cột mốc xác định rõ ràng� Chỉ một hoạt động (Pha) tại một thời điểm� Dễ dàng đánh giá tiến độ� Tiếp cận dễ hiểu

Page 18: Week 03-software process

18

9/18/2006Software Process 35

Waterfall Model (tt)� Khuyết điểm

� Khó có thể xác định hết các yêu cầu tại thời điểm bắt đầu dự án, khách hàng chỉ làm việc trong Pha đầu � rủi ro cao

� Yêu cầu có thể thay đổi:o Thị trường thay đổio Kỹ thuật thay đổio Nhu cầu của người dùng thay đổi

� Bảng thiết kế có thể thay đổi trong khi cài đặt � không đáp ứng

� Sản phẩm được hình thành ở cuối giai đoạn của tiến trình

9/18/2006Software Process 36

“V“ ModelRequirements

Analysis

System Design

Program Design

Implementation

Unit Test

Integration Test

Acceptance Test

Page 19: Week 03-software process

19

9/18/2006Software Process 37

“V” model (tt)

� Đặc trưng� Mỗi pha đều có kết hợp với việc kiểm

chứng

� Ưu điểm� Giống Waterfall, nhưng có kiểm chứng

thường xuyên � sớm phát hiện

� Khuyết điểm� Không uyển chuyển� Thích hợp với dự án vừa và nhỏ

9/18/2006Software Process 38

Synchronize-and-stabilize model� Đặc trưng

� Các nhóm làm việc trên các Module độc lập nhau� Thường xuyên đồng bộ mã nguồn với các nhóm

khác và hiệu chỉnh mã nguồn trong suốt tiến trình phát triển

� Ưu điểm� Uuyển chuyển, cho phép hiệu chỉnh với bất kỳ

thay đổi nào� Không nghiêm ngặt như Waterfall Model

� Khuyết điểm� Chỉ thích hợp với các dự án nhỏ

Page 20: Week 03-software process

20

9/18/2006Software Process 39

Rapid prototyping model

9/18/2006Software Process 40

Rapid prototyping model (tt)� Đặc trưng

� Dùng mẫu prototyping ban đầu để giúp xác định yêu cầu của khách hàng (có thể lặp) � sau đó Kết hợp với Waterfall

� Luôn có kiểm tra, kiểm chứng ở các pha

� Ưu điểm� Phát triển nhanh (rapid)� Giống Waterfall: tuyến tính nhưng có ít hoặc không

có feedback

� Khuyết điểm� Chỉ thích hợp với dự án vừa và nhỏ

Page 21: Week 03-software process

21

9/18/2006Software Process 41

Incremental Model

� Là một dạng mô hình lặp� Các yêu cầu được xác định trước và xếp loại ưu tiên� Các YC có độ ưu tiên cao sẽ được đưa vào vòng lặp đầu� Mỗi phiên bản phát hành được bổ sung thêm chức năng mới

9/18/2006Software Process 42

Incremental Model

� Ưu điểm� Có thể thấy sản phẩm trong thời gian ngắn� Bảng đặc tả yêu cầu ban đầu có thể dùng

trong hợp đồng ký kết� Thấy được sản phẩm tăng trưởng

� Khuyết điểm� Khó có thể nắm bắt hoàn toàn yêu cầu nếu

không có kinh nghiệm trong lĩnh vực chuyên môn

Page 22: Week 03-software process

22

9/18/2006Software Process 43

Loại Iterative Model

� Là dạng mô hình lặp� Mỗi bước lặp phát sinh ra một phiên bản

mới

9/18/2006Software Process 44

Loại Iterative Model

� Ưu điểm� Cho phép quản lý rủi ro tốt� Những phiên bản đầu có thể gợi ra những yêu cầu

cho các bước lặp sau� Thấy được sự tiến hóa của sản phẩm� Vẫn có thể tiếp tục phát triển sau khi phát hành

sản phẩm� Các tiến trình Agile Process sử dụng mô hình này

� Khuyết điểm� Phạm vi dự án lớn, tốn chi phí quản lý tiến trình

Page 23: Week 03-software process

23

9/18/2006Software Process 45

Spiral Model

Riskanalysis

Riskanalysis

Riskanalysis

Riskanalysis Proto-

type 1

Prototype 2

Prototype 3Opera-tionalprotoype

Concept ofOperation

Simulations, models, benchmarks

S/Wrequirements

Requirementvalidation

DesignV&V

Productdesign Detailed

design

Code

Unit test

Integrationtest

AcceptancetestService Develop, verify

next-level product

Evaluate alternativesidentify, resolve risks

Determine objectivesalternatives and

constraints

Plan next phase

Integrationand test plan

Developmentplan

Requirements planLife-cycle plan

REVIEW

9/18/2006Software Process 46

Spiral Model (tt)� Xác định các rủi ro� Đặt độ ưu tiên cho các rủi ro� Thiết lập các Prototype cho các rủi ro đã xác

định và bắt đầu với cái có độ ưu tiên cao nhất� Sử dụng mô hình Waterfall cho mỗi bước phát

triển Prototype� Nếu một rủi ro được giải quyết thành công,

đánh giá kết quả và lập kế hoạch cho vòng (Prototype) kế tiếp

� Nếu một rủi ro nào đó không giải quyết được � kết thúc dự án ngay lập tức

Page 24: Week 03-software process

24

9/18/2006Software Process 47

Một vài ví dụ về rủi ro

� Khách hàng không biết chính xác những gì họ muốn � thay đổi có thể xảy ra trong quá trình tiến hành

� Đội ngũ nhân viên không có kinh nghiệm trong lĩnh vực chuyên môn (của ứng dụng phát triển) hoặc không thích hợp với các kỹ thuật mới được dùng trong dự án

9/18/2006Software Process 48

WinWin Spiral Model

� Ngoài việc phân tích rủi ro� Xác định “điều kiện thoả mãn khách hàng”� Đàm phán với khách hành về điều kiện

thoả mãn� Các bước lặp hướng theo các “điều kiện

thỏa mãn khách hàng”

Page 25: Week 03-software process

25

9/18/2006Software Process 49

Extreme programming

� Đặc trưng� Qui trình phát triển nhanh, uyển chuyển� Dựa trên khái niệm “Stories” (những tính năng

mà người dùng muốn)o Ước lượng thời gian và chi phí cho mỗi Storyo Chọn Story cho lần phát triển kế tiếpo Chi nhỏ công việc trong mỗi lần phát triển

� Công việc cho 2 người (Pair programming)

o Luôn đưa ra các trường hợp kiểm chứng cho từng công việc trước khi thực hiện

o Việc tích hợp diễn ra liên tục

9/18/2006Software Process 50

Extreme programming

Spike : vấn đề “gai góc”

Page 26: Week 03-software process

26

9/18/2006Software Process 51

� Một số đặc trưng khác� Khách hàng luôn hiện diện� Không có nhóm nào thực hiện công việc quá 2

tuần� Không có sự chuyên môn hóa (không phân vai trò)

� Ưu điểm� Gọn, uyển chuyển, phát triển nhanh� Thích hợp cho những tổ chức vừa và nhỏ

Extreme programming

9/18/2006Software Process 52

Agile processes

� Một tập các hướng tiếp cận mới trong việc phát triển phần mềm

� Đặc trưng� Không quan trọng việc phân tích thiết kế� Cài đặt sớm

o Phần mềm thực thi luôn quan trọng hơn sưu liệu

� Sẵn sàng đáp ứng thay đổi� Cộng tác chặt chẽ với khách hàng

Page 27: Week 03-software process

27

9/18/2006Software Process 53

Đánh giá Agile Processes và XP

� Hữu dụng khi yêu cầu mập mờ hoặc cókhả năng thay đổi cao.

� Chưa thật sự chuẩn hóa � có nhiều cách tiếp cận khi sử dụng � khó đánh giá

� Ý tưởng mang tính đột phá� Lập trình nhóm 2 (Pair Programming)

9/18/2006Software Process 54

Khái niệm …- Driven

� Document-Driven� Feature-Driven� UseCase-Driven� Function-Driven

Page 28: Week 03-software process

28

9/18/2006Software Process 55

Một số so sánh

Không thích hợp cho các dự án lớn

Thích hợp trong các trường hợp yêu cầu người dùng mơ hồ và hay thay đổi.

Feature-Driven

Extreme programming model and Agile Process

Không thích hợp cho các dự án lớn

Đảm bảo sản phẩm thoả mãn nhu cầu người dùng.

Function-Driven

Rapid Prototyping model

Sản phẩm có thể không đáp ứng được nhu cầu của người dùng cuối.

Cách tiếp cận mang tính nguyên tắc, chuẩn.

Thấy rõ tình trạng dự án

Document-Driven

Waterfall model

Không thoả mãn cho các dự án lớn

Tốt cho các chương trinh nhỏ vàkhông cần phải bảo trì

Build and fix model

Tốn thời gian và nhân lực, chi phí quản lý

Gần với cách sản xuất phần mềm thực tế hiện nay. Dựa trên nền tảng kết hợp nhiều mô hình bên dưới � tăng độ an toàn

UseCase-Driven

Iterative and incremental model

Điểm yếuĐiểm mạnhLife-Cycle Model

9/18/2006Software Process 56

Tổng kết phần (3)

� Mỗi mô hình đều có ưu và khuyết điểm riêng

� Lựa chọn mô hình thích hợp dựa trên:� Phạm vi của tổ chức� Trình độ quản lý� Kỹ năng của đội ngũ nhân viên� Loại sản phẩm thực hiện

� Có thể kết hợp sử dụng nhiều mô hình cùng lúc

Page 29: Week 03-software process

29

9/18/2006Software Process 57

4. Sự hỗ trợ của các chuẩn

� Các chuẩn ISO� Các phương thức đánh giá

(CMMI,Bootstrap,SPICE…)� PSP� …

9/18/2006Software Process 58

Chuẩn CMM

Initial

(Level 1)

Repeatable

(Level 2)

Defined

(Level 3)

Managed

(Level 4)

Optimized

(Level 5)

Ris

kC

om

petitiv

eness

•Largely Ad-hoc

•Phụ thuộc vào cá nhân

•Bắt đầu có khả năng quản lý

•Quản lý dựa vào kinh nghiệm tương

tự

•Xác lập các tiêu chuẩn quản lý

•Các vấn đề documentation đã xác lập

•Có khả năng dự đoán (Predictability)

•Các quy trình quản lý và tiêu chuẩn

được chi tiết hóa

•Continuous Improvement

•Các hệ thống quality control và qualify

đã được sử dụng hiệu quả

Page 30: Week 03-software process

30

9/18/2006Software Process 59

Giới thiệu qui trình RUP

9/18/2006Software Process 60

Kết luận

� Tiến trình phần mềm rất phức tạp, đòi hỏi nhiều sự cộng tác

� không như các ngành công nghệ khác, tiến trình phần mềm lại không xác định chắc chắn và có nhu cầu tiến hóa cao.

�Ứng dụng/vận hành tiến trình trở nên rất khó kiểm soát, khó đạt hiệu quả, nhất làkhi quy mô của tiến trình lớn..

Page 31: Week 03-software process

31

Kết thúc

Cảm ơn quý vị đã quan tâm theo dõi !

Thông tin liên hệ: [email protected], 6/2005