谢谢你英文-6个不宜探病人的日子
外文资料原文
Software Development
Concepts and Design
Methodologies
During
the 1960s, mainframes and higher level programming
languages
were applied to many problems
including human resource systems, reservation
systems, and manufacturing systems. Computers
and software were seen as the
cure all for
many business issues were sometimes applied
blindly. Systems
sometimes failed to solve the
problem for which they were designed for many
reasons including:
?Inability to
sufficiently understand complex problems
?Not
sufficiently taking into account end-user needs,
the organizational
environment, and
performance tradeoffs
?Inability to accurately
estimate development time and operational costs
?Lack of framework for consistent and regular
customer communications
At this time, the
concept of structured programming, top-down
design,
stepwise refinement,and modularity
emerged. Structured programming is still
the
most dominant approach to software engineering and
is still evolving. These
failures led to the
concept of software engineering
engineering-
like discipline could be applied to software
design and
development.
Software design is
a process where the software designer applies
techniques and principles to produce a
conceptual model that describes and
defines a
solution to a problem. In the beginning, this
design process has not
been well structured
and the model does not always accurately represent
the
problem of software development. However,
design methodologies have been
evolving to
accommodate changes in technology coupled with our
increased
understanding of development
processes.
Whereas early design methods
addressed specific aspects of the
development
process, current methods attempt to address the
entire scope of
software development. Software
design methods are often classified in
1
reference to the period in which
they were introduced and the problems at that
time. Driven by coding and testing problems,
tools and methods were developed.
Early
methods focused on modularity and top-down
development, and
information hiding through
abstraction. This led to the development of
structured languages, structured analysis, and
data flow analysis.
In the last decade or so,
the expense involved in automation has shifted
from hardware to people. Therefore, the
software engineering community has
been
focused on object oriented (O-O) design and the
concept of re-usable code
in order to reduce
the human cost component. Inefficient designs and
development methodologies have been addressed
with Computer Aided
Software Engineering
(CASE) tools, and fourth generation design
languages.
This has been done in an attempt
replace the traditional waterfall life cycle
process model under which most existing
software has been developed.
一、 Software
Design Fundamentals
Software design methods
all aim to provide the software designer with a
system blueprint. This blueprint usually has
three aspects: data, architectural,
and
procedural.
?Data design refers to the data's
organization, relationships, access and
processing methods.
?Architectural design
defines the components of the system and their
relationships.
?Procedural design builds
on the data and architectural design phases to
describe the processing details of the system.
Even though there are numerous design
methodologies, their basic
concepts are very
similar-All software design methods partition the
problem
and software into smaller pieces in
order to reduce complexity. They all strive
to
identify data structures and functions, and
provide measurements for
software quality.
Some of the common principles in software design
include:
stepwise refinement, software
architecture, program structure, data structure,
software procedures,modularity, abstraction,
and information hiding.
2
二、
Modern Design Methodologies
Conventional
software development practices can generally be
mapped onto the traditional life-cycle phases
of analysis, functional
specification, design,
implementation, testing, and maintenance. This
thought process is inadequate for today's
complex information systems. As
the demand for
software is growing much faster than the number of
developers,
adhering to conventional
techniques such as the waterfall method requires
too
much time, too many people, and is
difficult to manage. Hence, many new
software
development technologies have arisen. Newly
developed practices and
models do not attempt
to separate phases of software development, such
as
specification and implementation, but
instead focus on the concept of program
transformation through stepwise refinement and
iteration.
1、Object-Oriented Technology
Object-Oriented (O-O) software design
technology is fundamentally
different from the
traditional methods described above. With
traditional methods,
each module is recognized
a major step in the overall process and the
process
goes from one step to the next. On the
other hand, O-O design is structured
around a
model of objects and the functions they perform.
O-O programming can be traced to the
simulation language SIMULA, a high
level
language developed in the late 60's that
introduced object classes as a
method to
encapsulate data. Later, in the 1970s, Smalltalk
was introduced as a
complete grapgh design and
coding as detail is added to the design. This
provides
a common language throughout each
stage in development. O-O is best applied
with
specifically designed O-O development tools, but
it is important to
remember that as a
methodology is it not specific to any programming
language.
Many different programming languages
can be used to implement 0-0 technology
and
design methodologies.
Instead of procedures
and functions passing data back and forth, in
object
oriented design, the system is viewed
as a collection of objects with messages
passed from object to object. Each object has
its own set of associated operations.
3
Object-oriented design is based on
the idea of information hiding and
modularization of both data and processing. It
is best used when neither data
structure nor
processing operations are well defined ahead of
time. This is quite
useful in today's business
environment where requirements are always changing
and not very well defined. Thus, it has become
quite popular! The concept of
objects
performing services is a natural way of thinking
for both developers and
customers. This
facilitates understanding the problem domain and a
more natural
design. In addition, there are
many benefits of object-oriented development.
These
include:
? Inheritance capitalizes
on the commonalty of attributes and
services
allowing code and objects to be re-used.
.Information hiding makes systems more stable
by localizing
changes to objects andthereby
making them reusable.
.The object-oriented
development process is consistent from
analysis, through design,to coding.
More
information on Object Oriented Programming
principles can be found
in Chapter
4-Organization of Programming Languages and
Programming
Concepts.
2、Prototyping
Prototyping was invented because end users
participating in the development
phase found
it difficult to understand requirement
specifications and
conceptual models. However,
when it first began being used in the 1980s, most
conventional life cycle developers considered
it expensive and time consuming.
Since that
time, users and developers have used prototypes
successfully as a communications tool to
demonstrate system requirements.
After several
prototype iterations, developers have a better
understanding of user
requirements and users
have a better idea of how the system will
eventually work,
look, and l.
The number
of times the prototype is incrementally refined
depends on
how well the user requirements and
understood. It also depends on the users
4
need to add requirements or change
previously stated requirements. After
establishing an overall architecture and
framework, the system is developed
and
delivered in increments. Users may experiment with
and use delivered
increments while others are
being developed. For instance, the first
prototype may be delivered that implements a
certain screen with only
some active menu
items. While users are experimenting with this
screen
and menu items, other screens and menu
items are concurrently being
developed which
later will be combined with the existing prototype
as it
evolves.
Once the user is satisfied
that the prototype meets requirements, the
prototype is transformed into the system This
effort depends on several
factors. It may
include adding functionality that wasn't initially
recognized
as required, replacing inefficient
parts of the prototype to meet
performance
criteria, or adapting the prototype to fit the
user's hardware
environment.
Prototyping
can begin very early, after some preliminary
requirements
analysis has determined the basic
functionality, scope, and environment of
the
proposed software. Contrary to the traditional
waterfall method, in the
prototyping,
functional specifications are not fixed. Rather,
users are
encouraged to modify their
requirements as they themselves begin to
understand them better. This is because users
often don't really know what
they want until
they see it on the screen. The prototyping process
of
demonstration, review, and refinement gets
the user more involved in the
development
process, giving them a sense of ownership during
the process
and at final system delivery.
However, due to the mindset of prototype,
users often find it difficult to verify that
the prototype satisfies their
requirements.
Therefore, guidelines must be established to
determine when to
stop iterating and the
prototype to final product.
5
外文资料译文
软件开发概念和设计方法
在20世纪60年代,大型机和高级程序语言被用来解决包括人力资源系
统、专有系
统和制造系统等许多问题。计算机和软件被视为解决所有商业问
题的万能药,有时候甚至被盲目的应用。
因为很多设计上的原因,这些系统
并不是万能的。主要因素如下:
1.不能完全理解复杂的问题
2.没有充分满足终端用户的需求,组织环境和性能折中
3.没有准确估计开发时间和运行成本
4.缺乏一致,规范的客户通讯框架
这个时
候,结构化的编程,自上而下设计的概念出现了。对软件工程来说,
结构化编程至今仍是最重要的方法且
不断发展。“软件工程”概念的出现则是
基于这样的构想:一个类似工程学的学科可以应用于软件的设计
和开发。
软件设计是一种方法,软件设计人员可以籍此应用技术和规则生成一种描述
并定义问
题解决方法的模型。最初,设计方法一直未能构建好,而且模型也不
能准确地描述软件开发的问题。然而
,随着我们对开发过程的深入理解,设计
方法已经不断适应技术的变化了。
生命周期过程的模型下开发的,但人们开始尝试寻找这种模型的替代品。
一、软件设计基础
软件设计方法最终的目标就是向软件设计者提供一张系统蓝图。它通常有
三个方面:数据,构架
和过程。
.数据设计指的是数据的组织、关系、访问和处理方法。
.构架设计定义系统组件和它们之间的关系。
.过程设计建立在数据和构架设计阶段之上描述系统的处理细节。
尽管设计方法众多,但它们
的基本概念非常相似。为了减少复杂度,几乎
所有软件设计方法都把问题和软件分割成较小的部分用于标
识数据结构、功能
以及度量软件品质。软件设计包括以下这些普遍原则:逐步求精、软件构架、
6
程序结构、数据结构、软件过程、模块化、抽象和信息隐藏。
二、现代设计方法
常规的软件开发实践通常能被映射到传统的生命阶段上,包括分析、功能说
明、
设计、实现、测试和维护。然而对软件需求的增长比软件开发者数量增长要快,
遵守常规的
技术你瀑布模型)耗时太长,过多人员的参与也带来了管理上的
困难,显然常规的思考过程对于今天的复
杂信息系统是不够的。因此,产生
了许多新的软件开发技术。最新发展出的实践和模型井不试图把软件开
发分
割成多个阶段(如说明和实现),而是注重于通过逐步求精和迭代把概念转换
成程序。
1、面向对象的技术
面向对象的软件设计技术从根本上有别于传统的设计方法。传统方法中,
每
个模块被当作全局过程的一个主要步骤,一步一步地往下走;而面向对象的
设计围绕着对象模
型和对象所执行的功能进行结构化。
面向对象的编程可以追溯到仿真语言SIMULA。SIMULA
是一种20世纪60年代
后期的高级语言,引入了“对象类”作为封装数据的方法。到了20世纪70<
br>年代,Smalltalk被作为一种完全的图形用户界面(GUI)面向对象的编程环
境被引入
。甚至在30年以后,Smalltalk仍然是度量其他所有面向对象语言
的标准。由于面向对象的概
念日趋成熟,最近十年这种软件开发方法已经流
行起来。同时,软件业注意的焦点己经从编码和结构化过
程转移到通过设计
和柔韧性来节省劳动力成本和时间。柔韧性变得十分关键,因为系统随着需
求
的变化而快速改变:变得更大,更复杂和更不稳定。
在面向对象中,分析和设计没有真正分开。在分析
期间,系统对象及其特性
和关系一起被确定。这些对象可以护,这样就给整个开发过程中的所有阶段提供了一种公用的语言。采用面向对象方法最好是使用专门设计的面向对象
的开发工具,但是请一定
记住它是一种方法而不是特指任何编程语言。许多
不同的编程语言都可以用来实现面向对象技术和设计方
法。
和过程、功能往返传递数据的方式不同,在面向对象的设计中,系统被看成
一个由很多互
相传递消息的对象组成的集合,每个对象都有它自己关联操作
的集合。面向对象的设计基本构想是把数据
和过程进行信息隐藏和模块化,
它最适用于数据结构或者过程操作没有被提前的定义好的情况。这对于今
天
7
的商业环境中相当有用,毕竟需求总是不断改变而不能很好
的定义。这也是
面向对象的设计现在相当流行的重要原因。对象执行服务的概念是一种开发
者和
客户都很自然的思考方法,这有利于理解问题的范围,也是一种更加自
然的设计。此外,面向对象的开发
还有许多优点。
.通过属性和服务的结合使用,继承可以重用代码和对象。
.信息隐藏通过局限对象的变化使系统更加稳定,从而使对象可以重用
.面向对象的开发过程从分析、设计到编码都是一致的。
2、原型法
原型法的出现
是因为参于开发阶段的终端用户觉得很难理解需求说明和概念
模型。而当原型法在20世纪80年代第一
次被使用时,大部分常规的生命周
期开发者认为它费时费力。但从那时开始,用户和开发者已经能成功地
应用
原型作为通讯工具来演示系统的需求。原型多次迭代后,开发者对用户的需
求有了更好的理
解,用户也对系统最后如何操作、看起来像什么和如何感觉
都有所了解。原型法已经被证明是一种理解用
户需求和问题的有效方法,它
有效地消除了在以后开发过程中因错误理解导致高昂代价的重复工作。原型
法对于开发用户界面特别有价值,因为对于用户界面,有时候无法使用具体
的词和图表进行描述
,而用户界面的开发在今天的开发环境中又格外关键,
它在整个系统开发费用中份额仍在增加。
(1)丢弃型原型
原型有两类,丢弃型原型和演进型原型。丢弃型原型被设计成用来校验或者驱动系统需求,也可以用于评估性能或决定设计是否可行。一旦获得所
需的信息和完成原型的目
的就把原型就丢弃掉,继续常规的软件设计。
丢弃型原型:
A用于减少需求风险,便于理解用户需求;
B
不作为最终的系统,在使用以后就被抛弃具体原因有:
①原型省掉了系统许多特性;
②为演示用而快速完成,其结构或许不必最佳且难于维护。
在使用丢弃型原型时,分析家通常
考虑把原型作为设计或说明语言设
计阶段的输入,而不是作为产品或者系统本身。以用于传统系统
(2).演进型原型
8
与有意设计成丢弃型原型不同
,演进型原型向终端用户交付一个可用的系
统在完全了解用户需求后,即可开始演进型原型的开发它被当
作过程模型的
焦点,条的屏幕原型,当用户正在体验屏幕和菜单条时,其他屏幕和菜单条
正同时
被开发,然后再与他们相关的现有原型结合在一起。
一旦用户对原型所能满足的需求感到满意,原型就
转变成“系统”这取决于
若干因素,包括增加最初无法识别需求的功能,为满足性能标准而替换原型中效率低的部分,或者改动原型以适应用户的硬件环境。
可以很早就开始建立原型,经过一些预先
需求分析以后决定出其基本的
功能、范围和建议的软件环境。与传统的瀑布法相反,原型法中的功能说明
并不固定。原型法甚至鼓励用户在更好的理解自己需求后修改他们的需求,
因为用户经常直到在
屏幕上看到设计结果才知道他们自己真正需要的是什
么。原型法的示范、回顾和精炼过程都注重了用户对
开发过程的参与性,无
论在开发期间还是最终系统提交都给予他们一种所有权的感觉。然而,由于
“原型”是预期的,用户也发现难于验证原型是否满足他们的需求。因此,
必须建立一个指南,决定什
么时候停止选代,并转换原型为终端产品。
9
牛英语-阿格拉
prized-徐怎么组词语
尖阁群岛-明天见用英语怎么说
爻怎么读-禁军是什么意思
缁怎么读-陕西高考补习学校
渡口是什么意思-表情的英文
考研初试成绩出后-开弓没有回头箭
意思的近义词-熊的英语
-
上一篇:剑桥国际英语教程介绍
下一篇:如何上好高中英语课