Showing posts with label interfaces. Show all posts
Showing posts with label interfaces. Show all posts

28 November 2007

Software Engineering: Interfaces (Just the Quotes)

"A good information system both exposes interface errors and stimulates their correction" (Fred P Brooks, "The Mythical Man-Month: Essays", 1975)

"By the architecture of a system, I mean the complete and detailed specification of the user interface. For a computer this is the programming manual. For a compiler it is the language manual. For a control program it is the manuals for the language or languages used to invoke its functions. For the entire system it is the union of the manuals the user must consult to do his entire job." (Fred P Brooks, "The Mythical Man-Month: Essays", 1975)

"Clearly, methods of designing programs so as to eliminate or at least illuminate side effects can have an immense payoff in maintenance costs. So can methods of implementing designs with fewer people, fewer interfaces, and hence fewer bugs." (Fred P Brooks, "The Mythical Man-Month: Essays", 1975)

"With increasing size and complexity of the implementations of information systems, it is necessary to use some logical construct (or architecture) for defining and controlling the interfaces and the integration of all of the components of the system." (John Zachman, "A Framework for Information Systems Architecture", 1987)

"Programmers are responsible for software quality - quality in their own work, quality in the products that incorporate their work, and quality at the interfaces between components. Quality has never been and will never be tested in. The responsibility is both moral and professional." (Boris Beizer, "Software Testing Techniques", 1990)

"A problem with this 'waterfall' approach is that there will then be no user interface to test with real users until this last possible moment, since the 'intermediate work products' do not explicitly separate out the user interface in a prototype with which users can interact. Experience also shows that it is not possible to involve the users in the design process by showing them abstract specifications documents, since they will not understand them nearly as well as concrete prototypes." (Jakob Nielsen, "Usability Engineering", 1993)

"One should not start full-scale implementation efforts based on early user interface designs. Instead, early usability evaluation can be based on prototypes of the final systems that can be developed much faster and much more cheaply, and which can thus be changed many times until a better understanding of the user interface design has been achieved." (Jakob Nielsen, "Usability Engineering", 1993)

"Scenarios are an especially cheap kind of prototype. […] Scenarios are the ultimate reduction of both the level of functionality and of the number of features: They can only simulate the user interface as long as a test user follows a previously planned path. […] Scenarios are the ultimate minimalist prototype in that they describe a single interaction session without any flexibility for the user. As such, they combine the limitations of both horizontal prototypes (users cannot interact with real data) and vertical prototypes (users cannot move freely through the system)." (Jakob Nielsen, "Usability Engineering", 1993)

"The difference between standards and guidelines is that a standard specifies how the interface should appear to the user, whereas a set of guidelines provides advice about the usability characteristics of the interface." (Jakob Nielsen, "Usability Engineering", 1993)

"Users often do not know what is good for them. […] Users have a very hard time predicting how they will interact with potential future systems with which they have no experience. […] Furthermore, users will often have divergent opinions when asked about details of user interface design." (Jakob Nielsen, "Usability Engineering", 1993)

"As the least conscious layer of the user experience, the conceptual model has the paradoxical quality of also having the most impact on usability. If an appropriate conceptual model is faithfully represented throughout the interface, after users recognize and internalize the model, they will have a fundamental understanding of what the application does and how to operate it." (Bob Baxley, "Making the Web Work: Designing Effective Web Applications", 2002)

"Modularity, an approach that separates a large system into simpler parts that are individually designed and operated, incorrectly assumes that complex system behavior can essentially be reduced to the sum of its parts. A planned decomposition of a system into modules works well for systems that are not too complex. […] However, as systems become more complex, this approach forces engineers to devote increasing attention to designing the interfaces between parts, eventually causing the process to break down."  (Yaneer Bar-Yam, "Making Things Work: Solving Complex Problems in a Complex World", 2004)

"On small, informal projects, a lot of design is done while the programmer sits at the keyboard. 'Design' might be just writing a class interface in pseudocode before writing the details. It might be drawing diagrams of a few class relationships before coding them. It might be asking another programmer which design pattern seems like a better choice. Regardless of how it’s done, small projects benefit from careful design just as larger projects do, and recognizing design as an explicit activity maximizes the benefit you will receive from it." (Steve C McConnell, "Code Complete: A Practical Handbook of Software Construction" 2nd Ed., 2004)

"Enterprise architecture is the organizing logic for business processes and IT infrastructure reflecting the integration and standardization requirements of a company's operation model. […] The key to effective enterprise architecture is to identify the processes, data, technology, and customer interfaces that take the operating model from vision to reality." (Jeanne W Ross et al, "Enterprise architecture as strategy: creating a foundation for business", 2006)

"An abstraction is not a module, or an interface, class, or method; it is a structure, pure and simple - an idea reduced to its essential form. Since the same idea can be reduced to different forms, abstractions are always, in a sense, inventions, even if the ideas they reduce existed before in the world outside the software. The best abstractions, however, capture their underlying ideas so naturally and convincingly that they seem more like discoveries." (Daniel Jackson, "Software Abstractions", 2006)

"Software is built on abstractions. Pick the right ones, and programming will flow naturally from design; modules will have small and simple interfaces; and new functionality will more likely fit in without extensive reorganization […] Pick the wrong ones, and programming will be a series of nasty surprises: interfaces will become baroque and clumsy as they are forced to accommodate unanticipated interactions, and even the simplest of changes will be hard to make." (Daniel Jackson, "Software Abstractions", 2006)

"We tend to form mental models that are simpler than reality; so if we create represented models that are simpler than the actual implementation model, we help the user achieve a better understanding. […] Understanding how software actually works always helps someone to use it, but this understanding usually comes at a significant cost. One of the most significant ways in which computers can assist human beings is by putting a simple face on complex processes and situations. As a result, user interfaces that are consistent with users’ mental models are vastly superior to those that are merely reflections of the implementation model." (Alan Cooper et al,  "About Face 3: The Essentials of Interaction Design", 2007)

"Structural patterns describe how classes and objects can be combined to form larger structures. Patterns for classes describe how inheritance can be used to provide more useful program interfaces. Patterns for objects describe how objects can be composed into larger structures using object composition." (Junji Nakano et al, "Programming Statistical Data Visualization in the Java Language" [in "Handbook of Data Visualization"], 2008)

"Good architecture provides good interfaces that separate the shear layers of its implementation: a necessity for evolution and maintenance. Class-oriented programming puts both data evolution and method evolution in the same shear layer: the class. Data tend to remain fairly stable over time, while methods change regularly to support new services and system operations. The tension in these rates of change stresses the design." (James O Coplien & Trygve Reenskaug, "The DCI Paradigm: Taking Object Orientation into the Architecture World", 2014)

"When an engineer refactors the internals of a system without modifying its interface, whether for performance, clarity, or any other reason, the system’s tests shouldn’t need to change. The role of tests in this case is to ensure that the refactoring didn’t change the system’s behavior. Tests that need to be changed during a refactoring indicate that either the change is affecting the system’s behavior and isn’t a pure refactoring, or that the tests were not written at an appropriate level of abstraction." (Titus Winters, "Software Engineering at Google: Lessons Learned from Programming Over Time", 2020)

06 April 2007

Software Engineering: Interface (Definitions)

"(1) A shared boundary across which information is passed. (2) A hardware or software component that connects two or more other components for the purpose of passing information from one to the other. (3) To connect two or more components for the purpose of passing information from one to the other. (4) To serve as a connecting or connected component as in (2)."  (IEEE, "IEEE Standard Glossary of Software Engineering Terminology", 1990)

"(1) A shared boundary between two or more hardware or software components that conveys power and/or information from one to the other (2) To connect two or more components for the purpose of passing power and/or information from one to the other." (Richard D Stutzke, "Estimating Software-Intensive Systems: Projects, Products, and Processes", 2005)

"An interface exists between different systems or between systems and networks when considered within the context of computer technology. An interface can also refer to the way in which people interact with a computer or other type of device (a user interface or graphical user interface). An interface can also have an organizational connotation where one organization works closely with (interfaces with) another. There are other definitions based on the industry context. However, these may be most common to product managers." (Steven Haines, "The Product Manager's Desk Reference", 2008)

"The connection between two components of a system. Analysis is concerned with the data content of an interface, and design is concerned with the behavior and appearance of the interface." (James Robertson et al, "Complete Systems Analysis: The Workbook, the Textbook, the Answers", 2013)

"Interconnection and interrelation between, for example, people, systems, devices, applications, and so on." (Gilbert Raymond & Philippe Desfray, "Modeling Enterprise Architecture with TOGAF", 2014)

07 January 2007

Software Engineering: Design (Definitions)

(1) The process of defining the architecture, components, interfaces, and other characteristics of a system or component. (2) The result of the process in (1)."  (IEEE," IEEE Standard Glossary of Software Engineering Terminology", 1990)

"A process that uses the products of analysis to produce a specification for implementing a system. A logical description of how a system will work." (Craig Larman, "Applying UML and Patterns", 2004)

"The activity of identifying and defining the architecture, components, interfaces, and attributes of a system or product. See also architectural design. (2) The result of the process in (1)." (Richard D Stutzke, "Estimating Software-Intensive Systems: Projects, Products, and Processes", 2005)

"Analysis discovers what needs to be done. Design figures out how what has been analyzed, can and should be done." (Gavin Powell, "Beginning Database Design", 2006)

"The act of crafting a technological solution to fit the requirements, within the constraints." (Suzanne Robertson & James Robertson, "Mastering the Requirements Process" 2nd Ed, 2006)

"The process of optimizing an analysis model through the selection of design technologies, decisions, and patterns." (Bruce P Douglass, "Real-Time Agility: The Harmony/ESW Method for Real-Time and Embedded Systems Development", 2009)

"1.A deliberate, purposeful plan, layout, delineation, arrangement, and specification of the component parts and interfaces of a product or system. A logical design is an abstract design for fulfilling requirements without consideration for physical constraints. A physical design considers the requirements along with physical constraints. 2.Verb. To conceive, plan, define, arrange, and specify a product or system." (DAMA International, "The DAMA Dictionary of Data Management", 2011)

"A plan or outline to accomplish goals and purpose based on evidence and analysis. Degree of detail depends on the situation, such as prototypes and storyboards." (Joan C Dessinger, "Fundamentals of Performance Improvement" 3rd Ed, 2012)

"The process of defining how a system will be implemented; the objective is to use the available technology to implement the essential requirements so that the implemented system looks as much like the essential system, and hence the problem, as possible." (James Robertson et al, "Complete Systems Analysis: The Workbook, the Textbook, the Answers", 2013)

"Design is an iterative process and the goal is to describe the system architecture that will satisfy the functional and non-functional requirements. It involves describing the system at a number of different levels of abstraction, with the designer starting off with an informal picture of the design that is then refined by adding more information." (Gerard O’Regan, "Concise Guide to Software Engineering: From Fundamentals to Application Methods", 2017)

"Activity or process that identifies requirements and then defines a solution that is able to meet these requirements" (ITIL)

07 January 2006

OOP: Interface (Definitions)

"A contract that specifies the members a class or struct can implement to receive generic services for that type." (Jesse Liberty, "Programming C#" 2nd Ed., 2002)

"In Java, an interface is similar to a class definition, except that no detailed implementation of methods is provided. A class that implements an interface must provide the code to implement the methods. You can think of an interface as defining a contract between the calling method and the class that implements the interface." (Marcus Green & Bill Brogden, "Java 2™ Programmer Exam Cram™ 2 (Exam CX-310-035)", 2003)

"A set of signatures of public operations." (Craig Larman, "Applying UML and Patterns", 2004)

"A defined set of properties, methods, and collections that form a logical grouping of behaviors and data. Classes are defined by the interfaces that they implement. An interface can be implemented by many different classes." (Jim Joseph et al, "Microsoft SQL Server 2008 Reporting Services Unleashed", 2009)

"The specification of the means by which services can be invoked and data can be manipulated across an encapsulation boundary (e.g., class)." (Bruce P Douglass, "Real-Time Agility", 2009)

"The externally visible definition of the operations permitted on an application component." (David Lyle & John G Schmidt, "Lean Integration", 2010)

"Defines a set of members that a class can provide." (Rod Stephens, "Start Here! Fundamentals of Microsoft .NET Programming", 2011)

"Defines public properties, methods, and events that a class must provide to satisfy the interface." (Rod Stephens, "Stephens' Visual Basic Programming 24-Hour Trainer", 2011)

"A defined set of properties, methods, and collections that form a logical grouping of behaviors and data." (Microsoft, "SQL Server 2012 Glossary", 2012)

"The services a piece of code promises to provide forever, in contrast to its implementation, which it should feel free to change whenever it likes." (Jon Orwant et al, "Programming Perl" 4th Ed., 2012)

"A keyword used to declare an interface." (Daniel Leuck et al, "Learning Java" 5th Ed., 2020)

Related Posts Plugin for WordPress, Blogger...

About Me

My photo
IT Professional with more than 24 years experience in IT in the area of full life-cycle of Web/Desktop/Database Applications Development, Software Engineering, Consultancy, Data Management, Data Quality, Data Migrations, Reporting, ERP implementations & support, Team/Project/IT Management, etc.