Công nghệ phần mềm
1
Phầnmềm(Software)
•
•
•
•
•
Địnhnghĩa
Vaitrò
Nhữngđặctrưngchính
Phânloại
Tiêuchíphầnmềmtốt
2
Phầnmềm– Địnhnghĩa
• Phần mềm gồm chương trình máy tính và tất cả
các tài liệu và dữ liệu liên quan
– Các chương trình
– Các tệp cấu hình
– Các tài liệu hệ thống
– Tài liệu người dùng
– Websitescập nhật thông tinsản phẩm
• Phần mềm luôn gắn với một hệ thống cụ thể
3
Phầnmềm– Phânloại
• Phần mềm dùng chung
– Tác giả sở hữu đặc tả phần mềm
– Bán rộng rãi
– MicrosoftOffice,AngryBirds
• Phần mềm đặt hàng
– Làm riêng cho một khách hàng cụ thể
– Khách hàng sở hữu đặc tả
– Hệ thống quản lý đào tạo Đại học Quốc gia Hà Nội
4
Phầnmềm– Vaitrò
• Làm thay đổi phong cách làm việc của tổ chức
• Tăng hiệu suất làm việc của đơn vị
• Ảnh hưởng đến nền kinh tế quốc gia
– Nền kinh tế của tất cả các nước phát triển đều phụ
thuộc vào phần mềm
– Tiền chicho phần mềm chiếm một tỷ lệ quan trọng
trong GNPcủa tất cả các nước phát triển
5
Phầnmềm– Cácđặctrưngchính
• Phần mềm vốn dĩ phức tạp
• Yêu cầu phần mềm không ngừng thay đổi
– Nhu cầu conngười
– Quy trình quản lý
– Hạ tầng phần cứng
• Nhu cầu sử dụng phần mềm ngày càng tăng lên
6
Phầnmềm– Tiêuchíphầnmềmtốt
• Tính bảo trì được
– Phần mềm phải tiến hóa để đáp ứng các nhu cầu liên tục
thay đổi
• Tính tincậy được
• Tính hiệu quả
Cái gì quan trọng nhất?
– Phần mềm không nên sử dụng tài nguyên hệ thống một
cách lãng phí
• Tính chấp nhận được
– Phần mềm thỏa mãn được yêu cầu của người dùng:người
dùng hiểu được,dùng được nó,và nó tương thích với các
hệ thống khác
7
Phầnmềm– Tổngkết
• Phầnmềmcóvaitròquantrọng
• Pháttriểnphầnmềmlàcôngviệcphứctạp,rủiro
Cầnápdụngcácphươngpháptiêntiến
8
Kỹnghệphầnmềm– Kháiniệm
• Các lý thuyết,các phương pháp và các công cụ hỗ
trợ cho phát triển phần mềm
• Áp dụng các lý thuyết,các phương pháp,các công cụ
phù hợp trong quá trình sản xuất phần mềm dưới các
ràng buộc về tổ chức và tài chính.
• Phát triển các lý thuyết,các phương pháp,các công cụ
hỗ trợ quá trình sản xuất phần mềm.
Cáchtiếpcậncótổchứcvàcóhệthống
9
SE- Cácyếutố
• Phương pháp (method)
– Cách làm cụ thể để xây dựng phần mềm
– Mỗi công đoạn làm phần mềm có các phương pháp riêng
• Công cụ (tool)
– Thực hiện tự động/bán tự động các công đoạn làm phần
mềm
– ComputerAidedSoftwareEngineering(CASE-Tools)
• Quy trình (process)
– Các bước thực hiện và thứ tự các bước
– Đầu vào,đầu ra ởmỗi bước
10
SE- Cáchoạtđộngchính
• Các hoạt động tổng quát trong mọi quy trình phần
mềm
– Đặc tả (specification)– hệ thống cần làm gì và các ràng
buộc
– Phát triển (development)– tạo ra hệ thống phần mềm
– Thẩm định (validation)– kiểm tra xem phần mềm có
đúng như khách hàng muốn haykhông
– Tiến hóa (evolution)– sửa đổi phần mềm để đáp ứng
các nhu cầu thay đổi.
11
Softwareprocesses
• Tiến trình phần mềm (softwareprocess):
Một lộ trình với các hoạt động dự kiến trước nhằm
tạo ra một phần mềm chất lượng,hiệu quả,và
đúng hạn.
– Các hoạt động đặc tả,phát triển,thẩm định,tiến hóa
• Mô hình tiến trình phần mềm (softwareprocess
model)
Trừu tượng hóa của một lớp các tiến trình thực.
– Ví dụ:mô hình thác nước
12
Môhìnhthácnước
Requirements
Design
Implementation
Waterfall
method
Testing
Deployment &
Maintenance
13
Pháttriểnlặp
• IBMRationalUnifiedProcess(RUP)
14
Agilemethods
15
Agilemethods
16
SE– Tổngkết
• Kỹ nghệ phần mềm bao gồm việc phát triển các lý
thuyết,các phương pháp và các công cụ hỗ trợ quá
trình sản xuất phần mềm và việc áp dụng chúng vào
các quá trình sản xuất phần mềm thức tế.
• Tiến trình phần mềm bao gồm các hoạt động cần thực
hiện để phát triển phần mềm
• Phương pháp phần mềm mô tả cách thức thực hiện
các hoạt động phát triển phần mềm
• Công cụ phần mềm hỗ trợ việc xây dựng phần mềm
17
Côngnghệphầnmềm
Cácquytrìnhphầnmềm
18
Nộidung
•
•
•
•
•
•
Các mô hình quy trình phần mềm tổng quát
Processiteration
Các hoạt động chung nhất của các quy trình
Agileprocess
RationalUnifiedProcess
CASE– Computer-aidedsoftwareengineering
19
Quytrìnhphầnmềm
• Quytrìnhphầnmềm(softwareprocess)làmộttậpcáchoạtđộng
cầnthiếtđểpháttriểnmộthệthốngphầnmềm:
– Đặctả- Specification;
– Thiếtkế- Design;
– Thẩmđịnh- Validation;
– Tiếnhóa- Evolution.
• Mộtmôhìnhquytrìnhphầnmềmlàmộtbiểudiễntrừutượngcủa
mộtquytrình.
– Mộtmôtảvềmộtquytrìnhtừmộtgócđộnàođó.
20
Cácmôhìnhquytrìnhphầnmềmtổngquát
• Môhìnhthácnước– Thewaterfallmodel
– Táchbiệtcácphađặctảvàpháttriển.
• Pháttriểntiếnhóa– Evolutionarydevelopment
– Cáchoạtđộngđặctả,pháttriểnvàthẩmđịnhxenkẽnhau.
• CNPMdựathànhphần– Component-based SE
– Hệthốngđượclắpráptừcácthànhphầnsẵncó.
• Cónhiềubiếnthểcủacácmôhìnhnày(kếthợpcácmôhìnhkhác
nhau)
– v.d.hoạtđộngpháttriểndùngquytrìnhkiểuthácnướcnhưnghoạtđộng
đặctảđượclàmmịnquanhiềubướcchođếnkhiđạtđượcmộtthiếtkế
càiđặtđược.
21
Môhìnhthácnước
Requirements
definition
System
and
software
design
Implementation
and unit testing
Integration
and system
testing
Operation
and
maintenance
22
Cácphatrongmôhìnhthácnước
•
•
•
•
•
Phântíchvàđịnhnghĩayêucầu
Thiếtkếhệthốngvàphầnmềm
Càiđặtvàkiểmthửđơnvị
Tíchhợpvàkiểmthửhệthống
Vậnhànhvàbảotrì
Nhược điểm chính của mô hình thác nước là khó
khăn của việc sửa đổi sau khi quy trình đã vào
guồng. Pha này phải được hoàn tất trước khi
bước vào pha tiếp theo.
23
Cácvấnđềcủamôhìnhthácnước
• Khóđápứngviệckháchhàngthayđổiyêucầu.
– doviệcphândựánthànhcácgiaiđoạntáchbiệt
• Chỉthíchhợpkhicácyêucầuđượchiểurõvàítcóthayđổitrong
quytrìnhpháttriển.
– Íthệthốngdoanhnghiệpcócácyêucầuổnđịnhítthayđổitheo
thờigian.
• Chủyếudùngchocácdựánhệthốnglớn,khimộthệthốngđược
pháttriểntạicácđịađiểmkhácnhau.
24
Pháttriểntiếnhóa
• Pháttriểnthămdò(exploratorydevelopment)
– Mụcđíchlàlàmviệcvớikháchhàngvàtừngbướcphát
triển(evolve)từmộtđặctảsơlượcbanđầutớimộthệ
thốnglàsảnphẩmcuốicùng.
• nênbắtđầutừmộtbộyêucầuđượchiểurõvàbổsungcáctính
năngmớikhikháchhàngđềxuất.
• Cácphiênbảnthửnghiệmdùngtạm(throw-away
prototyping)
– Mụcđíchđểhiểucácyêucầuhệthống.
• nênbắtđầutừbộyêucầukhôngđượchiểurõđểcóthểlàmrõ
đâulàcáithựcsựđượcyêucầu.
25