zoukankan      html  css  js  c++  java
  • 软件的生存周期(中英文对照)

    THE SOFTWARE LIFE CYCLE

       An early definition of software engineering was proposed by Fritz Bauer at the first major conference dedicated to the subject:The establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines[1].

      Although many more comprehensive definitions have been proposed,all reinforce[2] the importance of engineering discipline in software development.

      Software engineering is an outgrowth[3] of hardware and system engineering.It encompasses a set of three key elements—methods,tools,and procedures—that enable the manager to control the process of software development and provide the practitioner with a foundation for building high-quality software in a productive manner。

      Fig.8-1 illustrates the classic life cycle[4] paradigm for software engineering.Sometimes called the“waterfall model[5]”,the life cycle paradigm demands a systematic,sequential approach to software development that begins at the system level and progresses through analysis,design,coding,testing,and maintenance.Modeled after the conventional engineering cycle,the life cycle paradigm encompasses the following activities:

      软件的生存周期
       
      早期对软件工程的定义是由弗里兹•鲍尔在针对这一学科的第一次大会上提出的:建立和采用稳妥的工程原理,以节俭方式得到一种能在实际机器上可靠而高效工作的软件的学科。

      尽管又提出了许多更复杂的定义。但都是强调软件开发中工程规则的重要性。

      软件工程是硬件和系统工程的产物,它包含3个关键元素:方法、工具和过程。这3个元素使管理者能控制软件开发过程并为软件具体开发者提供一个建立生产高质量软件的基础。

      图8. 1示出了软件工程生存周期的经典范例。生存周期范例,有时称之为“瀑布模型”,它要求软件开发按系统的、顺序的方式,从系统级开始按分析、设计、编码、测试和维护阶段进行。模仿常规工程周期,软件的生存周期范例包含以下活动。

     System engineering and analysis.Because software is always part of a larger system,work begins by establishing requirements for all system elements and then allocating some subset of these requirements to software.This system view is essential when software must interface with other elements such as hardware,people,and databases.System engineering and analysis encompass requirements gathering at the system level with a small amount of top-level[6] design and analysis.

      Software requirements analysis.The requirements gathering process is intensified and focuses specifically on software[7].To understand the nature of the program(s)to be built,the software engineer(analyst)must understand the information domain for the software,as well as required function,performance,and interfacing.Requirements for both the system and the software are documented and reviewed with the customer.

      Design.Software design is actually a multistep process that focuses on three distinct attributes of the program:data structure,software architecture,and procedural detail.The design process translates requirements into a representation of the software that can be assessed for quality before coding begins.Like requirements,the design is documented and becomes part of the software configuration.
    Coding.The design must be translated into a machine-readable form.The coding step performs this task.If design is performed in a detailed manner,coding can be accomplished mechanistically.

      Testing.Once code has been generated,program testing begins.The testing process focuses on the logical internals of the software,assuring that all statements have been tested,and on the functional externals,that is,conducting tests to assure that defined input will produce actual results that agree with required results.

      Maintenance.Software will undoubtedly,undergo change after it is delivered to the customer(a possible exception is embedded software).Change will occur because errors have been encountered,because the software must be adapted to accommodate changes in its external environment(e. g. a change required because of a new operating system or peripheral device),or because the customer requires functional or performance enhancements.Software maintenance applies each of the preceding life cycle steps to an existing program rather than a new one.

      The classic life cycle is the oldest and the most widely used paradigm for software engineering.However,over the past few years,criticism of the paradigm has eaused even active supporters to question its applicability in all situations.Among the problems that are sometimes encountered when the classic life cycle paradigm is applied are:
    (1)Real projects rarely follow the sequential flow that the model proposes.Iteration always occurs and creates problems in the application on the paradigm.
    (2)It is often difficult in the beginning for the customer to state all requirements explicitly.The classic life cycle requires this and has difficulty accommodating the natural uncertainty that exists at the beginning of many projects.
    (3)The customer must have patience.A working version of the program(s)will not be available until late in the project time span.A major blunder undetected until the working program is reviewed can be disastrous.

      Each of these problems is real.However,the classic life cycle paradigm has a definite and important place in software engineering work.It provides a template into which methods for analysis,design,coding,testing,and maintenance can be placed.The classic life cycle remains the most widely used procedural model for software engineering.While it does have weaknesses,it is significantly better than a haphazard approach to software development.

         系统工程和分析由于软件总是大系统的一部分,所以工作就从为所有系统元素建立需求开始,然后再将这此软件需求的某一子集分配给软件。当软件必须与诸如硬件、人员和数据库等其他因素接口时,系统观点是不可少的。系统工程和分析包括系统级的需求收集和少量的顶层设计和分析。

       软件需求分析。加强需求收集过程,并特别着重于软件方面为理解要建立的程序的性质,软件工程师(“分析员”)必须了解软件的信息范畴以及所需功能、性能和接口。把系统和软件的需求制成文档并与顾客联合加以评审。

          设计。软件设计实际上是多步骤的过程,它着重于程序的3个显著特征:数据结构、软件体系结钩和过程细节。在编码前,设计过程把需求翻译成可评估质量的软件表示。像需求一样,设计也要编制文档并成为软件配置的一部分。

         编码。设计必须被翻译成机器可读的形式。编码阶段就是做这项工作。如果设计做得详细,编码就能以机械的方式完成。

      测试。一旦代码生成,程序测试就开始。测试过程注重软件内部逻辑和外部功能,对于前者,主要确保所有语句都测试到;对于后者,主要是确保已定义的输入能产生与要求相符的实际结果。

      维护。毫无疑问,软件在交付用户之后还要进行修改(嵌入式软件可能例外)。由于遇到了一些差错,由于必须调节软件以适应外部环境变化(例如:由于新的操作系统或外部设备产生的变化),或者由于用户要求提高功能和性能,因此修改是必然的。软件维护前述周期的每一步都适用于现存的程序(而非新程序)。

       经典的生存周期是软件工程中最早也是应用得最广泛的范例。不过.最近几年里出现了对此范例的批评,即使是对此范例的积极支持者对它是否适合于所有情况也提出了质疑。应用传统生存周期范例有时会遇到下列问题。
        (1)实际工程很少遵循模型中提出的顺序流。应用此范例时经常发生重复,并产生一些问题。
        (2)要求用户在开始时明确指出全部要求往往是困难的。经典的生存周期是这样要求的,但由于许多工程开始时存在着自然的不确定性而很难满足这种要求。
        (3)用户必须耐心,程序的工作版本到工程的后期才能使用,大错在评审工作程序时仍未检出将是灾难性的。

      所有这些问题都是实际存在的。尽管如此,经典的生存周期范例在软件工程中占有肯定的重要地位,它提出了一个包含分析、设计、编码,测试和维护方法的模板。经典的生存周期仍然是软件工程中应用最广泛的过程模型,尽管它有一些不足,但比起杂乱无章地进行软件开发要好得多。

    NOTES

    [1]the establishment... real machines:这是一个复合名词短语,而不是一个句子;in order to引出的不定式作定语,修饰principle;that引导一个定语从句修饰software。
    [2]reinforce:v.加强,强调。
    [3]outgrowth:n.产物,副产品。
    [4]classic life cycle:经典生存周期。
    [5]waterfall model:瀑布模型。
    [6]top-level design:顶层设计。
    [7]The requirements... on software:此处gathering是名词,与requirements组成的名词词组,修饰process。此句译为:强化需收集过程,并特别着重于软件方面。

     

    EXERCISES

    1.Fill in the blanks using appropriate definition or term.
    (1)In software development ______is most important.
    (2)Software engineering is an outgrowth of______.
    (3)Sometimes we call the life cycle paradigm of software engineering______.
    (4)It is often difficult in the beginning for customer to______.
    (5)When software must interface with hardware,people and databases______is necessary.
    (6)Software design should become a part of______.
    (7)______undetected until the working program is reviewed can be disastrous.
    (8)After______program testing begins.
    (9)The design process translates requirements into______.
    (10)The life time paradigm of software has been modeled through______.
    a.the“waterfall model”
    b.the conventional engineering cycle
    c.A major blunder
    d.engineering discipline
    e.software configuration
    f.state all requirements explicitly
    g.a system view
    h.code has been generated
    i.hardware and system engineering
    j.a representation of the software

    2.Multiple choices.
    (1)Software engineering encompasses the following key           
    a.programming
    b.procedures
    c.tools
    d.elements
    (2)The life cycle paradigm of software engineering requires             approach.
    a.a systematic  
    b.a random
    c.a sequential  
    d.a conventional engineering-modeled
    (3)Software design focuses on           
    a.data structure
    b.software architecture
    c.document
    d.procedural detail
    (4)Coding in software engineering can be           
    b.translated into a machine-readable form
    c.taken before maintenance
    d.taken after maintenance
    (5)Testing process focuses on            
    a.the functional internals
    b.the logical internals
    c.the functional externals
    d.the logical externals
    (6)Maintenance is necessary because           
    a.software undergoes change after it is delivered to the customer
    b.software is embedded
    c.some errors have been encountered
    d.the customer requires performance enhancements
    (7)The classic life cycle paradigm has            
    a.a definite place in software engineering
    b.a template for analysis,design,coding,testing and maintenance
    c.a definition of software engineering
    d.been criticized over the past few years
    (8)The classic life cycle includes           
    a.design
    b.coding
    c.analysis
    d.maintenance
    (9)Software requirements analysis includes           
    a.understanding the nature of the programs
    b.understanding the information domain
    c.understanding required developers
    d.gathering process
    (10)Goal of software engineering is           
    a.to obtain economically software
    b.to obtain efficiently work on real computer
    c.to obtain reliable work on real machine
    d.to provide sound software engineering principles

    key:

      1.(1)d(2)i(3)a (4)f(5)g(6)e(7)c (8)h(9)j(10)b
      2.(1)b,c,d(2)a,c,d(3)a,b,c,d(4)a,b,c(5)b,c  
       (6)a,c,d(7)a,b,c,d(8)a,b,c,d(9)a,b,d(10)a,b,c,d  

  • 相关阅读:
    Android中的Prelink技术
    Android 性能分析工具之 ARM Streamline
    Android之Systrace
    学习资源收藏夹
    Linux利器之perf(火焰图)
    Linux程序Segmentation fault (core dumped)
    C++编译器、链接器工作原理
    react使用redux
    Mac更新node版本和npm版本
    Nuxt引入axios;AXIOS的模块化封装
  • 原文地址:https://www.cnblogs.com/nianshi/p/735587.html
Copyright © 2011-2022 走看看