Showing posts with label software. Show all posts
Showing posts with label software. Show all posts

05 August 2019

Information Security: Trojan Horse (Definitions)

"Malware that looks like something beneficial but has a malicious component. Users are tricked into downloading and installing the malware, thinking it’s worthwhile. After the user installs the Trojan, the malicious component runs. Trojans are named after the Trojan horse from Greek mythology." (Darril Gibson, "Effective Help Desk Specialist Skills", 2014)

"A program posing as a harmless piece of software that can contain malware such as viruses or spyware." (Andy Walker, "Absolute Beginner’s Guide To: Security, Spam, Spyware & Viruses", 2005)

"Malicious code that creates backdoors, giving an attacker illegal access to a network or account through a network port." (Linda Volonino & Efraim Turban, "Information Technology for Management 8th Ed", 2011)

"software that appears to be an application but is, in fact, a destructive program." (Bill Holtsnider & Brian D Jaffe, "IT Manager's Handbook" 3rd Ed., 2012)

"An apparently useful and innocent program containing additional hidden code that allows the unauthorized collection, exploitation, falsification, or destruction of data. A Trojan is often received from a familiar e-mail address or URL or in the form of a familiar attachment." (Mark Rhodes-Ousley, "Information Security: The Complete Reference" 2nd Ed., 2013)

"A form of malware application hidden within another application that introduces backdoor access." (Mike Harwood, "Internet Security: How to Defend Against Attackers on the Web 2nd Ed.", 2015)

"A malicious program disguised as a benevolent resource" (Nell Dale & John Lewis, "Computer Science Illuminated, 6th Ed.", 2015)

"A piece of malicious software that looks harmless but has a detrimental effect on a computer when it runs." (Faithe Wempen, "Computing Fundamentals: Introduction to Computers", 2015)

"A program that is disguised as another program with the goal of carrying out malicious activities in the background without the user knowing." (Adam Gordon, "Official (ISC)2 Guide to the CISSP CBK" 4th Ed., 2015)

"A piece of software or code that is disguised as a legitimate software that is created with the intention to breach a system or networks security." (Hamid R Arabnia et al, "Application of Big Data for National Security", 2015)

"Software that either hides or masquerades as a useful or benign program." (Weiss, "Auditing IT Infrastructures for Compliance" 2nd Ed., 2015)

"A computer program that appears to have a useful function, but also has a hidden and potentially malicious function that evades security mechanisms, sometimes by exploiting legitimate authorizations of a system entity that invokes the program." (O Sami Saydjari, "Engineering Trustworthy Systems: Get Cybersecurity Design Right the First Time", 2018)

24 July 2019

IT: Virtualization (Definitions)

"Creation of a virtual, as opposed to a real, instance of an entity, such as an operating system, server, storage, or network." (David G Hill, "Data Protection: Governance, Risk Management, and Compliance", 2009)

"The process of partitioning a computer so that multiple operating system instances can run at the same time on a single physical computer." (John Goodson & Robert A Steward, "The Data Access Handbook", 2009)

"A concept that separates business applications and data from hardware resources, allowing companies to pool hardware resources, rather than dedicate servers to application and assign those resources to applications as needed." (Linda Volonino & Efraim Turban, "Information Technology for Management" 8th Ed, 2011)

"A technique that creates logical representations of computing resources that are independent of the underlying physical computing resources." (Carlos Coronel et al, "Database Systems: Design, Implementation, and Management" 9th Ed., 2011)

"A method for managing hardware assets used at the same time by different users or processes, or both, that makes the part assigned to each user or process appear to act as if it was running on a separate piece of equipment." (Kenneth A Shaw, "Integrated Management of Processes and Information", 2013)

"Virtual memory is the use of a disk to store active areas of memory to make the available memory appear larger. In a virtual environment, one computer runs software that allows it to emulate another machine. This kind of emulation is commonly known as virtualization." (Marcia Kaufman et al, "Big Data For Dummies", 2013)

"A technique common in computing, consisting in the creation of virtual (rather than actual) instance of any element, so it can be managed and used independently. Virtualization has been one of the key tools for resource sharing and software development, and now it is beginning to be applied to the network disciplines." (Diego R López & Pedro A. Aranda, "Network Functions Virtualization: Going beyond the Carrier Cloud", 2015)

"Creation of a simulated environment (hardware platform, operating system, storage, etc.) that allows for central control and scalability." (Adam Gordon, "Official (ISC)2 Guide to the CISSP CBK 4th Ed.", 2015)

"The creation of a virtual version of actual services, applications, or resources." (Mike Harwood, "Internet Security: How to Defend Against Attackers on the Web" 2nd Ed., 2015)

"The process of creating a virtual version of a resource, such as an operating system, hardware platform, or storage device." (Andrew Pham et al, "From Business Strategy to Information Technology Roadmap", 2016)

"A base component of the cloud that consists of software that emulates physical infrastructure." (Richard Ehrhardt, "Cloud Build Methodology", 2017)

"The process of presenting an abstraction of hardware resources to give the appearance of dedicated access and control to hardware resources, while, in reality, those resources are being shared." (O Sami Saydjari, "Engineering Trustworthy Systems: Get Cybersecurity Design Right the First Time", 2018)

05 July 2019

IT: Automation (Definitions)

"The act of replacing control of a manual process with computer or electronic controls." (DAMA International, "The DAMA Dictionary of Data Management", 2011)

[soft automation:] "automation that is configurable through software without requiring changes to the underlying code of the software itself." (Meredith Zozus, "The Data Book: Collection and Management of Research Data", 2017)

[hard automation:] "automation that requires computer programming to be altered if changes are required." (Meredith Zozus, "The Data Book: Collection and Management of Research Data", 2017)

[Decision Automation:] "This broad term refers to computerized systems that make decisions and have some capability to independently act upon them. Decision automation refers to using technologies, including computer processing, to make decisions and implement programmed decision processes." (Ciara Heavin & Daniel J Power, "Decision Support, Analytics, and Business Intelligence" 3rd Ed., 2017)

"Automation is machine-controlled execution of actions, based on artificial intelligence and machine learning that do not require human intervention. It enables speed to action to help reduce time taken by human operators." (Heru Susanto et al, "Data Security for Connected Governments and Organisations: Managing Automation and Artificial Intelligence", 2021)

"refers to the technology where procedures or processes are performed with minimal human intervention. Machines can be configured based on an explicit set of rules or algorithms." (Accenture)

"performing all or part of a set of tasks with a machine rather than through human effort (NRC 1998)

[Intelligent Automation:] "refers to an automation solution that is enhanced with cognitive capabilities that enable programs and machines to learn, interpret and respond." (Accenture)

IT: Gateway (Definitions)

"A network software product that allows computers or networks running dissimilar protocols to communicate, providing transparent access to a variety of foreign database management systems (DBMSs). A gateway moves specific database connectivity and conversion processing from individual client computers to a single server computer. Communication is enabled by translating up one protocol stack and down the other. Gateways usually operate at the session layer." (Microsoft Corporation, "SQL Server 7.0 System Administration Training Kit", 1999)

"Connectivity software that allows two or more computer systems with different network architectures to communicate." (Sybase, "Glossary", 2005)

"A generic term referring to a computer system that routes data or merges two dissimilar services together." (Paulraj Ponniah, "Data Warehousing Fundamentals for IT Professionals", 2010)

"A software product that allows SQL-based applications to access relational and non-relational data sources." (DAMA International, "The DAMA Dictionary of Data Management", 2011)

"An entrance point that allows users to connect from one network to another." (Linda Volonino & Efraim Turban, "Information Technology for Management" 8th Ed., 2011)

[database gateway:] "Software required to allow clients to access data stored on database servers over a network connection." (Craig S Mullins, "Database Administration: The Complete Guide to DBA Practices and Procedures" 2nd Ed., 2012)

"A connector box that enables you to connect two dissimilar networks." (Faithe Wempen, "Computing Fundamentals: Introduction to Computers", 2015)

"A node that handles communication between its LAN and other networks" (Nell Dale & John Lewis, "Computer Science Illuminated, 6th Ed.", 2015)

"A system or device that connects two unlike environments or systems. The gateway is usually required to translate between different types of applications or protocols." (Shon Harris & Fernando Maymi, "CISSP All-in-One Exam Guide" 8th Ed., 2018)

"An application that acts as an intermediary for clients and servers that cannot communicate directly. Acting as both client and server, a gateway application passes requests from a client to a server and returns results from the server to the client." (Sybase, "Open Server Server-Library/C Reference Manual", 2019)

04 February 2018

Data Science: Artificial Intelligence (Definitions)

"A computer would deserve to be called intelligent if it could deceive a human into believing that it was human." (Alan Turing, "Computing Machinery and Intelligence", 1950)

"Artificial intelligence is the science of making machines do things that would require intelligence if done by men." (Marvin Minsky, 1968)

"Artificial intelligence comprises methods, tools, and systems for solving problems that normally require the intelligence of humans. The term intelligence is always defined as the ability to learn effectively, to react adaptively, to make proper decisions, to communicate in language or images in a sophisticated way, and to understand." (Nikola K Kasabov, "Foundations of Neural Networks, Fuzzy Systems, and Knowledge Engineering", 1996) 

"AI views the mind as a type of logical symbol processor that works with strings of text or symbols much as a computer works with strings of Os and Is. In practice, AI means expert systems or decision support systems." (Guido Deboeck & Teuvo Kohonen (Eds), "Visual Explorations in Finance with Self-Organizing Maps" 2nd Ed., 2000)

"Software that performs a function previously ascribed only to human beings, such as natural language processing." (DAMA International, "The DAMA Dictionary of Data Management", 2011)

"The branch of computer science that is concerned with making computers behave and 'think' like humans." (Linda Volonino & Efraim Turban, "Information Technology for Management" 8th Ed., 2011)

"A field of computer science focused on the development of intelligent-acting agents. Often guided by the theory of how humans solve problems. Has a reputation for overpromising. Wryly definable as all computational problems not yet solved." (Gary Miner et al, "Practical Text Mining and Statistical Analysis for Non-structured Text Data Applications", 2012)

"Artificial intelligence is the mimicking of human thought and cognitive processes to solve complex problems automatically. AI uses techniques for writing computer code to represent and manipulate knowledge." (Radian Belu, "Artificial Intelligence Techniques for Solar Energy and Photovoltaic Applications", 2013)

"It is the investigation exploring whether intelligence can be replicated in machines, to perform tasks that humans can successfully carry out." (Hamid R Arabnia et al, "Application of Big Data for National Security", 2015)

"The study of computer systems that model and apply the intelligence of the human mind" (Nell Dale & John Lewis, "Computer Science Illuminated" 6th Ed., 2015)

"Machines that are designed to evaluate and respond to situations in an appropriate manner. Most artificial intelligence machines are computer based and many of them have achieved remarkable levels of performance in specific areas." (K  N Krishnaswamy et al, "Management Research Methodology: Integration of Principles, Methods and Techniques", 2016)

"A discipline with the goal to develop technology that solves complex problems with skill and creativity that rivals that of the human brain." (O Sami Saydjari, "Engineering Trustworthy Systems: Get Cybersecurity Design Right the First Time", 2018)

"A machine’s ability to make decisions and perform tasks that simulate human intelligence and behavior." (Kirti R Bhatele et al, "The Role of Artificial Intelligence in Cyber Security", 2019)

"An attempt to recreate a living intellect, especially human intelligence, in a computer environment." (Tolga Ensari et al, "Overview of Machine Learning Approaches for Wireless Communication", 2019)

"The theory governing the development of computer systems that are able to perform tasks which normally require human intelligence, such as visual perception, speech recognition, decision-making, and translation between languages." (Nil Goksel & Aras Bozkurt, "Artificial Intelligence in Education: Current Insights and Future Perspectives", 2019)

"Algorithms which make machines learn from experience, adjust to new inputs and perform human-like tasks." (Lejla Banjanović-Mehmedović & Fahrudin Mehmedović, "Intelligent Manufacturing Systems Driven by Artificial Intelligence in Industry 4.0", 2020)

"It is the method of mimicking the human intelligence by the machines." (Shouvik Chakraborty & Kalyani Mali, "An Overview of Biomedical Image Analysis From the Deep Learning Perspective", 2020)

"AI is a simulation of human intelligence through the progress of intelligent machines that think and work like humans carrying out such human activities as speech recognition, problem-solving, learning, and planning." (Hari K Kondaveeti et al, "Deep Learning Applications in Agriculture: The Role of Deep Learning in Smart Agriculture", 2021)

"Artificial intelligence (AI) refers to the ability of machines to have cognitive capabilities similar to humans using advanced algorithms and quality data." (Vijayaraghavan Varadharajan & Akanksha Rajendra Singh, "Building Intelligent Cities: Concepts, Principles, and Technologies", 2021)

"Domain of science that deals with the development of computer systems to perform actions like speech-recognition, decision-making, understanding human’s natural language, etc., like humans." (Shatakshi Singhet al, "A Survey on Intelligence Tools for Data Analytics", 2021)

"It is a set of software and hardware systems with many capabilities such as behaving human-like or numerical logic, motion, speech, and sound perception. In other words, AI makes machines think and percept like humans." (Mehmet A Cifci, "Optimizing WSNs for CPS Using Machine Learning Techniques", 2021)

"Machines that work and react like humans using computer programs known as algorithms Algorithms must remain current for AI to work properly, so they rely on machine learning to update them with changes in the worldwide economy and society." (Sue Milton, "Data Privacy vs. Data Security", Global Business Leadership Development for the Fourth Industrial Revolution, 2021)

"Science of simulating intelligence in machines and program them to mimic human actions." (Revathi Rajendran et al, "Convergence of AI, ML, and DL for Enabling Smart Intelligence: Artificial Intelligence, Machine Learning, Deep Learning, Internet of Things", 2021)

"The theory and development of computer systems able to perform tasks normally requiring human intelligence, such as visual perception, speech recognition, decision-making, and translation between languages." (Jan Bosch et al, "Engineering AI Systems: A Research Agenda", Artificial Intelligence Paradigms for Smart Cyber-Physical Systems, 2021)

"AI is any set of concepts, applications or technologies that allow a computer to perform tasks that mimic human behavior." (RapidMiner) [source]

"Artificial intelligence (AI) is the simulation of human intelligence processes by machines, especially computer systems. Specific applications of AI include expert systems, natural language processing (NLP), speech recognition and machine vision." (Techtarget) [source]

"A discipline involving research and development of machines that are aware of their surroundings. Most work in A.I. centers on using machine awareness to solve problems or accomplish some task." (KDnuggets)

"An area of computer science which refers to the creation of intelligent machines that can react to scenarios and make decisions as a human would." (Board International)

"A set of sciences, theories and techniques whose purpose is to reproduce by a machine the cognitive abilities of a human being." (Council of Europe) 

"The theory and capabilities that strive to mimic human intelligence through experience and learning." (Forrester)

"Artificial Intelligence (AI) is the broad term used to describe the set of technologies that enable machines to sense, comprehend, act and learn." (Accenture)

"Artificial intelligence (AI) applies advanced analysis and logic-based techniques, including machine learning, to interpret events, support and automate decisions, and take actions." (Gartner)

31 December 2016

Strategic Management: Enterprise Architecture (Just the Quotes)

"[Enterprise Architecture is] the set of descriptive representations (i. e., models) that are relevant for describing an Enterprise such that it can be produced to management's requirements (quality) and maintained over the period of its useful life. (John Zachman, 1987)

"To keep the business from disintegrating, the concept of information systems architecture is becoming less of an option and more of a necessity." (John Zachman, "A Framework for Information Systems Architecture", 1987)

"Architecture is defined as a clear representation of a conceptual framework of components and their relationships at a point in time […] a discussion of architecture must take into account different levels of architecture. These levels can be illustrated by a pyramid, with the business unit at the top and the delivery system at the base. An enterprise is composed of one or more Business Units that are responsible for a specific business area. The five levels of architecture are Business Unit, Information, Information System, Data and Delivery System. The levels are separate yet interrelated. [...] The idea if an enterprise architecture reflects an awareness that the levels are logically connected and that a depiction at one level assumes or dictates that architectures at the higher level." (W Bradford Rigdon, "Architectures and Standards", 1989)

"A key ingredient to an enterprise architecture is the ability to link multiple and disparate systems into a coherent whole." (Karyl Scott, "Enterprise computing: Internetwork routing enhancements planned for NetWare", InfoWorld‎ Vol 14 (28), 1992)

"Although the concept of an enterprise architecture (EA) has not been well defined and agreed upon, EAs are being developed to support information system development and enterprise reengineering. Most EAs differ in content and nature, and most are incomplete because they represent only data and process aspects of the enterprise. […] An EA is a conceptual framework that describes how an enterprise is constructed by defining its primary components and the relationships among these components." (M A Roos, "Enterprise architecture: definition, content, and utility", Enabling Technologies: Infrastructure for Collaborative Enterprises, 1994)

"An enterprise architecture can be thought of as a 'blueprint' or 'picture' which assists in the design of an enterprise. The enterprise architecture must define three things. First, what are the activities that an enterprise performs? Second, how should these activities be performed? And finally, how should the enterprise be constructed? Consequently, the architecture being developed will identify the essential processes performed by a virtual company, how the virtual company and the agile enterprises involved in the virtual company will perform these processes, and include a methodology for the rapid reconfiguration of the virtual enterprise." (William Barnett et al, "An architecture for the virtual enterprise", Systems, Man, and Cybernetics, 1994)

"An enterprise architecture is an abstract summary of some organizational component's design. The organizational strategy is the basis for deciding where the organization wants to be in three to five years. When matched to the organizational strategy, the architectures provide the foundation for deciding priorities for implementing the strategy." (Sue A Conger, "The new software engineering", 1994)

"It is within the purview of each context to define its own rules and techniques for deciding how the object-oriented mechanisms and principles are to be managed. And while the manager of a large information system might wish to impose some rules based on philosophical grounds, from the perspective of enterprise architecture, there is no reason to make decisions at this level. Each context should define its own objectivity." (Rob Mattison & Michael J Sipolt, "The object-oriented enterprise: making corporate information systems work", 1994)

"An enterprise architecture is a snapshot of how an enterprise operates while performing its business processes. The recognition of the need for integration at all levels of an organisation points to a multi-dimensional framework that links both the business processes and the data requirements." (John Murphy & Brian Stone [Eds.], 1995)

"The presence of an enterprise reference architecture aids an enterprise in its ability to understand its structure and processes. Similar to a computer architecture, the enterprise architecture is comprised of several views. The enterprise architecture should provide activity, organizational, business rule (information), resource, and process views of an organization." (Joseph Sarkis et al, "The management of technology within an enterprise engineering framework", Computers & Industrial Engineering, 1995)

"There is no such thing as a standard enterprise architecture. Enterprise design is as unique as a human fingerprint, because enterprise differ in how they function. Adopting an enterprise architecture is therefore one of the most urgent tasks for top executive management. Fundamentally, and information framework is a political doctrine for specifying as to who will have what information to make timely decisions." (Paul A Strassmann, "The politics of information management: policy guidelines", 1995)

"Architecture is that set of design artifacts, or descriptive representations, that are relevant for describing an object, such that it can be produced to requirements (quality) as well as maintained over the period of its useful life (change)." (John A Zachman, "Enterprise architecture: The issue of the century", Database Programming and Design Vol. 10 (3), 1997)

"Issues of quality, timeliness and change are the conditions that are forcing us to face up to the issues of enterprise architecture. The precedent of all the older disciplines known today establishes the concept of architecture as central to the ability to produce quality and timely results and to manage change in complex products. Architecture is the cornerstone for containing enterprise frustration and leveraging technology innovations to fulfill the expectations of a viable and dynamic Information Age enterprise." (John Zachman, "Enterprise Architecture: The Issue of The Century", 1997)

"The documentation of the Enterprise Architecture should include a discussion of principles and goals. For example, the agency's overall management environment, including the balance between centralization and decentralization and the pace of change within the agency, should be clearly understood when developing the Enterprise Architecture. Within that environment, principles and goals set direction on such issues as the promotion of interoperability, open systems, public access, end-user satisfaction, and security." (Franklin D Raines, 1997)

"The Enterprise Architecture is the explicit description of the current and desired relationships among business and management process and information technology. It describes the 'target' situation which the agency wishes to create and maintain by managing its IT portfolio." (Franklin D Raines, 1997)

"An information system architecture typically encompasses an overview of the entire information system - including the software, hardware, and information architectures (the structure of the data that systems will use). In this sense, the information system architecture is a meta-architecture. An enterprise architecture is also a meta-architecture in that it comprises many information systems and their relationships (technical infrastructure). However, because it can also contain other views of an enterprise - including work, function, and information - it is at the highest level in the architecture pyramid. It is important to begin any architecture development effort with a clear definition of what you mean by 'architecture'." (Frank J Armour et al, "A big-picture look at enterprise architectures", IT professional Vol 1 (1), 1999)

"Enterprise architecture is a family of related architecture components. This include information architecture, organization and business process architecture, and information technology architecture. Each consists of architectural representations, definitions of architecture entities, their relationships, and specification of function and purpose. Enterprise architecture guides the construction and development of business organizations and business processes, and the construction and development of supporting information systems." (Gordon B Davis, "The Blackwell encyclopedic dictionary of management information systems"‎, 1999)

"Enterprise architecture is a holistic representation of all the components of the enterprise and the use of graphics and schemes are used to emphasize all parts of the enterprise, and how they are interrelated. [...] Enterprise architectures are used to deal with intra-organizational processes, interorganizational cooperation and coordination, and their shared use of information and information technologies. Business developments, such as outsourcing, partnership, alliances and Electronic Data Interchange, extend the need for architecture across company boundaries." (Gordon B Davis," The Blackwell encyclopedic dictionary of management information systems"‎, 1999)

"An Enterprise Architecture is a dynamic and powerful tool that helps organisations understand their own structure and the way they work. It provides a ‘map’ of the enterprise and a ‘route planner’ for business and technology change. A well-constructed Enterprise Architecture provides a foundation for the ‘Agile’ business." (Bob Jarvis, "Enterprise Architecture: Understanding the Bigger Picture - A Best Practice Guide for Decision Makers in IT", 2003)

"Enterprise Architecture is the discipline whose purpose is to align more effectively the strategies of enterprises together with their processes and their resources (business and IT). Enterprise architecture is complex because it involves different types of practitioners with different goals and practices. Enterprise Architecture can be seen as an art; it is largely based on experience but does not have strong theoretical foundations. As a consequence, it is difficult to teach, to apply, and to support with computer-aided tools." (Alain Wegmann, "On the systemic enterprise architecture methodology", 2003)

"Normally an EA takes the form of a comprehensive set of cohesive models that describe the structure and functions of an enterprise. An important use is in systematic IT planning and architecting, and in enhanced decision-making. The EA can be regarded as the ‘master architecture’ that contains all the subarchitectures for an enterprise. The individual models in an EA are arranged in a logical manner that provides an ever-increasing level of detail about the enterprise: its objectives and goals; its processes and organisation; its systems and data; the technology used and any other relevant spheres of interest." (Bob Jarvis, "Enterprise Architecture: Understanding the Bigger Picture - A Best Practice Guide for Decision Makers in IT", 2003)

"The software architecture of a system or a family of systems has one of the most significant impacts on the quality of an organization's enterprise architecture. While the design of software systems concentrates on satisfying the functional requirements for a system, the design of the software architecture for systems concentrates on the nonfunctional or quality requirements for systems. These quality requirements are concerns at the enterprise level. The better an organization specifies and characterizes the software architecture for its systems, the better it can characterize and manage its enterprise architecture. By explicitly defining the systems software architectures, an organization will be better able to reflect the priorities and trade-offs that are important to the organization in the software that it builds." (James McGovern, "A Practical Guide to Enterprise Architecture", 2004)

"An enterprise architecture is a blueprint for organizational change defined in models [using words, graphics, and other depictions] that describe (in both business and technology terms) how the entity operates today and how it intends to operate in the future; it also includes a plan for transitioning to this future state." (US Government Accountability Office, "Enterprise Architecture: Leadership Remains Key to Establishing and Leveraging Architectures for Organizational Transformation", GAO-06-831, 2006)

"Businesses are themselves a form of design. The design of a business encompasses its strategy, organizational structure, management processes, culture, and a host of other factors. Business designs evolve over time through a process of differentiation, selection, and amplification, with the market as the ultimate arbiter of fitness [...] the three-way coevolution of physical technologies, social technologies, and business designs [...] accounts for the patterns of change and growth we see in the economy." (Eric D Beinhocker, "The Origin of Wealth. Evolution, complexity, and the radical remaking of economics", 2006)

"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)

"Enterprise-architecture is the integration of everything the enterprise is and does. Even the term ‘architecture’ is perhaps a little misleading. It’s on a much larger scale, the scale of the whole rather than of single subsystems: more akin to city-planning than to the architecture of a single building. In something this large, there are no simple states of ‘as-is’ versus ‘to-be’, because its world is dynamic, not static. And it has to find some way to manage the messy confusion of what is, rather than the ideal that we might like it to be." (Tom Graves, "Real Enterprise-Architecture : Beyond IT to the whole enterprise", 2007)

"Enterprise architecture is the organizing logic for business processes and IT infrastructure reflecting the integration and standardization requirements of the company's operating model. The operating model is the desired state of business process integration and business process standardization for delivering goods and services to customers." (Peter Weill, "Innovating with Information Systems Presentation", 2007)

"Enterprise Architecture is conceptually defined as the normative restriction of design freedom. Practically, it is a coherent and consistent set of principles that guide the design, engineering, and implementation of an enterprise. Any strategic initiative of an enterprise can only be made operational through transforming it into principles that guide the design, engineering, and implementation of the new enterprise. Only by applying this notion of Enterprise Architecture can consistency be achieved between the high-level policies (mission, strategies) and the operational business rules of an enterprise." (Jan Dietz & Jan Hoogervorst, "Advances in enterprise engineering", 2008)

"Enterprise architecture is the process of translating business vision and strategy into effective enterprise change by creating, communicating and improving the key requirements, principles and models that describe the enterprise's future state and enable its evolution. The scope of the enterprise architecture includes the people, processes, information and technology of the enterprise, and their relationships to one another and to the external environment. Enterprise architects compose holistic solutions that address the business challenges of the enterprise and support the governance needed to implement them." (Anne Lapkin et al, "Gartner Clarifies the Definition of the Term 'Enterprise Architecture", 2008)

"The goal of enterprise architecture is to create a unified IT environment (standardized hardware and software systems) across the firm or all of the firm's business units, with tight symbiotic links to the business side of the organization (which typically is 90% of the firm […] at least by way of budget). More specifically, the goals are to promote alignment, standardization, reuse of existing IT assets, and the sharing of common methods for project management and software development across the organization." (Daniel Minoli, "Enterprise architecture A to Z: frameworks, business process modeling", 2008)

"Enterprise architecture [is] a coherent whole of principles, methods, and models that are used in the design and realisation of an enterprise's organisational structure, business processes, information systems, and infrastructure. […] The most important characteristic of an enterprise architecture is that it provides a holistic view of the enterprise. […] To achieve this quality in enterprise architecture, bringing together information from formerly unrelated domains necessitates an approach that is understood by all those involved from those different domains." (Marc Lankhorst, "Enterprise Architecture at Work: Modelling, Communication and Analysis", 2009)

"Enterprise engineering is rooted in both the organizational sciences and the information system sciences. In our current understanding, three concepts are paramount to the theoretical and practical pursuit of enterprise engineering: enterprise ontology, enterprise architecture, and enterprise governance." (Erik Proper, "Advances in Enterprise Engineering II", 2009)

"Enterprise architecture (EA) is the definition and representation of a high-level view of an enterprise‘s business processes and IT systems, their interrelationships, and the extent to which these processes and systems are shared by different parts of the enterprise. EA aims to define a suitable operating platform to support an organisation‘s future goals and the roadmap for moving towards this vision." (Toomas Tamm et al, "How Does Enterprise Architecture Add Value to Organisations?", Communications of the Association for Information Systems Vol. 28 (10), 2011)

"Enterprise Architecture presently appears to be a grossly misunderstood concept among management. It is NOT an Information Technology issue. It is an ENTERPRISE issue. It is likely perceived to be an Information Technology issue as opposed to a Management issue for two reasons: (1) Awareness of it tends to surface in the Enterprise through the Information Systems community. (2) Information Technology people seem to have the skills to do Enterprise Architecture if any Enterprise Architecture is being or is to be done." (John A Zachman, 2011)

"The enterprise architecture delineates the data according to the inherent structure within the organization rather than by organizational function or use. In this manner it makes the data dependent on business objects but independent of business processes." (Charles D Tupper, "Data Architecture: From Zen to Reality", 2011)

"Enterprise architecture (EA) is a discipline for proactively and holistically leading enterprise responses to disruptive forces by identifying and analyzing the execution of change toward desired business vision and outcomes. EA delivers value by presenting business and IT leaders with signature-ready recommendations for adjusting policies and projects to achieve target business outcomes that capitalize on relevant business disruptions. EA is used to steer decision making toward the evolution of the future state architecture." (Gartner)

"Enterprise Architecture is not a method, principle or doctrine – It is a way of thinking enabled by patterns, frameworks, standards etc. essentially seeking to align both the technology ecosystem and landscape with the business trajectory driven by both the internal and external forces." (Daljit R Banger)

07 April 2016

Strategic Management: Disaster Recovery (Definitions)

"The ability of an organization to respond to a disaster or an interruption in services by implementing a disaster recovery plan to stabilize and restore the organization’s critical functions." (Disaster Recovery Journal & DRI, 2007)

"A process that is required after a major business disruption caused by the occurrence of a disaster." (Allen Dreibelbis et al, "Enterprise Master Data Management", 2008)

"The process of regaining access to data, hardware, or software after a computer based human or natural disaster." (Dwayne Stevens & David T Green, "A Strategy for Enterprise VoIP Security", 2009)

"This is a process that describes how to recover the IT environment after a disaster such as a fire destroying the IT building." (Martin Oberhofer et al, "The Art of Enterprise Information Architecture", 2010)

"the ability of an infrastructure to resume operations after a disaster. Disaster Recovery differentiates from Business Continuity Planning in that Disaster Recovery is primarily associated with resources and facilities, while BCP is primarily associated with processes." (Bill Holtsnider & Brian D Jaffe, "IT Manager's Handbook" 3rd Ed., 2012)

"The coordinated activity to enable the recovery of IT (and other) systems due to a disruption." (Sally-Anne Pitt, "Internal Audit Quality", 2014)

"The planning, preparation, and testing set of activities used to help a business plan for and recover from any major business interruption and to resume normal business operations." (Robert F Smallwood, "Information Governance: Concepts, Strategies, and Best Practices", 2014)

"the process adopted by the IT organization in order to bring systems back up and running." (Manish Agrawal, "Information Security and IT Risk Management", 2014)

"An area of security planning that aims to protect an organization from the effects of significant negative events. DR allows an organization to maintain or quickly resume mission-critical functions following a disaster." (William Stallings, "Effective Cybersecurity: A Guide to Using Best Practices and Standards", 2018)

"The planning for and/or the implementation of a strategy to respond to such failures as a total infrastructure loss, or the failure of computers (CommServe server, MediaAgent, client, or application), networks, storage hardware, or media. A disaster recovery strategy typically involves the creation and maintenance of a secure disaster recovery site, and the day-to-day tasks of running regular disaster recovery backups." (CommVault, "Documentation 11.20", 2018)

"Is an organization's method of regaining access and functionality to its IT infrastructure, to continue the delivery of services that support business processes, after a disruptive incident." (Nelson Russo & Leonilde Reis, "Methodological Approach to Systematization of Business Continuity in Organizations", 2021)

25 October 2008

GSCM: Supply Chain Management (Definitions)

"The practice of designing and optimizing supply chain business processes to provide superior service to those customers who drive the bulk of one’s profit." (Steve Williams & Nancy Williams, "The Profit Impact of Business Intelligence", 2007)

"The management of business units in the provision of products and services. It spans the movement and storage of raw materials, work-in-process inventory, and finished goods from point-of-origin to point-of-consumption." (Tony Fisher, "The Data Asset", 2009)

"Software tools or modules used in the planning, scheduling, and control of supply chain transactions (spanning raw materials to finished goods from point of origin to point of consumption), managing supplier relationships, and controlling associated business processes." (Janice M Roehl-Anderson, "IT Best Practices for Financial Managers", 2010)

"To provision products or services to a network of interconnected businesses." (Martin Oberhofer et al, "The Art of Enterprise Information Architecture", 2010)

"The management of all of the activities along the supply chain, from suppliers, to internal logistics within a company, to distribution, to customers. This includes ordering, monitoring, and billing." (Linda Volonino & Efraim Turban, "Information Technology for Management 8th Ed", 2011)

"The process of ensuring optimal flow of inputs and outputs." (DAMA International, "The DAMA Dictionary of Data Management", 2011)

"In basic terms, supply chain is the system of organizations, people, activities, information and resources involved in moving a product or service from supplier to customer. The configuration and management of supply chain operations is a key way companies obtain and maintain a competitive advantage." (Alan D Smith, "Lean Principles and Optimizing Flow: Interdisciplinary Case Studies of Best Business Practices", 2019)

"Supply chain management (SCM) refers to the processes of creating and fulfilling demands for goods and services. It encompasses a trading partner community engaged in the common goal of satisfying end customers." (Gartner)

16 July 2007

Software Quality Assurance: White-Box Test/Testing (Definitions)

"An implementation-based test, in contrast to a specification-based test" (Johannes Link & Peter Fröhlich, "Unit Testing in Java", 2003)

"This test is derived knowing the inner structure of the software and based on the program code, design, interface descriptions, and so on. White-box tests are also called 'structure based tests'." (Lars Dittmann et al, "Automotive SPICE in Practice", 2008)

"Any technique used to derive and/or select test cases based on an analysis of the internal structure of the test object." (Tilo Linz et al, "Software Testing Foundations" 4th Ed., 2014)

"This kind of testing requires you to look at the code and see how it works, so you can test individual blocks and choices within the code." (Matt Telles, "Beginning Programming", 2014)

"White box test design technique in which the test cases are designed using the internal structure of the test object. Completeness of such a test is judged using coverage of structural elements (for example, branches, paths, data). General term for control- or data-flow-based test." (Tilo Linz et al, "Software Testing Foundations", 4th Ed., 2014)

"A software testing methodology that examines the code of an application. This contrasts with black box testing, which focuses only on inputs and outputs of an application." (Mike Harwood, "Internet Security: How to Defend Against Attackers on the Web" 2nd Ed., 2015)

"A test designed by someone who knows how the code works internally. That person can guess where problems may lie and create tests specifically to look for those problems." (Rod Stephens, "Beginning Software Engineering", 2015)

"Procedure to derive and select test cases based on an analysis of the internal structure of a component or system." (Standard Glossary, "ISTQB", 2015)

"Testing based on an analysis of the internal structure of the component or system. " (Standard Glossary, "ISTQB", 2015)

30 June 2007

Software Engineering: Black Box (Definitions)

"Objects or chunks of code that can function independently, where changes made to one part of a piece of software will not affect others." (Gavin Powell, "Beginning Database Design", 2006)

"A component or device with an input and an output, whose inner workings need not be understood by or accessible to the user." (Judith Hurwitz et al, "Service Oriented Architecture For Dummies" 2nd Ed., 2009)

"A risk model that lacks transparency of its specific risk assumptions, measures, and findings. These models sometimes create as many risks for the organization as they are meant to manage." (Annetta Cortez & Bob Yehling, "The Complete Idiot's Guide® To Risk Management", 2010)

"A component or device with an input and an output whose inner workings need not be understood by or accessible to the user." (Marcia Kaufman et al, "Big Data For Dummies", 2013)

"Is a metaphor describing how people are unable to see or understand how technologies work and is particularly used to characterize the lack of understanding of how an algorithm works. While we can understand the outputs of artificial intelligence (AI) - in terms of recommendations, decisions and so on - the processes to achieve them are too complicated for us to understand. Concerns about the black box nature of AI center on its apparent lack of accountability, potential unseen biases and the inability to have clear visibility into what is driving an AI’s potentially life-changing decisions." (Accenture)

25 June 2007

Software Engineering: Service-Oriented Architecture (Definition)

"A technology framework to support the design, development, and deployment of diverse business applications in a loosely coupled way. The goal of SOA is to encourage reuse of both data and functionality via the use of units of work (services) that are made available to different business processes across the enterprise." (Jill Dyché & Evan Levy, "Customer Data Integration", 2006)

"SOA is an architectural paradigm for dealing with business processes distributed over a large and heterogeneous landscape of existing and new systems that are under the control of different owners." (Nicolai M Josuttis, "SOA in Practice", 2007)

"An architectural style for creating an enterprise architecture that exploits the principles of service orientation to achieve a tighter relationship between the business and the information systems that support the business." (Tilak Mitra et al, "SOA Governance", 2008)

"A method for organizing a company's entire information system functions so all information components are viewed as services that are provided to the organization." (Jan L Harrington, "Relational Database Design and Implementation" 3rd Ed., 2009)

"A way of designing software applications for reusability and flexibility. It involves designing loosely coupled software components called services." (John Goodson & Robert A Steward, "The Data Access Handbook", 2009)

"An architectural style in which software systems are modular and some components (service providers) are distributable, discoverable, substitutable, and shareable." (W Roy Schulte & K Chandy, "Event Processing: Designing IT Systems for Agile Companies", 2009)

"An architecture that enables IT resources to be made available to other participants in a network as independent services that are accessed in a standardized way without knowledge of the underlying platform implementation." (David G Hill, "Data Protection: Governance, Risk Management, and Compliance", 2009)

"An IT infrastructure that allows disparate applications to exchange data and use consistent processes as they interact with each other. SOA is the foundation architecture for data services." (Tony Fisher, "The Data Asset", 2009)

"An architectural style to enable loosely coupled systems and promote re-usable services based on open standards." (Martin Oberhofer et al, "The Art of Enterprise Information Architecture", 2010)

"Defines a development paradigm which has loosely coupled, distributed modules called 'services' as its build blocks. Services offer clear interfaces through which service consumers can discover and make use of them." (Carlos Kamienski et al, "Managing the Future Internet: Services, Policies and Peers", 2010)

"In its most general sense, an approach for architectures where the interfaces are services. In a more specific sense, it is an architectural style for dealing with business processes distributed over a large and heterogeneous landscape of existing and new systems that are under the control of different owners." (David Lyle & John G Schmidt, "Lean Integration", 2010)

"The software design and implementation architecture of loosely coupled, coarse-grained, reusable services that can be integrated with each other through a wide variety of platform-independent service interfaces." (Alex Berson & Lawrence Dubov, "Master Data Management and Data Governance", 2010)

"An architectural concept that defines the use of services to support a variety of business needs. In SOA, existing IT assets (called services) are reused and reconnected rather than the more time consuming and costly reinvention of new systems." (Linda Volonino & Efraim Turban, "Information Technology for Management" 8th Ed, 2011)

"An application architecture in which all functions, or services, are created with invokable interfaces that are called to perform business processes." (Craig S Mullins, "Database Administration", 2012)

"An approach to building applications that implements business processes or services by using a set of loosely coupled black-box components orchestrated to deliver a well-defined level of service." (Marcia Kaufman et al, "Big Data For Dummies", 2013)

"A software design and software architecture design pattern independent of any vendor, product, or technology and based on discrete pieces of software providing application functionality as services to other applications. For instance, this software design defines how two computing entities, such as programs, interact in such a way as to enable one entity to perform a unit of work on behalf of another entity." (Jim Davis & Aiman Zeid, "Business Transformation: A Roadmap for Maximizing Organizational Insights", 2014)

"An information technology architecture that separates infrastructure, applications, and data into layers." (Robert F Smallwood, "Information Governance: Concepts, Strategies, and Best Practices", 2014)

"Style of architecture based on the concept of service, designed to simplify interactions between architecture blocks while providing the system with significant flexibility." (Gilbert Raymond & Philippe Desfray, "Modeling Enterprise Architecture with TOGAF", 2014)

"A design similar to a component-based architecture except the pieces are implemented as services." (Rod Stephens, "Beginning Software Engineering", 2015)

"Service-Oriented Architecture expresses an architecture that define the use of software services." (Laura C Rodriguez-Martinez et al, "Service-Oriented Computing Applications (SOCA) Development Methodologies: A Review of Agility-Rigor Balance", 2021)

"A multitier architecture relying on services that support computer-to-computer interaction over a network." (Oracle, "Oracle Database Concepts")

"Service-oriented architecture (SOA) is a design paradigm and discipline that helps IT meet business demands. Some organizations realize significant benefits using SOA including faster time to market, lower costs, better application consistency and increased agility. SOA reduces redundancy and increases usability, maintainability and value. This produces interoperable, modular systems that are easier to use and maintain." (Gartner) 

"Service‑oriented architecture (SOA) is an architectural approach to designing applications around a collection of independent services. A service can be any business functionality that completes an action and provides a specific result, such as processing a customer order or compiling an inventory report." (NGINX) [source

05 June 2007

Software Engineering: Implementation (Definitions)

"Carrying out of planned activity." (Timothy J  Kloppenborg et al, "Project Leadership", 2003)

"(1) The process of translating a design into hardware components, software components, or both. Includes detailed design, coding (for software), fabrication and inspection (for hardware), and unit (component) test. For software, detailed design and coding are usually combined. (2) The result of the process in (1). Also called construction." (Richard D Stutzke, "Estimating Software-Intensive Systems: Projects, Products, and Processes", 2005)

"The process of creating software from a design of that software. A physical database is an implementation of a database model." (Gavin Powell, "Beginning Database Design", 2006)

"Deploying a software solution in a company is accomplished through an iterative sequence of activities. These activities are bundled into an implementation project." (Janice M Roehl-Anderson, "IT Best Practices for Financial Managers", 2010)

"All organizational activities involved in the introduction, management, and acceptance of technology to support one or more organizational processes." (Linda Volonino & Efraim Turban, "Information Technology for Management" 8th Ed., 2011)

"Installing and converting to use of a software application." (DAMA International, "The DAMA Dictionary of Data Management", 2011)

"Execution or fulfillment of a plan or design; putting into action." (Joan C Dessinger, "Fundamentals of Performance Improvement" 3rd Ed., 2012)

"How a piece of code actually goes about doing its job. Users of the code should not count on implementation details staying the same unless they are part of the published interface." (Jon Orwant et al, "Programming Perl" 4th Ed., 2012)

"The activity of making the essential requirements work in the real world." (James Robertson et al, "Complete Systems Analysis: The Workbook, the Textbook, the Answers", 2013)

"When used by programmers, this term usually means writing the code. When used by managers, this often means deployment." (Rod Stephens, "Beginning Software Engineering", 2015)

30 April 2007

Software Engineering: User Story (Definitions)

"Informal description of a functional requirement or product property in XP. A user story serves as the basis for acceptance tests that formally check whether the product complies with the described function or property." (Johannes Link & Peter Fröhlich, "Unit Testing in Java", 2003)

"A requirement formulated into a small number of sentences in the user’s natural language. User stories are common in Extreme Programming (XP)." (Bruce P Douglass, "Real-Time Agility", 2009)

"A short narrative that explains who wants something to happen in a piece of software, what they want, and why they want it." (Jon Radoff, "Game On: Energize Your Business with Social Media Games", 2011)

"A narrative description of a software requirement, function, feature, or quality attribute presented as a narrative of desired user interactions with a software system." (Project Management Institute, "Software Extension to the PMBOK® Guide" 5th Ed., 2013)

"A short story explaining how the system will let the user do something." (Rod Stephens, "Beginning Software Engineering", 2015)

"A tool used in Agile software development to capture a description of a software feature from an end-user perspective. The user story describes the type of user, what he or she wants, and why. A user story helps to create a simplified description of a requirement." (Pierre Pureur & Murat Erder, "Continuous Architecture", 2015)

"Description of the functionality that a product should have, written from the perspective of the user. A very simplified and focused requirement description." (Pamela Schure & Brian Lawley, "Product Management For Dummies", 2017)

"User stories are short, text-based descriptions of functionality required by a stakeholder group." (Cate McCoy & James L Haner, "CAPM Certified Associate in Project Management Practice Exams", 2018)

"A high-level user or business requirement commonly used in agile software development, typically consisting of one or more sentences in the everyday or business language capturing what functionality a user needs, any non-functional criteria, and also includes acceptance criteria. " (ISTQB)

11 April 2007

Software engineering: Open Source (Definitions)

"A style of licensing software based on the principle that anyone should be able to copy, use, and improve upon a program's source code, although other restrictions may apply." (Bill Pribyl & Steven Feuerstein, "Learning Oracle PL/SQL", 2001)

"A movement in the software industry that makes programs available along with the source code used to create them so others can inspect and modify how programs work." (Judith Hurwitz et al, "Service Oriented Architecture For Dummies" 2nd Ed., 2009)

"Software provided with all the source code available, enabling developers to contribute changes. Most open software is available for free; although, many companies also license commercial software on an open basis." (Jon Radoff, "Game On: Energize Your Business with Social Media Games", 2011)

"software created by the worldwide user community. Open source software is generally free, can be modified by anyone, and usually doesn't have any single “owner.” Outsourcing: the process of a company arranging with one or more third parties to provide services that the first company could provide but chose not to." (Bill Holtsnider & Brian D Jaffe, "IT Manager's Handbook" 3rd Ed, 2012)

"A movement in the software industry that makes programs available along with the source code used to create them so that others can inspect and modify how programs work. Changes to source code are shared with the community at large." (Marcia Kaufman et al, "Big Data For Dummies", 2013)

"Software is open source if the source code is available to anyone who has access to the software." (Jules H Berman, "Principles of Big Data: Preparing, Sharing, and Analyzing Complex Information", 2013)

"A copyright or licensing system that, compared with conventional commercial licensing schemes, allows wide use and modification of the material." (Mike Harwood, "Internet Security: How to Defend Against Attackers on the Web" 2nd Ed., 2015)

"A program in which the source code is available to the general public for use or modification from its original design free of charge. Common Open Source licenses include the GNU General Public License, GNU Library General Public License, Artistic License, BSD license, Mozilla Public License, and other similar licenses listed at http://www.opensource.org/licenses. Open Source code is typically created as a collaborative effort in which programmers improve on the code and share the changes within the community." (James R Kalyvas & Michael R Overly, "Big Data: A Businessand Legal Guide", 2015)

[Open source platform:] "refers to any program whose source code is made available for use or modification by other users or developers. An open source platform is usually developed as a public collaboration and made freely available." (Accenture)

"Software for which the source code is available under an open licence. Not only can the software be used for free, but users with the necessary technical skills can inspect the source code, modify it and run their own versions of the code, helping to fix bugs, develop new features, etc. Some large open source software projects have thousands of volunteer contributors. The Open Definition was heavily based on the earlier Open Source Definition, which sets out the conditions under which software can be considered open source." (Open Data Handbook)

08 April 2007

Software Engineering: Middleware (Definitions)

"An intermediate layer that may consist of either hardware or software that facilitates interaction across dissimilar hardware and network environments." (Microsoft Corporation, "Microsoft SQL Server 7.0 Data Warehouse Training Kit", 2000)

"A general term for any software that allows two separate and usually already existing programs to exchange data without the need for custom coding." (Richard D Stutzke, "Estimating Software-Intensive Systems: Projects, Products, and Processes", 2005)

"Multipurpose software that lives at a layer between the operating system and application in distributed computing environments." (Judith Hurwitz et al, "Service Oriented Architecture For Dummies" 2nd Ed., 2009)

"Computer software or hardware that connects other software components or systems. This technology evolved to provide for interoperability in support of the move to coherent distributed architectures, which are used most often to support complex distributed applications. It includes Web servers, application servers, and similar tools that support application development and delivery. Middleware is especially integral in managing and optimizing a system-of-systems at the enterprise level. Middleware sits “in the middle” between applications that may be working on different operating systems. It is similar to the middle layer of a three-tier single-system architecture, except that it is stretched across multiple systems or applications. " (David Lyle & John G Schmidt, "Lean Integration", 2010)

"Software that connects software components or applications, functioning as a conversion or translation layer or a consolidator and integrator. Middleware enables one application to communicate with another that runs on a different platform or comes from a different vendor, and it allows multiple processes running on one or more machines to interact across a network." (Janice M Roehl-Anderson, "IT Best Practices for Financial Managers", 2010)

"The term refers to software services that are placed between applications and database servers to make the data interchange transparent and efficient." (Paulraj Ponniah, "Data Warehousing Fundamentals for IT Professionals", 2010)

"Software that allows applications to interact across hardware and network environments." (DAMA International, "The DAMA Dictionary of Data Management", 2011)

"software that connects other software." (Bill Holtsnider & Brian D Jaffe, "IT Manager's Handbook" 3rd Ed., 2012)

"Software that connects two otherwise separate applications." (Craig S Mullins, "Database Administration", 2012)

"Software that sits between two or more types of software and translates information between them. Middleware can cover a broad spectrum of software and generally sits between an application and an operating system, a network operating system, or a database management system." (Microsoft, "SQL Server 2012 Glossary", 2012)

15 March 2007

Software Engineering: Component Model (Definitions)

"A component diagram and the corresponding documentation for that diagram. A component diagram shows the software components, their interrelationships, interactions, and public interfaces that comprise the software for a small component, an application, or the software architecture for an entire enterprise." (Scott W Ambler & Larry L Constantine, "The Unified Process Construction Phase: Best Practices for Completing the Unified Process", 2000)

"A set of standards for component implementation, documentation and deployment." (Ian Sommerville, "Software Engineering" 8th Ed., 2007)

"Component models provide the basis for middleware to support executing components." (Ian Sommerville, "Software Engineering" 8th Ed., 2007)

"A component model is a specification of patterns for component implementation, documentation, deployment, and usage." (Elthon Oliveira et al, "Formal Modeling and Verification of Virtual Community Systems", Encyclopedia of Networked and Virtual Organizations, 2008)

"Structure adopted to develop any software element of a given application or library." (Emmanuel Dubois et al, "Modelling and Simulation of Mobile Mixed Systems", 2008)

"The MDM Component Model refers to the set of technical architecture diagrams and associated descriptions that provide lower-level specifications about the MDM Reference Architecture." (Allen Dreibelbis et al, "Enterprise Master Data Management", 2008)

"Describes the structure of specific types of content, for example, a recipe, a value proposition, or an overview. Component models can be used over and over again with different content. The structure remains the same; only the content changes." (Charles Cooper & Ann Rockley, "Managing Enterprise Content: A Unified Content Strategy" 2nd Ed., 2012)

24 February 2007

Software Engineering: Software Engineering (Definitions)

"Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines." (Peter Naur & Brian Randell, 1968)

“[Software engineering is the] establishment and use of sound engineering principles to obtain economically software that is reliable and works on real machines efficiently. (Friedrich Bauer, "Software Engineering", Information Processing, 1972) 

"(1) The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. (2) The study of approaches as in (1)." (Sandy Shrum et al, "CMMI®: Guidelines for Process Integration and Product Improvement", 2003)

"(1) The disciplined and systematic application of methods, techniques, and tools to the development, operation, and maintenance of software and software-intensive systems. (2) The building of large, complex software-intensive systems by teams of engineers and programmers. (3) The study of the activities defined in (1) and (2)." (Richard D Stutzke, "Estimating Software-Intensive Systems: Projects, Products, and Processes", 2005)

"A discipline that advocates a systematic approach of developing high-quality software on a large-scale while taking into account the factors of sustainability and longevity, as well as, organizational constraints of time and resources." (Pankaj Kamthan, "Pair Modeling", 2008)

"Application of a systematic, disciplined, quantifiable approach to the development of Information Systems/Software." (Leonor Teixeira et al, "Web-Enabled System Design for Managing Clinical Information", 2008)

"Techniques, models, and processes to develop quality software" (M J Escalona & G Aragón, "The Use of Metamodels in Web Requirements to Assure the Consistence", 2008)

"To engineer the development of software comprises a rigorous analysis and design of the product, the application of formal methods in the development process an in the resulting product description, and modularization of the relevant parts of the software to allow for malleability and for reusability." (Alke Martens & Andreas Harrer, "Software Engineering in e-Learning Systems", 2008)

"It is the computer science discipline concerned with creating and maintaining software applications by applying technologies and practices from computer science, project management, engineering, application domains, and other fields." (Graciela D S Hadad & Jorge H Doorn, "Creating Software System Context Glossaries", 2009)

"Software engineering is a well-established discipline that groups together a set of techniques and methodologies for improving software quality and structuring the development process." (Ghita K Mostéfaoui, "Software Engineering for Mobile Multimedia: A Roadmap", 2009)

"The software engineering discipline covers the development of software systems. Software engineers focus on applying systematic, disciplined, and quantifiable approaches to the development, operation, and maintenance of software." (Rick Gibson, "Software and Systems Engineering Integration", 2009)

"A discipline that advocates a systematic approach of developing high-quality software on a large-scale while taking into account the factors of sustainability and longevity, as well as, organizational constraints of resources." (Pankaj Kamthan, "A Social Web Perspective of Software Engineering Education", 2010)

"Is a systematic and disciplined approach to developing software, which applies both computer science and engineering principles and practices to the creation, operation and maintenance of software systems." (Christian Scholz et al, "From the Lab to the Factory Floor: Engineering Software for Wireless Sensor Networks", 2012)

"Is the study and application of engineering to the design, development, and maintenance of software. In short, the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software." (Rosanna Costaguta, "Data Mining Applications in Computer-Supported Collaborative Learning", 2015)

"An engineering discipline that involves with all aspect of software development that applies engineering approaches in order to deliver high quality software products." (Seyed R Shahamiri, "The Challenges of Teaching and Learning Software Programming to Novice Students", 2018)

"The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software; that is, the application of engineering to software." (Tamer Abdou et al, "Developing a Glossary for Software Projects", Encyclopedia of Information Science and Technology, Fourth Edition, 2018)

"Software engineering is the discipline and best practices used in developing software." (Alex Thomas, "Natural Language Processing with Spark NLP", 2020)

"The application of engineering to the development of software in a systematic method." (Shanmuganathan Vasanthapriyan & Kalpani M U Arachchi, "Effectiveness of Scrum and Kanban on Agile-Based Software Maintenance Projects", 2020)

"The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches." (Antonio A M Costa, "Disciplined Teams vs. Agile Teams: Differences and Similarities in Software Development", 2021)

"The systematic application of engineering approaches to the development of software." (Jan Bosch et al, "Engineering AI Systems: A Research Agenda", 2021)

"It is the establishment and use of robust, targeted engineering principles to obtain economic, reliable, efficient software that satisfies the user needs." (Mirna Muñoz, "Boosting the Competitiveness of Organizations With the Use of Software Engineering", 2021)

"The application of engineering to the development of software in a systematic method." (Kamalendu Pal & Bill Karakostas, "Software Testing Under Agile, Scrum, and DevOps", 2021)

"The application and the study of systematic, disciplined, quantifiable approaches to the development, operation, and maintenance of software." (IEEE 610.12)

16 February 2007

Software Engineering: Refactoring (Definitions)

"Rebuilding and restructuring code in very small steps without changing the behavior visible from outside." (Johannes Link & Peter Fröhlich, "Unit Testing in Java", 2003)

"Revising software design and code to improve their structure, without changing the functions and behavior of the software, in order to facilitate future modification and enhancement of the software. Used in many agile methods. Refactoring is a broader term than code restructuring." (Richard D Stutzke, "Estimating Software-Intensive Systems: Projects, Products, and Processes", 2005)

"A programming technique that enables you to evolve your code slowly over time, to take an evolutionary approach to programming." (Pramod J Sadalage & Scott W Ambler, "Refactoring Databases: Evolutionary Database Design", 2006)

"A simple change to source code that retains its behavioral semantics: You neither add functionality when you are refactoring nor take it away. A refactoring merely improves the design of your code - nothing more and nothing less." (Pramod J Sadalage & Scott W Ambler, "Refactoring Databases: Evolutionary Database Design", 2006)

"Refactoring is used to restructure existing software regarding aspects like modularity, flexibility, and extensibility, without changing the main software functionality." (Alke Martens & Andreas Harrer, "Software Engineering in e-Learning Systems", Encyclopedia of Information Technology Curriculum Integration, 2008)

"To clarify and simplify computer code." (Michael Coles & Rodney Landrum, , "Expert SQL Server 2008 Encryption", 2008)

"A structural transformation that provides a systematic way of eradicating the undesirable(s) from an artifact while preserving its behavioral semantics." (Pankaj Kamthan, "Pattern-Oriented Use Case Modeling", 2009)

[database refactoring:] "It indicates little changes in the database schema which preserve both the meaning of the data and the behaviors of the applications. These changes improve the quality of the design." (Vincenzo Deufemia et al, "Evolutionary Database: State of the Art and Issues", 2009)

"(1) Refactoring (noun): A change made to the internal structure of software to make it easier to understand and cheaper to modify without changing its observable behavior. (2) Refactor (verb): To restructure software by applying a series of refactorings without changing its observable behavior." (Jay Fields et al, Refactoring: Ruby Edition, 2010)

"Refactoring is the process of changing a software system in such a way that it does not alter the external behavior of the code yet improves its internal structure." (Jay Fields et al, Refactoring: Ruby Edition, 2010)

"A (software) refactoring is an explicit, replicable, and beneficial activity that transforms the structure or representation of a software component without changing its meaning (i.e., behavior). The goal of software refactoring is the improvement of the quality (e.g., maintainability) of the software system." (Jörg Rech et al, "Knowledge Patterns" [in "Encyclopedia of Knowledge Management" 2nd Ed.], 2011)

"Restructuring a program to make it more reliable, easier to read, or easier to maintain without changing its outward behavior." (Rod Stephens, "Stephens' Visual Basic® Programming 24-Hour Trainer", 2011)

"Reorganizing code to make it better suited for some purpose, such as parallelization." (Michael McCool et al, "Structured Parallel Programming", 2012)

"The act of changing code to improve some aspect of it, such as how it does something, without changing what it does." (Mark C Lewis, "Introduction to the Art of Programming Using Scala", 2012)

"A process by which existing code or processes are reengineered or restructured to improve nonfunctional aspects without impacting outcomes. It is usually done to make existing assets more manageable, efficient, and maintainable." (Evan Stubbs, "Delivering Business Analytics: Practical Guidelines for Best Practice", 2013)

"To restructure software code without altering its behavior for the purpose of improving quality attributes, easing future extension or adaptation, or adhering to an architectural style." (Project Management Institute, "Software Extension to the PMBOK Guide" 5th Ed, 2013)

"The process of rearranging and rewriting code to make it easier to understand, debug, and maintain." (Rod Stephens, "Beginning Software Engineering", 2015)

"A product quality technique whereby the design of a product is improved by enhancing its maintainability and other desired attributes without altering its expected behavior." (PMI, "A Guide to the Project Management Body of Knowledge" 6th Ed., 2017)

"Refactoring is the activity of improving the internal structure or operation of a code or component without changing its external behavior." (Dean Leffingwell, "SAFe 4.5 Reference Guide: Scaled Agile Framework for Lean Enterprises" 2nd Ed., 2018)

01 February 2007

Software Engineering: Quality Assurance (Definitions)

"Testing and evaluation of a system to ensure correct results." (Microsoft Corporation, "Microsoft SQL Server 7.0 Data Warehouse Training Kit", 2000)

"Group of techniques and methods to assure that the developed software is according to system requirements" (M J Escalona & G Aragón, "The Use of Metamodels in Web Requirements to Assure the Consistence", 2008)

"A process for evaluating project performance in relation to the specified standard of quality." (Bonnie Biafore, "Successful Project Management: Applying Best Practices and Real-World Techniques with Microsoft® Project", 2011)

"The process of ensuring that the development effort will result in the desired product. Quality assurance focuses on defect prevention. Typical quality assurance tools are check lists, project audits, and documented standards. QA activities typically occur up-front in a project." (DAMA International, "The DAMA Dictionary of Data Management", 2011)

"The practice of improving, auditing, and stabilizing a product, service, or other result based on quality requirements and the results of quality control measurements. The focus of QA is to avoid or minimize defects or errors." (Bonnie Biafore & Teresa Stover, "Your Project Management Coach: Best Practices for Managing Projects in the Real World", 2012)

"A set of activities that assess adherence to, and the adequacy of the software processes used to develop and modify software products. SQA also determines the degree to which the desired results from software quality control are being obtained." (Project Management Institute, "Software Extension to the PMBOK® Guide" 5th Ed., 2013)

"Software quality assurance is defined as follows: (1) a planned and systematic pattern of all actions necessary to provide adequate confidence that an item or product conforms to established technical requirements; and (2) a set of activities designed to evaluate the process by which products are developed or manufactured." (Kamalendu Pal & Bill Karakostas, "Software Testing Under Agile, Scrum, and DevOps", 2021)

"Part of quality management focused on providing confidence that quality requirements will be fulfilled." (ISO 9000)

26 October 2006

Robert C Martin - Collected Quotes

"A system that is comprehensively tested and passes all of its tests all of the time is a testable system. That’s an obvious statement, but an important one. Systems that aren’t testable aren’t verifiable. Arguably, a system that cannot be verified should never be deployed." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"Any comment that forces you to look in another module for the meaning of that comment has failed to communicate to you and is not worth the bits it consumes." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008) 

"Clean code is focused. Each function, each class, each module exposes a single-minded attitude that remains entirely undistracted, and unpolluted, by the surrounding details."  (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"Clean code is not written by following a set of rules. You don’t become a software craftsman by learning a list of heuristics. Professionalism and craftsmanship come from values that drive disciplines." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"Code formatting is important. It is too important to ignore and it is too important to treat religiously. Code formatting is about communication, and communication is the professional developer’s first order of business."  (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"Duplication is the primary enemy of a well-designed system. It represents additional work, additional risk, and additional unnecessary complexity."  (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"Every system is built from a domain-specific language designed by the programmers to describe that system. Functions are the verbs of that language, and classes are the nouns."  (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"Good software designs accommodate change without huge investments and rework. When we use code that is out of our control, special care must be taken to protect our investment and make sure future change is not too costly."  (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"If the discipline of requirements specification has taught us anything, it is that well-specified requirements are as formal as code and can act as executable tests of that code!"  (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"In an ideal system, we incorporate new features by extending the system, not by making modifications to existing code." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"Indeed, the ratio of time spent reading versus writing is well over 10 to 1. We are constantly reading old code as part of the effort to write new code. [… Therefore,] making it easy to read makes it easier to write." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008) 

"It is a myth that we can get systems 'right the first time'. Instead, we should implement only today’s stories, then refactor and expand the system to implement new stories tomorrow. This is the essence of iterative and incremental agility. Test-driven development, refactoring, and the clean code they produce make this work at the code level." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"It is not enough for code to work. Code that works is often badly broken. Programmers who satisfy themselves with merely working code are behaving unprofessionally. They may fear that they don’t have time to improve the structure and design of their code, but I disagree. Nothing has a more profound and long-term degrading effect upon a development project than bad code." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"It is unit tests that keep our code flexible, maintainable, and reusable. The reason is simple. If you have tests, you do not fear making changes to the code! Without tests every change is a possible bug."  (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"Nothing has a more profound and long-term degrading effect upon a development project than bad code. Bad schedules can be redone, bad requirements can be redefined. Bad team dynamics can be repaired. But bad code rots and ferments, becoming an inexorable weight that drags the team down." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"One difference between a smart programmer and a professional programmer is that the professional understands that clarity is king. Professionals use their powers for good and write code that others can understand." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008) 

"One of the best ways to ruin a program is to make massive changes to its structure in the name of improvement. Some programs never recover from such “improvements.” The problem is that it’s very hard to get the program working the same way it worked before the 'improvement'." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"Refactoring is a lot like solving a Rubik’s cube. There are lots of little steps required to achieve a large goal. Each step enables the next." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"Standards make it easier to reuse ideas and components, recruit people with relevant experience, encapsulate good ideas, and wire components together. However, the process of creating standards can sometimes take too long for industry to wait, and some standards lose touch with the real needs of the adopters they are intended to serve." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"The majority of the cost of a software project is in long-term maintenance. In order to minimize the potential for defects as we introduce change, it’s critical for us to be able to understand what a system does. As systems become more complex, they take more and more time for a developer to understand, and there is an ever greater opportunity for a misunderstanding. Therefore, code should clearly express the intent of its author. The clearer the author can make the code, the less time others will have to spend understanding it. This will reduce defects and shrink the cost of maintenance." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"The problem isn’t the simplicity of the code but the implicity of the code (to coin a phrase): the degree to which the context is not explicit in the code itself." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"There are two parts to learning craftsmanship: knowledge and work. You must gain the knowledge of principles, patterns, practices, and heuristics that a craftsman knows, and you must also grind that knowledge into your fingers, eyes, and gut by working hard and practicing." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"We do not want to expose the details of our data. Rather we want to express our data in abstract terms. This is not merely accomplished by using interfaces and/or getters and setters. Serious thought needs to be put into the best way to represent the data that an object contains. The worst option is to blithely add getters and setters." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"When people look under the hood, we want them to be impressed with the neatness, consistency, and attention to detail that they perceive. We want them to be struck by the orderliness. We want their eyebrows to rise as they scroll through the modules. We want them to perceive that professionals have been at work. If instead they see a scrambled mass of code that looks like it was written by a bevy of drunken sailors, then they are likely to conclude that the same inattention to detail pervades every other aspect of the project." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"Whether you are designing systems or individual modules, never forget to use the simplest thing that can possibly work." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"Yet attentiveness to detail is an even more critical foundation of professionalism than is any grand vision. First, it is through practice in the small that professionals gain proficiency and trust for practice in the large. Second, the smallest bit of sloppy construction, of the door that does not close tightly or the slightly crooked tile on the floor, or even the messy desk, completely dispels the charm of the larger whole. That is what clean code is about." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"You should choose a set of simple rules that govern the format of your code, and then you should consistently apply those rules. If you are working on a team, then the team should agree to a single set of formatting rules and all members should comply." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"Acceptance tests are not unit tests. Unit tests are written by programmers for programmers. They are formal design documents that describe the lowest level structure and behavior of the code. The audience is programmers, not business. Acceptance tests are written by the business for the business (even when you, the developer, end up writing them). They are formal requirements documents that specify how the system should behave from the business’ point of view. The audience is the business and the programmers." (Robert C Martin, "Clean Code: A Handbook of Agile Software Craftsmanship", 2008)

"Coding is an intellectually challenging and exhausting activity. It requires a level of concentration and focus that few other disciplines require. The reason for this is that coding requires you to juggle many competing factors at once." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"Following the principle of 'late precision', acceptance tests should be written as late as possible, typically a few days before the feature is implemented. In Agile projects, the tests are written after the features have been selected for the next Iteration or Sprint." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"For some reason software developers don’t think of debugging time as coding time. They think of debugging time as a call of nature, something that just has to be done. But debugging time is just as expensive to the business as coding time is, and therefore anything we can do to avoid or diminish it is good." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"One of the most common communication issues between programmers and business is the requirements. The business people state what they believe they need, and then the programmers build what they believe the business described. At least that’s how it’s supposed to work. In reality, the communication of requirements is extremely difficult, and the process is fraught with error." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"One of the worst symptoms of a dysfunctional team is when each programmer builds a wall around his code and refuses to let other programmers touch it." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"Programming is an act of creation. When we write code we are creating something out of nothing. We are boldly imposing order upon chaos. We are confidently commanding, in precise detail, the behaviors of a machine that could otherwise do incalculable damage. And so, programming is an act of supreme arrogance." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"Software development is a marathon, not a sprint. You can’t win the race by trying to run as fast as you can from the outset. You win by conserving your resources and pacing yourself. A marathon runner takes care of her body both before and during the race. Professional programmers conserve their energy and creativity with the same care." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"The cost of automating acceptance tests is so small in comparison to the cost of executing manual test plans that it makes no economic sense to write scripts for humans to execute. Professional developers take responsibility for their part in ensuring that acceptance tests are automated." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"The fact that bugs will certainly occur in your code does not mean you aren’t responsible for them. The fact that the task to write perfect software is virtually impossible does not mean you aren’t responsible for the imperfection." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"The fundamental assumption underlying all software projects is that software is easy to change. If you violate this assumption by creating inflexible structures, then you undercut the economic model that the entire industry is based on." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"The purpose of acceptance tests is communication, clarity, and precision. By agreeing to them, the developers, stakeholders, and testers all understand what the plan for the system behavior is. Achieving this kind of clarity is the responsibility of all parties. Professional developers make it their responsibility to work with stakeholders and testers to ensure that all parties know what is about to be built." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"The second best way to learn is to collaborate with other people. Professional software developers make a special effort to program together, practice together, design and plan together. By doing so they learn a lot from each other, and they get more done faster with fewer errors." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"The true professional knows that delivering function at the expense of structure is a fool’s errand. It is the structure of your code that allows it to be flexible. If you compromise the structure, you compromise the future." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"True professionals work hard to keep their skills sharp and ready. It is not enough to simply do your daily job and call that practice. Doing your daily job is performance, not practice. Practice is when you specifically exercise your skills outside of the performance of your job for the sole purpose of refining and enhancing those skills." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"Unfortunately, all too many projects become mired in a tar pit of poor structure. Tasks that used to take days begin to take weeks, and then months. Management, desperate to recapture lost momentum, hires more developers to speed things up. But these developers simply add to the morass, deepening the structural damage and raising the impediment." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011) 

"When you cannot concentrate and focus sufficiently, the code you write will be wrong. It will have bugs. It will have the wrong structure. It will be opaque and convoluted. It will not solve the customers’ real problems. In short, it will have to be reworked or redone. Working while distracted creates waste." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"[…] you should not agree to work overtime unless (1) you can personally afford it, (2) it is short term, two weeks or less, and (3) your boss has a fall-back plan in case the overtime effort fails." (Robert C Martin,"The Clean Coder: A code of conduct for professional programmers", 2011)

"Function or architecture? Which of these two provides the greater value? Is it more important for the software system to work, or is it more important for the software system to be easy to change?" (Robert C Martin, "Clean Architecture: A Craftsman's Guide to Software Structure and Design", 2017)

"Getting software right is hard. It takes knowledge and skills that most young programmers haven’t yet acquired. It requires thought and insight that most programmers don’t take the time to develop. It requires a level of discipline and dedication that most programmers never dreamed they’d need. Mostly, it takes a passion for the craft and the desire to be a professional." (Robert C Martin, "Clean Architecture: A Craftsman's Guide to Software Structure and Design", 2017)

"Software architects are, by virtue of their job description, more focused on the structure of the system than on its features and functions. Architects create an architecture that allows those features and functions to be easily developed, easily modified, and easily extended." (Robert C Martin, "Clean Architecture: A Craftsman's Guide to Software Structure and Design", 2017)

"The bigger lie that developers buy into is the notion that writing messy code makes them go fast in the short term, and just slows them down in the long term. Developers who accept this lie exhibit the hare’s overconfidence in their ability to switch modes from making messes to cleaning up messes sometime in the future, but they also make a simple error of fact. The fact is that making messes is always slower than staying clean, no matter which time scale you are using." (Robert C Martin, "Clean Architecture: A Craftsman's Guide to Software Structure and Design", 2017)

"The goal of software architecture is to minimize the human resources required to build and maintain the required system." (Robert C Martin, "Clean Architecture: A Craftsman's Guide to Software Structure and Design", 2017)

"What is OO? There are many opinions and many answers to this question. To the software architect, however, the answer is clear: OO is the ability, through the use of polymorphism, to gain absolute control over every source code dependency in the system. It allows the architect to create a plugin architecture, in which modules that contain high-level policies are independent of modules that contain low-level details. The low-level details are relegated to plugin modules that can be deployed and developed independently from the modules that contain high-level policies." (Robert C Martin, "Clean Architecture: A Craftsman's Guide to Software Structure and Design", 2017)

"When software is done right, it requires a fraction of the human resources to create and maintain. Changes are simple and rapid. Defects are few and far between. Effort is minimized, and functionality and flexibility are maximized." (Robert C Martin, "Clean Architecture: A Craftsman's Guide to Software Structure and Design", 2017)

"When we talk about software architecture, software is recursive and fractal in nature, etched and sketched in code. Everything is details. Interlocking levels of detail also contribute to a building’s architecture, but it doesn’t make sense to talk about physical scale in software. Software has structure - many structures and many kinds of structures-but its variety eclipses the range of physical structure found in buildings. You can even argue quite convincingly that there is more design activity and focus in software than in building architecture - in this sense, it’s not unreasonable to consider software architecture more architectural than building architecture!" (Robert C Martin, "Clean Architecture: A Craftsman's Guide to Software Structure and Design", 2017)

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.