Giới thiệu về công nghệ phần mềm và giải thích về tầm quan trọng của nó Đưa ra một số câu hỏi cơ bản về công nghệ phần mềm Trình bày thêm về vấn đề đạo đức nghề nghiệp liên quan tới lĩnh vực công nghệ phần mềm
Trang 1Giới thiệu tổng quan về công nghệ phần mềm
Trang 2 Trình bày thêm về vấn đề đạo đức nghề nghiệp
liên quan tới lĩnh vực công nghệ phần mềm
Trang 3Topics covered
Những câu hỏi cơ bản trong lĩnh vực CNPM
Trách nhiệm và đạo đức nghề nghiệp của người
làm IT
Trang 4Software engineering
Hầu hết các lĩnh vực kinh tế của các quốc gia phát triển
đều phụ thuộc vào phần mềm
Ngày càng có nhiều hệ thống được phần mềm điều khiển
Công nghệ phần mềm liên quan tới các lý thuyết,
phương thức và các công cụ để phát triển phần mềm chuyên nghiệp
Đầu tư hiệu quả vào phần mềm rất có ý nghĩa đối với
tổng sản lượng quốc gia (GDP) đối với các nước phát triển
Trang 5Chi phí phần mềm
Chi phí phần mềm chiếm phần lớn chi phí của
các hệ thống máy tính Chi phí cho phần mềm ngày càng lớn hơn chi phí phần cứng
Chi phí bảo trì ngày càng nhiều hơn chi phí phát
triển Đối với các hệ thống có thời gian sống dài, chi phí bảo trì có thể lớn gấp vài lần chi phí phát triển
Kỹ nghệ phần mềm liên quan tới việc phát triển
phần mềm với chi phí hợp lý
Trang 6Những câu hỏi trong lĩnh vực CNPM
Trang 7Những câu hỏi trong lĩnh vực CNPM
Trang 8Phần mềm là gì?
Các chương trình máy tính kết hợp với các tài liệu như: yêu cầu
phần mềm, các mô hình thiết kế và hướng dẫn sử dụng
Các sản phẩm phần mềm có thể được phát triển cho từng
khách hàng cụ thể hoặc phát triển cho thị trường dùng chung
Các sản phẩm phần mềm có thể là
• Generic – phần mềm được phát triển cho một nhiều đối tượng khách
hàng khác nhau (Excel, word )
• Bespoke (custom) phát triển cho một khách hàng cụ thể theo mô tả của
họ
Phần mềm mới có thể được tạo ra bằng việc phát triển một
chương trình mới, cấu hình các hệ thống phần mềm chung hoặc tái sử dụng phần mềm đã có
Trang 9Kỹ nghệ phần mềm là gì?
Kỹ nghệ phần mềm là những kỹ nghệ cơ bản
liên quan tới tất cả các khía cạnh của việc sản xuất phần mềm
và cách tiếp cận đã được chuẩn hóa, kết hợp với việc sử dụng các công cụ và kỹ thuật hợp lý để giải quyết, phát triển phần mềm dưới những
ràng buộc và nguồn tài nguyên có thể
Trang 10Sự khác nhau giữa kỹ nghệ phần mềm và
khoa học máy tính
Khoa học máy tính liên quan tới những nguyên
lý và phương pháp; CNPM liên quan tới các thực
tế phát triển và bàn giao các sản phẩm phần mềm hữu ích
Những kiến thức về khoa học máy tính là cần
thiết cho những kỹ sư phần mềm, giống như những hiểu biết về vật lý cho các kỹ sư điện
Trang 11Sự khác nhau giữa CNPM
và kỹ nghệ hệ thống
Kỹ nghệ hệ thống liên quan tới tất cả các khía
cạnh của việc phát triển các hệ thống dựa trên máy tính, bao gồm phần cứng, phần mềm và tiến trình công nghệ CNPM là một phần của tiến trình này, liên quan tới việc phát triển cơ sở hạ tầng phần mềm, điều khiển, ứng dụng và CSDL trong hệ thống
Các kỹ sư hệ thống liên quan tới việc đặc tả hệ
thống, thiết kế kiến trúc, tích hợp và phát triển
Trang 12Tiến trình phần mềm là gì?
Một tập hợp các hoạt động với mục tiêu phát triển hoặc
cải tiến phần mềm
Các hoạt động chung trong tiến trình phần mềm là:
• Đặc tả - hệ thống phải làm gì và những ràng buộc trong việc
phát triển
• Phát triển – sản xuất hệ thống phần mềm
• Kiểm thử (validation)- kiểm tra xem phần mềm có đáp ứng
được những mong muốn của khách hàng
• Cải tiến (Evolution) – thay đổi phần mềm để đáp ứng được
những yêu cầu thay đổi
Trang 13Mô hình tiến trình phần mềm là gì?
Một cách trình diễn đơn giản một tiến trình phần mềm
Một số ví dụ về mô hình tiến trình phần mềm
• Workflow perspective - sequence of activities;
• Data-flow perspective - information flow;
• Role/action perspective - who does what.
Các mô hình tiến trình chung
• Waterfall;
• Iterative development;
• Component-based software engineering.
Trang 14Chi phí của kỹ nghệ phần mềm
Gần 60% chi phí cho việc phát triển phần mềm,
40% chi phí cho kiểm thử phần mềm Đối với phần mềm riêng, chi phí cho việc cải tiến sản phẩm còn nhiều hơn chi phí phát triển
Chi phí khác nhau phụ thuộc và các kiểu phát
triển hệ thống và các yêu cầu thuộc tính của hệ thống, chẳng hạn như tính hiệu năng và độ tin cậy
Sự phân phối chi phí của các giai đoạn phụ
thuộc vào mô hình phát triển được sử dụng
Trang 15Activity cost distributionWaterfall model
Iterative development
Component-based software eng ineering
Development and evolution costs for long-lifetime syst ems
Specification Design Development Integration and testing
0
Trang 16Product development costs
Specification Development System testing
0
Trang 17Mô hình kỹ nghệ phần mềm là gì?
Các cách tiếp cậu cấp trúc hóa để phát triển phần mềm
bao gồm: các mô hình hệ thống, các định nghĩa, quy tắc, các hướng dẫn thiết kế và các tiến trình đã được chứng minh qua thực tiễn
Biểu diễn mô hình
• Các cách biểu diễn các mô hình dạng hình học
Trang 18CASE (Computer-Aided Software
• Các công cụ hỗ trợ những hoạt động trong giai đoạn đầu của
tiến trình phần mềm, chẳng hạn như đặc tả hoặc thiết kế
Lower-CASE
• Các công cụ hỗ trợ cho các hoạt động ở giai đoạn cuối của tiến
trình phần mềm, chẳng hạn như lập trình, gỡ lỗi và kiểm thử
Trang 19Những thuộc tính tốt của phần mềm
Phần mềm được bàn giao đáp ứng được những yêu cầu chức
năng và hiệu năng, dễ bảo trì, độ tin cậy và được chấp nhận
Maintainability – tính bảo trì
• Phần mềm có thể được cải tiến để đáp ứng những yêu cầu thay đổi của
khách hàng
Dependability – Độ tin cậy
• Phần mềm phải đáng tin cậy;
Efficiency - tính hiệu quả
• Phần mềm phải tính tới việc sr dụng hiệu quả các nguồn tài nguyên hệ
thống
Acceptability – Tính chấp nhận
Trang 20Những thách thức mà ngành
CNPM phải đối mặt
Tính đồng nhất, việc bản giao và độ tin cậy
Heterogeneity – tính không đồng nhất
• Các kỹ thuật sử dụng để phát triển phần mềm phải tính tới tính
không đồng nhất của các môi trường thực thi
Delivery – bàn giao sản phẩm
• Phát triển các kỹ thuật giúp bàn giao sản phẩm trong thời gian
ngắn nhất
Độ tin cậy
• Phát triển các kỹ thuật để chứng minh rằng phần mềm đáng tin
cậy đối với người sử dụng.
Trang 21Các chuyên gia và đạo đức nghề nghiệp
Kỹ nghệ phần mềm liên quan chặt chẽ tới trách
nhiệm của người làm phần mềm hơn kỹ năng của người làm phần mềm
Các kỹ sư phần mềm phải trung thực và có trách
nhiệm về mặt đạp đức
Cách hành xử có đạo đức quan trọng hơn việc
tuân thủ luật pháp
Trang 22Các vấn đề về trách nhiệm nghề nghiệp
• Kỹ sư thường phải tôn trọng tính bảo mật của nhà
tuyển dụng hoặc khách hàng của họ không phân biệt
có hoặc không có một thỏa thuận bí mật chính thức được ký kết.
• Kỹ sư không nên hiểu sai lệch mức độ thẩm quyền
Họ không nên cố chấp nhận công việc đó là với thẩm quyền của mình.
Trang 23Các vấn đề về trách nhiệm nghề nghiệp
Quyền sở hữu trí tuệ
• Các kỹ sư cần phải nhận thức pháp luật địa phương
về việc sử dụng tài sản trí tuệ như bằng sáng chế, bản quyền, vv Họ nên cẩn thận để đảm bảo rằng các tài sản trí tuệ của người lao động và khách hàng được bảo vệ.
• Kỹ sư phần mềm không nên sử dụng các kỹ năng kỹ
thuật của mình để lạm dụng các chương trình máy tính của người khác Phạm vi lạm dụng máy tính từ tương đối nhỏ (chơi game trên máy tính của chủ nhân, nói) để đặc biệt nghiêm trọng (phổ biến virus ).