软件开发外文翻译
- 格式:doc
- 大小:60.50 KB
- 文档页数:8
文档从互联网中收集,已重新修正排版,word格式支持编辑,如有帮助欢迎下载支持。
外文翻译原文及译文学院计算机学院专业计算机科学与技术班级学号姓名指导教师负责教师Java(programming language)Java is a general-purpose, concurrent, class-based, object-oriented computer program- -ming language that is specifically designed to have as few implementation dependencies as possible. It is intended to let application developers "write once, run anywhere" (WORA), meaning that code that runs on one platform does not need to be recompiled to run on another. Java applications are typically compiled to byte code (class file) that can run on any Java virtual machine(JVM) regardless of computer architecture. Java is, as of 2012, one of the most popular programming languages in use, particularly for client-server web applications, with a reported 10 million users. Java was originally developed by James Gosling at Sun Microsystems (which has since merged into Oracle Corporation) and released in 1995 as a core component of Sun Microsystems' Java platform. The language derives much of its syntax from C and C++, but it has fewer low-level facilities than either of them.The original and reference implementation Java compilers, virtual machines, and class libraries were developed by Sun from 1991 and first released in 1995. As of May 2007, in compliance with the specifications of the Java Community Process, Sun relicensed most of its Java technologies under the GNU General Public License. Others have also developed alternative implementations of these Sun technologies, such as the GNU Compiler for Java and GNU Classpath.Java is a set of several computer software products and specifications from Sun Microsystems (which has since merged with Oracle Corporation), that together provide a system for developing application software and deploying it in across-platform computing environment. Java is used in a wide variety of computing platforms from embedded devices and mobile phones on the low end, to enterprise servers and supercomputers on the high end. While less common, Java appletsare sometimes used to provide improved and secure functions while browsing the World Wide Web on desktop computers.Writing in the Java programming language is the primary way to produce code that will be deployed as Java bytecode. There are, however, byte code compilers available forother languages such as Ada, JavaScript, Python, and Ruby. Several new languages have been designed to run natively on the Java Virtual Machine (JVM), such as Scala, Clojure and Groovy.Java syntax borrows heavily from C and C++, but object-oriented features are modeled after Smalltalk and Objective-C. Java eliminates certain low-level constructs such as pointers and has a very simple memory model where every object is allocated on the heap and all variables of object types are references. Memory management is handled through integrated automatic garbage collection performed by the JVM.An edition of the Java platform is the name for a bundle of related programs from Sun that allow for developing and running programs written in the Java programming language. The platform is not specific to any one processor or operating system, but rather an execution engine (called a virtual machine) and a compiler with a set of libraries that are implemented for various hardware and operating systems so that Java programs can run identically on all of them. The Java platform consists of several programs, each of which provides a portion of its overall capabilities. For example, the Java compiler, which converts Java source code into Java byte code (an intermediate language for the JVM), is provided as part of the Java Development Kit (JDK). The Java Runtime Environment(JRE), complementing the JVM with a just-in-time (JIT) compiler, converts intermediate byte code into native machine code on the fly. An extensive set of libraries are also part of the Java platform.The essential components in the platform are the Java language compiler, the libraries, and the runtime environment in which Java intermediate byte code "executes" according to the rules laid out in the virtual machine specification.In most modern operating systems (OSs), a large body of reusable code is provided to simplify the programmer's job. This code is typically provided as a set of dynamically loadable libraries that applications can call at runtime. Because the Java platform is not dependent on any specific operating system, applications cannot rely on any of the pre-existing OS libraries. Instead, the Java platform provides a comprehensive set of its own standard class libraries containing much of the same reusable functions commonly found in modern operating systems. Most of the system library is also written in Java. For instance, Swing library paints the user interface and handles the events itself, eliminatingmany subtle differences between how different platforms handle even similar components.The Java class libraries serve three purposes within the Java platform. First, like other standard code libraries, the Java libraries provide the programmer a well-known set of functions to perform common tasks, such as maintaining lists of items or performing complex string parsing. Second, the class libraries provide an abstract interface to tasks that would normally depend heavily on the hardware and operating system. Tasks such as network access and file access are often heavily intertwined with the distinctive implementations of each platform. The and java.io libraries implement an abstraction layer in native OS code, then provide a standard interface for the Java applications to perform those tasks. Finally, when some underlying platform does not support all of the features a Java application expects, the class libraries work to gracefully handle the absent components, either by emulation to provide a substitute, or at least by providing a consistent way to check for the presence of a specific feature.The success of Java and its write once, run anywhere concept has led to other similar efforts, notably the .NET Framework, appearing since 2002, which incorporates many of the successful aspects of Java. .NET in its complete form (Microsoft's implementation) is currently only fully available on Windows platforms, whereas Java is fully available on many platforms. .NET was built from the ground-up to support multiple programming languages, while the Java platform was initially built to support only the Java language, although many other languages have been made for JVM since..NET includes a Java-like language called Visual J# (formerly named J++) that is incompatible with the Java specification, and the associated class library mostly dates to the old JDK 1.1 version of the language. For these reasons, it is more a transitional language to switch from Java to the .NET platform, than a first class .NET language. Visual J# was discontinued with the release of Microsoft Visual Studio 2008. The existing version shipping with Visual Studio 2005will be supported until 2015 as per the product life-cycle strategy.In June and July 1994, after three days of brainstorming with John Gage, the Director of Science for Sun, Gosling, Joy, Naughton, Wayne Rosing, and Eric Schmidt, the team re-targeted the platform for the World Wide Web. They felt that with the advent of graphical web browsers like Mosaic, the Internet was on its way to evolving into the samehighly interactive medium that they had envisioned for cable TV. As a prototype, Naughton wrote a small browser, Web Runner (named after the movie Blade Runner), later renamed Hot Java.That year, the language was renamed Java after a trademark search revealed that Oak was used by Oak Technology. Although Java 1.0a was available for download in 1994, the first public release of Java was 1.0a2 with the Hot Java browser on May 23, 1995, announced by Gage at the Sun World conference. His announcement was accompanied by a surprise announcement by Marc Andreessen, Executive Vice President of Netscape Communications Corporation, that Netscape browsers would be including Java support. On January 9, 1996, the Java Soft group was formed by Sun Microsystems to develop the technology.Java编程语言Java是一种通用的,并发的,基于类的并且是面向对象的计算机编程语言,它是为实现尽可能地减少执行的依赖关系而特别设计的。
Acceptance Testing--可接受性测试一般由用户/客户进行的确认是否可以接受一个产品的验证性测试。
actual outcome--实际结果被测对象在特定的条件下实际产生的结果。
Ad Hoc Testing--随机测试测试人员通过随机的尝试系统的功能,试图使系统中断。
algorithm--算法一个定义好的有限规则集,用于在有限步骤内解决一个问题;(2)执行一个特定任务的任何操作序列。
algorithm analysis--算法分析一个软件的验证确认任务,用于保证选择的算法是正确的、合适的和稳定的,并且满足所有精确性、规模和时间方面的要求。
Alpha Testing--Alpha测试由选定的用户进行的产品早期性测试。
这个测试一般在可控制的环境下进行的。
analysis--分析分解到一些原子部分或基本原则,以便确定整体的特性;(2)一个推理的过程,显示一个特定的结果是假设前提的结果;(3)一个问题的方法研究,并且问题被分解为一些小的相关单元作进一步详细研究。
anomaly--异常在文档或软件操作中观察到的任何与期望违背的结果。
application software--应用软件满足特定需要的软件。
architecture--构架一个系统或组件的组织结构。
ASQ--自动化软件质量(Automated Software Quality)使用软件工具来提高软件的质量。
assertion--断言指定一个程序必须已经存在的状态的一个逻辑表达式,或者一组程序变量在程序执行期间的某个点上必须满足的条件。
assertion checking--断言检查用户在程序中嵌入的断言的检查。
audit--审计一个或一组工作产品的独立检查以评价与规格、标准、契约或其它准则的符合程度。
audit trail--审计跟踪系统审计活动的一个时间记录。
Automated Testing--自动化测试使用自动化测试工具来进行测试,这类测试一般不需要人干预,通常在GUI、性能等测试中用得较多。
1. What is software development?Software development is the process of developing software through successive phases in an orderly way. This process includes not only the actual writing of code but also the preparation of requirements and objectives, the design of what is to be coded, and confirmation that what is developed has met objectives.Before systems development methods came into being, the development of new systems or products was often carried out by using the experienceand intuition of management and technical personnel. However, the complexityof modern systems and computer products long ago made the need clear forsome kind of orderly development process.Typical phases of software development:1) Identification of required software2) Analysis of the software requirements3) Detailed specification of the software requirements4) Software design5) Programming6) Testing7) MaintenanceIn general, the development of commercial software is usually a result of demand in the marketplace, while enterprise software developmentgenerally arises from a need or a problem within the enterprise environment.2. How is software development guided?The software development process is almost invariably guided bysome systematic software development method (SDM). Referred to by a numberof terms, including process models, development guidelines,and systems development life cycle models (SDLC), software development methods nevertheless generally include the same development phases:∙The existing system is evaluated and its deficiencies identified, usually through interviewing system users and support personnel.∙The new system requirements are defined. In particular, the deficiencies in the existing system must be addressed with specific proposals for improvement.∙The proposed system is designed. Plans are laid out concerning the physical construction, hardware, operating systems, programming, communications, and security issues.∙The new system is developed. The new components and programs must be obtained and installed. Users of the system must be trained in its use, and all aspects of performance must be tested. If necessary, adjustments must be made at this stage.∙The system is put into use. This can be done in various ways. The new system can phased in, according to application or location,andthe old system gradually replaced. In some cases, it may be more cost-effective to shut down the old system and implement the new system all at once.∙Once the new system is up and running, then it should be exhaustively evaluated. Maintenance must be kept up rigorously at allers of the system should be kept up-to-date concerning the latest modificationsand procedures.The systems development life cycle model was developed as a structured approach to information system development that guides all the processesinvolved from an initial feasibility study through to maintenance of thefinished application. SDLC models take a variety of approaches to development.Systems development life cycle models include:· The waterfall model:This is the classic SDLC model, with a linear and sequential method that has goals for each developmentphase. The waterfall model simplifies task scheduling, because there areno iterative or overlapping steps. One drawback of the waterfall is thatit does not allow for much revision.· Rapid application development (RAD):This models based on the concept that better products can be developed more quicklyby: using workshops or focus groups to gather system requirements; prototyping and reiterative testing of designs; rigid adherence to schedule; and less formality of team communications such as reviews.· Joint application development (JAD): This modelinvolves the client or end user in the design and development of an applicationthrough a series of collaborative workshops called JAD sessions.· The prototyping model: In this model, a prototype (an early approximation of a final system or product) is built, testedand then reworked as necessary until an acceptable prototype is finallyachieved from which the complete system or product can now be developed.· Synchronize-and-stabilize: This model involves teams working in parallel on individual application modules, frequently synchronizingtheir code with that of other teams and stabilizing code frequently throughout the development process.· The spiral model: This model of development combines the features of the prototyping model and the waterfall model. The spiral model is favored for large, expensive, and complicated projects.3. How has the open source development process influenced software development in general?Open source software is developed collaboratively; source code is freely available for use and modification. The open source movement arose because some developers came to believe that competition amongst vendors leads to inferior products and that the best approach to development isa collaborative one.The OSI (Open Source Initiative) is an industry body that certifies products as open source if they conform to a number of rules:· The software being distributed must be redistributed to anyone else without any restriction· The source code must be made available (so that the receiving party will be able to improve or modify it)· The license can require improved versions of the software to carry a different name or version from the original softwareDespite its emphasis on the collaborative process, the biggest influence that open source has had on software development in general may be through competition: by competing with proprietary software products, open source products force vendors to work that much harder to hold their market share in the face of viable open source alternatives.4. What are some generally accepted best practices common to all or most development models?Here's a collection of some of the top tips from a variety of industry sources:· Make sure that you've chosen a systems development life cycle model that suits your project, because every one of the processesinvolved depends on the model. That said, however, implementing any modelis betterthan none -- much of the success of a project depends upon howscrupulously the model is adhered to.· Reuse software components when it's appropriate, but don't use code that doesn't work perfectly for its intended purpose just because you have it on hand.· Be very thorough in gathering requirements, ensuring that all parties agree on what they are -- and make sure you document them.· Don't promise the moon, if you can't deliver it. Avoidletting someone who isn't fully informed negotiate with the client.· Make sure that the architecture you've chosen is appropriate for the application you're building. To retain perspective, you might want to look at the smaller picture and plan the architecture incrementally.· Change is part of life, including software development. You have to accept that various things -- requirements, for example -- are likely to change throughout the life of the project. Keep control of them, but not too rigidly.· Set up peer review process es for every element of the project.· Design thoroughly and with care, but remember the KISSprinciple: Keep it simple.· In your project plan, split big projects into manageable chunks, with concrete milestones and deadlines.· Ensure accountability: make sure that deadlines are clear and that people have to report on whether they made them, and explain why not if they don't.· Implement quality control procedures throughout the project.· Test exhaustively -- there's no point in doing a cursory run through only to have an application fail when you run it for the client.· After the project is completed, conduct a thorough post-mortem, with everyone involved. You'll see what worked well and what should havebeen differently, and your future projects will benefit.5. What are some common mistakes in software development?According to a Standish Group report, corporations in the United States spend over $275 billion every year on software development projects, many of which are doomed to failure. Research by the group found that over 80% of projects fail for various reasons, and that fully 30% of projectswere cancelled prior to completion because of poor execution.David B. Stewart, at the University of Maryland, set out to document the 10 most common mistakes of software development. He found, however,that the sheer number of errors that were commonly practiced made it impossible to keep the number to ten. He ended up calling his article "Twenty-FiveMost Common Mistakes with Real-Time Software Development." Even so, afterthe title had been established, he found another five errors so common that the felt compelled to add them.According to Dr. Michael, the most common project problems are due to failure to manage project elements successfully:· Requirement s are not clearly and accurately defined, and agreed upon by all concerned.· Resources are not adequately planned and allocated.· Threats to project success are not clearly detected, identified, and protected against.· Critical path analysis is omitted, or poorly executed.· The project's progress is not tracked adequately.· Quality management is not carried out well enough throughout the life of the project.· Too little data is collected, or data is ignored or poorly understood.Correcting flaws identified during software security audits is expensive and time consuming. Worse, vast resources are spent on containing and recovering from exploits. Fortunately, providing development staff with the knowledge and tools to avoid many of these pitfalls is easy and inexpensive.6. Given a particular process model, is there a set of tools(a development environment) to support it?In general, a process model usually begins as a philosophy of "who does what development when" rather than a rigid methodology complete with tools. For example, rapid application development (RAD) is an approach that can make use of existing development tools. In general, tools for supporting all or part of a process model tend to arrive later, if at all.Historically, development tools have focused on the code-building, code archive management, documentation, testing, and packaging parts ofthe process, sometimes offered as a suite. Such a suite is generally known as an integrated development environment (IDE).A set of tools for managing or supporting a development project is generally known as a computer-assisted software environment (CASE). A number of companies offer products that support early stages of development such as requirements gathering, design prototyping, and data modeling. A number of these provide tools that support data modeling with the Unified Modeling Language. Overall, there is a trend toward providing all or most of the tools for a development project in a single product or related set of products.Today, the main code-building development environments or program suites come from Microsoft with its Visual Studio and Visual Studio .NET, providing support for Visual Basic, Visual C#, Visual C++, and Visual J#; Sun Microsystems with its Java 2 Enterprise Environment; and numerous software vendors such as Borland who repackage these environments with some value-added features. Recently, almost all providers of software development environments have added features that enable the software to be used on the Web.7. How do you choose the "right" programming language for your project?For most projects, the right language is easy to choose. Your company may have standardized on a particular development environment and language (and you may have been hired because you were already familiar with the language). Or you may be updating or enhancing an existing program; it's almost always best to use the same language the existing program is written in. In some cases, however, someone will need to select the best (or, since the best may be somewhat arguable, at least an appropriate language). In somecases, you or your team of developers may need to know several languages fordifferent purposes.General truisms about programming languages are that:∙Perl or a similar script language is most suitable for small tasks and sometimes acting as a program that goes between other,largerprograms.∙Visual Basic is most suitable for relatively novice programmers and relatively simple programs.∙Java, C++, or comparable languages like Python and Tcl aremost suitable for larger applications using object orientation as adesignmodel.∙ C is most suitable for programs where efficiency and performance are the primary concern.∙The appropriate assembler language is most suitable where the program is relatively short and high performance is critical.Where constraints permit, some programmers may favor one object-oriented language over another (for example, Java, C++, Python, or Tcl). A programmer with skills in C is likely to prefer C++, which combines the proceduraland other concepts and syntax of C with object-oriented concepts.8. What are some trends regarding the future of software development?Blogs - A growing number of big-name softwaredevelopers are finding they can make better software applications if theyshare information with potential customers from the start and incorporate customer feedback into development decisions. While developers of gamessoftware have used this method for years, business software makers are nowalso catching on and using blogs as an important part of the development process.Big-name support for independent software vendors (ISVs) - Big players like Microsoft, IBM, and Sun have recognized that they cannot fill every niche industry's software demands, so they have begun to activelyseek partnerships with small ISVs, in hopes that by encouraging ISVs to focuson vertical industry applications, everyone will benefit.Component-based development- In this approach, softwareis developed in modules that are linked dynamically to construct a completeapplication. Charles Simonyi (creator of the WYSIWYG editor) believes thateventually, software development will become so modular that even lay-peoplewill be able to assemble components effectively to create customizedsoftware applications.Continued improvements in refactoring tools - Eric Raymond,a leading philosopher about program development, maintains that the conceptof refactoring is consistent with the idea ofget-something-working-now-and-perfect-it-laterapproach long familiarto Unix and open source programmers. The idea is alsoembodied in the approach known as Extreme Programming. As software applicationsbecome larger, better refactoring tools will be required to maintain codebases and diagnose bugs.Outsourcing - Using this approach, software companies hire employees around the world to take advantage of time zone and labor/cost differences.Proponents say that in effect, software development teams now have a 24-hourwork day, and are able to provide fast turn-around. Detractors say that outsourcingparts of a project leads to sloppy coding and only works if there is a highdegree of coordination regarding modularized tasks, and above-average communicationwithin the team.1。
软件工程英语软件度量学:Software Metrics软件经济学 :Software Economics 文档: Documents软件方案WHY 软件分析W HAT 软件工具: Software Tools软件实现 HOW工具箱: Tool Box软件生存周期过程的开发标准集成工具: Integrated ToolStandard for Developing Software 软件工程环境: SoftwareLife Cycle ProcessEngineering Environment软件开发模型: Software传统: ConventionalDevelopment Model经典: Classical编码员: Coder解空间:Solution Domain瀑布模型: Waterfall Model问题空间: Problem Domain快速原型模型: Rapid Prototype 清晰第一,效率第二Clarity theModelfirst, Efficiency the next.增量模型 :Incremental Model设计先于编码D esign before线性思维 :Linear Thinkingcoding演化模型: Evolutionary Model使程序的结构适合于问题的结构螺旋模型: Spiral ModelMake the program fit the problem对象: Object开发伴随复用,开发为了复用类: ClassDevelopment with reuse,继承: Inheritance Development for reuse.聚集 :Aggregation靠度量来管理: Management by消息: MessageMeasurement面向对象=对象Object+ 分类Classification+继承 Inheritance+消息通信Communication with Messages构件集成模型: Component Integration Model转换模型: Transformational Model净室软件工程: Cleanroom Software Engineering净室模型 :Cleanroom Model软件需求规格说明书:Software Requirement Specification ,SRS 分析模型: Analysis Model便利的应用规约技术: Facilitated Application Specification Techniques ,FAST结构化语言:Structured Language 判定树: Decision Tree基数: Cardinality事件轨迹: Event Trace对象-关系 Object-Relationsship 结构化分析: SA〔 Structured Analysis〕由顶向下,逐步细化Top-Down Stepwise Refinement面向对象分析: Object-Oriented Analysis包含: Contains临近: Is Next To传到 :Transmits to来自 :Acquires from管理 :Manages控制 :Controls组成: Is Composed of细化: Refinement抽象: Abstraction模块: Module策略: Strategy信息隐藏 :Information Hiding数据封装: Data Encapsulation抽象数据类型:Abstract Data type 模块化设计: Modular Design分解: Decomposition模块性: Modularity单模块软件:Monolithic Software 模块独立性:Module Independence内聚: Cohesion偶然性内聚: Coincidental Cohesion逻辑性内聚: Logical Cohesion时间性内聚: Temporal Cohesion 过程性内聚 : Procedural Cohesion 通信性内聚 :Communicational Cohesion顺序性内聚: Sequential Cohesion 功能性内聚: Functional Cohesion 非直接偶合:No Direct Coupling 自顶向下设计: Top-Down Design 正式复审: Formal Review非正式复审: Informal Review走查,排练: Walk-Through会审: Inspection映射: Mapping传入路径: Afferent path传出路径: Efferent path变换中心: Transform Center接受路径: Reception path动作路径: Action path事务中心: Transaction Center分支分解:Factoring of Brandches 瓮形: oval-shaped一个模块的控制域: Scope of数据偶合:Data Coupling Control特征偶合: Stamp Coupling一个模块的作用域: Scope of 控制偶合:Control Coupling Effect外部偶合:External Coupling结构化程序设计: Structured 公共偶合:Common Coupling Programming内容偶合 : Content Coupling通心面程序:Bowl of Spaghetti 由底向上设计:Bottom-Up Design流程图: Flow Diagram编码: Coding特化:Specialization方框图: Block DiagramPDL (Pidgin):Program Design Language伪代码: Pseudo CodeJSD:Jackson System Development 对象建模技术: Object Modeling Technique根底设施: Infrastructure控制线程: Thread of Control保护者对象: Guardian Object协议: protocolUML:Unified Modeling Language OMG:Object Management Group 统一方法: Unified Method 元元模型: Meta-Meta Model用户模型: User Model静态图: Static Diagram动态图: Dynamic Diagram用例视图: Use Case View逻辑视图: Logical View并发视图: Concurrent View构件视图: Component View实现模型视图:Implementation Model View部署视图: Deployment View航向: Navigability重数: Multiplicity共享聚集: Shared Aggregation关联 :Association组合:Composition泛化: Generalization泛化:Generalization依赖: Dependency简单消息:Simple Message结点: Node同步消息:Synchronous Message 接口: Interface异步消息:Asynchronous 包: Package Message注释:Note事件说明:Event_Signature守卫条件: Guard_Condition动作表达式 :Action_Expression 发送子句: Send_Clause时序图: Sequence Diagram协作图: Collaboration Diagram 前缀: Predecessor before you make it faster.求快不忘保持程序正确Keep it right when you make it faster.保持程序简单以求快Keep it simple to make it faster.书写清楚,不要为“效率〞牺牲清循环子句: Iteration-Clause楚 Write clearly-don't sacrifice 活动图: Activity Diagram clarity for "efficiency"构件图: Component Diagram文档化: Code Documentation配置图: Deployment Diagram内部文档编制: Internal建模过程指导 (RUP): Rational DocumentationUnified Process序言: Prologue可执行代码: Executalbe Codes用户友善: User Friendly实现: Implementation纠错: Debugging编码风格: Coding Style测试用例: Test Case标准: Classical穷举测试: Exhaustive Testing控制流的直线性:Linearity of选择测试: Selective Testing Control Flow静态分析: Static Analysis程序风格设计要素:黑盒测试: Black Box Testing先求正确后求快Make it right白盒测试: White Box Testing before you make it faster.等价分类:Equivalence Partioning 先求清楚后求快Make it clear边界值分析法: Boundary ValueAnalysis测试驱动模块:Test Driver所谓猜错:Error Guessing测试桩模块:Test Stub因果图 :Cause-Effect Graph群: Cluster逻辑覆盖测试法:Logic Coverage混合方式测试:Sandwich Testing Testing渐增式测试:Incremental Testing 试凑: Trial and Error非渐增式:Non-Incremental回溯: Back Tracking配置复审:Configuration Review 病因排除法:Cause Elimination测试终止标准:Test Completion 测试纠错:Debugging by Testing Criteria蛮力纠错技术: Debugging by基于线程的测试:Thread-Based Brute Force Testing回归测试:Regression Testing基于使用:Use-Based单元测试:Unit Testing基于构件的软件开发:综合测试:Integration Testing Component Based Software 确认测试: Validation Testing Development ,CBSD系统测试:System Testing领域工程:Domain Engineering 模块测试:Module Testing需求规约:Requirements 高级测试:Higher order Testing Specification不可达的:Unreachable变体: Variant办公桌检查:Desk Check组件对象模型,COM:Componet 走查: Walk-Through Object Model代码会审:Code Inspection对象链接与嵌入:Object Linkingand Embedding公共对象请求代理体系结构,CORBA:Common Object Request Broker Architecture枚举分类:Enumerater Classification呈面分类: Faceted Classification 属性 - 值分类: Attribute-Value Classification应用系统工程, ASE:Application System Engineering完善性维护:Perfective Maintenance适应性维护:Adaptive Maintenance纠错性维护:Corrective Maintenance预防性维护:Preventive Maintenance结构化的翻新: Structured Retrofit可维护性: Maintainability 可理解性: Understandability可修改性: Modifiability可测试性 :Testability 调用图: Call Graph交差引用表: Cross-Reference Directory数据封装技术:Data Encapsulation维护申请单MRF:Maintenance Request Form软件问题报告单SPR: Software Problem Report软件修改报告单SCR: Software Change Report修改控制组 CCB:Change Control Board软件配置:Software Configuration 版本控制库: Version Control Library活动比: Activity Ratio工作量调节因子E AF: Effort Adjustment Factor软件再工程:Software Reengineering逆向工程: Reverse Engineering 重构: Restructure演化性: Evolvability问题定义: Problem Definition系统目标与范围的说明:Statement of Scope and Objectives可行性研究: Feasibility Study系统流程图: System Flowchart 本钱-效益分析: Cost-Benifit Analysis风险识别: Risk Identification风险预测: Risk Projection风险估计: Risk Estimation风险评价: Risk Assessment估算模型: Estimation Model资源模型: Resource Model构造性本钱模型:Constructive cost Model 半独立: Semidetached嵌入: Embeded算法模型: Algorithmic Model分类活动结构图WBS: Work Breakdown Structure人员-时间权衡定律People-Time Trade-Off Law无我小组: Egoless Team主程序员小组:Chief-Programmer Team PERT:Program Evaluation and Review Technique关键路径: Critical Path知识产权: Intellectual Property 靠质量来管理: Management by Measurement质量保证: Quality Assurance质量认证 : Quality Certification质量检验: Quality Inspection全面质量管理 TQC:Total Quality Control组织: Organic质量体系:Quality System计划-实施-检查-措Failure ,MTTF施Plan-Do-Check-Action错误传入 :Error Seeding合格论证: Conformity冗余: Redundancy Certification容错 :Fault Tolerance可靠性: Reliability公理化归纳断言法: Axio-Matic 效率: Efficiency Inductive Assertion运行工程 :Human Engineering循环不变式: Loop Invariant正确性: Correctness能力成熟度模型: Capability 使用性: Usability Maturity Model完整性: Integrity关键过程域: Key Process 可理解性: Understandability Area ,KPA可测试性: Testability关键实践: Key Practice可修改性: Modifiability初始级: Initial可移植性: Portability可重复级 :Repeatable可维护性: Maintainability已定义级 :Defined可适应性: Flexibility已管理级 :Managed可重用性: Reusability优化级 :Optimizing交互操作性: Interoperability主任评估师: Lead Assessor验证与确认: Verification and极值程序设计 :Extreme Validation ,V&V Programming基线: Baselines自适应软件开发 :Adaptive 平均故障时间: Mean Time To Software Development轻载 :Light weight重载 :Heavy Weight返工: Rework进度 :Schedule时间 :Duration本钱 :Cost代码行 LOC:Lines of Code面向功能: Function-Oriented面向规模 : Size-Oriented功能点: Function Points权系数 :Weighting Coefficient用户输入: User Input用户输出 : User Output用户查询 : User Inquirty主文件处理 :Master File外部界面 :External Interface TCF:Technical Complexity Factor 技术复杂性因子测度 :Measurement最终用户 :End-User;计算机辅助软件工程CASE:Computer Aided Software Engineering拉出: pull-out下拉 : pull-down一致性 :Unification自动化: Automation过程模型: Process Model软件开发环境 SDE : Software Development Environment软件设计支持环境 PSE:Programming Support Environment集成化项目支持 IPSE:Integrated Project Support Environment 集成化框架: Integration Framework质量从头抓起: Quality from Beginning 缺陷: Defect变更请求: Change Request功能扩充: Enhancement Request。
软件开发⽤英语怎么说 软件开发是根据⽤户要求建造出软件系统或者系统中的软件部分的过程。
软件开发是⼀项包括需求捕捉、需求分析、设计、实现和测试的系统⼯程。
通常采⽤软件开发⼯具可以进⾏开发。
那么你知道软件开发⽤英语怎么说吗?下⾯来学习⼀下吧。
软件开发的英语说法1: software development 软件开发的英语说法2: software engineering 软件开发的相关: 软件开发⼯具 programming tool 软件开发⼯程师 Software Engineer 统⼀软件开发过程 The Unified Software Development Process 软件开发⽣命周期 Software Development Life Cycle 软件开发单位 software development unit 软件开发模型 Software Development Model 软件开发的英语例句: 1. Ah yes. I'm meeting the senior partners to discuss software development. 啊,是的. 我要见⼀些⾼级合伙⼈,讨论软件开发的问题. 2. How software testing fits into the software development process. 软件测试是怎样融合到软件开发流程的. 3. It analyzes the influences of object - oriented development technology to software metrics. 着重分析⾯向对象软件开发技术的发展对软件度量的影响. 4. Undertook software development projects for industrial and commercial organization. 承担⼯商企业的软件开发项⽬. 5. So , component composition become the direction of software development and reuse. 构件组装成了软件开发和复⽤的必然趋势. 6. The software involves database, GIS, and man machine interface. 软件开发涉及数据库、地理信息(GIS) 、⼈机交互界⾯三部分. 7. Paul Allen joins MITS as director of Software Development. 保罗·艾伦成为MITS的软件开发主任. 8. Products: Computer software development and related consulting services Computerconsulting services. 经营范围: 计算机软件开发及其相关咨询服务. 9. CAMCTO is a rapid application development tool for engineering. CAMCTO是⼀款适⽤于⼯程学的⾼速应⽤软件开发⼯具. 10. What is the best feature of the big - bang model of software development? 软件开发中的“⼤爆炸”模型,最值得称道的地⽅是什么? 11. Knowledge of the Agile Software Development process is also a plus. 以及对Agile软件开发过程的认知. 12. However, almost all of the embedded software development using C language. 不过, ⼏乎所有的嵌⼊式软件开发都使⽤了C语⾔. 13. Software developers mostly focus on the research of the software development framework. 软件开发框架的研究⼀直是软件开发者关注的课题. 14. What major challenge is the component approach to system development addressing? 组件式软件开发⽅法欲解决软件开发上的哪些挑战或难题呢 ? 15. The increasing scale and complexity of software challenges software development dramatically. 软件的规模和复杂度不断增加,使得软件开发⾯临巨⼤挑战.。
软件系统开发中英文对照外文翻译文献(文档含英文原文和中文翻译)软件工程中的过程处理模型斯卡基沃尔特摘要软件系统从起初的开发,维护,再到一个版本升级到另一个版本,经历了一系列阶段。
这篇文章归纳和整理了一些描述如何开发软件系统的方法。
从传统的软件生命周期的背景和定义出发,即大多数教科书所讨论的,并且目前的软件开发实践所遵循的软件生命周期,接着讨论作为目前软件工程技术基石的更全面的软件开发模型。
关键词:软件生命周期;模型;原型1 前言软件业的发展最早可追溯到开发大型软件项目的显式模型,那是在二十世纪五十年代和六十年代间。
总体而言,这些早期的软件生命周期模型的唯一目的就是提供一个合理的概念计划来管理软件系统的开发。
因此,这种计划可以作为一个基础规划,组织,人员配备,协调,预算编制,并指导软件开发活动。
自20世纪60年代,出现了许多经典的软件生命周期的描述(例如,霍西尔1961年,劳斯莱斯1970年,1976年博伊姆,迪斯塔索1980年,1984年斯卡基,萨默维尔1999年)。
罗伊斯(1970)使用现在生活中熟悉的“瀑布”图表,提出了周期的概念,这个图表概括了开发大型软件系统是多么的困难,因为它涉及复杂的工程任务,而这些任务在完成之前可能需要不断地返工。
这些图表也通常在介绍性发言中被采用,主要针对开发大型软件系统的人们(例如,定制软件的客户),他们可能不熟悉各种各样的技术问题但还是要必须解决这些问题。
这些经典的软件生命周期模型通常包括以下活动一些内容:系统启动/规划:系统从何而来?在大多数情况下,不论是现有的信息处理机制以前是自动的,手工的,还是非正式的,新系统都会取代或补充它们。
● 需求分析和说明书:阐述一个新的软件系统将要开发的问题:其业务能力,其所达到的性能特点,支持系统运行和维护所需的条件。
● 功能或原型说明:潜在确定计算的对象,它们的属性和关系,改变这些对象的操作,约束系统行为的限制等。
●划分与选择:给出需求和功能说明书,将系统分为可管理的模块,它们是逻辑子系统的标志,然后确定是否有对应于这些模块的新的,现有的,或可重复使用的软件系统可以复用。
安卓应用开发中英文对照外文翻译文献(文档含英文原文和中文翻译)中英文翻译安卓应用开发基础在Java编程语言编写的Android应用程序的Android的SDK工具编译代码以及与任何数据和到一个Android的包,一个归档文件档案资源的.apk后缀,所有的在一个单一的代码.apk文件被认为是一个应用程序,是Android的文件,供电设备来安装应用程序。
一旦安装在设备上,每个Android应用程序的生命在它自己的安全沙箱:而Android操作系统是一个多用户Linux系统中,每个应用程序是一个不同的用户。
默认情况下,每个应用程序的系统分配一个唯一的Linux用户ID (该ID仅用于由系统是未知的应用程序),系统设置所有的应用程序中的文件权限,以便只有用户ID分配给该应用程序可以访问它们。
每个进程都有它自己的虚拟机(VM),因此应用程序的代码在从其他应用程序隔离运行。
默认情况下,每个应用程序运行在它自己的Linux进程。
Android 的启动过程时,应用程序的任何组件需要被执行,然后关闭该进程时,它不再需要或恢复时,系统必须为其他应用程序的内存。
这样一来,Android系统实现了最小特权原则,也就是说,每个应用程序,默认情况下,只能访问的组件,它需要做的工作,没有更多,这将创建一个非常安全的环境,使应用程序无法访问的,这就是它没有给予许可制度的部分。
但是,有一个应用程序的方法与其他应用程序和应用程序访问系统服务的数据:这有可能为两个应用程序安排共享相同的Linux用户ID,在这种情况下,它们能够相互访问的文件。
为了节约使用相同的用户ID系统资源,应用程序还可以安排运行在相同的Linux进程和共享同一个VM (应用也必须使用相同的证书签名)。
应用程序可以请求访问权限,如用户的联系人,短信,可安装存储(SD卡),摄像头,蓝牙等设备的数据,所有应用程序的权限必须由用户在安装时授予。
这涵盖了基本就如何Android应用程序在系统中存在这个文件的其余部分向您介绍:1、框架的核心组件定义应用程序。
电脑软件高级词汇英汉对照软件经验数据 software experience data软件风险 software hazard软件库管理员 software librarian软件库 software library软件生存周期 software life cycle软件维护员 software maintainer软件监控程序 software monitor软件操作员 software operator软件产品 software product软件采购员 software purchaser软件质量 software quality质量保证 quality assurance质量度量学 quality metrics软件度量学 software metrics软件质量保证 software quality assurance软件质量评判准则 software quality criteria 软件可靠性 software reliability软件注册员 software registrar软件储藏库 software repository软件复用 software reuse软件安全性 software safety软件潜行分析 software sneak analysis软件单元 software unit软件验证程序 software verifier规约语言 specification language规约验证 specification verification 稳定性 stability供方 supplier支持软件 support software符号执行 symbolic execution系统体系结构 system architecture系统设计 system design系统文档 system documentation系统库 system library系统可靠性 system reliability系统软件 system software系统确认 system validation系统验证 system verification终止性证明 termination proof测试用例生成程序 test case generator 测试覆盖[率] test coverage测试数据生成程序 test data generator 测试驱动程序 test driver测试阶段 test phase测试过程 test procedure测试可重复性 test repeatability测试报告 test report分时 time sharing计时分析程序 timing analyzer追踪程序 tracer培训 training类型 type软件性能 software performance自适应性 adaptability内聚性 cohesion模块性 modularity可复用性 reusability部分正确性 partial correctness完全正确性 total correctness有效性 validity用户合同管理员 user contract administrator 用户文档 user documentation实用软件 utility software版本控制 version control更改控制 change control基线 baseline原型 prototype原型制作 prototyping原型速成 rapid prototyping领域建模 domain modeling, DM体系结构建模 architecture modeling, AM黑箱 black-box白箱 white-box领域工程师 domain engineer软件体系结构 software architecture软件再工程 software reengineering软件过程 software process可复用构件 reusable component基于构件的软件开发 component-based software development, CBSD基于构件的软件工程 component-based software engineering, CBSE3C模型 concept, content and context 3C 3C指概念、内容和语境。
外文翻译:Software and software engineering ----the software appearance and enumeratesAs the decade of the 1980s began, a front page story in business week magazine trumpeted the following headline:” software: the new driving force.”software had come of age—it had become a topic for management concern. during the mid-1980s,a cover story in foreune lamented “A Growing Gap in Software,”and at the close of the decade, business week warned managers about”the Software Trap—Automate or else.”As the 1990s dawned , a feature story in Newsweek asked ”Can We Trust Our Software? ”and The wall street journal related a major software company’s travails with a front page article entitled “Creating New Software Was an Agonizing Task …” these headlines, and many others like them, were a harbinger of a new understanding of the importance of computer software ---- the opportunities that it offers and the dangers that it poses.Software has now surpassed hardware as the key to the success of many computer-based systems. Whether a computer is used to run a business, control a product, or enable a system , software is the factor that differentiates . The completeness and timeliness of information provided by software (and related databases) differentiate one company from its competitors. The design and “human friendliness” of a software product differentiate it from competing products with an otherwise similar function .The intelligence and function provided by embedded software often differentiate two similar industrial or consumer products. It is software that can make the difference.During the first three decades of the computing era, the primary challenge was to develop computer hardware that reduced the cost of processing and storing data .Throughout the decade of the 1980s,advances in microelectronics resulted in more computing power at increasingly lower cost. Today, the problem is different .The primary challenge during the 1990s is to improve thequality ( and reduce the cost ) of computer-based solutions- solutions that are implemented with software.The power of a 1980s-era mainframe computer is available now on a desk top. The awesome processing and storage capabilities of modern hardware represent computing potential. Software is the mechanism that enables us to harness and tap this potential.The context in which software has been developed is closely coupled to almost five decades of computer system evolution. Better hardware performance, smaller size and lower cost have precipitated more sophisticated computer-based syst ems. We’re moved form vacuum tube processors to microelectronic devices that are capable of processing 200 million connections per second .In popular books on “the computer revolution,”Osborne characterized a “new industrial revolution,” Toffer called the advent of microelectronics part of “the third wave of change” in human history , and Naisbitt predicted that the transformation from an industrial society to an “information society” will have a profound impact on our lives. Feigenbaum and McCorduck suggested that information and knowledge will be the focal point for power in the twenty-first century, and Stoll argued that the “ electronic community” created by networks and software is the key to knowledge interchange throughout the world . As the 1990s began , Toffler described a “power shift” in which old power structures( governmental, educational, industrial, economic, and military) will disintegrate as computers and software lead to a “democratization of knowledge.”Figure 1-1 depicts the evolution of software within the context of. computer-based system application areas. During the early years of computer system development, hardware underwent continual change while software was viewed by many as an afterthought. Computer programming was a "seat-of-the-pants" art for which few systematic methods existed. Software development was virtually unmanaged--until schedules slipped or costs began to escalate. During this period, abatch orientation was used for most systems. Notable exceptions were interactive systems such as the early American Airlines reservation system and real-time defense-orientedsystems such as SAGE. For the most part, however, hardware was dedicated to the union of, a single program that in turn was dedicated to a specific application.Evolution of softwareDuring the early years, general-purpose hardware became commonplace. Software, on the other hand, was custom-designed for each application and had a relatively limited distribution. Product software(i.e., programs developed to be sold to one or more customers) was in its infancy . Most software was developed and ultimately used by the same person or organization. You wrote it, you got it running , and if it failed, you fixed it. Because job mobility was low , managers could rest assured that you’d be there when bugs were encountered.Because of this personalized software environment, design was an implicit process performed in one’s head, and action was often nonexistent. During the early years we learned much about the implementation of computer-based systems, but relatively little about computer system engineering .In fairness , however , we must acknowledge the many outstanding computer-based systems that were developed during this era. Some of these remain in use today and provide landmark achievements that continue to justify admiration.The second era of computer system evolution (Figure 1.1) spanned the decade from themid-1960s to the late 1970s. Multiprogramming and multiuse systems introduced new concepts of human-machine interaction. Interactive techniques opened a new world of applications and new levels of hardware and software sophistication . Real-time systems could collect, analyze, and transform data form multiple sources , thereby controlling processes and producing output in milliseconds rather than minutes . Advances in on-line storage led to the first generation of database management systems.The second era was also characterized by the use of product software and the advent of "software houses." Software was developed for widespread distribution in a multidisciplinary market. Programs for mainframes and minicomputers were distributed to hundreds and sometimesthousands of users. Entrepreneurs from industry, government, and academia broke away to "develop the ultimate software package" and earn a bundle of money.As the number of computer-based systems grew, libraries of computer software began to expand. In-house development projects produced tens of thousands of program source statements. Software products purchased from the outside added hundreds of thousands of new statements. A dark cloud appeared on the horizon. All of these programs--all of these source statements-had to be corrected when faults were detected, modified as user requirements changed, or adapted to new hardware that was purchased. These activities were collectively called software maintenance. Effort spent on software maintenance began to absorb resources at an alarming rate.Worse yet, the personalized nature of many programs made them virtually unmentionable. A "software crisis" loomed on the horizon.The third era of computer system evolution began in the mid-1970s and continues today. The distributed system--multiple computers, each performing functions concurrently and communicating with one another- greatly increased the complexity of computer-based systems. Global and local area networks, high-bandwidth digital communications, and increasing demands for 'instantaneous' data access put heavy demands on software developers.The third era has also been characterized by the advent and widespread use of microprocessors, personal computers, and powerful desk-top workstations. The microprocessor has spawned a wide array of intelligent products-from automobiles to microwave ovens, from industrial robots to blood serum diagnostic equipment. In many cases, software technology is being integrated into products by technical staff who understand hardware but are often novices in software development.The personal computer has been the catalyst for the growth of many software companies. While the software companies of the second era sold hundreds or thousands of copies of their programs, the software companies of the third era sell tens and even hundreds of thousands of copies. Personal computer hardware is rapidly becoming a commodity, while software provides the differentiating characteristic. In fact, as the rate of personal computer sales growth flattened during the mid-1980s, software-product sales continued to grow. Many people in industry and at home spent more money on software than they did to purchase the computer on which the software would run.The fourth era in computer software is just beginning. Object-oriented technologies (Chapters 8 and 12) are rapidly displacing more conventional software development approaches in many application areas. Authors such as Feigenbaum and McCorduck [FEI83] and Allman [ALL89] predict that "fifth-generation" computers, radically different computing architectures, and their related software will have a profound impact on the balance of political and industrial power throughout the world. Already, "fourth-generation" techniques for software development (discussed later in this chapter) are changing the manner in which some segments of the software community build computer programs. Expert systems and artificial intelligence software has finally moved from the laboratory into practical application for wide-ranging problems in the real world. Artificial neural network software has opened exciting possibilities for pattern recognition and human-like information processing abilities.As we move into the fourth era, the problems associated with computer software continue to intensify:Hardware sophistication has outpaced our ability to build software to tap hardware's potential.Our ability to build new programs cannot keep pace with the demand for new programs.Our ability to maintain existing programs is threatened by poor design and inadequate resources.In response to these problems, software engineering practices--the topic to which this book is dedicated--are being adopted throughout the industry.An Industry PerspectiveIn the early days of computing, computer-based systems were developed usinghardware-oriented management. Project managers focused on hardware because it was the single largest budget item for system development. To control hardware costs, managers instituted formal controls and technical standards. They demanded thorough analysis and design before something was built. They measured the process to determine where improvements could be made. Stated simply, they applied the controls, methods, and tools that we recognize as hardware engineering. Sadly, software was often little more than an afterthought.In the early days, programming was viewed as an "art form." Few formal methods existed and fewer people used them. The programmer often learned his or her craft by trial and error. The jargon and challenges of building computer software created a mystique that few managers cared to penetrate. The software world was virtually undisciplined--and many practitioners of the clay loved it!Today, the distribution of costs for the development of computer-based systems has changed dramatically. Software, rather than hardware, is often the largest single cost item. For the past decade managers and many technical practitioners have asked the following questions: Why does it take so long to get programs finished?Why are costs so high?Why can't we find all errors before we give the software to our customers?Why do we have difficulty in measuring progress as software is being developed?These, and many other’ questions, are a manifestation of the concern about software and the manner in which it is developed--a concern that has tend to the adoption of software engineering practices.译文:软件和软件工程——软件的出现及列举在二十世纪八十年代的前十年开始的时候, 在商业周刊杂志里一个头版故事大声宣扬以下标题:“软件,我们新的驱动力!”软件带来了一个时代------它成为了一个大家关心的主题。
软件工程外文翻译文献(文档含中英文对照即英文原文和中文翻译)Software engineeringSoftware engineering is the study of the use of engineering methods to build and maintain effective, practical and high-quality software disciplines. It involves the programming language, database, software development tools, system platform, standards, design patterns and so on.In modern society, the software used in many ways. Typical software such as email, embedded systems, human-machine interface, office packages, operating systems, compilers, databases, games. Meanwhile, almost all the various sectors of computer software applications, such as industry, agriculture, banking, aviation and government departments. These applications facilitate the economic and social development,improve people's working efficiency, while improving the quality of life. Software engineers is to create software applications of people collectively, according to which software engineers can be divided into different areas of system analysts, software designers, system architects, programmers, testers and so on. It is also often used to refer to a variety of software engineers, programmers.OriginIn view of difficulties encountered in software development, North Atlantic Treaty Organization (NATO) in 1968 organized the first Conference on Software Engineering, and will be presented at the "software engineering" to define the knowledge required for software development, and suggested that "software development the activities of similar projects should be. " Software Engineering has formally proposed since 1968, this time to accumulate a large number of research results, widely lot of technical practice, academia and industry through the joint efforts of software engineering is gradually developing into a professional discipline.Definitioncreation and use of sound engineering principles in order to obtain reliable and economically efficient software.application of systematic, follow the principle can be measured approach to development, operation and maintenance of software; that is to beapplied to software engineering.The development, management and updating software products related to theories, methods and tools.A knowledge or discipline (discipline), aims to produce good quality, punctual delivery, within budget and meet users need software.the practical application of scientific knowledge in the design, build computer programs, and the accompanying documents produced, and the subsequent operation and maintenance.Use systematic production and maintenance of software products related to technology and management expertise to enable software development and changes in the limited time and under cost.Construction team of engineers developed the knowledge of large software systems disciplines.the software analysis, design, implementation and maintenance of a systematic method.the systematic application of tools and techniques in the development of computer-based applications.Software Engineering and Computer ScienceSoftware development in the end is a science or an engineering, this is a question to be debated for a long time. In fact, both the two characteristics of software development. But this does not mean that they can be confused with each other. Many people think that softwareengineering, computer science and information science-based as in the traditional sense of the physical and chemical engineering as. In the U.S., about 40% of software engineers with a degree in computer science. Elsewhere in the world, this ratio is also similar. They will not necessarily use every day knowledge of computer science, but every day they use the software engineering knowledge.For example, Peter McBreen that software "engineering" means higher degree of rigor and proven processes, not suitable for all types of software development stage. Peter McBreen in the book "Software Craftsmanship: The New Imperative" put forward the so-called "craftsmanship" of the argument, consider that a key factor in the success of software development, is to develop the skills, not "manufacturing" software process.Software engineering and computer programmingSoftware engineering exists in a variety of applications exist in all aspects of software development. The program design typically include program design and coding of the iterative process, it is a stage of software development.Software engineering, software project seeks to provide guidance in all aspects, from feasibility analysis software until the software after completion of maintenance work. Software engineering that software development and marketing activities are closely related. Such assoftware sales, user training, hardware and software associated with installation. Software engineering methodology that should not be an independent programmer from the team and to develop, and the program of preparation can not be divorced from the software requirements, design, and customer interests.Software engineering design of industrial development is the embodiment of a computer program.Software crisisSoftware engineering, rooted in the 20th century to the rise of 60,70 and 80 years of software crisis. At that time, many of the software have been a tragic final outcome. Many of the software development time significantly beyond the planned schedule. Some projects led to the loss of property, and even some of the software led to casualties. While software developers have found it increasingly difficult for software development.OS 360 operating system is considered to be a typical case. Until now, it is still used in the IBM360 series host. This experience for decades, even extremely complex software projects do not have a set of programs included in the original design of work systems. OS 360 is the first large software project, which uses about 1,000 programmers. Fred Brooks in his subsequent masterpiece, "The Mythical Man Month" (The Mythical Man-Month) in the once admitted that in his management of theproject, he made a million dollar mistake.Property losses: software error may result in significant property damage. European Ariane rocket explosion is one of the most painful lesson.Casualties: As computer software is widely used, including hospitals and other industries closely related to life. Therefore, the software error might also result in personal injury or death.Was used extensively in software engineering is the Therac-25 case of accidents. In 1985 between June and January 1987, six known medical errors from the Therac-25 to exceed the dose leads to death or severe radiation burns.In industry, some embedded systems do not lead to the normal operation of the machine, which will push some people into the woods. MethodologyThere are many ways software engineering aspects of meaning. Including project management, analysis, design, program preparation, testing and quality control.Software design methods can be distinguished as the heavyweight and lightweight methods. Heavyweight methods produce large amounts of official documentation.Heavyweight development methodologies, including the famous ISO 9000, CMM, and the Unified Process (RUP).Lightweight development process is not an official document of the large number of requirements. Lightweight methods, including well-known Extreme Programming (XP) and agile process (Agile Processes).According to the "new methodology" in this article, heavyweight method presented is a "defensive" posture. In the application of the "heavyweight methods" software organizations, due to a software project manager with little or no involvement in program design, can not grasp the item from the details of the progress of the project which will have a "fear", constantly had to ask the programmer to write a lot of "software development documentation." The lightweight methods are presented "aggressive" attitude, which is from the XP method is particularly emphasized four criteria - "communication, simplicity, feedback and courage" to be reflected on. There are some people that the "heavyweight method" is suitable for large software team (dozens or more) use, and "lightweight methods" for small software team (a few people, a dozen people) to use. Of course, on the heavyweight and lightweight method of approach has many advantages and disadvantages of debate, and various methods are constantly evolving.Some methodologists think that people should be strictly followed in the development and implementation of these methods. But some people do not have the conditions to implement these methods. In fact, themethod by which software development depends on many factors, but subject to environmental constraints.Software development processSoftware development process, with the subsequent development of technology evolution and improvement. From the early waterfall (Waterfall) development model to the subsequent emergence of the spiral iterative (Spiral) development, which recently began the rise of agile development methodologies (Agile), they showed a different era in the development process for software industry different awareness and understanding of different types of projects for the method.Note distinction between software development process and software process improvement important difference between. Such as ISO 15504, ISO 9000, CMM, CMMI such terms are elaborated in the framework of software process improvement, they provide a series of standards and policies to guide software organizations how to improve the quality of the software development process, the ability of software organizations, and not give a specific definition of the development process.Development of software engineering"Agile Development" (Agile Development) is considered an important software engineering development. It stressed that software development should be able to possible future changes and uncertaintiesof a comprehensive response.Agile development is considered a "lightweight" approach. In the lightweight approach should be the most prestigious "Extreme Programming" (Extreme Programming, referred to as XP).Correspond with the lightweight approach is the "heavyweight method" exists. Heavyweight approach emphasizes the development process as the center, rather than people-centered. Examples of methods such as heavyweight CMM / PSP / TSP.Aspect-oriented programming (Aspect Oriented Programming, referred to as the AOP) is considered to software engineering in recent years, another important development. This aspect refers to the completion of a function of a collection of objects and functions. In this regard the contents related to generic programming (Generic Programming) and templates.软件工程软件工程是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。
软件开发的英文单词
软件开发的英文单词:software development。
development:
n.发展;发育;成长;壮大;开发;研制;研制成果;(新的)发展事态,进展情况,发展阶段;
复数: developments
扩展资料
Our software development center should be focusing on developing software, but now a bulk of our colleagues have to lend a helping hand in support.
我们软体中心应该做软体开发的.工作,不过现在不少员工都要参与支援工作。
So if you come to it from a professional software development background, it will feel a lot more familiar than if you come from web design.
所以如果你来自专业软体开发背景,它将会比来自于网页设计领域更容易熟悉。
A child's development is dependent on many factors.
孩子的成长受多种因素影响。
This piece of equipment is an exciting new development.
这台设备是一项振奋人心的最新研究成果。
This chapter explores the linkage between economic development and the environment.
本章探讨的是经济发展与环境之间的关系。
软件开发的流程英语介绍The software development process is a systematic approach to designing, coding, testing, and deploying software applications. It involves a series of steps that ensure the creation of a robust, user-friendly, andreliable software product. This article provides an in-depth overview of the software development process, highlighting the key stages and activities involved.Stage 1: Requirements Gathering and Analysis.The initial stage of the software development processis requirements gathering and analysis. This stage involves identifying and understanding the needs and expectations of the stakeholders, including users, customers, and business owners. The requirements gathering process typically involves conducting interviews, surveys, and workshops to collect information about the desired functionality, performance, usability, and other aspects of the software.Once the requirements are gathered, they are analyzed to ensure their clarity, completeness, and feasibility. This analysis helps identify any conflicts, ambiguities, or missing information in the requirements and provides an opportunity to refine them. The outcome of this stage is a detailed set of requirements specifications that serve as the foundation for the subsequent stages of the development process.。
软件工程英语文档:Documents软件工具:Software Tools工具箱:Tool Box集成工具:Integrated Tool软件工程环境:Software Engineering Environment传统:Conventional经典:Classical解空间:Solution Domain问题空间:Problem Domain清晰第一,效率第二Clarity the first, Efficiency the next. 设计先于编码Design before coding使程序的结构适合于问题的结构Make the program fit the problem开发伴随复用,开发为了复用Development with reuse, Development for reuse.靠度量来管理:Management by Measurement软件度量学:Software Metrics 软件经济学:Software Economics软件计划WHY软件分析WHAT软件实现HOW软件生存周期过程的开发标准Standard for Developing Software Life Cycle Process 软件开发模型:Software Development Model编码员:Coder瀑布模型:Waterfall Model快速原型模型:Rapid Prototype Model增量模型:Incremental Model 线性思维:Linear Thinking演化模型:Evolutionary Model 螺旋模型:Spiral Model对象:Object类:Class继承:Inheritance聚集:Aggregation消息:Message面向对象=对象Object+分类Classification+继承Inheritance+消息通信Communication with Messages 构件集成模型:Component Integration Model转换模型:Transformational Model净室软件工程:Cleanroom Software Engineering净室模型:Cleanroom Model软件需求规格说明书:Software RequirementSpecification ,SRS分析模型:Analysis Model便利的应用规约技术:Facilitated Application SpecificationTechniques ,FAST结构化语言:Structured Language判定树:Decision Tree基数:Cardinality事件轨迹:Event Trace对象-关系Object-Relationsship结构化分析:SA(Structured Analysis)由顶向下,逐步细化 Top-Down Stepwise Refinement面向对象分析:Object-Oriented Analysis包含:Contains临近:Is Next To传到:Transmits to来自:Acquires from管理:Manages控制:Controls组成:Is Composed of细化:Refinement抽象:Abstraction模块:Module策略:Strategy信息隐藏:Information Hiding 数据封装:Data Encapsulation 抽象数据类型:Abstract Data type模块化设计:Modular Design 分解:Decomposition模块性:Modularity单模块软件:Monolithic Software模块独立性:Module Independence内聚:Cohesion偶然性内聚:Coincidental Cohesion逻辑性内聚:Logical Cohesion 时间性内聚:Temporal Cohesion 过程性内聚: Procedural Cohesion通信性内聚: Communicational Cohesion顺序性内聚:Sequential Cohesion功能性内聚:Functional Cohesion非直接偶合:No Direct Coupling 数据偶合:Data Coupling特征偶合:Stamp Coupling控制偶合:Control Coupling 外部偶合:External Coupling 公共偶合:Common Coupling内容偶合: Content Coupling 由底向上设计:Bottom-Up Design自顶向下设计:Top-Down Design 正式复审:Formal Review非正式复审:Informal Review 走查,排练:Walk-Through会审:Inspection映射:Mapping传入路径:Afferent path传出路径:Efferent path变换中心:Transform Center 接受路径:Reception path动作路径:Action path事务中心:Transaction Center 分支分解:Factoring of Brandches瓮形:oval-shaped一个模块的控制域:Scope of Control一个模块的作用域:Scope of Effect结构化程序设计:Structured Programming通心面程序:Bowl of Spaghetti 流程图:Flow Diagram编码:Coding方框图:Block DiagramPDL (Pidgin):Program Design Language伪代码:Pseudo CodeJSD:Jackson System Development对象建模技术:Object Modeling Technique 基础设施:Infrastructure控制线程:Thread of Control 保护者对象:Guardian Object 协议:protocolUML:Unified Modeling Language OMG:Object Management Group 统一方法:Unified Method关联:Association泛化:Generalization依赖:Dependency结点:Node接口:Interface包:Package注释: Note特化:Specialization元元模型:Meta-Meta Model用户模型:User Model静态图:Static Diagram动态图:Dynamic Diagram用例视图:Use Case View逻辑视图:Logical View并发视图:Concurrent View构件视图:Component View实现模型视图:Implementation Model View部署视图:Deployment View航向:Navigability重数:Multiplicity共享聚集:Shared Aggregation 组合:Composition泛化:Generalization简单消息:Simple Message同步消息:Synchronous Message 异步消息:Asynchronous Message事件说明:Event_Signature守卫条件:Guard_Condition动作表达式:Action_Expression 发送子句:Send_Clause时序图:Sequence Diagram协作图:Collaboration Diagram 前缀:Predecessor循环子句:Iteration-Clause 活动图:Activity Diagram 构件图:Component Diagram配置图:Deployment Diagram 建模过程指导(RUP):Rational Unified Process可执行代码:Executalbe Codes 实现:Implementation编码风格:Coding Style标准:Classical控制流的直线性:Linearity of Control Flow程序风格设计要素:先求正确后求快 Make it right before you make it faster. 先求清楚后求快 Make it clear before you make it faster. 求快不忘保持程序正确 Keep it right when you make it faster. 保持程序简单以求快 Keep it simple to make it faster.书写清楚,不要为“效率”牺牲清楚Write clearly-don't sacrifice clarity for"efficiency"文档化:Code Documentation 内部文档编制:Internal Documentation序言:Prologue用户友善:User Friendly纠错:Debugging测试用例:Test Case穷举测试:Exhaustive Testing 选择测试:Selective Testing 静态分析:Static Analysis黑盒测试:Black Box Testing 白盒测试:White Box Testing 等价分类:Equivalence Partioning边界值分析法:Boundary Value Analysis所谓猜错:Error Guessing因果图:Cause-Effect Graph逻辑覆盖测试法:Logic Coverage Testing试凑:Trial and Error 回溯:Back Tracking病因排除法:Cause Elimination 测试纠错:Debugging by Testing 蛮力纠错技术:Debugging by Brute Force回归测试:Regression Testing 单元测试:Unit Testing综合测试:Integration Testing 确认测试: Validation Testing 系统测试:System Testing模块测试:Module Testing高级测试:Higher order Testing 不可达的:Unreachable办公桌检查:Desk Check走查:Walk-Through代码会审:Code Inspection测试驱动模块:Test Driver测试桩模块:Test Stub群:Cluster混合方式测试:Sandwich Testing渐增式测试:IncrementalTesting非渐增式:Non-Incremental配置复审:Configuration Review测试终止标准:Test Completion Criteria基于线程的测试:Thread-Based Testing基于使用:Use-Based基于构件的软件开发:Component Based Software Development ,CBSD领域工程:Domain Engineering 需求规约:Requirements Specification变体:Variant组件对象模型,COM:Componet Object Model对象链接与嵌入:Object Linking and Embedding公共对象请求代理体系结构,CORBA:Common Object Request Broker Architecture枚举分类:Enumerater Classification呈面分类:Faceted Classification属性-值分类:Attribute-Value Classification应用系统工程,ASE:Application System Engineering完善性维护:Perfective Maintenance适应性维护:Adaptive Maintenance纠错性维护:Corrective Maintenance预防性维护:Preventive Maintenance结构化的翻新:Structured Retrofit可维护性:Maintainability可理解性:Understandability 可修改性:Modifiability可测试性:Testability调用图:Call Graph交差引用表:Cross-Reference Directory数据封装技术:Data Encapsulation维护申请单MRF:Maintenance Request Form软件问题报告单SPR:Software Problem Report软件修改报告单SCR: Software Change Report修改控制组CCB:Change Control Board软件配置:Software Configuration版本控制库:Version Control Library活动比:Activity Ratio工作量调节因子EAF:Effort Adjustment Factor软件再工程:Software Reengineering逆向工程:Reverse Engineering 重构:Restructure演化性:Evolvability问题定义:Problem Definition 系统目标与范围的说明:Statement of Scope and Objectives可行性研究:Feasibility Study 系统流程图:System Flowchart 成本-效益分析:Cost-Benifit Analysis风险识别:Risk Identification 风险预测:Risk Projection风险估计:Risk Estimation风险评价:Risk Assessment估算模型:Estimation Model 资源模型:Resource Model构造性成本模型:Constructive cost Model组织:Organic半独立:Semidetached嵌入:Embeded算法模型:Algorithmic Model 分类活动结构图WBS:Work Breakdown Structure人员-时间权衡定律People-Time Trade-Off Law无我小组:Egoless Team主程序员小组:Chief-Programmer Team PERT:Program Evaluation and Review Technique关键路径:Critical Path知识产权:Intellectual Property靠质量来管理:Management by Measurement质量保证:Quality Assurance 质量认证: Quality Certification质量检验:Quality Inspection 全面质量管理TQC:Total Quality Control 质量体系:Quality System计划-实施-检查-措施Plan-Do-Check-Acti on合格论证:Conformity Certification可靠性:Reliability效率:Efficiency运行工程:Human Engineering 正确性:Correctness使用性:Usability完整性:Integrity可理解性:Understandability 可测试性:Testability可修改性:Modifiability可移植性:Portability可维护性:Maintainability可适应性:Flexibility可重用性:Reusability交互操作性:Interoperability 验证与确认:Verification and Validation ,V&V基线:Baselines平均故障时间:Mean Time To Failure ,MTTF错误传入:Error Seeding冗余:Redundancy容错:Fault Tolerance公理化归纳断言法:Axio-Matic Inductive Assertion循环不变式:Loop Invariant 能力成熟度模型:Capability Maturity Model关键过程域:Key Process Area ,KPA关键实践:Key Practice初始级:Initial可重复级:Repeatable已定义级:Defined已管理级:Managed优化级:Optimizing主任评估师:Lead Assessor极值程序设计:Extreme Programming 自适应软件开发:Adaptive Software Development轻载:Light weight重载:Heavy Weight返工:Rework进度:Schedule时间:Duration成本:Cost代码行LOC:Lines of Code面向功能:Function-Oriented 面向规模: Size-Oriented功能点:Function Points权系数:Weighting Coefficient 用户输入:User Input用户输出: User Output用户查询: User Inquirty主文件处理:Master File外部界面:External Interface TCF:Technical Complexity Factor 技术复杂性因子测度:Measurement最终用户:End-User;计算机辅助软件工程CASE:Computer Aided Software Engineering拉出:pull-out下拉: pull-down一致性:Unification自动化:Automation过程模型:Process Model软件开发环境SDE:Software Development Environment软件设计支持环境PSE:Programming Support Environment集成化项目支持IPSE:Integrated Project Support Environment集成化框架:Integration Framework 质量从头抓起:Quality from Beginning缺陷:Defect变更请求:Change Request功能扩充:Enhancement Request。
中英文对照外文翻译外文资料原文Software Development Concepts and DesignMethodologiesDuring the 1960s, ma inframes and higher level programming languages were applied to man y problems including human resource s yste ms,reservation s yste ms, and manufacturing s yste ms. Computers and software were seen as the cure all for man y bu siness issues were sometimes applied blindly. S yste ms sometimes failed to solve the problem for which the y were designed for man y reasons including:•Inability to sufficiently understand complex problems•Not sufficiently taking into account end-u ser needs, the organizational environ ment, and performance tradeoffs•Inability to accurately estimate development time and operational costs •Lack of framework for consistent and regular customer commun ications At this time, the concept of structured programming, top-down design, stepwise refinement,and modularity e merged. Structured programming is still the most dominant approach to software engineering and is still evo lving. These failures led to the c oncept of "software engineering" based upon the idea that an engineering-like discipline could be applied to software design and develop ment.Software design is a process where the software designer applies techniques and principles to produce a conceptual model that de scribes and defines a solution to a problem. In the beginning, this design process has not been well structured and the model does not alwa ys accurately represent theproblem of software development. However,design methodologies have been evolving to accommo date changes in technolog y coupled with our increased understanding of development processes.Whereas early desig n methods addressed specific aspects of the develop ment process, current methods atte mpt to address the entire scope of software development. Software design methods are often classified in reference to the period in which the y were introduced and the problems at that time. Driven b y coding and testing problems, tools and methods were developed. Early methods focused on modularit y a nd 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 develop ment 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 waterf all life c ycle process model under which most existing software has been developed.一、Software De sign FundamentalsSoftware design meth ods all aim to provide the software designer with a s yste m 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 sys tem a nd their relationships.•Procedural design builds on the data and architectural design phases to describe the processing details of the s yste m.Even though there are numer ous design methodologies, their basicconcepts are ver y similar-All software design methods partition the problem and software into smaller pieces in order to reduce complexity. They all strive to identif y data structures and functions, and provide measur e ments for software quality. Some of the common principles in software design include: stepwise refinement, s oftware architecture, program structure, data structure, software procedures, mo d u la r i t y,a b s tr a c t io n,a n d in f o r ma t io n h i d i n g.二、M o d e r n D e s i g n M e t h o d o l o g i e sC o n ve n t io n a l s o f t wa r e d e ve l o p me n t p r a c t ic e s c a n g e n e r a l l y b ema p p e d o n to t h e tr a d i t io n a l l i f e-c y c l e p h a s e s o f a n a l ys i s,f u n c t i o n a ls p e c i f i c a t i o n,d e s i g n,i mp l e me n t a t i o n,t e s t i n g,a n d m a i n t e n a n c e.T h i st h o u g h t p r o c e s s i s i n a d e q u a t e f o r t o d a y's c o m p l e x i n f o r m a t i o n s y s t e m s.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. N e wl y d e ve lo p e d p r a c tic e s a n d mo d e ls d o n o t a tte mp t to s e p a r a te p h a s e s o f s o f twa r e development, such as specification and implementation, but instead focus on the concept of program transformation through stepwise refinement and iteration.1、O b j e c t-O r i e n t e d Te c h n o l o g yObject-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 o verall 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 graphic user interface (GUI) environment for O-O programming. Even 30 years later, Smalltalk is still the sta ndard against which all other O-O languages are measured. O-O software development methodologies have becomepopular in the last decade as O-O concepts have matured. At the same time, the software industry's focus has shifted from coding and structured pro cesses to saving labor costs, and time through design and flexibility. Flexibility has become pivotal because sys tems have become larger, more complex, and more volatile with rapidly changing requirements.With O-O, there is no real separation between anal ysis and design. During analysis, system objects are identified along with their characteristics and relationships. These objects are maintained through design and coding as detail is added to the design. This provides a common language throughout each sta ge 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 ass ociated operations. 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 facilitate s understanding the problem domain and a more natural design. In addition, there are many benefits of object-oriented development. These include:•I n h e r i t a n c e c a p i t a l i z e s o n t h e c o m m o n a l t y o f a t t r i b u t e s a n d s e r v i c e s a l l o w i n g c o d e a n d objects to be re-used..I n f o r m a t i o n h i d i n g m a k e s s y s t e m s m o r e s t a b l e b y l o c a l i z i n g c h a n g e s t o o b j e c t s a n d t h e r e b y m a k i n g t h e m r e u s a b l e..T h e o b j e c t-o r i e n t e d d e v e l o p m e n t p r o c e s s i s c o n s i s t e n t f r o ma n a l y s i s,t h r o u g h d e s i g n, t o c o d i n g.More information on Object Oriented Programm ing principles can be found in Chapter 4-Organization of Programming Languages and Programming Concepts.2、P r o t o t y p i n gPrototyping was invented because end users participating in the development phase found it difficult to understand requirement specifica tions and conceptual models. However, when it first began being used in the 1980s, most conventional life c ycle developers considered it expensive and time consuming.S i n c e t h a t t i m e,u s e r s a n d d e v e l o p e r s h a v e u s e d p r o t o t y p e s s u c c e s s f u l l y a s 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 s ystem will eventually work, look, and feel. Prototyping has proven to be an effective way of understanding the users' needs and problems and eliminating costly rework later in the development process due to misunderstandings in requirements. Prototyping is particularly useful for user interface development because it is sometimes impossible to represent the look and feel of a user interface in an effective way using words and diagrams. This is especially critical in today's development environment where user interface development consumes an increasing portion of overall system de velopment costs.(1)T h r o w Aw a y P r o to t yp in gThere are two va r ieties of pro to typ ing, Th row-awa y p ro to typin g and Evo lutiona r y prototyping. Throw-away prototyping is designed to validate or derive the system requirements. It may also be used to evaluate performan ce capabilities and determine design feasibility. Once the desired information has been obtained and the prototype's objective has been fulfilled, the p r o t o t y p e i s t h r o w n a w a y a n d c o n v e n t i o n a l s o f t w a r e d e s i g n c o n t i n u e s.T h r o w a w a y p r o t o t y p i n g are:•U s e d t o r e d u c e r e q u i r e m e n t s r i s k a n d f a c i l i t a t e u n d e r s t a n d i n gu s e r r e q u i r e m e n t s.•N o t c o n s i d e r e d a s a f i n a l s y s t e m,a n d i s d i s c a r d e d a f t e r u s eb ec a u s e:♦M a n y s y s t e m c h a r a c t e r i s t i c s a r e l e f t o u t♦T h e p r o t o t y p e i s w r i t t e n q u i c k l y p r i m a r i l y f o r t h e p u r p o s e o f d e m o n s t r a t i o n a n d t h e r e f o r e m a y n o t b e o p t i m a l l ys t r u c t u r e d a n d c o n s e q u e n t l y d i f f i c u l t t o m a i n t a i n With th r o w a wa y p r o to t yp in g,s o me a n a l ys ts th in k o f a p r o to t y p e a s a d e s ig n o r specifications language to be used as input to the traditional system design phase, rather than a product or system in itself.(2)Evol uti onary PrototypingR a t h e r t h a n b e i n g d e s i g n e d t o w i t h t h e i n t e n t i o n o f b e i n g t h r o w n a w a y,e v o l u t i o n a r y p r o t o t y p i n g d e l i v e r s a w o r k i n g s y s t e m t o e n d-u s e r s. T h e d e v e l o p m e n t s t a r t s w i t h t h o s e r e q u i r e me n ts t h a t a r e b e s t u n d e r s to o d. T h e n,r a th e r th a n b e in g a p r e l i mi n a r y s t e p to th e li f e c yc le m o d e l,t h e p r o t o t y p e i s t h e c e n t r a l f o c u s o f t h e p r o c e s s m o d e l.T h e p r o t o t y p e i s s c o p e d,s c h e d u l e d a n d s p e c i f i e d.I t i s t h e n i n c r e m e n t a l l y r e f i n e d a n d u p d a t e d a s t h e c e n t r a l c o m p o n e n t o f th e p r o c e s s mo d e l.T h e n u mb e r o f t i me s th e p r o to t yp e is in c r e me n t a l l y r e f in e d d e p e n d s o n h o w we l l th e u s e r r e q u i r e me n ts a n d u n d e r s t o o d.I t a ls o d e p e n d s o n th e u s e r s n e e d to a d d r e q u ir e me n ts o r c h a n g e p r e v i o u s l y s t a t e d r e q u i r e m e n t s.A f t e r e s t a b l i s h i n g a n o v e r a l l a r c h i t e c t u r e a n d f r a me w o r k, t h e s ys t e m i s d e v e l o p e d a n d d e l i v e r e d in in c r e me n ts.U s e r s ma y e x p e r i me n t w i t h a n d u s e d e l i v e r e d i n c r e me n t s w h i l e o t h e r s a r e b e i n g d e v e l o p e d.Fo r i n s t a n c e,t h e f i r s t p r o t o t yp e ma y b e d e l i v e r e d t h a t i m p l e m e n t s a c e r t a i n s c r e e n w i t h o n l y s o m e a c t i v e m e n u i t e m s.W h i l e u s e r s a r e e x p e r i me n t i n g w i t h t h i s s c r e e n a n d me n u i t e ms,o t h e r s c r e e n s a n d me n u i t e ms a r e c o n c u r r e n t l y b e in gd e v e l o p e d wh i c h la t e r w il l b e c o mb in e d w i th th e e x is t in g p r o to t yp e a s ite vo l v e s.O n c e t h e u s e r i s s a t i s f i e d t h a t t h e p r o t o t y p e m e e t s r e q u i r e m e n t s,t h ep r o t o t y p e i s t r a n s f o r me d i n to th e"s ys t e m".T h i s e ff o r t d e p e n d s o n s e v e r a l f a c to r s. I t ma y i n c lu d e a d d i n g f u n c t i o n a l i t y t h a t w a s n't i n i t i a l l y r e c o g n i z e d a s r e q u i r e d,r e p l a c i n g i n e f f i c i e n t p a r t s o f t h e p r o t o t yp e t o me e t p e r f o r ma n c e c r i t e r i a,o r a d a p t i n g t h e p r o t o t yp e t o f i t t h e u s e r's h a r d w a r e e n vi r o n me n t.P r o t o t y p i n g c a n b e g i n v e r y e a r l y, a f t e r s o m e p r e l i m i n a r y r e q u i r e m e n t s a n a l y s i s h a s d e t e r m i n e d t h e b a s i c f u n c t i o n a l i t y,s c o p e,a n d e n v i r o n m e n t o f t h e p r o p o s e d s o f t w a r e.C o n t r a r y t o t h e t r a d i t i o n a l w a t e r f a l l me t h o d,i n t h e p r o t o t yp i n g,f u n c t i o n a l s p e c i f i c a t i o n s a r e n o t f i x e d.R a t h e r,u s e r s a r e e n c o u r a g e d t o m o d i f y t h e i r r e q u i r e m e n t s a s t h e y t h e m s e l v e s b e g i n t o u n d e r s t a n d t h e m b e t t e r.T h i s i s b e c a u s e u s e r s o f t e n d o n't r e a l l y k n o w w h a t t h e y w a n t u n t i l t h e y s e e i t o n t h e s c r e e n.T h e p r o t o t yp i n g p r o c e s s o f d e mo n s t r a t i o n,r e v i e w,a n d r e f i n e me n t g e t s t h e u s e r m o r e i n v o l v e d i n t h e d e v e l o p m e n t p r o c e s s,g i v i n g t h e m a s e n s e o f o w n e r s h i p d u r i n g t h e p r o c e s s a n d a t f i n a l s y s t e m d e l i v e r y.H o w e v e r,d u e t o t h e m i n d s e t o f"p r o t o t y p e", u s e r s o f t e n f in d i t d iff ic u l t to ve r if y t h a t th e p r o to t yp e s a tis f ie s th e ir r e q u ir e me n ts. T h e r e f o r e, g u id e l in e s mu s t b e e s t a b l i s h e d t o d e te r m in e wh e n t o s to p i te r a t in g a n d th e p r o to t yp e to f in a l p r o d u c t.外文资料译文软件开发概念和设计方法在20世纪60年代,大型机和高级程序语言被用来解决包括人力资源系统、专有系统和制造系统等许多问题。
软件测试部分中英文对照Acceptance testing : 验收测试Acceptance Testing:可接受性测试Accessibility test : 软体适用性测试actual outcome:实际结果Ad hoc testing : 随机测试Algorithm analysis : 算法分析algorithm:算法Alpha testing : α测试analysis:分析anomaly:异常application software:应用软件Application under test (AUT : 所测试的应用程序Architecture : 构架Artifact : 工件ASQ:自动化软件质量(Automated Software Quality Assertion checking : 断言检查Association : 关联Audit : 审计audit trail:审计跟踪Automated Testing:自动化测试Backus-Naur Form:BNF范式baseline:基线Basic Block:基本块basis test set:基本测试集Behaviour : 行为Bench test : 基准测试benchmark:标杆/指标/基准Best practise : 最佳实践Beta testing : β测试Black Box Testing:黑盒测试Blocking bug : 阻碍性错误Bottom-up testing : 自底向上测试boundary value coverage:边界值覆盖boundary value testing:边界值测试Boundary values : 边界值Boundry Value Analysis:边界值分析branch condition combination coverage:分支条件组合覆盖branch condition combination testing:分支条件组合测试branch condition coverage:分支条件覆盖branch condition testing:分支条件测试branch condition:分支条件Branch coverage : 分支覆盖branch outcome:分支结果branch point:分支点branch testing:分支测试branch:分支Breadth Testing:广度测试Brute force testing: 强力测试Buddy test : 合伙测试Buffer : 缓冲Bug : 错误Bug bash : 错误大扫除bug fix : 错误修正Bug report : 错误报告Bug tracking system: 错误跟踪系统bug:缺陷Build : 工作版本(内部小版本Build Verfication tests(BVTs: 版本验证测试Build-in : 内置Capability Maturity Model (CMM: 能力成熟度模型Capability Maturity Model Integration (CMMI: 能力成熟度模型整合capture/playback tool:捕获/回放工具Capture/Replay Tool:捕获/回放工具CASE:计算机辅助软件工程(computer aided software engineering CAST:计算机辅助测试cause-effect graph:因果图certification :证明change control:变更控制Change Management :变更管理Change Request :变更请求Character Set : 字符集Check In :检入Check Out :检出Closeout : 收尾code audit :代码审计Code coverage : 代码覆盖Code Inspection:代码检视Code page : 代码页Code rule : 编码规范Code sytle : 编码风格Code Walkthrough:代码走读code-based testing:基于代码的测试coding standards:编程规范Common sense : 常识Compatibility Testing:兼容性测试complete path testing :完全路径测试completeness:完整性complexity :复杂性Component testing : 组件测试Component:组件computation data use:计算数据使用computer system security:计算机系统安全性Concurrency user : 并发用户Condition coverage : 条件覆盖condition coverage:条件覆盖condition outcome:条件结果condition:条件configuration control:配置控制Configuration item : 配置项configuration management:配置管理Configuration testing : 配置测试conformance criterion:一致性标准Conformance Testing:一致性测试consistency :一致性consistency checker:一致性检查器Control flow graph : 控制流程图control flow graph:控制流图control flow:控制流conversion testing:转换测试Core team : 核心小组corrective maintenance:故障检修correctness :正确性coverage :覆盖率coverage item:覆盖项crash:崩溃criticality analysis:关键性分析criticality:关键性CRM(change request management: 变更需求管理Customer-focused mindset : 客户为中心的理念体系Cyclomatic complexity : 圈复杂度data corruption:数据污染data definition C-use pair:数据定义C-use使用对data definition P-use coverage:数据定义P-use覆盖data definition P-use pair:数据定义P-use使用对data definition:数据定义data definition-use coverage:数据定义使用覆盖data definition-use pair :数据定义使用对data definition-use testing:数据定义使用测试data dictionary:数据字典Data Flow Analysis : 数据流分析data flow analysis:数据流分析data flow coverage:数据流覆盖data flow diagram:数据流图data flow testing:数据流测试data integrity:数据完整性data use:数据使用data validation:数据确认dead code:死代码Debug : 调试Debugging:调试Decision condition:判定条件Decision coverage : 判定覆盖decision coverage:判定覆盖decision outcome:判定结果decision table:判定表decision:判定Defect : 缺陷defect density : 缺陷密度Defect Tracking :缺陷跟踪Deployment : 部署Depth Testing:深度测试design for sustainability :可延续性的设计design of experiments:实验设计design-based testing:基于设计的测试Desk checking : 桌前检查desk checking:桌面检查Determine Usage Model : 确定应用模型Determine Potential Risks : 确定潜在风险diagnostic:诊断DIF(decimation in frequency : 按频率抽取dirty testing:肮脏测试disaster recovery:灾难恢复DIT (decimation in time: 按时间抽取documentation testing :文档测试domain testing:域测试domain:域DTP DETAIL TEST PLAN详细确认测试计划Dynamic analysis : 动态分析dynamic analysis:动态分析Dynamic Testing:动态测试embedded software:嵌入式软件emulator:仿真End-to-End testing:端到端测试Enhanced Request :增强请求entity relationship diagram:实体关系图Encryption Source Code Base:加密算法源代码库Entry criteria : 准入条件entry point :入口点Envisioning Phase : 构想阶段Equivalence class : 等价类Equivalence Class:等价类equivalence partition coverage:等价划分覆盖Equivalence partition testing : 等价划分测试equivalence partition testing:参考等价划分测试equivalence partition testing:等价划分测试Equivalence Partitioning:等价划分Error : 错误Error guessing : 错误猜测error seeding:错误播种/错误插值error:错误Event-driven : 事件驱动Exception handlers : 异常处理器exception:异常/例外executable statement:可执行语句Exhaustive Testing:穷尽测试exit point:出口点expected outcome:期望结果Exploratory testing : 探索性测试Failure : 失效Fault : 故障fault:故障feasible path:可达路径feature testing:特性测试Field testing : 现场测试FMEA:失效模型效果分析(Failure Modes and Effects AnalysisFMECA:失效模型效果关键性分析(Failure Modes and Effects Criticality Analysis Framework : 框架FTA:故障树分析(Fault Tree Analysisfunctional decomposition:功能分解Functional Specification :功能规格说明书Functional testing : 功能测试Functional Testing:功能测试G11N(Globalization : 全球化Gap analysis : 差距分析Garbage characters : 乱码字符glass box testing:玻璃盒测试Glass-box testing : 白箱测试或白盒测试Glossary : 术语表GUI(Graphical User Interface: 图形用户界面Hard-coding : 硬编码Hotfix : 热补丁I18N(Internationalization: 国际化Identify Exploratory Tests –识别探索性测试IEEE:美国电子与电器工程师学会(Institute of Electrical and Electronic Engineers Incident 事故Incremental testing : 渐增测试incremental testing:渐增测试infeasible path:不可达路径input domain:输入域Inspection : 审查inspection:检视installability testing:可安装性测试Installing testing : 安装测试instrumentation:插装instrumenter:插装器Integration :集成Integration testing : 集成测试interface : 接口interface analysis:接口分析interface testing:接口测试interface:接口invalid inputs:无效输入isolation testing:孤立测试Issue : 问题Iteration : 迭代Iterative development: 迭代开发job control language:工作控制语言Job:工作Key concepts : 关键概念Key Process Area : 关键过程区域Keyword driven testing : 关键字驱动测试Kick-off meeting : 动会议L10N(Localization : 本地化Lag time : 延迟时间LCSAJ:线性代码顺序和跳转(Linear Code Sequence And Jump LCSAJ coverage:LCSAJ覆盖LCSAJ testing:LCSAJ测试Lead time : 前置时间Load testing : 负载测试Load Testing:负载测试Localizability testing: 本地化能力测试Localization testing : 本地化测试logic analysis:逻辑分析logic-coverage testing:逻辑覆盖测试Maintainability : 可维护性maintainability testing:可维护性测试Maintenance : 维护Master project schedule :总体项目方案Measurement : 度量Memory leak : 内存泄漏Migration testing : 迁移测试Milestone : 里程碑Mock up : 模型,原型modified condition/decision coverage:修改条件/判定覆盖modifiedcondition/decision testing :修改条件/判定测试modular decomposition:参考模块分解Module testing : 模块测试Monkey testing : 跳跃式测试Monkey Testing:跳跃式测试mouse over:鼠标在对象之上mouse leave:鼠标离开对象MTBF:平均失效间隔实际(mean time between failures MTP MAIN TEST PLAN 主确认计划MTTF:平均失效时间(mean time to failure MTTR:平均修复时间(mean time to repair multiple condition coverage:多条件覆盖mutation analysis:变体分析N/A(Not applicable : 不适用的Negative Testing : 逆向测试, 反向测试, 负面测试negative testing:参考负面测试Negative Testing:逆向测试/反向测试/负面测试off by one:缓冲溢出错误non-functional requirements testing:非功能需求测试nominal load:额定负载N-switch coverage:N切换覆盖N-switch testing:N切换测试N-transitions:N转换Off-the-shelf software : 套装软件operational testing:可操作性测试output domain:输出域paper audit:书面审计Pair Programming : 成对编程partition testing:分类测试Path coverage : 路径覆盖path coverage:路径覆盖path sensitizing:路径敏感性path testing:路径测试path:路径Peer review : 同行评审Performance : 性能Performance indicator: 性能(绩效指标Performance testing : 性能测试Pilot : 试验Pilot testing : 引导测试Portability : 可移植性portability testing:可移植性测试Positive testing : 正向测试Postcondition : 后置条件Precondition : 前提条件precondition:预置条件predicate data use:谓词数据使用predicate:谓词Priority : 优先权program instrumenter:程序插装progressive testing:递进测试Prototype : 原型Pseudo code : 伪代码pseudo-localization testing:伪本地化测试pseudo-random:伪随机QC:质量控制(quality controlQuality assurance(QA: 质量保证Quality Control(QC : 质量控制Race Condition:竞争状态Rational Unified Process(以下简称RUP:瑞理统一工艺Recovery testing : 恢复测试recovery testing:恢复性测试Refactoring : 重构regression analysis and testing:回归分析和测试Regression testing : 回归测试Release : 发布Release note : 版本说明release:发布Reliability : 可靠性reliability assessment:可靠性评价reliability:可靠性Requirements management tool: 需求管理工具Requirements-based testing : 基于需求的测试Return of Investment(ROI: 投资回报率review:评审Risk assessment : 风险评估risk:风险Robustness : 强健性Root Cause Analysis(RCA: 根本原因分析safety critical:严格的安全性safety:(生命安全性Sanity testing : 健全测试Sanity Testing:理智测试Schema Repository : 模式库Screen shot : 抓屏、截图SDP:软件开发计划(software development plan Security testing : 安全性测试security testing:安全性测试security.:(信息安全性serviceability testing:可服务性测试Severity : 严重性Shipment : 发布simple subpath:简单子路径Simulation : 模拟Simulator : 模拟器SLA(Service level agreement: 服务级别协议SLA:服务级别协议(service level agreementSmoke testing : 冒烟测试Software development plan(SDP: 软件开发计划Software development process: 软件开发过程software development process:软件开发过程software diversity:软件多样性software element:软件元素software engineering environment:软件工程环境software engineering:软件工程Software life cycle : 软件生命周期source code:源代码source statement:源语句Specification : 规格说明书specified input:指定的输入spiral model :螺旋模型SQAP SOFTWARE QUALITY ASSURENCE PLAN 软件质量保证计划SQL:结构化查询语句(structured query languageStaged Delivery:分布交付方法state diagram:状态图state transition testing :状态转换测试state transition:状态转换state:状态Statement coverage : 语句覆盖statement testing:语句测试statement:语句Static Analysis:静态分析Static Analyzer:静态分析器Static Testing:静态测试statistical testing:统计测试Stepwise refinement : 逐步优化storage testing:存储测试Stress Testing : 压力测试structural coverage:结构化覆盖structural test case design:结构化测试用例设计structural testing:结构化测试structured basis testing:结构化的基础测试structured design:结构化设计structured programming:结构化编程structured walkthrough:结构化走读stub:桩sub-area:子域Summary:总结SVVP SOFTWARE Vevification&Validation PLAN:软件验证和确认计划symbolic evaluation:符号评价symbolic execution:参考符号执行symbolic execution:符号执行symbolic trace:符号轨迹Synchronization : 同步Syntax testing : 语法分析system analysis:系统分析System design : 系统设计system integration:系统集成System Testing : 系统测试TC TEST CASE 测试用例TCS TEST CASE SPECIFICATION 测试用例规格说明TDS TEST DESIGN SPECIFICATION 测试设计规格说明书technical requirements testing:技术需求测试Test : 测试test automation:测试自动化Test case : 测试用例test case design technique:测试用例设计技术test case suite:测试用例套test comparator:测试比较器test completion criterion:测试完成标准test coverage:测试覆盖Test design : 测试设计Test driver : 测试驱动test environment:测试环境 test execution technique:测试执行技术 test execution:测试执行 test generator:测试生成器 test harness:测试用具 Test infrastructure : 测试基础建设 test log:测试日志 test measurement technique:测试度量技术 Test Metrics :测试度量 test procedure:测试规程 test records:测试记录 test report:测试报告 Test scenario Test Script:测试脚本 Test Specification:测试规格 Test strategy test suite:测试套 Test target Test ware Testability testability:可测试性 Testing bed : 测试平台 : 测试目标 : 测试工具 : 测试策略 : 测试场景 : 可测试性Testing coverage : 测试覆盖 Testing environment : 测试环境 Testing item Testing plan Testing procedure Thread testing time sharing:时间共享 time-boxed TIR : 固定时间测试事故报告 : 测试项 : 测试计划 : 测试过程 : 线程测试 test incident report ToolTip:控件提示或说明 top-down testing:自顶向下测试 TPS TEST PEOCESS SPECIFICATION 测试步骤规格说明 Traceability : 可跟踪性 traceability analysis:跟踪性分析 traceability matrix:跟踪矩阵 Trade-off transaction:事务/处理 transaction volume:交易量 transform analysis:事务分析 trojan horse:特洛伊木马 truth table:真值表 TST TEST SUMMARY REPORT 测试总结报告 : 平衡Tune System : 调试系统 TW TEST WARE :测试件 Unit Testing :单元测试Usability Testing:可用性测试 Usage scenario : 使用场景 User acceptance Test : 用户验收测试 User database User interface(UI User profile User scenario :用户数据库 : 用户界面 : 用户信息 : 用户场景 V&V (Verification & Validation : 验证&确认 validation verification version Virtual user :确认 :验证 :版本 : 虚拟用户 volume testing:容量测试VSS(visual source safe): VTP Verification TEST PLAN 验证测试计划 VTR Verification TEST REPORT 验证测试报告 Walkthrough Waterfall model Web testing : 走读 : 瀑布模型 : 网站测试White box testing : 白盒测试 Work breakdown structure (WBS : 任务分解结构Zero bug bounce (ZBB : 零错误反弹。
Requirements PhaseThe chances of a product being developed on time and within budget are somewhat slim unless the members of the software development team agree on what the software product will do. The first step in achieving this unanimity is to analyze the client’s current situation as precisely as possible. For example, it is inadequate to say, “They need a computer-aided design system because they claim their manual design system, there is lousy. “Unless the development team knows exactly what is wrong with the current manual system, there is a high probability that aspects of the new computerized system will be equally “lousy. “Similarly, if a personal computer manufacturer is contemplating development of a new operating system, the first step is to evaluate the firm’s current operating system and analyze carefully exactly why it is unsatisfactory. To take an extreme example, it is vital to know whether the problem exists only in the mind of the sales manager, who blames the operating system for poor sales, or whether users of the operating system are thoroughly disenchanted with its functionality and reliability. Only after a clear picture of the present situation has been gained can the team attempt to answer the critical question, What must the new product be able to do? The process of answering this question is carried out during the requirements phase.A commonly held misconception is that , during the requirements phase, the developers must determine what software the client wants. On the contrary, the real objective of the requirements phase is to determine what software the client needs. The problem is that many clients do not know what they need. Furthermore, even a client who has a good idea of what is needed may have difficulty in accurately conveying these ideas to the developers, because most clients are less computer literate than the members of the development team.To elicit the client’s needs, the members of the requirements team must be familiar with the application domain, that is, the general area in which the proposed software product is to be used. For example, it is not easy to ask meaningful questions of a banker or a nurse without first acquiring some familiarity with banking or nursing. Therefore, one of the initial tasks of each member of the requirements analysis team is to acquire familiarity with the application domain unless he or she already has experience in that general area. It is particularly important to use correct terminology when communicating with the client and potential users of the target software. After all, it is hard to be taken seriously by a person working in a specific domain unless the interviewer uses the nomenclature appropriate for that domain. More important, use of an inappropriate word may lead to a misunderstanding, eventually resulting in a faulty product being delivered. The same problem can arise if the members of the requirements team do not understand the subtleties of the terminology of the domain.One way to solve the problem with terminology is to build a glossary. The initial entries are inserted while the team learns the application domain. Then the glossary is updated whenever the members of the requirements team encounter new terminology. Not only does such a glossary reduce confusion between client and developers, it also is useful in lessening misunderstandings between members of the development team.Once the requirements team have acquired familiarity with the domain, the next step is for them to start to determine the client’s needs, that is, requirements elicitation. Elicitation technique as follows:1. Interviews.The members of the requirements team meet with members of the client organization until they are convinced that they have elicited all relevant information from the client and future users of the product. There are two basic types of interview, structured and unstructured. In a structured interview, specific, preplanned, close-ended questions are posed. In an unstructured interview, open-ended questions are asked, to encourage the person being interviewed to speak out. Some of these facts might not have come to light had the interview been more structured. At the same time, it is not a good idea if the interview is too unstructured. Therefore, questions should be posed in such a way as to encourage the person being interviewed to give wide-ranging answers but within the context of the information needed by the interviewer.Conducting a good interview is not always easy. First, the interviewer must be familiar with the application domain. Second, there is no point in interviewing a member of the client organization if the interviewer already has made up his or her mind regarding the client’s needs. No matter what he or she previously has been told or learned by other means, the interviewer must approach every interview with the intention of listening carefully to what the person being interviewed has to say while firmly suppressing any preconceived notions regarding the client company or the needs of the clients and potential uses of the software product to be built.2. Scenarios.A scenario is a way a user might utilize the target product to accomplish some objective.A scenario can be depicted in a number of ways. One technique is simply to list the actions comprising the scenario .Another technique is to set up a storyboard, a series of diagrams depicting the sequence of events.They can demonstrate the behavior of the product in a way that is comprehensible to the user. This can result in additional requirements coming to light, as in the weight-loss planner example. Because scenarios can be understood by users, the utilization of scenarios can ensure that the client and users play an active role throughout the requirements analysis process. After all, the aim of the requirements analysis phase is to elicit the real needs of the client, and the only source of this information is the client and the users. Scenarios(or more precisely, use cases) play an important role in object-oriented analysis.3. To send a questionnaire to the relevant members of the client organization.This technique is useful when the opinions of, say, hundreds of individuals need to be determined. Furthermore, a carefully thought-out written answer may be more accurate than an immediate verbal response to a question posed by an interviewer. However, an unstructured interview conducted by a methodical interviewer who listens carefully and poses questions that expand on initial responses usually yields far better information than a thoughtfully worded questionnaire. Because questionnaires are preplanned, there is no way that a question can be posed in response to an answer.4. To examine the various forms used by the client.For example, a form in a print shop might reflect press number, paper roll size, humidity, ink temperature, paper tension, and so on. The various fields in this form shed light on the flow of print jobs and the relative importance of the steps in the printing process. Other documents, such as operating procedures and job descriptions, also can be powerful tools forfinding out exactly what is done and how. Such comprehensive information regarding how the client currently does business can be extraordinarily helpful in determining the client’s needs. Therefore, careful perusal of client documentation should never be overlooked as a source of information that can lead to an accurate assessment of the client’s needs.5. To set up videotape cameras within the workplace to record (with the prior written permission of those being observed) exactly what is being done.One difficulty of this technique is that it can take a long time to analyze the tapes. In general, one or more members of the requirements analysis team has to spend an hour playing back the tape for every hour that the cameras record. This time is in addition to what is needed to assess what was observed. More seriously, this technique has been known to backfire badly because employees may view the cameras as an unwarranted invasion of privacy. It is important that the requirements analysis team have the full cooperation of all employees; it can be extremely difficult to obtain the necessary information if people feel threatened or harassed. The possible risks should be considered carefully before introducing cameras or, for that matter, taking any other action that has the potential to anger employees.An initial set of requirements has been elicited, the next step is to refine them, a process called requirements analysis. The members of the requirements team discuss the list of requirements with the various individuals interviewed to determine if anything has been omitted. Then, because the most accurate and powerful requirements analysis technique is rapid prototyping, a rapid prototype is built.A rapid prototype is hastily built software that exhibits the key functionality of the target product. The client and intended users of the product now experiment with the rapid prototype, while members of the development team watch and take notes. Based on their hands-on experience, users tell the developers how the rapid prototype satisfies their needs and, more important, identify the areas that need improvement. The developers change the rapid prototype until both sides are convinced that the needs of the client are accurately encapsulated in the rapid prototype. The rapid prototype then is used as the basis for drawing up the specifications.An important aspect of the rapid prototyping model is embodied in the word rapid. The whole idea is to build the prototype as quickly as possible. After all, the purpose of the rapid prototype is to provide the client with an understanding of the product, and the sooner, the better. It does not matter if the rapid prototype hardly works, if it crashes every few minutes, or if the screen layouts are less than perfect. The purpose of the rapid prototype is to enable the client and the developers to agree as quickly as possible on what the product is to do. Therefore, any imperfections in the rapid prototype may be ignored, provided they do not seriously impair the functionality of the rapid prototype and thereby give a misleading impression of how the product will behave.One difficulty with rapid prototyping is that the ease with which changes generally can be made to a rapid prototype may encourage the client to request all sorts of major changes to the delivered operational-quality version of the product. Furthermore, the client may expect the changes to be implemented as rapidly as changes to the rapid prototype. A related challenge is having to explain to the client that the rapid prototype is not of operational quality and the client will have to wait for the operational-quality version, even though the rapid prototype appears to do everything needed. Before rapid prototyping is used, it isessential that the managers responsible for developing the product discuss these and related issues with the client.As with the introduction of any new technology, before an organization introduces the rapid prototyping model it is vital that management be aware of the advantages and disadvantages of rapid prototyping. In all fairness, although the case for rapid prototyping is strong, it has not yet been proven beyond all doubt.Testing during the requirements phaseAlthough the aim of the requirements phase is to establish the client’s real needs, usually the client will not be the primary user of the target product. It therefore is essential to give the users the opportunity to experiment with the rapid prototype and suggest changes that, when approved by the client, will be implemented in the delivered version of the software product.Therefore, the role of the software quality assurance group during the rapid prototyping phase is to ensure that the relevant individuals in the client organization have the opportunity to interact with the rapid prototype and their suggestions actually reach the client or, perhaps, a committee of client managers responsible for analyzing the suggestions of the users.Form the viewpoint of testing during the phases that are to come, it is essential that the requirements be traceable. To achieve this, the statements of the requirements need to be numbered to enable the SQA to trace them through the subsequent phases. The numbering should appear in the rapid prototype in the form of comments adjacent to the group of statements that implements each item in the requirements.外文翻译需求阶段将一个软件产品及时而又不超出预算地开发出来的机会有时是很小的,除非软件开发小组的成员对软件产品将做什么都一致理解。