57
Công cmôi trường phát trin phn mm 1 Các kinh nghim quí ca Công nghphn mm Công cvà môi trường phát trin phn mm

Ccmtptpm 01 cackinhnghiemptpm

Embed Size (px)

Citation preview

Page 1: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm1

Các kinh nghiệm quí của Công nghệ phần mềm

Công cụ và môi trường phát triển phần mềm

Page 2: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm2

Mục đích

ww KhKháám phm pháá ccáác tric triệệu chu chứứngng vvàà ccáác nguyên nhân cc nguyên nhân cốốt lõit lõi ccủủa ca cáác c vvấấn đn đềề trong phtrong pháát trit triểển phn phầần mn mềềmm

ww TrTrìình bnh bààyy 66 kinh nghikinh nghiệệm tm tốốtt ccủủa Rational tronga Rational trong ququáá trtrìình phnh pháát t tritriểển phn phầần mn mềềmm

ww Xem xXem xéét ct cáách sch sửử ddụụng cng cáác kinh nghic kinh nghiệệmm nnàày đy đểể gigiảảI quyI quyếết ct cáác c vvấấn đn đềề trong phtrong pháát trit triểển phn phầần mn mềềmm

Page 3: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm3

Phân tích tình hình của CNPM

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 độ

Page 4: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm4

Phát triển phần mềm là công việc tập thể

ProjectManager

PerformanceEngineer

ReleaseEngineer

Analyst

Developer

Tester

Các thách thức

• Các nhóm đông hơn

• Sự chuyên môn hóa

• Phân tán

• Công nghệ thay đổi quá nhanh

Page 5: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm5

• Nhiều thành công

• Quá nhiều thất bại

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

ProjectManager

PerformanceEngineer

ReleaseEngineer

Analyst

Tester

Developer

Page 6: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm6

Các triệu chứng của các vấn đề trong phát triển PM

ww HiHiểểu không đu không đúúng nhng nhữững gng gìì ngư ngườời di dùùng cng cầầnnww Không thKhông thểể ththíích ch ứứng vng vớới ci cáác thay đc thay đổổi vi vềề yêu cyêu cầầuu ccủủaa hhệệ ththốống ng ww CCáácc ModuleModule không khkhông khớớp vp vớới nhaui nhauww PhPhầần mn mềềm khm khóó bbảảo tro trìì vvàà nâng cnâng cấấpp,, mmởở rrộộngngww PhPháát hit hiệện trn trễễ ccáác lc lỗỗ hhổổng cng củủa da dựự áán n ww ChChấất lưt lượợng phng phầần mn mềềm km kéémmww HiHiệệu năng cu năng củủa pha phầần mn mềềm thm thấấppww CCáác thc thàành viên trong nhnh viên trong nhóómm không bikhông biếết đưt đượợc ai đã thay đc ai đã thay đổổii ccáái i

ggìì, , khi nkhi nààoo, , ởở đâu đâu, , ttạạii sao phsao phảải thay đi thay đổổi i ww QuQuáá trtrììnhnh buildbuild--andand--release khôngrelease không đ đáángng tintin ccậậyy

Page 7: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm7

Symptomsend-user needschanging requirementsmodules don’t fithard to maintainlate discoverypoor qualitypoor performancecolliding developers build-and-release

Root Causesinsufficient requirementsambiguous communicationsbrittle architectures overwhelming complexityundetected inconsistencies poor testingsubjective assessmentwaterfall development uncontrolled changeinsufficient automationDiagnose

Chữa trị triệu chứng không giải quyết hết vấn đề

Page 8: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm8

Các nguyên nhân chính

ww SSựự ququảản lýn lý yêu cyêu cầầu u ngưngườời di dùùng không đng không đầầy đy đủủww Trao đTrao đổổi thôngi thông tintin mơ h mơ hồồ vvàà không đ không đầầy đy đủủww KiKiếến trn trúúc không vc không vữững chng chắắc c ww ĐĐộộ phphứức tc tạạp vưp vượợt qut quáá ttầầm kim kiểểm som soááttww CCóó nhnhữững mâu thung mâu thuẫẫn không phn không pháát hit hiệện đưn đượợc gic giữữaa yêu cyêu cầầu,u,

thithiếết kt kếế, , vvàà ccàài đi đặặttww KiKiểểm chm chứứng không đng không đầầy đy đủủww SSựự lư lượợng ging giáá chchủủ quan vquan vềề ttìình trnh trạạng cng củủa da dựự áánnww SSựự chchậậm trm trễễ trong vitrong việệc gic giảảm rm rủủi roi ro dodo mô hmô hìình thnh tháác nưc nướớc c ww SSựự lan truylan truyềền không thn không thểể kikiểểm som soáát ct củủa ca cáác thay đc thay đổổiiww ThiThiếếu cu cáác công cc công cụụ ttựự đ độộng hng hóóaa

Page 9: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm9

þþ CCáácc yêu cyêu cầầuu không đ không đầầy đy đủủþþ Trao đTrao đổổi thôngi thông tintin mơ h mơ hồồþþ KiKiếến trn trúúc kc kéém bm bềền vn vữữngngþþ ĐĐộộ phphứức tc tạạp qup quáá caocaoþþ CCáác lưc lượợng ging giáá chchủủ quan quan þþ CCáác mâu thuc mâu thuẫẫn chưa thn chưa thấấyyþþ KiKiểểm chm chứứng nghng nghèèo no nàànnþþ Qui trQui trììnhnh phpháát trit triểển thn tháác nưc nướớccþþ SSựự thay đ thay đổổi khôngi không kikiểểm som soááttþþ ThiThiếếu su sựự ttựự đ độộng hng hóóaa

þþ PhPháát trit triểển theo vòng ln theo vòng lặặppþþ QuQuảản trn trịị ccáácc yêu cyêu cầầuuþþ SSửử ddụụngng kikiếến trn trúúc c

componentcomponentþþ Mô hMô hìình hnh hóóa tra trựực quanc quanþþ KiKiểểm đm địịnh chnh chấất lưt lượợngngþþ KiKiểểm som soáát ct cáác thay đc thay đổổii

Nguyên nhân cNguyên nhân cốốt lõit lõi CCáác kinh nghic kinh nghiệệm tm tốốtt

Các kinh nghiệm giúp giải quyết các vấn đề

Page 10: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm10

Symptomsend-user needschanging requirementsmodules don’t fithard to maintainlate discoverypoor qualitypoor performancecolliding developers build-and-release

Root Causesinsufficient requirementsambiguous communicationsbrittle architectures overwhelming complexityundetected inconsistencies poor testingsubjective assessmentwaterfall development uncontrolled changeinsufficient automation

Best Practicesdevelop iteratively manage requirementsuse component architecturesmodel the software visuallyverify qualitycontrol changes

Giải quyết các nguyên nhân giúp giảm các triệu chứng

Page 11: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm11

PhPháát trit triểển theo vòng ln theo vòng lặặpp

KiKiểểm som soáát ct cáác thay đc thay đổổi trong hi trong hệệ ththốốngng

SSửử ddụụngngkikiếến trn trúúcc

ComponentComponentQuQuảản trn trịị

ccáácc yêu cyêu cầầuuMô hMô hìình hnh hóóaa

trtrựực quanc quanKiKiểểm đm địịnhnhchchấất lưt lượợngng

Các kinh nghiệm quí của CNPM

Page 12: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm12

Các kinh nghiệm tạo ra các nhóm làm việc hiệu năng cao

ProjectManager

PerformanceEngineer

ReleaseEngineer

Analyst

Developer

Tester

Kết quả

• Nhiều dự án thành công hơn

KiKiểểm som soáát ct cáác thay đc thay đổổI trong hI trong hệệ ththốốngng

PhPháát trit triểển theo vòng ln theo vòng lặặpp

SSửử ddụụng ng kikiếến trn trúúcc

ComponentComponent

QuQuảản trn trịịccáác yêu cc yêu cầầuu

Mô hMô hìình hnh hóóaatrtrựực quanc quan

KiKiểểm đm địịnhnhchchấất lưt lượợngng

Page 13: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm13

Kinh nghiệm 1: Phát triển phần mềm theo vòng lặp

PhPháát trit triểển theo vòng ln theo vòng lặặpp

Kiểm soát các thay đổi trong hệ thống

Sử dụngkiến trúc

ComponentQuản trị

các yêu cầuMô hình hóa

trực quanKiểm địnhchất lượng

Page 14: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm14

Thời gian và tiền bạc chi ra để cài đặt một thiết kế sai là không thể bù đắp

Kinh nghiệm 1: Phát triển phần mềm theo vòng lặp(tt)

ww MMộột thit thiếết kt kếế banban đ đầầu cu cóó ththểể không hokhông hoààn chn chỉỉnhnh soso vvớới ci cáác yêu c yêu ccầầu chu chíínhnh

ww ViViệệc phc pháát hit hiệện trn trễễ ccáác thic thiếếu su sóót trong bt trong bảản thin thiếết kt kếế ssẽẽ llààm tăng m tăng gigiáá ththàànhnh,, ttốốn thn thờời gian vi gian vàà ththậậm chm chíí llààm hm hủủy by bỏỏ ddựự áánn

Thời gian và tiền bạc chi ra để cài đặt một thiết kế sai là không thể bù đắp

Page 15: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm15

T I M E

Qui trình thác nước truyền thống

Subsystem Testing

System Testing

Code & Unit Testing

Design

Requirements Analysis

Page 16: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm16

RISK

T I M E

Qui trình thác nước có nhiều rủi ro

Subsystem Testing

System Testing

Code & Unit Testing

Design

Requirements Analysis

Page 17: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm17

Ứng dụng qui trình thác nước theo vòng lặp

ww CCáác vòng lc vòng lặặp đp đầầu du dàành cho cnh cho cáácc vvấấn đn đềề nhinhiềều ru rủủi roi roww MMỗỗi vòng li vòng lặặpp sinh ra msinh ra mộột phiên bt phiên bảản vn vớớii mmộột st sựự bbổổ sungsung cho hcho hệệ

ththốốngngww MMỗỗii vòng lvòng lặặpp bao gbao gồồm cm cảả viviệệc tc tíích hch hợợpp vvàà kikiểểm chm chứứngng

TC

DR

T I M E

Iteration 1 Iteration 2 Iteration 3

TC

DR

TC

DR

Page 18: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm18

Qui trình lặp đẩy nhanh việc giảm rủi ro

WaterfallIterative

R

I

S

K

T I M EIteration Iteration Iteration Iteration Iteration Iteration Iteration

Page 19: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm19

Các đặc tính của qui trình lặp

ww CCáác rc rủủi ro chi ro chíính đưnh đượợc gic giảải quyi quyếếtt trưtrướớc khi cc khi cóó ccáác phc pháát trit triểển ln lớớnnww CCáác vòng lc vòng lặặp đp đầầu tiên cho phu tiên cho phéépp nhnhậậnn feedback feedback ww ViViệệc kic kiểểm chm chứứng vng vàà ttíích hch hợợp dip diễễn ra liên tn ra liên tụục c ww CCáác cc cộột mt mốốc cc cụục bc bộộ ssẽẽ đ địịnh ranh ra ccáác tiêu đic tiêu điểểm ngm ngắắn hn hạạnnww SSựự titiếến trin triểểnn đưđượợc đo bc đo bằằngng bbảản cn càài đi đặặttww CCáác cc càài đi đặặt bt bộộ phphậận cn cóó ththểể tritriểển khai riêngn khai riêng

Page 20: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm20

Áp dụng các kinh nghiệm trong chu kỳ sống của PM

Page 21: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm21

NhNhậận vn vàà khuykhuyếến khn khíích cch cááccfeedbackfeedback ttừừ ngư ngườời di dùùngngCCáác hic hiểểu lu lầầm nghiêm trm nghiêm trọọng ng đưđượợc lc lààm rõ sm rõ sớớmm

TTậập trung php trung pháát trit triểểnn ccáác khc kháái i niniệệm chm chứứa nhia nhiềều ru rủủi ro trưi ro trướớccĐĐáánh ginh giáá khkháách quan thôngch quan thôngqua test qua test

Mâu thuMâu thuẫẫn đc phn đc pháát hit hiệện sn sớớmm

BBắắt đt đầầuu testtest ssớớmm

CCáác rc rủủi ro đưi ro đượợc xc xáác đc địịnh vnh vààgigiảải quyi quyếết st sớớmm

Qui trình lặp giải quyết các vấn đề

Nguyên nhân cNguyên nhân cốốt lõit lõi CCáách gich giảải quyi quyếếttþþ Không đKhông đủủ ccáác yêu cc yêu cầầuu đđốốI I

vvớớii hhệệ ththốốngngþþ Trao đTrao đổổii thông tinthông tin mơ h mơ hồồ¨̈ KiKiếến trn trúúc kc kéém bm bềền vn vữữngngþþ ĐĐộộ phphứức tc tạạp qup quáá caocaoþþ ĐĐáánh ginh giáá chchủủ quanquanþþ CCáác mâu thuc mâu thuẫẫn không đưn không đượợc c

phpháát hit hiệệnnþþ KiKiểểm chm chứứng kng kéémmþþ Qui trQui trììnhnh ththáác nưc nướớcc¨̈ CCáác thay đc thay đổổi không kii không kiểểm som soáátt¨̈ ThiThiếếu công cu công cụụ ttựự đ độộngng

Page 22: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm22

Kinh nghiệm 2: Quản lý yêu cầu đốI với hệ thống

Phát triển theo vòng lặp

Quản trịcác yêu cầu

Kiểm soát các thay đổi trong hệ thống

Sử dụngkiến trúc

ComponentMô hình hóa

trực quanKiểm địnhchất lượng

Page 23: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm23

Yêu cầu đối với hệ thống luôn động --Phải lường trước khả năng chúng bị thay đổi trong quá trình

phát triển phần mềm

Kinh nghiệm 2: Quản lý yêu cầu đối với hệ thống(tt)

ww Suy dSuy dẫẫnn, , ttổổ chchứứcc, , vvàà ttạạo sưu lio sưu liệệuu vvềề ccáác c yêu cyêu cầầu chu chứức năngc năng vvàà ccáác rc rààng bung buộộcc

ww LưLượợng ging giáá ccáác thay đc thay đổổii vvàà xxáác đc địịnh nh ảảnh nh hưhưởởng cng củủa cha chúúngng

ww TheoTheo ddấấu vu vàà tao sưu li tao sưu liệệu vu vềề ccáác thc thỏỏa a hihiệệpp && ccáác quyc quyếết đt địịnhnh

Page 24: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm24

Định nghĩa: Yêu cầu đối với HT và sự quản lý chúng

ww MMộộtt yêu cyêu cầầuu llàà mmộột đit điềều kiu kiệệnn hohoặặc khc khảả năng năng mmàà hhệệ ththốống phng phảải i tuân theotuân theo//ccóó

ww QuQuảản lýn lý yêu cyêu cầầuu llàà mmộột tit tiếếp cp cậận cn cóó hhệệ ththốống đng đểể::§ Suy dẫn, tổ chức, và tạo sưu liệu về các yêu cầu chức năngđối với hệ thống, vৠThiết lập và duy trì sự thỏa thuận giữa customer/user và

project team liên quan đến các thay đổi về yêu cầu đối vớihệ thống

Page 25: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm25

Thỏa thuận về những gì mà hệ thống phải làm

Đích

Surrogate Goal

Xác minhCác yêu cầu

Cộng đồng Các Customer

User

Các yêu cầu

Hệ thốngcần xây dựng

Adapted from Al Davis

Page 26: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm26

Yêu cầu ảnh hưởng đến nhiều thành phần khác

Page 27: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm27

Làm thế nào để bắt được lỗi về yêu cầu sớm?

ww Phân tPhân tíích vch vấấn đn đềề vvàà suy dsuy dẫẫn ra cn ra cáác nhu cc nhu cầầuu ccủủa ngưa ngườời di dùùng ng mmộột ct cáách cch cóó hihiệệu quu quảả

ww ĐĐạạt đưt đượợc thc thỏỏa thua thuậận vn vớớii customer/user customer/user vvềề ccáác yêu cc yêu cầầu đu đốối vi vớới i hhệệ ththốốngng

ww Mô hMô hìình hnh hóóa sa sựự tương t tương táác gic giữữaa user user vvàà systemsystemww ThiThiếết lt lậập mp mộột đưt đườờng ranh ging ranh giớớii (baseline) (baseline) vvàà quiqui trtrìình kinh kiểểm som soáát t

thay đthay đổổii (change control process)(change control process)ww Duy trDuy trìì khkhảả năng theo v năng theo vếết tit tiếến vn vàà llùùii ccáác yêu cc yêu cầầuu đđốốI vI vớớii hhệệ

ththốốngngww SSửử ddụụng mng mộộtt quiqui trtrìình lnh lặặpp

Page 28: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm28

Các vấn đề giải quyết nhờ quản lý yêu cầu đối với HT

Nguyên nhân cNguyên nhân cốốt lõit lõi CCáách gich giảải quyi quyếếttXây dựng trong quản lý Y/Cmột tiếp cận kỷ luậtTrao đổi thông tin dựa trên các y/c đã xác địnhĐặt độ ưu tiên, lọc và theo dõi các yêu cầuĐánh giá khách quan các chức năng và hiệu năngCác mâu thuẫn đễ phát hiệnRM tool cung cấp một kho chứa các y/c, thuộc tính và đồhình, sẽ được kết nối tự động với sưu liệu

þþ ThiThiếếu cu cáácc y y/c/c đ đ/v HT/v HTþþ Trao đTrao đổổii TTTT mơ h mơ hồồ¨̈ KiKiếến trn trúúc kc kéém bm bềền vn vữữngngþþ ĐĐộộ phphứức tc tạạp qup quáá caocaoþþ ĐĐáánh ginh giáá chchủủ quanquanþþ CCáác mâu thuc mâu thuẫẫn không n không

đưđượợc phc pháát hit hiệệnnþþ KiKiểểm chm chứứng kng kéémm¨̈ QTQT ththáác nưc nướớcc¨̈ CCáác thay đc thay đổổi không ksi không ksþþ ThiThiếếu ccu ccụụ ttựự đ độộngng

Page 29: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm29

Kinh nghiệm 3: Dùng kiến trúc Component-Based

Phát triển theo vòng lặp

Quản trịcác yêu cầu

SSửử ddụụngngkikiếến trn trúúcc

ComponentComponent

Kiểm soát các thay đổi trong hệ thống

Mô hình hóatrực quan

Kiểm địnhchất lượng

Page 30: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm30

Kiến trúc phần mềm xác định:

ww KiKiếến trn trúúc phc phầần mn mềềmm chchứứa đa đựựngng ccáác quyc quyếết đt địịnh quan trnh quan trọọng vng vềềttổổ chchứức cc củủaa hhệệ ththốống phng phầần mn mềềmm§ Sự lựa chọn các phần tử cầu trúc và interface của chúng để

cấu thành một hệ thống§ Hành vi được mô tả như sự cộng tác giữa các phần tử này§ Sự tổng hợp của các phẩn tử cấu trúc và hành vi này thành

các subsystem lớn hơn§ Kiểu kiến trúc định hướng cho tổ chức này, cho các phần tử

cấu trúc và interface của chúng, các công tác, và sự tổng hợp giữa chúng

Page 31: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm31

Các ảnh hưởng của kiến trúc

ww KiKiếến trn trúúc phc phầần mn mềềmm liên quan đliên quan đếến cn cấấu tru trúúcc,, hhàànhnh vi vi vvàà ngngữữccảảnhnh (context):(context):§ Cách dùng (Usage)§ Chức năng (Functionality)§ Hiệu năng (Performance)§ Tính co dãn (Resilience)§ Khả năng tái sử dụng (Reuse)§ Tính dễ hiểu (Comprehensibility)§ Các ràng buộc về kinh tế và kỹ thuật và các dung hòa§ Tính thẩm mỹ (Aesthetics)

Page 32: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm32

Resilient, Component-Based Architectures

ww CCáác kic kiếến trn trúúc tc tốốtt ththỏỏa mãn ca mãn cáácc yêu cyêu cầầu đu đốối vi vớới i chchúúngng, , llàà ttíính nh đđààn hn hồồii,, vvàà componentcomponent--basedbased

ww MMộột kit kiếến trn trúúcc đđààn hn hồồii cho phcho phéépp§ Tăng cường khả năng dễ bảo trì và dễ mở rộng§ Khả năng tái sử dụng với lợi ích kinh tế cao§ Phân chia công việc rõ ràng trong đội ngũ phát triển phần

mềm§ Gói gọn các phụ thuộc phần cứng & hệ thống

ww MMộột kit kiếến trn trúúcc componentcomponent--basedbased cho phcho phéépp§ Tái sử dụng hoặc tùy chỉnh các component sẵn có§ Chọn lựa giữa hàng ngàn component thương mại trên thị

trường§ Tiến hóa không ngừng phần mềm đang tồn tại

Page 33: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm33

Ví dụ: Component-Based Architecture

Key:- Purchased- Built- New

User Interface Mechanisms

Oracle Vantive

Customer Product

Lead TrackingUser Interface

License

Licensing User Interface

Page 34: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm34

Kiến trúc Component giải quyết các vấn đề

CCáácc ComponentComponent ddễễ ttạạo rao ra ccáác c kikiếến trn trúúc đc đààn hn hồồi i TTáái si sửử ddụụng cng cáácc com.com. vvààframework framework Thương mThương mạại tri trởởnên dnên dễễ ddààngng

TTíính đơn thnh đơn thểể cho phcho phéépp phân phân ttáách cch cáác đic điềềuu lolo llắắngng

Component Component cung ccung cấấp np nềền n ttảảngng ttựự nhiênnhiên cho qucho quảản lý n lý ccấấu hu hììnhnhCCáác ccc ccụụ mô hmô hìình hnh hóóa tra trựực c quanquan hhỗỗ trtrợợ thithiếết kt kếế ttựự đ độộngngcomponentcomponent--basedbased

CCáác nguyên nhân cc nguyên nhân cốốt lõit lõi CCáách gich giảải quyi quyếếtt¨̈ ThiThiếếuu y y/c/c đ đ/v/v hhệệ ththốốngng¨̈ Trao đTrao đổổii TTTT mơ h mơ hồồþþ KiKiếến trn trúúc kc kéém bm bềềnnþþ QuQuáá phphứức tc tạạpp¨̈ ĐĐáánh ginh giáá chchủủ quanquan¨̈ CCáác mâu thuc mâu thuẫẫn chưa n chưa

xxáác đc địịnhnh¨̈ TestTest kkéémm¨̈ QuiQui trtrìình thnh tháác nưc nướớccþþ CCáác thay đc thay đổổi không thi không thểể

kikiểểm som soááttþþ ThiThiếếu ccu ccụụ ttựự đ độộngng

Page 35: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm35

Kinh nghiệm 4: Mô hình hóa trực quan phần mềm

Phát triển theo vòng lặp

Quản trịcác yêu cầu Mô hMô hìình hnh hóóaa

trtrựực quanc quan

Kiểm soát các thay đổi trong hệ thống

Sử dụngkiến trúc

ComponentKiểm địnhchất lượng

Page 36: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm36

Mô hình hóa trực quan tăng khả năngquản lý độ phức tạp của phần mềm

Kinh nghiệm 4: Mô hình hóa trực quan phần mềm(tt)

ww NNắắm bm bắắtt ccấấu tru trúúc vc vàà hhàànhnh vivi ccủủa ca cáácc ththàành phnh phầần kin kiếến trn trúúccww ThThểể hihiệện cn cáách mch màà ccáácc phphầần tn tửử hhệệ ththốống khng khớớp vp vớới nhaui nhauww Che dChe dấấu hou hoặặcc phơi bphơi bààyy chichi titiếếtt theo nhu ctheo nhu cầầu công viu công việệc c ww Duy trDuy trìì ttíínhnh nhnhấất qut quáán gin giữữaa thithiếết kt kếế vvàà ccàài đi đặặttww Tăng cưTăng cườờng trao đng trao đổổi thôngi thông tintin rõ rrõ rààngng

Page 37: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm37

UML là gì?

ww Unified Modeling Language (UML) Unified Modeling Language (UML) llàà ngôn ngngôn ngữữ• đặc tả• trực quan hóa• xây dựng• làm sưu liệu, các artifact của một hệ thống phần mềm

Page 38: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm38

Các lược đồ là các khung nhìn của mô hìnhMột mô hình là một môtả đầy đủ của hệ thốngtừ một phối cảnh cụ thể

DeploymentDiagrams

DeploymentDiagrams

use-caseDiagramsuse-caseDiagrams

ScenarioDiagramsScenarioDiagramsScenario

DiagramsScenarioDiagramsSequence

DiagramsSequenceDiagrams

StateDiagrams

StateDiagramsState

DiagramsState

DiagramsStateDiagrams

StateDiagrams

ComponentDiagrams

ComponentDiagramsComponent

DiagramsComponentDiagramsComponentDiagrams

ComponentDiagrams

Models

StateDiagrams

StateDiagramsState

DiagramsState

DiagramsObjectDiagramsObject

Diagrams

ScenarioDiagramsScenarioDiagramsScenario

DiagramsScenarioDiagramsCollaboration

DiagramsCollaboration

Diagrams

ActivityDiagramsActivity

Diagrams

StateDiagrams

StateDiagramsState

DiagramsState

DiagramsClassDiagrams

ClassDiagrams

Page 39: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm39

Mô hình hóa trực quan dùng các lược đồ UML

Actor A

use-case 1

use-case 2

Actor B

user : »ç¿ëÀÚ

mainWnd : MainWnd

fileMgr : FileMgr

repository : Repositorydocument : Document

gFile : GrpFile

9: sortByN ame ( )

L1: Doc view request ( )

2: fetchDoc( )

5: readDoc ( )

7: readFile ( )

3: create ( )

6: fillDocument ( )

4: create ( )

8: fillFile ( )

GrpFile

read( )open( )create( )fillFile( )

rep

Repository

name : char * = 0

readDoc( )readFile( )

(from Persistence)

FileMgr

fetchDoc( )sortByName( )

DocumentList

add( )delete( )

Document

name : intdocid : intnumField : int

get( )open( )close( )read( )sortFileList( )create( )fillDocument( )

fList

1

FileList

add( )delete( )

1

File

read( )

read() fill the code..

UI

MFC

RogueWave

global

DocumentApp

PersistenceWi ndow95

¹®¼-°ü¸®Å¬¶óÀ̾ðÆ®.EXE

Wi ndowsNT

¹®¼-°ü¸® ¿£Áø.EXE

Wi ndowsNT

Wi ndows95

Solaris

ÀÀ¿ë¼-¹ö.EXE

AlphaUNIX

IBM Mainframe

µ¥ÀÌŸº£À̽º¼- ¹ö

Wi ndows95

¹®¼-°ü¸® ¾ÖÇ Ã¸´

ºÐ»ê ȯ°æÀÇ Çϵå¿þ¾ î¹× ³× Æ®¿÷À¸·ÎÀÇ Á¤º¸ ½ ýºÅÛ ¿¬°á ¸ ðµ¨- À©µµ¿ì 95 : Ŭ¶óÀ̾ ðÆ®- À©µµ¿ì NT: ÀÀ¿ë¼-¹ ö- À¯´Ð½º ¸Ó½Å: ÀÀ¿ë ¼-¹ö ¹ × µ¥ÀÌŸ ¼-¹ö, Åë½Å ¼-¹ö- IBM ¸ÞÀÎÇÁ·¹ÀÓ: µ¥ÀÌŸ ¼-¹ ö, Åë½ Å ¼-¹ö

Document

FileManager

GraphicFileFile

Repository DocumentList

FileList

usermainWnd fileMgr :

FileMgrrepositorydocument :

DocumentgFile

1: Doc view request ( )

2: fetchDoc( )

3: create ( )

4: create ( )

5: readDoc ( )

6: fillDocument ( )

7: readFile ( )

8: fillFile ( )

9: sortByN ame ( )

ƯÁ¤¹®¼-¿¡ ´ëÇÑ º¸±â¸¦»ç¿ëÀÚ°¡ ¿äÃ»Ç Ñ´Ù.

È-ÀÏ°ü¸®ÀÚ´Â Àоî¿Â ¹®¼-ÀÇ Á¤º¸¸¦ ÇØ´ç ¹®¼-°´Ã¼¿¡ ¼ ³Á¤À» ¿äÃ»Ç Ñ´Ù.

È-¸é °´Ã¼ ´Â ÀÐ ¾îµéÀΰ´Ã¼µé¿¡ ´ëÇØ À̸§º°·ÎÁ¤·ÄÀ» ½ ÃÄÑ È- ¸é¿¡º¸¿©ÁØ´ Ù.

Customernameaddr

withdraw()fetch()send()

receive()

<<entity>>

Forward Engineering (Code Generation)and

Reverse Engineering

Executable System

User InterfaceDefinition

DomainExpert

Openning

Writing

Reading Closing

add file [ numberOffile==MAX ] / flag OFF

add file

close file

close file

use-case 3

Source Code edit, compile, debug, link

Use-Case Diagram Class Diagram

Collaboration Diagram

Sequence Diagram

Component Diagram

State Diagram

Package Diagram

Deployment DiagramClass

Page 40: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm40

Thay đổi bản thiết kế?

Mô hình hóa trực quan và phát triển theo vòng lặp

Yêu cầu ban đầu

implementation & testing

risk targeting

deployment

Đánh giá requirements analysis & design

Page 41: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm41

Cái gì thay đổi? Những thay đổi này được phép không?

Mô hình hóa trực quan và phát triển theo vòng lặp

Yêu cầu ban đầu

implementation & testing

risk targeting

deployment

Đánh giá requirements analysis & design

Page 42: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm42

Giải quyết vấn đề nhờ mô hình hóa trực quan

CCáácc useuse--casecase vvàà scenario scenario đđặặc tc tảả hhàànhnh vivi rõ rrõ rààngngCCáác mô hc mô hìình nnh nắắm bm bắắtt tưtườờng ng minh cminh cáác thic thiếết kt kếếCCáác kic kiếến trn trúúc không đơn thc không đơn thểể hayhayccứứng nhng nhắắc bc bịị phơi b phơi bààyyCCáácc chichi titiếết không ct không cầần thin thiếết t đưđượợc che dc che dấấu khi cu khi cầầnnCCáác thic thiếết kt kếế tư tườờng minh chng minh chỉỉ ra ra ccáác mâu thuc mâu thuẫẫn dn dễễ ddààngngChChấất lưt lượợng cng củủa a ứứng dng dụụngng đi đi kkèèm vm vớới bi bảản thin thiếết kt kếế ttốốttCCáác ccc ccụụ trtrựực quanc quan hhỗỗ trtrợợ chochomô hmô hìình hnh hóóa ba bằằngng UMLUML

CCáác nguyên nhân cc nguyên nhân cốốt lõit lõi LLờời gii giảảiiþþ ThiThiếếuu y y/c/c đ đ/v HT/v HTþþ TruyTruyềềnn tintin mơ h mơ hồồþþ KiKiếến trn trúúc kc kéém bm bềềnnþþ QuQuáá phphứức tc tạạpp¨̈ ĐĐáánh ginh giáá chchủủ quanquanþþ CCáác mâu thuc mâu thuẫẫn chưa n chưa

xxáác đc địịnhnhþþ TestTest kkéémm¨̈ QuiQui trtrìình thnh tháác nưc nướớcc¨̈ Thay đThay đổổi không thi không thểể KSKSþþ ThiThiếếu ccu ccụụ ttựự đ độộngng

Page 43: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm43

Kinh nghiệm 5: Kiểm định chất lượng phần mềm

Phát triển theo vòng lặp

Quản trịcác yêu cầu

KiKiểểm đm địịnhnhchchấất lưt lượợngng

Kiểm soát các thay đổi trong hệ thống

Sử dụngkiến trúc

ComponentMô hình hóa

trực quan

Page 44: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm44

Chi phí tìm kiếm và sửa chữa các vấn đề của phần mềm sẽ tăng hàng trăm, hàng ngàn lần sau khi phát triển

Development Deployment

Cost

Kinh nghiệm 5: Kiểm định chất lượng phần mềm (tt)

Page 45: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm45

Phát triển theo vòng lặp cho phép test liên tục

T I M ETest Test Test

TC

DR

Iteration 1 Iteration 2 Iteration 3

TC

DR

TC

DR

Test Life

Cycle Evaluate

PlanDesign

ImplementExecute

Evaluate

PlanDesign

ImplementExecute

Evaluate

PlanDesign

ImplementExecute

Page 46: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm46

Test trong một môi trường phát triển theo vòng lặpR

equi

rem

ents

Req

uire

men

ts

Test Suite 1Test Suite 1

Iteration 2Iteration 2 Iteration 3Iteration 3 Iteration 4Iteration 4

Test Suite 2Test Suite 2 Test Suite 3Test Suite 3 Test Suite 4Test Suite 4

Iteration 1Iteration 1

Auto

mat

ed T

ests

Auto

mat

ed T

ests

Page 47: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm47

Tự động hóa giảm thời gian và công sức test

One Manual Test Cycle13,000 Tests 2 Weeks 6 People

13,000 Test6 giờ

1 người

13,000 Test6 giờ

1 người

Một chu trình test thủ công13,000 lần Test 2 Tuần 6 Người

Testtự động

Chạy ngày càng nhiều test hơn

Page 48: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm48

Các khía cạnh của chất lượng phần mềm

Chức năng

Độ tin cậy

Hiệu năng ứng dụng

Hiệu năng của hệ thống

Ứng dụng của tôi có làm những gì được yêu cầu?

Ứng dụng của tôi có làm mất bộnhớ?

Ứng dụng của tôi có hồi đáp hợp lệ?

Ứng dụng của tôi có hoạt động dưới công suất thiết kế?

Tạo cácTest case cho mỗiscenario đã cài đặt

Các công cụ phân tích và các thiết bị coding

Kiểm tra hiệu năng của mỗiuse-case/scenario đã cài đặt

Kiểm tra hiệu năng của tất cảuse-case ở mức độ tin cậy và trường hợp xấu nhất

Kiểu Tại sao? Thế nào?

Page 49: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm49

Các vấn đề được giải quyết nhờ kiểm định chất lượng

Testing Testing đđáánh ginh giáá khkháách quan ch quan vvềề trtrạạng thng tháái di dựự áánn

ĐĐáánh ginh giáá khkháách quan trich quan triệệt t tiêu ctiêu cáác mâu thuc mâu thuầần sn sớớmm

Testing Testing vvàà kikiểểm đm địịnhnh ttậập p trung vtrung vààoo vvùùngng high riskhigh risk

TTììm thm thấấy thiy thiếếu su sóót st sớớm vm vàà chichiphphíí ssửửa cha chữữa tha thấấpp

CCáác ccc ccụụ test test ttựự đ độộng ging giúúpptesttest đ độộ tintin ccậậyy,, chchứức năngc năng vvààhihiệệu năngu năng

Nguyên nhân cNguyên nhân cốốt lõit lõi CCáách gich giảải quyi quyếếtt¨̈ ThiThiếếuu y y/c/c đ đ/v HT/v HT¨̈ TruyTruyềềnn tintin mơ h mơ hồồ¨̈ KiKiếến trn trúúc kc kéém bm bềềnn¨̈ QuQuáá phphứức tc tạạppþþ ĐĐáánh ginh giáá chchủủ quanquanþþ CCáác mâu thuc mâu thuẫẫn chưa n chưa

đưđượợc xc xáác đc địịnhnhþþ TestTest kkéémm¨̈ QuiQui trtrìình thnh tháác nưc nướớcc¨̈ Thay đThay đổổi không thi không thểể KSKSþþ ThiThiếếu ccu ccụụ ttựự đ độộngng

Page 50: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm50

Kinh nghiệm 6: Kiểm soát thay đổi trong phần mềm

Phát triển theo vòng lặp

Quản trịcác yêu cầu

KiKiểểm som soáát ct cáác thay đc thay đổổi trong hi trong hệệ ththốốngng

Sử dụngkiến trúc

ComponentMô hình hóa

trực quanKiểm địnhchất lượng

Page 51: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm51

Thiếu sự kiểm soát tường minh, đầy đủPhát triển song song dễ biến thành hỗn độn

Kinh nghiệm 6: Kiểm soát thay đổi trong phần mềm (tt)

ww NhiNhiềềuu developerdeveloperww NhiNhiềềuu teamteamww NhiNhiềềuu vvịị trtrííww NhiNhiềềuu vòng lvòng lậậppww NhiNhiềềuu releasereleaseww NhiNhiềềuu projectprojectww NhiNhiềềuu platformplatform

Page 52: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm52

Ba khía cạnh chính của CM System

Page 53: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm53

Các khái niệm của Configuration & Change M.

ww Phân rã kiPhân rã kiếến trn trúúcc ththàành cnh cáácc subsystemsubsystem vvàà ggáánn trtráách nhich nhiệệm m ththựực hic hiệện cn cáácc subsystemsubsystem cho mcho mỗỗi nhi nhóóm m

ww ThiThiếết lt lậập vp vùùng lng lààm vim việệcc anan totoààn cho mn cho mỗỗii developerdeveloper§ Cho phép cô lập với các thay đổi tạo bởi vùng làm việc khác § Kiểm soát tất cả software artifact - models, code, docs, …

ww ThiThiếết lt lậập mp mộột vt vùùng lng lààm vim việệc tc tíích hch hợợppww ThiThiếết lt lậập mp mộột cơ cht cơ chếế khkhảả thi kithi kiểểm som soáátt ccáác thay đc thay đổổiiww NNắắm bm bắắt thay đt thay đổổi xui xuấất hit hiệệnn nnàào xuo xuấất hit hiệện trongn trong releaserelease nnààooww Đưa ra mĐưa ra mộộtt đưđườờng ranh ging ranh giớới hi hạạn chn chỗỗ hohoààn tn tấất ct củủa ma mỗỗi vòng i vòng

llặặpp

Page 54: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm54

Kiểm soát thay đổi hỗ trợ tất cả Best Practices khác

ww PhPháát trit triểển theon theo quiquitrtrìình lnh lặặpp

ww QuQuảản lýn lý yêu cyêu cầầuu

ww DDùùng king kiếến trn trúúcccomponentcomponent

ww Mô hMô hìình hnh hóóa tra trựực c quanquan

ww KiKiểểm đm địịnh chnh chấất t lưlượợngng

èè DDựự áán chn chỉỉ titiếến trin triểển khi cn khi cáác thay đc thay đổổi i đưđượợc kic kiểểm som soáátt

èè ĐĐểể loloạại bi bỏỏ ssựự dãn phdãn phạạm vm vịị, , đđáánh ginh giááảảnh hưnh hưởởngng ccủủa ma mọọi thay đi thay đổổi di dựự kikiếến n trưtrướớc khi chc khi chấấp nhp nhậậnn

èè CCáácc Component Component phphảải đi đáángng tintin ccậậyy, i.e., , i.e., ttììm thm thấấy phiên by phiên bảản đn đúúng đng đắắn cn củủa ta tấất ct cảảccáác phc phầần hn hợợp thp thàànhnh

èè ĐĐểể bbảảo đo đảảm sm sựự hhộội ti tụụ,, phphảải tăng i tăng ddầần kin kiểểm som soáátt ccáácc modelmodel khi ckhi cáác c thithiếết kt kếế ổổn đn địịnhnh

èè Test Test chchỉỉ ccóó ýý nghnghĩĩa na nếếuu ccáácc versionversionccáác phc phầần tn tửử đang đang test test đưđượợc bic biếết rõ vt rõ vààccáác phc phầần tn tửử đưđượợc bc bỏỏa va vệệ trư trướớc cc cáác c thay đthay đổổii

Page 55: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm55

Các vần đề được giải quyết nhờ kiểm soát thay đổi

Requirements change workflow Requirements change workflow đưđượợc xc xáác đc địịnh vnh vàà llặặp lp lạại đi li đi lặặp lp lạạiiCCáácc Change request Change request llààm cho thôngm cho thôngtintin trao đ trao đổổi rõ ri rõ rààngngVVùùng lng lààm vim việệc bic biệệt lt lậậpp gigiảảm cm cáác trc trởởngngạạii dodo llààm vim việệcc song songsong song

ThThốống kê vng kê vềề mmứức đc độộ thay đ thay đổổii llàà đ độộ đo tđo tốốtt cho ccho cáác đc đáánh ginh giáá khkháách quan ch quan vvềề trtrạạng thng tháái ci củủa da dựự áánn

VVùùng lng lààm vim việệc chc chứứa ta tấất ct cảả ccááccartifactartifact ddễễ ttạạo so sựự nhnhấất qut quáánn

KiKiểểm som soáát đưt đượợc sc sựự lan truylan truyềền cn cáác c thay đthay đổổi i

CCáác thay đc thay đổổi đưi đượợc duy trc duy trìì trong mtrong mộột t hhệệ ththốốngng mmạạnh mnh mẽẽ, , ccóó khkhảả năng t năng tùùy y chchỉỉnhnh

Nguyên nhân cNguyên nhân cốốt lõit lõi CCáách gich giảải quyi quyếếttþþ ThiThiếếuu y y/c/c đ đ/v HT/v HTþþ TruyTruyềềnn tintin mơ h mơ hồồ¨̈ KiKiếến trn trúúc kc kéém bm bềềnnþþ QuQuáá phphứức tc tạạppþþ ĐĐáánh ginh giáá chchủủ quanquanþþ Mâu thuMâu thuẫẫn chưa đưn chưa đượợc c

xxáác đc địịnhnh¨̈ TestTest kkéémm¨̈ QuiQui trtrìình thnh tháác nưc nướớccþþ Thay đThay đổổi không thi không thểể

kikiểểm som soááttþþ ThiThiếếu ccu ccụụ ttựự đ độộngng

Page 56: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm56

Các kinh nghiệm hỗ trợ lẫn nhau

Ensures users involved as requirements evolve

Validates architectural decisions early on

Addresses complexity of design/implementation incrementally

Measures quality early and often

Evolves baselines incrementally

PhPháát trit triểển theon theovòng lvòng lặặpp

KiKiểểm som soáát ct cáác c thay đthay đổổi trong i trong

hhệệ ththốốngng

SSửử ddụụngngkikiếến trn trúúcc

ComponentComponent

QuQuảản trn trịịccáácc yêu cyêu cầầuu

Mô hMô hìình hnh hóóaatrtrựực quanc quan

KiKiểểm đm địịnhnhchchấất lưt lượợngng

Page 57: Ccmtptpm 01 cackinhnghiemptpm

Công cụ môi trường phát triển phần mềm57

Tổng kết

ww KKếết qut quảả llàà phphầần mn mềềm trm trởở nênnên§ Đúng thời hạn§ Bảo đảm ngân sách § Thỏa mãn nhu cầu user

ProjectManager

PerformanceEngineer

ReleaseEngineer

Analyst

Developer

Tester

KiKiểểm som soáát ct cáác thay đc thay đổổI trong hI trong hệệ ththốốngng

PhPháát trit triểển theo vòng ln theo vòng lặặpp

SSửử ddụụng ng kikiếến trn trúúcc

ComponentComponent

QuQuảản trn trịịccáác yêu cc yêu cầầuu

Mô hMô hìình hnh hóóaatrtrựực quanc quan

KiKiểểm đm địịnhnhchchấất lưt lượợngng