Abstract There are many methods and languages in the field of objects. They or highly consisting of the big flag of the unified modeling, call the rain in the high-end field development; or have a unique way to design a large number of fanatical community believers; or have been deeply rooted, the user is extensive, especially in the new people, constantly absorbing the people Long. Among these methods and languages, the Eiffel language invented by the Swiss Polytechnic University, the computer scientist Bertrand Meryer is known as the purest, theoretically the strongest object-oriented language, and the Eiffel method is strictly flexible in Design by Contract. TM as the core of theoretical core, proposed a lot of unique basic ideas and ideas to solve problems. Especially in Eiffel, it emphasizes the research and application of formulation methods. Its mountain stone can work. This article is intended to introduce the Eiffel method, language, and development environment, and then use the example to use the use of DESIGN BY ContractTM in Eiffel, and finally puts forward one's own shallow.
Keyword Eiffel, Bertrand Meyer, Design By ContractTM, EiffelstudioTM
text
First background and history
Eiffel is designed by Eiffiel (now known as ISE-Interactive Software Engineering) in 1985. Initially ISE In project development, it is necessary to reflect modern software engineering idea, modern, object-oriented development environment, but ISE thinks there is no such tool at the time. Therefore, ISE has developed Eiffel as an internal tool for development products. The name of Eiffel came from Engineering Gastave Eiffel. He designed a famous Eiffel Tower for the 1889 World Expo and completed this project within the scheduled construction period and budget. ISE wants to achieve such a goal with software engineering projects built with Eiffel.
In October 1986, Eiffel 1 became famous in the OOPSLA (Object-Oriented Programming Systems Language and Applications), which embedded on the road of commercialization. In the next few years, Eiffel quickly spread rapidly in the United States, Canada, Europe and the Far East, and implemented a series of successful engineering projects. At the same time, the academic community also believes that Eiffel is an ideal way to teach a variety of software concepts. Many universities in the world have adopted Eiffel as the main teaching language.
In 1988, Bertrand Meryer published "Object-Oriented Software Construction", the book introduces the concept of object technology and Design by ContractTM, and uses Eiffel as a description language. This classic work is called "object-oriented software development Bible", which greatly promotes people's approval of Eiffel.
The second section of Eiffel theoretical foundation, language characteristics and main technologies
Eiffel is broadly known as the Eiffel Development FrameworkTM, which provides a complete set of software development methods, including the following three parts: a set of construction robust, reusable software, ready-to-use software; Eiffel language (seamless support and strengthen Methodology), a integrated development environment called EiffelstudioTM (including the Eiffel language and a set of tools for improving development efficiency and quality).
Eiffel is not blindly increasing productivity, but focuses on quality, it considers "When Quality Is Pursued, Productivity Follows" (K.FUJINO IN NEC). "Quality" in Eiffel consists of five factors: Reliability, Reusability, Extendibility, Portability, Maintenance (Maintainability). Eiffel wants to make it a high reliability component of people's full trust like hardware, operating systems, compilers. 1. Theoretical basis
Design by ContractTM
Design by ContractTM (DBC, design) is almost a logo of the Eiffel method. Direct support for DBC is the most famous feature of Eiffel. Bertrand Meyer strictly proves the rationality of DBC in mathematical form, and has established strict and flexible contractual systems via Require / EnSure / Invariant. DBC Theory and Mechanism plays a key role in software development, design, document, commissioning, testing, and even project management, making EIFFELs to be known from high quality software longer than developing high quality software.
DBC comes from the understanding of the contract of human life.
DBC believes that the software system is constructed from many mutual communication components, which should comply with each other (rights and obligations) when communicating, and these regions should be precisely defined. As an assertion is a good norms.
Suppose you want to implement the element according to the key value in the table. The contract is as follows:
As a result, it is the core of DBC. Assertion is a Boolean statement. In addition to the wrong situation, it is constant; if there is a mistake, it is fake. Eiffel checks out only when commissioning / testing, does not check the nuclear assertion at daily rules.
DBC uses a variety of responsibility assertions: Postcondition, precondition, invariant, variaitation, state acceptance conditions, and status results. Among them, the post breaks, the front assertion and invariance are the most important. These assertions are only used to capture the semantics of various operations, and do not involve specific implementation.
The rear assertion and front assertions are used for operation. The rear assertion is a description of "Things this" after operation, which distinguishes the interface and implementation. The front assertion is a description of the "things preparation status" before operation execution. The DBC explicitly clarifies the responsibility of the caller and the server (the caller is responsible for the pre-assertion test, the server guarantees the implementation of the assertion) to avoid too little verification or too much verification. When the verification (tired and test) is performed, if the operation is performed, the front break is satisfied, and the back assertion is not satisfied, an exception.
The invariance is the assertion of the class, which is the front and rear semarks associated with all public operations of the class. The uncultivation of the class describes the deep properties of the class, ie the constraints provided by the invariant, suitable for the entire subsequent evolution of classes. In method execution, the invariance can be false, but it should be restored to true in other objects. Unregisions in Eiffel include class invariant, loop invariant, and state-free. Meyer believes that "the meaning of this class can only be felt when it produces an invariant (written) or understanding it."
EIFFEL uses assertions according to Dijkstra's "Balloon Principle" - Weakened Pre-Assembly or Strengthening Remarks, effectively prevents the risk of polymorphism when the subclasses can be introduced, ensuring normal operation. Eiffel believes that the technique of proves software is not mature with the assertion, so it applies the assertion to debug / test to get a more reliable quality assurance.
However, Eiffel does not advocate full formulatory regulations. Eiffel believes that although the formal rule is very attractive, the comprehensive introduction of formal regions will cause language unauthorized, or even if it can be performed, it can only be used in prototypes. Therefore, Eiffel has a selection part in the language to introduce a formal convention, allowing the status language to be embedded in the design and programming language, which is used to actually commercial development.
DBC is not an Eiffel dedicated, which is an important technique that can be used in any programming language. Since Bertrand Meyer is involved in the design of Microsoft's Visualstudio.NET, VisualStudio.net also has DBC's characteristics.
Seamlessness & Reversion (Seamlessness & Reversibility)
A beauty of the Eiffel method is that it bridges the difference between analysis, design, and programming, and applies the same tools and philosophy in the whole process. That is to say, at the beginning of the project, analyze and design the accuracy, clear and expression of Eiffel. When the system is constructed, EIFFEL is also used as it is implemented. This is called seamlessness and reversibility, also known as "single mode principle".
This is different from the current mainstream modeling idea. At present, popular thinking uses different representations and tools between analysis, design, and implementation - first use UML-based Case tools, reuse the programming language environment.
Bertrand Meyer opposes this idea of "artificial area of noble analysis work and coarse programming work". He believes that the application of natural graceful, exquisite and rational strength, uses it in design and modeling tools, uses in the final thinking tool.
Eiffel is a tool called Bon (Business Object Notation), advocating from modeling, analysis, design to programming, unified use of Eiffel as a tool expressing ideas, thereby achieving seamlessness between the various processes. Its key concepts include seamlessness, Reversibility, and Software Contracting. BON is invented by Dr. Nerson (Sol in paris) and Dr. Waldén (Enea Data IN stockholm). It defines some of the simplicity of the rules that describe a large and complex system, allowing developers to grasp the whole at different abstractions when they are innecting to the internal details of the components.
2. Language Features
Eiffel provides a number of other languages that are not available: Simple grammar, reusability, natural Design by ContractTM, support the entire software lifecycle, and ensure that the project is completed and improves productivity in various development phases.
Hierarchical language description
Eiffel carefully distinguishes three levels of language description: grammar, effectiveness, semantics. Grammar is the lowest level, the effectiveness is the intermediate level, semantics is the highest level. High-level language description is applied to a low-level language. Each level provides a rich rule for constraints. In implementations, grammar and effectiveness are guaranteed by compiler, and semantics relies on contractual examination and debugging tools.
Consistent type system
All types in the EIFFEL are based on CLASS. This is incorporated into the EIFFEL overall type system, so Eiffel is the same as SMALLTALK, which is the pure object-oriented language. Rich and simple keyword
There are five keywords in EIFFEL. Class Structure Keywords, including Indexing, Class, Inherit, Creation, Feature, etc. Feature Structure Keywords, including IS, Require, Require else, Local, Do, ONCE, Defered, External, Rescue, Ensure, Ensure Then, Alias, etc. Control Structure Keywords, including IF, THEN, Elseif, else, Inspect, When, from, Variant, UnTil, Loop, Debug, Check, etc. Inheritance clause keyword, including rename, redine, undefine, select, export, etc. Other keywords, including Precursor, Create, Obsolete, INVARIANT, END, etc. Eiffel is simple to keyword and syntax structure, expressing a concept as much as possible, so as not to confuse developers. This also facilitates the wrong positioning of debugging.
The following is the 63 reserved words of Eiffel.
The basic structure of the EIFFEL class is as follows:
Class
FEATURE
Require
Local
EnSure
Rescue
end
FEATURE
---
Invariant
end
Static compilation language
Usually purely object-oriented languages, some are dynamic languages (such as SmallTalk), some run on virtual machines (such as Java and C #), while Eiffel is a very few of several static compile-oriented object-oriented objects that run on hardware . The Eiffel compiler typically generates ANSI C code, so it is theoretically running on any platform.
assertion
Assertion is introduced in the Eiffel language, fundamentally changes the essence of software development:
First, use the Design by ContractTM as auxiliary design tool, you can join the verification correctness while establishing the software, helps to produce BUG-Free software.
Second, use the Eiffel compiler as a test and debug tool, developers can choose the assertion to be monitored at runtime. Developers can set different monitoring levels for each class (do not check, only check the front break, check the front assertion and post assertions, check all). If an assertion is discovered at rule, it means that there is a bug, and an exception interrupt operation will be thrown. This not only enhances the targeted test and debugging, but what is the software should be made (assertion) and what is made (the executable portion in the DO clause), so it can make the software to debug to the correct state as soon as possible. Third, the short form of the EIFFEL class can be implemented as the implementation of document automation, including the character head, annotation, and assertion of the class. The exact description of class functions is provided in the assertion without involving implementation details.
Exception Handling
The purpose of abnormal treatment is not the correctness of the system, but is to maintain systemism. Eiffel believes that success refers to the ability to perform a contract, even retry multiple times; failure is always triggered when the adjustment is always triggered. Eiffel provides keywords Rescue, Retry for exception processing.
Genericity
The generic is a type template that supports type parameters. In the object-oriented community, these classes are called generic classes. These classes use generic parameters when designing. The generic parameters are replaced with real parameters when they use it when running. This technology is particularly useful to containers (such as arrays and linked lists).
For the view of "generic pureness" and "generic prior (ADA) / parallel (C ) object-oriented", Bertrand Meyer believes that generics is the natural extension and necessary supplements of object technology. It is neither a generic nose, and it is not allowed to win the generic, covering the object-oriented light, destroying the consistency of the language.
Support for generics is provided in Eiffel.
Multiple Inheritance and Repeated Inheritance (REPEATED Inheritance)
Multiple inheritance, also known as the "Holy Grail" of o cotramming, means that a program unit can inherit a plurality of other classes. There are many benefits of multiple inheritance, which helps to improve reuse, optimize the structure of the entire system, more flexible, maintenance and commissioning is more convenient. Many objects orientations are warned developers "alert multiple inheritance." However, in Eiffel, multiple inheritance is one of the object-oriented intramidity. Paul Dubois thinks "There are two things that others don't do, Eiffel has two pieces: support Design By Contract and Multi-inheritance." Eiffel eliminates naming conflicts through renaming, etc., and uses a selection tool to eliminate erliness caused by duplicate declarations.
Repeated inheritance means that a class inherits to the same ancestral class by more than two paths. It is difficult to inherit the characteristics of children's grandson to treat the ancestors, as a characteristic or as multiple characteristics. Many object-oriented languages are repeated inherited to "death rhombus", and they did not dare to take a step by step. Eiffel's characteristics of repeated inheritance, clearly specify which features need to be shared, which features need to be copied, thus flexibly bypass this reef.
In general, inheritance in EIFFEL must abide by the following rules:
Rule 1, Type Conformance Rule. The X: = Y in the assignment statement must be consistent with the type of X, Y, Y, Y, Y, Y, of the function call.
Rule 2, Final Name Rule. The two different characteristics in the same class cannot have the same end name.
Rule 3, Invariant Accumulation Rule. The invariance of all parent classes of a class must be applied to class itself. Rules 4, assertion rule. Require and EnSure are not allowed when declaring the process. In the pre-assertion, Require else indicate increasing the fractional component, and enrunn the rear assertion, eNSURE THEN means increasing the incoming component.
Rule 5, Repeated Inheritance Rule. Taking the same name by multiple inheritance features a sharing method, it is considered to be a characteristic in subclasses; the characteristics of multiple inheritance by different names are replicated in the subclass, which is considered to be multiple characteristics.
Rules 6, COVARIANCE RULE. In the characteristic weight declaration, whether the result type is returned, or the parameter type of the process must be consistent with the type of the original feature.
Agent
At the beginning of the development of the object technology, it is strictly divided into objects and operations, and each operation is associated with the class. However, in some applications, you need to use objects to express operations, such as "operation rollback". Therefore, a proxy is proposed, also known as "operation packaging". Support for agents is available in Eiffel.
Multi-threaded & distributed development (Multithreading & Distribution)
In Eiffel, each computing unit is considered as a processor. Processor can be a computer, a process or a thread. Through this idea, multithreading, Client / Server development, distributed development, and distributed development.
Eiffel When declaring class instance, plus the Separate keyword, assigns a processor for the instance, supports concurrency / parallel operation. In the implementation, the actual allocation of the Processor resource is determined by configuring the CCF (ConcURRENCY Configuration File).
At the same time, EIFFEL also provides a unique strategy for synchronous and competition mechanisms. For example, in order to handle multithreaded resources competition, Eiffel clearly divides Query and Command.
The Eiffelnet and Eiffelthread class libraries can be used in embedded development and can also be used for large distributed systems.
Garbage Collection
Although GC is often considered a specific technique, Eiffel has given considerable attention. Bertrand Meyer believes that a separate GC thread is only possible after the hardware support is obtained. Assigning a separate GC for each thread in Eiffel (this brings great improvements to multi-threaded performance and efficiency) and can control the immediate operation of GC, partially run, pause, and completely disabled.
Consistent coding style
Eiffel believes that as an industrial-grade language, the coding style should be specified as a language norm, and should not be served by individuals. Therefore, the EIFFEL compiler has strictly inspected the identifier case, the underscore format, etc., and even the annotation is checked. This almost stringent rule makes the Eiffel program written by almost all Eiffel programmers in the world come out like a mold.
Not supported features
Eiffel gives up some design concepts to completely accurately express the "quality first" design development concept. Such as global variables, union types, in-class overloading, goto, and similar control structures (BREAK, EXIT, etc.), type rules, and side effects express operators, underlying pointers and Pointer algorithm, etc.
3. Development platform and main technique
Idea
The main technique of EIFFEL is mainly reflected in the integrated development environment designed for Eiffel object-oriented languages EiffelStudioTM. EiffelstudioTM is a complete graphics environment that contains multiple functions such as retrospective analysis design platforms, fast recompilation, editing, browsing tools, automatic generation documents, advanced debugging mechanisms. The entire IDE design reflects the unique insights for EIFFEL's development environment. Eiffel itself is developed in Eiffel language. The latest EiffelStudioTM version is ISE Eiffel 5. Below is the interface of Eiffestudio5.2 Free Version.
The product family includes Eiffelstudio for Windows, Eiffelstudio for UNIX, Eiffelstudio for Linux, Eiffelstudio for VMS, etc., Eiffelstudio for MacOS is also under development. This greatly increases the portability of the EIFFEL code in various operating system platforms.
Library
Easy to reuse and easy to customize the most attractive place for object-oriented technology through inheritance. Therefore, every program language designer wants to provide a rich and reliable class library, "Make developers no longer need redesign the wheel", so that significant time and money saving the development organization. Eiffel has a huge and highly quality class library resource. Meyer The EiffelBase library defined in "Eiffel: The Language" is all high quality standard libraries provided by all Eiffel implementations, including language core, operating system functions, memory management, event mechanism, container, algorithm, and other components. At the same time, ISE also provides network communication library Eiffelnet (via Sockets Transfer Object), compiler development Eiffellex and EiffelParse (support lexical analysis and syntax analysis), thread library Eiffelthread (mapped to C thread standard library), web development library Eiffelweb (support CGI-Common Gateway Interface Technology, enabling Eiffel to interact directly with Web), database access library EiffelStore (supporting various object-relational interfaces, mapped to ODBC, Oracle, Sybase, and Ingres, etc.); also available to Matisse, Versant And O2-oriented object-oriented database interface), GUI library Wel (Windows Eiffel Library, graphics library for Windows platforms, contains almost all Windows Graphics APIs), GEL (GTK Eiffel Library, for UNIX, Linux, and VMS platforms) and EiffelVision2 (Advanced graphics library designed for transplantation, including user interface components and various geometric graphics, all platforms supported by Eiffel), COM component library Eiffelcom (packaged standard COM data type), time dates library Eiffeltime (Based on Three time concepts: absolute time, start, durations, Java interface library Eiffel2java (enabling Eiffel to call Java routines and features.).
Commissioning and testing
As an important part of the debugging and testing of Eiffel, it is a simple and effective way to embed the self-test code, which avoids and discloses errors.
As an assertion provides control with inheritance related concepts, such as renaming, polymorphism, dynamic binding, allowing them to be used normally according to appropriate semantic restrictions.
When an assertion check is turned on, the automatic calculation of the invariant time is:
1. After completing the object instantiation
2. In the entrance of Routine, and before checking the front condition
3. After checking the back conditions, and before
Modeling graphic representation
The Diagram Tool Analysis Design Platform in EiffelStudioTM directly supports BON (Business Object Notation), automatically generates BON diagrams when designing system design for overall planning and interaction design.
Document automation
The document in the EIFFEL is constructed from a class name, assertion, comment, and other class descriptions from a class name, assertion, comment, and other class, and therefore abstract and accurate. Eiffel supports the following document format: ASCII, Eiffel, MML, PostScript, COM, RTF, TEX1, TEX2, Troff, HTML-Classic, HTML-Stylesheet, and can define new document formats through EFF (Eiffel Filter Format).
Metric statistics
For software engineering practice, the accumulation and analysis of statistical data is the necessary premise for the continuous improvement of the process. Eiffel can digitize the project product and its operating state. Developers can directly acquire predefined original values (such as numbers, feature, etc.), or manually define new combined values (such as the average feature number in each class) according to the original value.
Melting Ice Technology (Melting Ice Technology)
With the increasing demand for large-scale complex software systems in its life cycle (Microsoft even proposing "Daily Build" concept), this requires development tools to quickly adapt to the reconstruction of software systems and Update. To adapt to this situation, Eiffel proposes four compilation modes: MELT (fast increment, non-optimized change code), Freeze (incremental compile, optimized change code), Finalize (comprehensive compilation, highly optimized), precompile Compile the project reuse library). The key technologies are built in ice technology.
Blowing technology is the unique incremental compilation concept of Eiffel - the time to compile changes in the system should determine the impact of the changes in the system, and should not be determined in the system's entire size - technology implementation. It combines compilation (generated optimized code) and bytecode (fast response). Here, the EIFFEL program is divided into two parts, including the precompiled library (in the "frozen" state), and just changed (in the "merge" state, that is, the compiler quickly generates some executable bytecles, then stopped ), Both when needed, can be adjusted to each other.
Collaboration with other design and development languages and platforms
The Eiffel language retains a development architecture that cooperates with the UML-CASE tool, C / C , Java, COM components, .NET components.
Collaboration with the UML-CASE tool. EiffelStudioTM generates XMI (XML Metadata Interchange "for any Eiffel system. The XMI symbols can exchange system information between different products (such as Rational Rose) that supports its standards. Therefore, the XMI generated by Eiffel can be imported into the UML-CASE product that supports XMI to obtain UML information.
Collaboration with C / C and its compiler. In C / C , Eiffel has a exquisite interface that supports: Eiffel calls C functions, C classes, and its members; through the Cecil (C-Eiffel Call-IN library) library, C / C can use Eiffel mechanism; C classes are converted to the "wrapper" of the EIFFEL class. In terms of compiler, the Eiffel compiler is made by the bytecode (these byte codes can be interpreted directly), and thereafter bytecode is optimized and translated into C, and finally use the C compiler on each platform. Optimize compile into an executable code. Collaboration with Java. The JNI (Java Native Interface) provided by JDK (Java Development Kit), Eiffel can call Java routines and features.
Collaboration with COM components. Eiffel packs the standard COM data type to form an EiffelCom class.
Collaboration with .NET components. The code written by Eiffel for .NET is automatically compiled into a .NET Intermediate Language (IL), therefore fully integrated with Visual Studio.net, can work together, share code, and support multiple inheritance in .NET.
Section 3 Application Example
The following is two instances. The first is the implementation of the List class, leading from the base.structures.list of Eiffelbase. The second is the implementation of the classic example "Hello World".
1. List
Indexing
Description:
"Sequential Lists, WITHOUT COMMITMENT TO A Particular Representation"
STATUS: "See Notice At End of Class"
Names: List, sequence;
Access: Index, Cursor, Membership;
Contents: generic;
Date: "$ DATE: 2002/01/07 23:04:29 $"
Revision: "$ revision: 1.16 $"
Deferred class list [g] inherit
Chain [g]
Export
{Ann} remove
REDEFINE
Forth, is_equal
end
Feature - Comparison
IS_EQUAL (Other: Like Current): Boolean IS
DOES `Other 'Contain The Same Elements?
Local
C1, C2: CURSOR
DO
IF current = other then
Result: = TRUE
Else
Result: = (is_empty = other.is_empty) and
(Object_comparison = other.object_comparison)
if Result and not is_empty the
C1? = CURSOR
C2? = other.cursor
CHECK
Cursors_exist: C1 / = VOID AND C2 / = VOID
- Because EVERY LIST Contains a CURSOR OBJECT
end
From
Start
Other.start
Until
After or Not Result
LOOPIF Object_comparison kil
Result: = Equal (item, Other.Item)
Else
Result: = (item = other.Item)
end
Forth
Other.Forth
end
GO_TO (C1)
Other.go_to (C2)
Elseif is_empty and other.is_empty and
Object_comparison = other.object_comparison kil
Result: = TRUE
end
end
EnSure Then
INDICES_UNCHANGED:
Index = old index and other.index = Old Other.index
TRUE_IMPLIES_SAME_SIZE: RESULT IMPLIES Count = Other.count
end
Feature - Status Report
After: Boolean IS
- Is there iv? Position to the right of cursor?
DO
Result: = (INDEX = Count 1)
end
BEFORE: Boolean IS
- Is there v v v p???????????????????????????????????????????????????????????????
DO
Result: = (INDEX = 0)
end
Feature - Cursor Movement
Forth is
- Move to Next Position; if no next position,
- Ensure That `Exhausted 'Will Be True.
Deferred
EnSure Then
Moved_forth: index = Old Index 1
end
Invariant
Before_definition: before = (INDEX = 0)
After_definition: after = (INDEX = Count 1)
Indexing
Library: "
Eiffelbase: Library of Reusable Components for Eiffel.
]
STATUS: "
Copyright 1986-2001 Interactive Software Engineering (ISE).
For ISE CUSTOMERS The Original Versions Are An ISE Product
Covered by The ISE Eiffel License and Support Agreements.
]
License: "[
Eiffelbase May Now Be buy by anyone as free software to
Develop Any Product, Public-Domain OR Commercial, Without
Payment to Ise, Under The Terms of The ISE Free Eiffel Library
License (IFELL) at http://eiffel.com/products/base/license.html.
]
Source: "[[
Interactive Software Engineering Inc.
Ise building
360 Storke Road, Goleta, CA 93117 USA
Televhone 805-685-1006, Fax 805-685-6869Electronic mail
Customer Support http://support.eiffel.com
]
INFO: "
For Latest Info See Award-Winning Pages: http://eiffel.com
]
END - Class List
2. Hello World
Indexing
Description: "Display Hello"
Note: "Initial Version Automatic Or generated"
Class
Root_hello
Creation
Make
Feature - INITIALIZATION
Make IS
CREATION Procedure.
DO
- | | Add your code here
IO.PUT_STRING ("Hello World")
IO.NEW_LINE
end
END - Class Root_hello
Section IV Current Development Status
Eiffel language is currently mainly related to the following two aspects. One, parallel and distributed development (Concurrency & Distribution); two, expansion of assertions.
Eiffel's open source community is also very active. The GOBO outside ISE is a well-known open source cross-platform class library in the Eiffel community.
Eiffel currently involved in the fields include financial institutions, mechanical manufacturing, government agencies, security departments, healthcare institutions, and more. HP, Boeing, Enea, Chicago Board of Trade, Lockheed Martin, Environmental Protection Agency is an ISE customer.
Section 5 Summary and Comment - NO Silver Bullet
Object-oriented, graphical programming, program verification, environmental tools such as object-oriented, graphical programming, program verification, environmental tools, Frederick Brooks believes that these technical ideas cannot solve the complexity of software systems ", so they do not fundamentally solve the software crisis. For the idea of reuse, Brooks believes is a way to solve the fundamental difficulties of software, but the form and changes currently reuse still cannot be satisfactory.
Robert V. Binder believes that Meyer's DBC model does not consider the sequenceial constraints, although this is not a problem for non-modular classes, but has left a significant gap to the modal class.
According to our current use of Eiffel, the following issues were found:
1. The compiled executable is huge. A "Hello World" console program has 2290K.
references
1. ISE. Eiffel FAQ.
2. ISE. An Eiffel Tutorial. Eiffel Developer Help Center.
3. ISE. Eiffelstudio: a guided tour. Eiffel Developer Help Center.
4. ISE. Building bug-free o-o Software: An Introduction to Design by ContractTM.
5. ISE. The Bon: The Analysis and Design Method.
6. ISE. Multithreading, Distribution, Internet Programming.
7. INFORMIT. Bertrand Meyer - The Founder of The Eiffel Language. Programmer2003.02.8. Martin Fowler, Kendall Scott. UML DISTILLED 2RD EDTION. Addison Wesley 2000.
9. Robert V. Binder. Testing Object-Oriented System: Models, Patterns, And Tools. Addison Wesley 2000.
10. Frederick brooks. The Mythical Man-Month: The Essays On Software Engineering. Addison Wesley 1995.