Professional Documents
Culture Documents
Chapter 1 - Software - Problems and Prospect
Chapter 1 - Software - Problems and Prospect
1. Introduction
2. Meeting users’ needs
3. The cost of software production
4. Meeting deadlines
5. Software performance
6. Portability
7. Maintenance
8. Reliability
9. Human–computer interaction
10.A software crisis?
LEARNING OUTCOME
+ system software is the software that acts as tools to help construct or support
applications software. Examples are operating systems, databases, networking
software, compilers.
+ applications software is software that helps perform some directly useful or
enjoyable task. Examples are games, the software for automatic teller machines
(ATMs), the control software in an airplane, e-mail software, word processors,
spreadsheets.
+ Phần mềm hệ thống là phần mềm đóng vai trò như là công cụ để xây dựng hay hỗ
trợ các phần mềm ứng dụng. VD: Hệ điều hành, phần mềm cơ sở dữ liệu, phần mềm
mạng, trình biên dịch
+ Phần mềm ứng dụng là phần mềm giúp thực thi một vài công việc cụ thể nào đó.
VD: Games, phần mềm trên máy ATM, phần mềm điều khiển trên máy bay, email,
phần mềm xử lý văn bản, bảng tính
INTRODUCTION
Within the category of applications software, it can be useful to identify the following categories of
software:
+ games
+ information systems – systems that store and access large amounts of data, for example, an airline seat
reservation system
+ real-time systems – in which the computer must respond quickly, for example, the control software for a
power station
Từ việc phân loại phần mềm ứng dụng, việc xác định các loại phần mềm sau có thể sẽ hữu ích:
+ Trò chơi điện tử
+ Các hệ thống thông tin – các hệ thống có thể lưu trữ và xử lý lượng lớn dữ liệu. VD: Hệ thống đặt vé máy
bay
+ Các hệ thống thời gian thực – nằm trong các máy tính mà cần phải phản hồi nhanh. VD: Phần mềm điều
khiển ở nhà máy điện
INTRODUCTION
+ embedded systems – in which the computer plays a smallish role within a larger
system, for example, the software in a telephone exchange or a mobile phone.
Embedded systems are usually also real-time systems
+ office software – word processors, spreadsheets, e-mail
+ scientific software – carrying out calculations, modeling, prediction, for example,
weather forecasting.
+ Các hệ thống nhúng – nằm trong các máy tính cấu thành nên một hệ thống lớn hơn.
VD: Các phần mềm trong các điện thoại. Các hệ thống nhúng cũng thường là thời gian
thực
+ Phần mềm văn phòng – Các phần mềm soạn thảo văn bản, bảng tính, thư điện tử.
+ Phần mềm khoa học – Thực hiện việc tính toán, mô hình hóa, dự đoán. VD: Phần
mềm dự báo thời tiết
INTRODUCTION
Software can either be off-the-shelf (e.g. Microsoft Word) or tailor-made for a particular application
(e.g. software for the Apollo moon shots). The latter is sometimes called bespoke software.
All these types of software – except perhaps information systems – fall within the remit of software
engineering. Information systems have a different history and, generally, different techniques are used
for their development. Often the nature of the data (information) is used to dictate the structure of the
software, so that analysis of the data is a prime step, leading to the design of the database for the
application. This approach to software development is outside the scope of this book
Phần mềm có thể là bán sẵn (được chuẩn hóa để sản xuất hàng loạt) (VD: Microsoft Word) hoặc được
thiết kế riêng cho 1 ứng dụng cụ thể (VD: Phần mềm cho máy chụp ảnh mặt trăng Apollo). Loại này
còn được gọi là phần mềm chuyên biệt.
Tất cả các loại phần mềm – có lẽ là trừ các hệ thống thông tin – đều nằm trong phạm vi của công nghệ
phần mềm. Các hệ thống thông tin có lịch sử khác, và thông thường, bản chất của dữ liệu (thông tin)
được sử dụng để quy định cấu trúc của phần mềm, Do đó, phân tích dữ liệu là bước quan trọng nhất,
dẫn đến việc thiết kế cơ sở dữ liệu cho ứng dụng. Cách tiếp cận phát triển phần mềm này nằm ngoài
phạm vi của cuốn sách này
INTRODUCTION
Each goal is also considered to be a problem because software engineering has generally
been rather unsuccessful at reaching them. We will now look at each of these goals in turn.
Later we will look at how the goals relate one to another.
In the remainder of this book we shall see that the development of particular types of
software requires the use of special techniques, but many development techniques have
general applicability
Mỗi mục tiêu cũng được coi là một vấn đề bởi vì công nghệ phần mềm nói chung đã
không thành công trong việc tiếp cận chúng. Bây giờ chúng ta sẽ lần lượt xem xét từng
mục tiêu này. Sau đó, chúng ta sẽ xem xét các mục tiêu liên quan với nhau như thế nào.
Trong phần còn lại của cuốn sách này, chúng ta sẽ thấy rằng việc phát triển các loại phần
mềm cụ thể yêu cầu sử dụng các kỹ thuật đặc biệt, nhưng nhiều kỹ thuật có khả năng áp
dụng rộng rãi.
MEETING USERS’ NEEDS
It seems an obvious remark to make that a piece of software must do what its users want
of it. Thus, logically, the first step in developing some software is to find out what the
client, customer or user needs. This step is often called requirements analysis or requirements
engineering. It also seems obvious that it should be carried out with some care
Có vẻ như một nhận xét rõ ràng là một phần mềm phải làm những gì người dùng yêu cầu. Vì
vậy, về mặt logic, bước đầu tiên trong việc phát triển phần mềm là tìm hiểu xem khách hàng
hoặc người dùng cần gì. Bước này thường được gọi là phân tích nhu cầu. Và rõ ràng rằng nó
nên được thực hiện với một cách cẩn thận
There is evidence, however, that this is not always the case. As evidence, one study of the
effectiveness of large-scale software projects, Figure 1.1, found that less than 2% were used as
delivered
Tuy nhiên, đã có bằng chứng cho thấy rằng không phải lúc nào việc phân tích yêu cầu này
cũng được thực hiện một cách cẩn thận. Trong một nghiên cứu về tính hiệu quả của các dự án
phần mềm quy mô lớn, Fig 1.1, cho thấy rằng ít hơn 2% được sử dụng ngay khi chuyển giao
MEETING USERS’ NEEDS
These figures are one of the few pieces of hard evidence available, because (not surprisingly)
organizations are rather secretive about this issue. Whatever the exact figures, it seems that a large
proportion of systems do not meet the needs of their users and are therefore not used as supplied.
It may be, of course, that smaller systems are more successful
Những số liệu này là một trong số ít bằng chứng, bởi vì (không có gì ngạc nhiên) các tổ chức giữ
bí mật về vấn đề này. Dù con số chính xác là bao nhiêu, có vẻ như một tỷ lệ lớn các hệ thống
không đáp ứng được nhu cầu của người dùng và do đó không được sử dụng như mong muốn. Tất
nhiên, có thể là các hệ thống nhỏ hơn sẽ thành công hơn
We might go further and deduce that the main problem of software development lies in
requirements analysis rather than in any other areas, such as reliability or cost, which are discussed
below. The task of trying to ensure that software does what its users want is known as validation
Chúng ta có thể đi xa hơn và suy luận rằng vấn đề chính của phát triển phần mềm nằm ở giai đoạn
phân tích yêu cầu hơn là ở bất kỳ khâu khác, chẳng hạn như độ tin cậy hoặc chi phí, sẽ được thảo
luận bên dưới. Nhiệm vụ cố gắng đảm bảo rằng phần mềm thực hiện những gì người dùng muốn
được gọi là validation
THE COST OF SOFTWARE PRODUCTION
Layperson N Người không có kiến thức chuyên môn Underestimate V Đánh giá thấp
Examples of costs
First of all, let us get some idea of the scale of software costs in the world. In the USA it is estimated that about
$500 billion are spent each year on producing software. This amounts to 1% of the gross national product. The
estimated figure for the world is that $1,000 billion is spent each year on software production. These figures are
set to rise by about 15% each year. The operating system that IBM developed for one of its major range of
computers (called OS 360) is estimated to have cost $200 million. In the USA, the software costs of the manned
space program were $1 billion between 1960 and 1970
These examples indicate that the amount spent on software in the industrialized nations is of significant
proportions
Ví dụ về chi phí
Trước hết, chúng ta hãy cùng tìm hiểu quy mô chi phí phần mềm trên thế giới. Ở Mỹ, người ta ước tính rằng
khoảng 500 tỷ đô la được chi mỗi năm cho việc sản xuất phần mềm. Con số này tương đương với 1% tổng sản
phẩm quốc gia. Con số ước tính cho thế giới là 1.000 tỷ đô la được chi mỗi năm cho sản xuất phần mềm. Con số
này tăng khoảng 15% mỗi năm. Hệ điều hành mà IBM đã phát triển cho một trong những dòng máy tính của họ
(được gọi là OS 360) được ước tính trị giá 200 triệu USD. Ở Hoa Kỳ, chi phí phần mềm của chương trình đưa
người lên không gian là 1 tỷ đô la từ năm 1960 đến 1970
Những ví dụ này chỉ ra rằng số tiền chi cho phần mềm ở các quốc gia công nghiệp chiếm tỷ lệ đáng kể
THE COST OF SOFTWARE PRODUCTION
Programmer productivity
The cost of software is determined largely by the productivity of the programmers and the salaries
that they are paid. Perhaps surprisingly, the productivity of the average programmer is only about
10–20 programming language statements per day. To the layperson, a productivity of 20 lines of
code per day may well seem disgraceful. However, this is an average figure that should be
qualified in two ways. First, enormous differences between individual programmers – factors of
20 – have been found in studies. Second, the software type makes a difference: applications
software can be written more quickly than systems software.
Chi phí của phần mềm được xác định chủ yếu bởi năng suất của các lập trình viên và tiền lương
mà họ được trả. Có lẽ đáng ngạc nhiên là năng suất của một lập trình viên trung bình chỉ khoảng
10–20 câu lệnh mỗi ngày. Đối với người không có chuyên môn, năng suất 20 dòng mã mỗi ngày
có vẻ đáng xấu hổ. Tuy nhiên, đây là một con số trung bình nên được đánh giá theo hai cách. Đầu
tiên, sự khác biệt rất lớn giữa các lập trình viên – thừa số của 20 – đã được chỉ ra trong các nghiên
cứu. Thứ hai, loại phần mềm tạo nên sự khác biệt: phần mềm ứng dụng có thể được viết nhanh
hơn phần mềm hệ thống.
THE COST OF SOFTWARE PRODUCTION
Also, this apparently poor performance does not just reflect the time taken to carry out coding,
but also includes the time required to carry out clarifying the problem specification, software
design, coding, testing and documentation. Therefore, the software engineer is involved in
many more tasks than just coding. However, what is interesting is that the above figure for
productivity is independent of the programming language used – it is similar whether a low-
level language is used or a high-level language is used. It is therefore more difficult than it
initially appears to attribute the level of productivity to laziness, poor tools or inadequate
methods
Ngoài ra, hiệu suất kém này không chỉ phản ánh thời gian cần thiết để thực hiện viết mã, mà còn
bao gồm thời gian cần thiết để thực hiện làm rõ việc đặc tả vấn đề, thiết kế phần mềm, viết mã,
kiểm thử và viết tài liệu. Do đó, kỹ sư phần mềm tham gia vào nhiều công việc hơn là chỉ viết mã.
Tuy nhiên, điều thú vị là con số trên về năng suất không phụ thuộc vào ngôn ngữ lập trình được sử
dụng – ngôn ngữ bậc thấp hay ngôn ngữ bậc cao được sử dụng đều giống nhau. Do đó, khó khi
sớm quy mức năng suất cho sự lười biếng, công cụ kém hoặc phương pháp không phù hợp
THE COST OF SOFTWARE PRODUCTION
SELF-TEST QUESTION
A well-known word processor consists of a million lines of code. Calculate how many
programmers would be needed to write it, assuming that it has to be completed in five years.
Assuming that they are each paid $50,000 per year, what is the cost of development?
Một trình xử lý văn bản nổi tiếng bao gồm một triệu dòng mã. Hãy tính xem cần bao nhiêu lập
trình viên để viết nó, giả sử rằng nó phải được hoàn thành trong 5 năm. Giả sử rằng mỗi người
được trả 50.000 đô la mỗi năm, chi phí phát triển là bao nhiêu?
Một người viết trung bình được 20 dòng code 1 ngày => 5 năm (1825 ngày) thì viết được 36,500
dòng code => Số người cần để viết 1 triệu dòng code là 1,000,000/36,500 ~ 27 người.
Nếu được trả $50,000 mỗi năm cho 1 người thì số tiền phải trả cho cả dự án sẽ là 50,000 * 27 * 5
= $ 6,750,000
THE COST OF SOFTWARE PRODUCTION
SELF-TEST QUESTION
Someone buys a PC, with processor, monitor, hard disk and printer. They also buy an
operating system and a word processing package. Calculate the relative costs of hardware and
software
Lack of information in the book. Therefore, user need to answer by themselves.
THE COST OF SOFTWARE PRODUCTION
Software packages
There has been another significant reaction to the availability of cheap computers. If you want
to calculate your tax or design your garden, you can buy a program off the shelf to do it. Such
software packages can cost as little as $50. The reason for the remarkably low price is, of
course, that the producers of the software sell many identical copies – the mass production of
software has arrived.
Đã có một phản ứng tiêu biểu khác đối với sự tồn tại của các máy tính rẻ. Nếu bạn muốn tính
thuế hay thiết kế khu vườn của bạn, bạn có thể mua một chương trình phổ thông để làm việc
đó. Những gói phần mềm như vậy có thể chỉ giá khoảng 50 USD. Tất nhiên, lý do cho cái giá
thấp tới mức vậy là nhà sản xuất phần mềm bán rất nhiều bản sao – một sự sản xuất hàng loạt
THE COST OF SOFTWARE PRODUCTION
Software packages
The problem with an off-the-shelf package is, of course, that it may not do exactly what you
want it to do and you may have to resort to tailor-made software, adapt your way of life to fit
in with the software, or make do with the inadequacies.
Đương nhiên, vấn đề với những gói sản xuất hàng loạt này là nó có thể không thực hiện được
chính xác những gì bạn muốn và bạn vẫn có thể phải nhờ đến những phần mềm chuyên dụng,
điều chỉnh yêu cầu của bạn để phù hợp với phần mềm, hoặc khắc phục những thiếu sót
Nonetheless, the availability of cheap packages conveys the impression that software is cheap
to produce.
Tuy nhiên, sự tồn tại của những gói phần mềm giá rẻ đã truyền cảm tưởng rằng phần mềm có
thể được sản xuất với giá rẻ
THE COST OF SOFTWARE PRODUCTION
The IT revolution
The sophistication of today’s software far outstrips that of the past. For example, complex
graphical user interfaces (GUI’s) are now seen as essential, systems are commonly
implemented on the web, and the sheer size of projects has mushroomed. People and
organizations expect ever more facilities from computers. Arguably, as hardware becomes
available to make previously impractical software projects feasible, software costs can only
continue to escalate.
Sự tinh xảo của phần mềm ngày nay vượt xa so với trước đây. Ví dụ: Các giao diện người dùng
đồ họa phức tạp (GUI) hiện được coi là thiết yếu, các hệ thống thường được triển khai trên web
và quy mô của các dự án đã mọc lên như nấm. Mọi người và các tổ chức mong đợi nhiều tiện
ích hơn từ máy tính. Có thể cho rằng, khi phần cứng trở nên sẵn có để làm cho các dự án phần
mềm không thực tế trước đây trở nên khả thi, chỉ có chi phí phần mềm là tiếp tục tăng lên.
THE COST OF SOFTWARE PRODUCTION
The IT revolution
In summary, what we see today is that software is expensive:
+ relative to the gross national product
+ because developers exhibit apparently low productivity
+ relative to the cost of hardware
+ in popular perception
Tổng kết lại, những gì chúng ta thấy ngày nay là phần mềm rất tốt kém:
+ so với tổng sản phẩm quốc gia
+ bởi vì các lập trình viên thể hiện năng suất rõ ràng thấp
+ liên quan đến chi phí phần cứng
+ trong nhận thức phổ biến
THANK YOU