Bài giảng kỹ thuật phần mềm ứng dụng
Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.39 MB, 241 trang )
Bạn đang đọc: Bài giảng kỹ thuật phần mềm ứng dụng
Viện Điện tử – Viễn thông
Bộ Môn Điện tử – Kỹ thuật máy tính
Kỹ thuật phần mềm ứng dụng
Chương 1: Tổng quan môn học
Các nội dung chính
• Giới thiệu chung
• Các khái niệm cơ bản
• Các loại phần mềm
• Giới thiệu các mô hình tiến trình phổ biến
2
Giới thiệu chung
• Kỹ thuật phần mềm (hay kỹ nghệ phần mềm
– software engineering) là một chuyên ngành
kỹ thuật (engineering discipline) với trọng tâm
nhằm phát triển các hệ thống phần mềm chất
lượng cao một cách hiệu quả
• Phần mềm có đặc điểm là trừu tượng và
không chạm đến được (intangible). Điều này
làm cho phần mềm rất dễ trở nên phức tạp và
khó hiểu
3
Giới thiệu chung
• Khái niệm “Software Engineering” xuất hiện
lần đầu vào năm 1968 trong một cuộc họp bàn
về một vấn đề được gọi là “Cuộc khủng
hoảng phần mềm” (Software crisis)
• Chuyên ngành SE ra đời trong hoàn cảnh đó,
với sứ mạng tìm ra các biện pháp giúp ngành
công nghiệp phần mềm tránh được nguy cơ
khủng hoảng. Và thực sự, nó đã hoàn thành sứ
mạng này, và cái gọi là “cuộc khủng hoảng
phần mềm” đã không thực sự xảy ra.
4
Các khái niệm cơ bản
• Phần mềm (sản phẩm phần mềm), bao gồm:
– Chương trình (Program): là phần được thi hành
trên máy tính
– Dữ liệu (Data): gồm các cấu trúc dữ liệu, cơ sở dữ
liệu lưu giữ các dữ liệu vào và ra của chương trình
– Tài liệu (Documentation): tài liệu hệ thống, tài
liệu người dùng
5
Các khái niệm cơ bản
• Kỹ thuật phần mềm (Software Engineering):
Là một chuyên ngành kỹ thuật mà quan tâm
đến tất cả các khía cạnh của việc sản xuất phần
mềm, với mục tiên sản xuất ra các sản phẩm
phần mềm đa dạng, chất lượng cao, một cách
hiệu quả nhất.
6
Các tầng của SE
Quality Focus
Process
Methods
Tools
7
Các tầng của SE
• Đảm bảo chất lượng (quality focus) sản phẩm hay dịch vụ luôn là
một nhiệm vụ sống còn của các công ty hay tổ chức. Do đó, mọi nền
tảng công nghệ và kỹ thuật đều phải lấy việc đảm bảo chất lượng là
mục tiêu hướng tới, và kỹ thuật phần mềm cũng không thể nằm
ngoài mục tiêu này
• Tầng Tiến trình (process) có nhiệm vụ định nghĩa một khung các
giai đoạn và các hoạt động cần thực hiện, cũng như các kết quả kèm
theo chúng. Tầng này đóng vai trò nền tảng để kết nối các phương
pháp, công cụ trong các bước thực hiện cụ thể, để có thể tạo ra các
phần mềm có chất lượng và đúng thời hạn
• Các phương pháp (methods) kỹ thuật phần mềm cung cấp các chi
tiết kỹ thuật là làm thế nào để xây dựng được phần mềm
• Các công cụ (tools) cung cấp các phương tiện hỗ trợ tự động hoặc
bán tự động cho các giai đoạn hay các phương pháp. Các hệ thống
phần mềm hỗ trợ trong công nghệ phần mềm được gọi là CASE
(computer-aided software engineering)
8
Tiến trình phần mềm
• Là một dãy các giai đoạn và các hoạt động trong
đó, cũng như các kết quả kèm theo. Kết quả cuối
cùng chính là phần mềm cần phải xây dựng, đáp
ứng được các yêu cầu của người dùng, và hoàn
thành theo đúng kế hoạch về thời gian và ngân
sách
• Có ba giai đoạn chính trong tiến trình phần mềm:
– Giai đoạn định nghĩa (definition phase)
– Giai đoạn phát triển (development phase)
– Giai đoạn hỗ trợ (support phase)
9
Tiến trình phần mềm
• Giai đoạn định nghĩa: tập trung vào làm rõ
Cái gì, bao gồm:
– Thông tin gì cần xử lý, bao gồm thông tin đầu vào
và đầu ra.
– Các chức năng gì cần thực hiện.
– Hành vi nào của hệ thống sẽ được mong đợi.
– Các tiêu chuẩn hợp lệ nào để đánh giá được sự
đúng đắn và thành công của hệ thống.
10
Tiến trình phần mềm
• Giai đoạn phát triển: tập trung vào Làm thế
nào, bao gồm:
– Kiến trúc hệ thống (system architecture) được tổ
chức thế nào.
– Các chức năng được cài đặt và liên kết với nhau
thế nào.
– Tổ chức các cấu trúc dữ liệu, cơ sở dữ liệu thế nào.
– Chuyển từ thiết kế sang cài đặt thế nào?
– Việc kiểm thử sẽ được thực hiện thế nào?
11
Tiến trình phần mềm
• Giai đoạn hỗ trợ: còn gọi là giai đoạn bảo trì,
tập trung vào việc ứng phó với các thay đổi
của hệ thống phần mềm, bao gồm:
– Sửa lỗi (Correction)
– Làm thích ứng (Adaptation)
– Nâng cấp (Upgrade)
– Phòng ngừa (Prevention), còn gọi là tái kỹ thuật
phần mềm (software reengineering)
12
Tiến trình phần mềm
Giai đoạn
Phát triển
Giai đoạn
định nghĩa
Giai đoạn
Hỗ trợ
Lập kế hoạch dự án
13
Thu thập các yêu cầu
Phân tích
Thiết kế
Cài đặt và kiểm thử
Bảo trì
Tiến trình phần mềm
14
Tiến trình phần mềm
• Khung tiến trình chung (common process
framework): là mô hình chung cho các dự án phần
mềm khác nhau trong một tổ chức. Nó bao gồm:
– Các công việc trong khung (Framework activities)
gồm:
• Các nhiệm vụ cụ thể (tasks)
• Các mốc thời gian (milestones)
• Các kết quả bàn giao (deliverables)
• Các điểm kiểm tra chất lượng hệ thống (SQA points)
– Các công việc bao trùm (Umbrella activities) gồm:
• Quản lý chất lượng phần mềm
• QL cấu hình phần mềm
15
Mô hình tiến trình phần mềm
• Mô hình tiến trình (process model) Là một
chiến lược phát triển phần mềm, bao gồm các
cách thức kết hợp, sử dụng tiến trình phần
mềm, cách vận dụng các phương pháp và các
công cụ trong mỗi giai đoạn phát triển.
• Mô hình tiến trình cũng còn được gọi là mẫu
tiến trình (process paradigm), hay mô hình
phát triển phần mềm.
16
Các loại phần mềm
• Phần mềm hệ thống (system software)
• Phần mềm thời gian thực (real time sw)
• Phần mềm quản lý (business sw): cũng được gọi là hệ
thông tin quản lý (management information system –
MIS)
• Phần mềm khoa học và công nghệ (engineering and
scientific sw)
• Phần mềm nhúng (embedded sw)
• Phần mềm văn phòng (office sw)
• Phần mềm Web (Web-based sw)
• Phần mềm trí tuệ nhân tạo (artificial intelligence sw)
• V.v.
17
Các mô hình tiến trình
• Mô hình tuyến tính cổ điển (mô hình thác nước
– Waterfall model)
• Mô hình bản mẫu (Prototyping model)
• Mô hình RAD (Rapid Application
Development model)
• Mô hình tăng trưởng (Incremental model)
• Mô hình xoáy ốc (Spiral model)
18
Mô hình tuyến tính cổ điển*
Thu thập các yêu cầu
Các yêu cầu hệ thống
Các yêu cầu phần mềm
Phân tích
Thiết kế chương trình
Cài đặt
Kiểm thử
Vận hành
19
Mô hình tuyến tính cổ điển
• Mô hình này có một số đặc điểm như sau:
– Các bước được tiến hành tuần tự, kết thúc bước
trước thì mới thực hiện đến bước sau
– Thời gian thực hiện mỗi bước thường kéo dài do
phải làm thật hoàn chỉnh
– Thường chỉ tiếp xúc với người dùng vào giai đoạn
đầu và giai đoạn cuối. Người dùng thường không
tham gia vào các bước ở giữa, như từ thiết kế, cài
đặt và đến tích hợp
20
Mô hình tuyến tính cổ điển
• Ưu điểm:
– Đơn giản và rõ ràng
– Đóng vai trò như một mẫu tham chiếu cho các mô hình khác
– Vẫn còn được sử dụng rộng rãi cho đến nay
• Nhược điểm:
– Không dễ dàng cho việc thu thập đầy đủ và tường minh tất cả
các yêu cầu hệ thống ngay từ ban đầu
– Người dùng phải chờ đến cuối cùng mới có được hệ thống để
dùng, nên thời gian chờ đợi là khá lâu, có khi đến hàng năm. Khi
đó có thể có các yêu cầu mới đã phát sinh, dễ dẫn khả năng hệ
thống không còn đáp ứng được kỳ vọng của người dùng.
– Dễ dẫn đến tình trạng “blocking states”, tức là khi có một nhóm
bị chậm tiến độ, thì các nhóm khác phải chờ, và thời gian chờ
đợi thậm chí vượt quá thời gian làm việc.
21
Mô hình bản mẫu
• Thông thường trong thực tế, các yêu cầu của hệ
thống khó có thể xác định rõ ràng và chi tiết ngay
trong gia đoạn đầu của dự án phần mềm vì:
– Người dùng cũng chỉ đưa ra các mục tiêu tổng quát
của phần mềm, chứ cũng chưa định rõ được một cách
chi tiết các chức năng cụ thể, hay các thông tin chi tiết
đầu vào, đầu ra như thế nào.
– Nhà phát triển cũng chưa xác định rõ ràng ngay các
yêu cầu, cũng như chắc chắn về chất lượng phần mềm,
cũng như khả năng thỏa mãn của khách hàng
mô hình bản mẫu
22
Mô hình bản mẫu
23
Mô hình bản mẫu
Gồm các giai đoạn:
– Thu thập các yêu cầu (requirements gathering): khách
hàng và nhà phát triển sẽ gặp nhau để xác định ra các mục
tiêu tổng thể của phần mềm. Sau đó họ sẽ định ra phần nào
đã rõ, phần nào cần phải định nghĩa thêm.
– Thiết kế nhanh (quick design): thiết kế này tập trung vào
những phần mà khách hàng có thể nhìn thấy được (giao
diện, các dữ liệu vào, ra). Sau đó, từ thiết kế này, một bản
mẫu sẽ được xây dựng.
– Kiểm tra và đánh giá bản mẫu: Bản mẫu này sẽ được
dùng để cho phép người dùng đánh giá, nhằm làm rõ hơn
các yêu cầu của họ. Đồng thời, thông qua bản mẫu, người
phát triển hệ thống cũng hình dung cụ thể hơn về những
yêu cầu của khách hàng, cũng như khả năng cài đặt và hiệu
quả hoạt động của hệ thống.
24
mạng này, và cái gọi là “ cuộc khủng hoảngphần mềm ” đã không thực sự xảy ra. Các khái niệm cơ bản • Phần mềm ( loại sản phẩm phần mềm ), gồm có : – Chương trình ( Program ) : là phần được thi hànhtrên máy tính – Dữ liệu ( Data ) : gồm những cấu trúc tài liệu, cơ sở dữliệu lưu giữ những tài liệu vào và ra của chương trình – Tài liệu ( Documentation ) : tài liệu mạng lưới hệ thống, tàiliệu người dùngCác khái niệm cơ bản • Kỹ thuật phần mềm ( Software Engineering ) : Là một chuyên ngành kỹ thuật mà quan tâmđến toàn bộ những góc nhìn của việc sản xuất phầnmềm, với mục tiên sản xuất ra những sản phẩmphần mềm phong phú, chất lượng cao, một cáchhiệu quả nhất. Các tầng của SEQuality FocusProcessMethodsToolsCác tầng của SE • Đảm bảo chất lượng ( quality focus ) loại sản phẩm hay dịch vụ luôn làmột trách nhiệm sống còn của những công ty hay tổ chức triển khai. Do đó, mọi nềntảng công nghệ tiên tiến và kỹ thuật đều phải lấy việc bảo vệ chất lượng làmục tiêu hướng tới, và kỹ thuật phần mềm cũng không hề nằmngoài tiềm năng này • Tầng Tiến trình ( process ) có trách nhiệm định nghĩa một khung cácgiai đoạn và những hoạt động giải trí cần triển khai, cũng như những tác dụng kèmtheo chúng. Tầng này đóng vai trò nền tảng để liên kết những phươngpháp, công cụ trong những bước thực thi đơn cử, để hoàn toàn có thể tạo ra cácphần mềm có chất lượng và đúng thời hạn • Các giải pháp ( methods ) kỹ thuật phần mềm phân phối những chitiết kỹ thuật là làm thế nào để kiến thiết xây dựng được phần mềm • Các công cụ ( tools ) phân phối những phương tiện đi lại tương hỗ tự động hóa hoặcbán tự động hóa cho những tiến trình hay những chiêu thức. Các hệ thốngphần mềm tương hỗ trong công nghệ phần mềm được gọi là CASE ( computer-aided software engineering ) Tiến trình phần mềm • Là một dãy những quy trình tiến độ và những hoạt động giải trí trongđó, cũng như những hiệu quả kèm theo. Kết quả cuốicùng chính là phần mềm cần phải kiến thiết xây dựng, đápứng được những nhu yếu của người dùng, và hoànthành theo đúng kế hoạch về thời hạn và ngânsách • Có ba quá trình chính trong tiến trình phần mềm : – Giai đoạn định nghĩa ( definition phase ) – Giai đoạn tăng trưởng ( development phase ) – Giai đoạn tương hỗ ( tư vấn phase ) Tiến trình phần mềm • Giai đoạn định nghĩa : tập trung chuyên sâu vào làm rõCái gì, gồm có : – tin tức gì cần giải quyết và xử lý, gồm có thông tin đầu vàovà đầu ra. – Các công dụng gì cần triển khai. – Hành vi nào của mạng lưới hệ thống sẽ được mong đợi. – Các tiêu chuẩn hợp lệ nào để nhìn nhận được sựđúng đắn và thành công xuất sắc của mạng lưới hệ thống. 10T iến trình phần mềm • Giai đoạn tăng trưởng : tập trung chuyên sâu vào Làm thếnào, gồm có : – Kiến trúc mạng lưới hệ thống ( system architecture ) được tổchức thế nào. – Các công dụng được setup và link với nhauthế nào. – Tổ chức những cấu trúc tài liệu, cơ sở tài liệu thế nào. – Chuyển từ phong cách thiết kế sang setup thế nào ? – Việc kiểm thử sẽ được triển khai thế nào ? 11T iến trình phần mềm • Giai đoạn tương hỗ : còn gọi là tiến trình bảo dưỡng, tập trung chuyên sâu vào việc ứng phó với những thay đổicủa mạng lưới hệ thống phần mềm, gồm có : – Sửa lỗi ( Correction ) – Làm thích ứng ( Adaptation ) – Nâng cấp ( Upgrade ) – Phòng ngừa ( Prevention ), còn gọi là tái kỹ thuậtphần mềm ( software reengineering ) 12T iến trình phần mềmGiai đoạnPhát triểnGiai đoạnđịnh nghĩaGiai đoạnHỗ trợLập kế hoạch dự án13Thu thập những yêu cầuPhân tíchThiết kếCài đặt và kiểm thửBảo trìTiến trình phần mềm14Tiến trình phần mềm • Khung tiến trình chung ( common processframework ) : là quy mô chung cho những dự án Bất Động Sản phầnmềm khác nhau trong một tổ chức triển khai. Nó gồm có : – Các việc làm trong khung ( Framework activities ) gồm : • Các trách nhiệm đơn cử ( tasks ) • Các mốc thời hạn ( milestones ) • Các tác dụng chuyển giao ( deliverables ) • Các điểm kiểm tra chất lượng mạng lưới hệ thống ( SQA points ) – Các việc làm bao trùm ( Umbrella activities ) gồm : • Quản lý chất lượng phần mềm • quốc lộ thông số kỹ thuật phần mềm15Mô hình tiến trình phần mềm • Mô hình tiến trình ( process Model ) Là mộtchiến lược tăng trưởng phần mềm, gồm có cáccách thức tích hợp, sử dụng tiến trình phầnmềm, cách vận dụng những chiêu thức và cáccông cụ trong mỗi tiến trình tăng trưởng. • Mô hình tiến trình cũng còn được gọi là mẫutiến trình ( process paradigm ), hay mô hìnhphát triển phần mềm. 16C ác loại phần mềm • Phần mềm mạng lưới hệ thống ( system software ) • Phần mềm thời hạn thực ( real time sw ) • Phần mềm quản trị ( business sw ) : cũng được gọi là hệthông tin quản trị ( management information system – MIS ) • Phần mềm khoa học và công nghệ tiên tiến ( engineering andscientific sw ) • Phần mềm nhúng ( embedded sw ) • Phần mềm văn phòng ( office sw ) • Phần mềm Web ( Web-based sw ) • Phần mềm trí tuệ tự tạo ( artificial intelligence sw ) • V.v. 17C ác quy mô tiến trình • Mô hình tuyến tính cổ xưa ( quy mô thác nước – Waterfall model ) • Mô hình bản mẫu ( Prototyping model ) • Mô hình RAD ( Rapid ApplicationDevelopment model ) • Mô hình tăng trưởng ( Incremental model ) • Mô hình xoáy ốc ( Spiral model ) 18M ô hình tuyến tính cổ xưa * Thu thập những yêu cầuCác nhu yếu hệ thốngCác nhu yếu phần mềmPhân tíchThiết kế chương trìnhCài đặtKiểm thửVận hành19Mô hình tuyến tính cổ xưa • Mô hình này có một số ít đặc thù như sau : – Các bước được thực thi tuần tự, kết thúc bướctrước thì mới triển khai đến bước sau – Thời gian triển khai mỗi bước thường lê dài dophải làm thật hoàn hảo – Thường chỉ tiếp xúc với người dùng vào giai đoạnđầu và quá trình cuối. Người dùng thường khôngtham gia vào những bước ở giữa, như từ phong cách thiết kế, càiđặt và đến tích hợp20Mô hình tuyến tính cổ xưa • Ưu điểm : – Đơn giản và rõ ràng – Đóng vai trò như một mẫu tham chiếu cho những quy mô khác – Vẫn còn được sử dụng thoáng rộng cho đến nay • Nhược điểm : – Không thuận tiện cho việc tích lũy không thiếu và tường minh tất cảcác nhu yếu mạng lưới hệ thống ngay từ bắt đầu – Người dùng phải chờ đến ở đầu cuối mới có được mạng lưới hệ thống đểdùng, nên thời hạn chờ đón là khá lâu, có khi đến hàng năm. Khiđó hoàn toàn có thể có những nhu yếu mới đã phát sinh, dễ dẫn năng lực hệthống không còn phân phối được kỳ vọng của người dùng. – Dễ dẫn đến thực trạng “ blocking states ”, tức là khi có một nhómbị chậm quá trình, thì những nhóm khác phải chờ, và thời hạn chờđợi thậm chí còn vượt quá thời hạn thao tác. 21M ô hình bản mẫu • Thông thường trong trong thực tiễn, những nhu yếu của hệthống khó hoàn toàn có thể xác lập rõ ràng và cụ thể ngaytrong gia đoạn đầu của dự án Bất Động Sản phần mềm vì : – Người dùng cũng chỉ đưa ra những tiềm năng tổng quátcủa phần mềm, chứ cũng chưa định rõ được một cáchchi tiết những công dụng đơn cử, hay những thông tin chi tiếtđầu vào, đầu ra như thế nào. – Nhà tăng trưởng cũng chưa xác lập rõ ràng ngay cácyêu cầu, cũng như chắc như đinh về chất lượng phần mềm, cũng như năng lực thỏa mãn nhu cầu của người mua quy mô bản mẫu22Mô hình bản mẫu23Mô hình bản mẫuGồm những quy trình tiến độ : – Thu thập những nhu yếu ( requirements gathering ) : kháchhàng và nhà tăng trưởng sẽ gặp nhau để xác lập ra những mụctiêu tổng thể và toàn diện của phần mềm. Sau đó họ sẽ định ra phần nàođã rõ, phần nào cần phải định nghĩa thêm. – Thiết kế nhanh ( quick design ) : phong cách thiết kế này tập trung chuyên sâu vàonhững phần mà người mua hoàn toàn có thể nhìn thấy được ( giaodiện, những tài liệu vào, ra ). Sau đó, từ phong cách thiết kế này, một bảnmẫu sẽ được kiến thiết xây dựng. – Kiểm tra và nhìn nhận bản mẫu : Bản mẫu này sẽ đượcdùng để cho phép người dùng nhìn nhận, nhằm mục đích làm rõ hơncác nhu yếu của họ. Đồng thời, trải qua bản mẫu, ngườiphát triển mạng lưới hệ thống cũng tưởng tượng đơn cử hơn về nhữngyêu cầu của người mua, cũng như năng lực thiết lập và hiệuquả hoạt động giải trí của mạng lưới hệ thống. 24