Ch.1 The Nature of Software
• The Evolution
1.1 The Nature of Software
In the early days: User Computer
Software = “Place a sequence of instructions together to get the computer to do something useful”.
In late 1950’s:
Computer became cheaper and more common.
High level languages were invented.
Programmer
User Computer
In early 1960’s:
Very few large software projects were done by some experts.
Hacker Cracker
1.1 The Nature of Software
Case 1.
美国 IBM 公司在 1963 年至 1966 年开发的 IBM360 机的操作系统。这一项目花了 5000 人 - 年的工作量,最多时有 1000 人投入开发工作,写出了近 100 万行源程序。据统计,这 个操作系统每次发行的新版本都是从前一版本中找出 1000 个程 序错误而修正的结果。这个项目的负责人 F. P. Brooks 事后总结了他在组织开发过程 中的沉痛教训时说:“…正像一只逃亡的野兽落到泥沼中做垂死 的挣扎,越是挣扎,陷得越深,最后无法逃脱灭顶的灾难。…
程序设计工作正像这样一个泥潭,…一批批程序员被迫在泥沼 中拼命挣扎,…谁也没有料到问题竟会陷入这样的困境…”。
IBM360 操作系统的历史教训成为软件开发项目的典型事例为人 们所记取。而 Brooks 博士随后写出了软件工程领域的经典著作
《人月神话》 (The Mythical Man-Month) ,至今畅销不衰。
1.1 The Nature of Software Software = Product (information transformer)
Vehicle for delivering a product (OS, network, tools)
The same questions are still asked today:
1. Why does it take so long to get software finished?
2. Why are development costs so high?
3. Why can’t we find all errors before we give the software to our customers?
4. Why do we spend so much time and effort maintaining existing programs?
5. Why do we continue to have difficulty in measuring
progress as software is being developed and maintained?
1.1 The Nature of Software
• What is Software?
Software is a set of items or objects that form a configuration that includes
instructions (computer programs) that when executed provide desired function and performance,
data structures that enable the programs to adequately manipulate information, and
documents that describe the operation and use of the programs.
AND MORE …
• Software is developed or engineered, it is not manufactured in the classical sense.
1.1 The Nature of Software
• Software doesn’t wear out.
Failure rate
Time
Infant
mortality Wear
out
Failure curve for hardware
idealized curve change
increased failure
rate due to side effects
actual curve
But it does deteriorate!
There are no software spare parts
• Although the industry is moving toward component-based assembly, most software continues to be custom built.
1.1 The Nature of Software
• Software Application Types
System software
Application software
Engineering/Scientific software
Embedded software
Product-line software
Web-applications
Artificial intelligence software
1.1 The Nature of Software
• Legacy Software –– Why must it change?
software must be adapted to meet the needs of new computing environments or technology.
software must be enhanced to implement new business requirements.
software must be extended to make it interoperable with other more modern systems or databases.
software must be re-architected to make it viable within a network environment.
1.2 The Changing Nature of Software
• WebApps
Modern WebApps are much more than hypertext files with a fe w pictures
WebApps are augmented with tools like XML and Java to allow Web engineers including interactive computing capability
WebApps may standalone capability to end users or may be int egrated with corporate databases and business applications
Semantic web technologies (Web 3.0) have evolved into sophis ticated corporate and consumer applications that encompass s emantic databases that require web linking, flexible data repres entation, and application programmer interfaces (API’s) for acc ess
The aesthetic nature of the content remains an important deter minant of the quality of a WebApp.
1.2 The Changing Nature of Software
• Mobile Applications
Reside on mobile platforms such as cell phones or tablets
Contain user interfaces that take both device characteristics and location attributes
Often provide access to a combination of web-based resources and local device processing and storage capabilities
Provide persistent storage capabilities within the platform
A mobile web application allows a mobile device to access to web-based content using a browser designed to accommodate the strengths and weaknesses of the mobile platform
A mobile app can gain direct access to the hardware found on the device to provide local processing and storage capabilities
As time passes these differences will become blurred
1.2 The Changing Nature of Software
• Cloud Computing
1.2 The Changing Nature of Software
• Cloud Computing
Cloud computing provides distributed data storage and processing resources to networked computing devices
Computing resources reside outside the cloud and have access to a variety of resources inside the cloud
Cloud computing requires developing an architecture containing both frontend and backend services
Frontend services include the client devices and application software to allow access
Backend services include servers, data storage, and server- resident applications
Cloud architectures can be segmented to restrict access to private data
1.2 The Changing Nature of Software
• Product Line Software
Product line software is a set of software-intensive systems that share a common set of features and satisfy the needs of a particular market
These software products are developed using the same application and data architectures using a common core of reusable software components
A software product line shares a set of assets that include requirements, architecture, design patterns, reusable
components, test cases, and other work products
A software product line allow in the development of many products that are engineered by capitalizing on the
commonality among all products with in the product line