Welcome to Loot.co.za!
Sign in / Register |Wishlists & Gift Vouchers |Help | Advanced search
|
Your cart is empty |
|||
Books > Computing & IT > Computer programming > Software engineering
The emphasis on new and changing technologies and process models in today s software development obscures the fact that software engineering is still primarily a human-based activity and that the success of a software project largely depends on the decisions made by humans during engineering. Rationale management is concerned with making these design and development decisions explicit to all stakeholders involved. Dutoit, McCall, Mistrik and Paech begin their book with a historical survey of different rationale approaches. It is followed by four parts describing: the fundamental problems and possible solution approaches in rationale management, rationale management during requirements engineering, rationale management during software architecting, and rationale management for organizing reusable bodies of knowledge. The result is a detailed summary of research on design rationale. It provides researchers with an excellent state-of-the-art overview, and professional software engineers will find many examples, resources and incentives to enhance their ability to make decisions during all phases of the software lifecycle. Allen Dutoit, Ray McCall, Ivan Mistrik and Barbara Paech have done an excellent job of this in "Rationale management in software engineering." The chapters in this volume show how design rationale can be incorporated into the heart of the software development process - into requirements engineering, software architecture, and code design. (John M. Carroll, Edward M. Frymoyer Professor of Information Sciences and Technology, Penn State University, USA, ACM CHI Lifetime Achievement Award)
Job titles like Technical Architect and Chief Architect nowadays abound in software industry, yet many people suspect that architecture is one of the most overused and least understood terms in professional software development. Gorton s book tries to resolve this dilemma. It concisely describes the essential elements of knowledge and key skills required to be a software architect. The explanations encompass the essentials of architecture thinking, practices, and supporting technologies. They range from a general understanding of structure and quality attributes through technical issues like middleware components and service-oriented architectures to recent technologies like model-driven architecture, software product lines, aspect-oriented design, and the Semantic Web, which will presumably influence future software systems. This second edition contains new material covering enterprise architecture, agile development, enterprise service bus technologies, RESTful Web services, and a case study on how to use the MeDICi integration framework. All approaches are illustrated by an ongoing real-world example. So if you work as an architect or senior designer (or want to someday), or if you are a student in software engineering, here is a valuable and yet approachable knowledge source for you.
Genetic algorithms today constitute a family of e?ective global optimization methods used to solve di?cult real-life problems which arise in science and technology. Despite their computational complexity, they have the ability to explore huge data sets and allow us to study exceptionally problematic cases in which the objective functions are irregular and multimodal, and where information about the extrema location is unobtainable in other ways. Theybelongtotheclassofiterativestochasticoptimizationstrategiesthat, during each step, produce and evaluate the set of admissible points from the search domain, called the random sample or population. As opposed to the Monte Carlo strategies, in which the population is sampled according to the uniform probability distribution over the search domain, genetic algorithms modify the probability distribution at each step. Mechanisms which adopt sampling probability distribution are transposed from biology. They are based mainly on genetic code mutation and crossover, as well as on selection among living individuals. Such mechanisms have been testedbysolvingmultimodalproblemsinnature,whichiscon?rmedinpart- ular by the many species of animals and plants that are well ?tted to di?erent ecological niches. They direct the search process, making it more e?ective than a completely random one (search with a uniform sampling distribution). Moreover,well-tunedgenetic-basedoperationsdonotdecreasetheexploration ability of the whole admissible set, which is vital in the global optimization process. The features described above allow us to regard genetic algorithms as a new class of arti?cial intelligence methods which introduce heuristics, well tested in other ?elds, to the classical scheme of stochastic global search.
This book is a self-contained, practical introduction how to use FeatureIDE for modeling and implementing variable systems. In particular, readers learn how to analyze domains using feature models, specify requirements in form of configurations, and how to generate code based on conditional compilation and feature-oriented programming. Given the interactive style of the book, readers can directly try out the open-source development environment. All code examples are available in the standard distribution on GitHub and can immediately been used for individual modifications. Each part of the book is presented as a step-by-step tutorial and additionally illustrated using an ongoing example of elevator control software written in Java. Written by the core development team of FeatureIDE, this book is suitable for students using a tool for deepening the theoretical foundations of variability modeling and implementation, and as a reference for practitioners needing a stable and scalable tool for industrial applications. FeatureIDE is the most used open-source tool for feature modeling and has been continuously improved since 2004. The success of FeatureIDE is due to being a vehicle for cutting-edge product-line research by still providing an easy-to-use and seamless integration into Eclipse.
This volume comprises selected extended papers written by prominent researchers participating in the International MultiConference of Engineers and Computer Scientists 2015, Hong Kong, 18-20 March 2015. The conference served as a platform for discussion of frontier topics in theoretical and applied engineering and computer science, and subjects covered include communications systems, control theory and automation, bioinformatics, artificial intelligence, data mining, engineering mathematics, scientific computing, engineering physics, electrical engineering, and industrial applications. The book describes the state-of-the-art in engineering technologies and computer science and its applications, and will serve as an excellent reference for industrial and academic researchers and graduate students working in these fields.
Service-oriented architectures are of vital importance to enterprises maintaining order and service reputation with stakeholders, and by utilizing the latest technologies, advantage can be gained and time and effort saved. Enhancing Enterprise and Service-Oriented Architectures with Advanced Web Portal Technologies offers the latest research and development within the field, filled with case studies, research, methodologies, and frameworks from contributors around the world. In order to stay abreast of the cutting-edge research in the field, it is vital for academics and practitioners to stay involved and studied with the latest publications. This volume contains a wide range of subject matters, levels of technical expertise and development, and new technological advances within the field, and will serve as an excellent resource both as a handbook and a research manual.
Improve Your Creativity, Effectiveness, and Ultimately, Your Code In Modern Software Engineering, continuous delivery pioneer David Farley helps software professionals think about their work more effectively, manage it more successfully, and genuinely improve the quality of their applications, their lives, and the lives of their colleagues. Writing for programmers, managers, and technical leads at all levels of experience, Farley illuminates durable principles at the heart of effective software development. He distills the discipline into two core exercises: learning and exploration and managing complexity. For each, he defines principles that can help you improve everything from your mindset to the quality of your code, and describes approaches proven to promote success. Farley's ideas and techniques cohere into a unified, scientific, and foundational approach to solving practical software development problems within realistic economic constraints. This general, durable, and pervasive approach to software engineering can help you solve problems you haven't encountered yet, using today's technologies and tomorrow's. It offers you deeper insight into what you do every day, helping you create better software, faster, with more pleasure and personal fulfillment. Clarify what you're trying to accomplish Choose your tools based on sensible criteria Organize work and systems to facilitate continuing incremental progress Evaluate your progress toward thriving systems, not just more "legacy code" Gain more value from experimentation and empiricism Stay in control as systems grow more complex Achieve rigor without too much rigidity Learn from history and experience Distinguish "good" new software development ideas from "bad" ones Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.
The series "Studies in Computational Intelligence" (SCI) publishes new developments and advances in the various areas of computational intelligence quickly and with a high quality. The intent is to cover the theory, applications, and design methods of computational intelligence, as embedded in the fields of engineering, computer science, physics and life science, as well as the methodologies behind them. The series contains monographs, lecture notes and edited volumes in computational intelligence spanning the areas of neural networks, connectionist systems, genetic algorithms, evolutionary computation, artificial intelligence, cellular automata, self-organizing systems, soft computing, fuzzy systems, and hybrid intelligent systems. Critical to both contributors and readers are the short publication time and world-wide distribution - this permits a rapid and broad dissemination of research results. The purpose of the first ACIS International Symposium on Software and Network Engineering held on December 19-20, 2012 on the Seoul National University campus, Seoul, Korea is to bring together scientist, engineers, computer users, students to share their experiences and exchange new ideas, and research results about all aspects (theory, applications and tools) of software & network engineering, and to discuss the practical challenges encountered along the way and the solutions adopted to solve them The symposium organizers selected the best 12 papers from those papers accepted for presentation at the symposium in order to publish them in this volume. The papers were chosen based on review scores submitted by members of the program committee, and underwent further rigorous rounds of review. The symposium organizers selected the best 12 papers from those papers accepted for presentation at the symposium in order to publish them in this volume. The papers were chosen based on review scores submitted by members of the program committee, and underwent further rigorous rounds of review."
This introduction to cryptography employs a programming-oriented approach to study the most important cryptographic schemes in current use and the main cryptanalytic attacks against them. Discussion of the theoretical aspects, emphasizing precise security definitions based on methodological tools such as complexity and randomness, and of the mathematical aspects, with emphasis on number-theoretic algorithms and their applications to cryptography and cryptanalysis, is integrated with the programming approach, thus providing implementations of the algorithms and schemes as well as examples of realistic size. A distinctive feature of the author's approach is the use of Maple as a programming environment in which not just the cryptographic primitives but also the most important cryptographic schemes are implemented following the recommendations of standards bodies such as NIST, with many of the known cryptanalytic attacks implemented as well. The purpose of the Maple implementations is to let the reader experiment and learn, and for this reason the author includes numerous examples. The book discusses important recent subjects such as homomorphic encryption, identity-based cryptography and elliptic curve cryptography. The algorithms and schemes which are treated in detail and implemented in Maple include AES and modes of operation, CMAC, GCM/GMAC, SHA-256, HMAC, RSA, Rabin, Elgamal, Paillier, Cocks IBE, DSA and ECDSA. In addition, some recently introduced schemes enjoying strong security properties, such as RSA-OAEP, Rabin-SAEP, Cramer--Shoup, and PSS, are also discussed and implemented. On the cryptanalysis side, Maple implementations and examples are used to discuss many important algorithms, including birthday and man-in-the-middle attacks, integer factorization algorithms such as Pollard's rho and the quadratic sieve, and discrete log algorithms such as baby-step giant-step, Pollard's rho, Pohlig--Hellman and the index calculus method. This textbook is suitable for advanced undergraduate and graduate students of computer science, engineering and mathematics, satisfying the requirements of various types of courses: a basic introductory course; a theoretically oriented course whose focus is on the precise definition of security concepts and on cryptographic schemes with reductionist security proofs; a practice-oriented course requiring little mathematical background and with an emphasis on applications; or a mathematically advanced course addressed to students with a stronger mathematical background. The main prerequisite is a basic knowledge of linear algebra and elementary calculus, and while some knowledge of probability and abstract algebra would be helpful, it is not essential because the book includes the necessary background from these subjects and, furthermore, explores the number-theoretic material in detail. The book is also a comprehensive reference and is suitable for self-study by practitioners and programmers."
Defining a formal domain ontology is generally considered a useful, not to say necessary step in almost every software project. This is because software deals with ideas rather than with self-evident physical artefacts. However, this development step is hardly ever done, as ontologies rely on well-defined and semantically powerful AI concepts such as description logics or rule-based systems, and most software engineers are largely unfamiliar with these. Ga evic and his co-authors try to fill this gap by covering the subject of MDA application for ontology development on the Semantic Web. Part I of their book describes existing technologies, tools, and standards like XML, RDF, OWL, MDA, and UML. Part II presents the first detailed description of OMG s new ODM (Ontology Definition Metamodel) initiative, a specification which is expected to be in the form of an OMG language like UML. Finally, Part III is dedicated to applications and practical aspects of developing ontologies using MDA-based languages. The book is supported by a website showing many ontologies, UML and other MDA-based models, and the transformations between them. "The book is equally suited to those who merely want to be informed of the relevant technological landscape, to practitioners dealing with concrete problems, and to researchers seeking pointers to potentially fruitful areas of research. The writing is technical yet clear and accessible, illustrated throughout with useful and easily digestible examples." from the Foreword by Bran Selic, IBM Rational Software, Canada. "I do not know another book that offers such a high quality insight into UML and ontologies." Steffen Staab, U Koblenz, Germany"
This book covers a range of basic and advanced topics in software engineering. The field has undergone several phases of change and improvement since its invention, and there is significant ongoing research in software development, addressing aspects such as analysis, design, testing and maintenance. Rather than focusing on a single aspect of software engineering, this book provides a systematic overview of recent techniques, including requirement gathering in the form of story points in agile software, and bio-inspired techniques for estimating the effort, cost, and time required for software development. As such it is a valuable resource for new researchers interested in advances in software engineering - particularly in the area of bio-inspired techniques.
Nowadays, there is software everywhere in our life. It controls cars, airplanes, factories, medical implants. Without software, banking, logistics and transportation, media, and even scientific research would not function in the accustomed way. Building and maintaining software is a knowledge-intensive endeavour and requires that specific experiences are handled successfully. However, neither knowledge nor experience can be collected, stored, and shipped like physical goods, instead these delicate resources require dedicated techniques. Knowledge and experience are often called company assets, yet this is only part of the truth: it is only software engineers and other creative employees who will effectively exploit an organisation's knowledge and experience. Kurt Schneider's textbook is written for those who want to make better use of their own knowledge and experience - either personally or within their group or company. Everyone related to software development will benefit from his detailed explanations and case studies: project managers, software engineers, quality assurance responsibles, and knowledge managers. His presentation is based on years of both practical experience, with companies such as Boeing, Daimler, and Nokia, and research in renowned environments, such as the Fraunhofer Institute. Each chapter is self-contained, it clearly states its learning objectives, gives in-depth presentations, shows the techniques' practical relevance in application scenarios, lists detailed references for further reading, and is finally completed by exercises that review the material presented and also challenge further, critical examinations. The overall result is a textbook that is equally suitable as a personal resource for self-directed learning and as the basis for a one-semester course on software engineering and knowledge management.
This book illustrates the role of software architecture and its application in business. The author describes enterprise architecture along with business architecture to show the role of software architecture in both areas. The place of software architecture in business is outlined from many perspectives in this context. The book outlines quality attributes and how managers can use software architecture to build high quality products. Topics include business software architecture, dealing with qualities, achieving quality attributes, managing business qualities, software product line, Internet of Things (IOT), and Service Oriented Business Architecture. The book is intended to benefit students, researchers, software architects, and business architects. Provides quick and easy access to all the important aspects of software architecture in business; Highlights a wide variety of concepts of software architecture in a straightforward manner, for students, practitioners, or architects; Presents different applications of software architecture in business.
This book presents a comprehensive introduction to Internetware, covering aspects ranging from the fundamental principles and engineering methodologies to operational platforms, quality measurements and assurance and future directions. It also includes guidelines and numerous representative real-world case studies that serve as an invaluable reference resource for software engineers involved in the development of Internetware applications. Providing a detailed analysis of current trends in modern software engineering in the Internet, it offers an essential blueprint and an important contribution to the research on software engineering and systems for future Internet computing.
This unique text/reference provides a comprehensive review of distributed simulation (DS) from the perspective of Model Driven Engineering (MDE), illustrating how MDE affects the overall lifecycle of the simulation development process. Numerous practical case studies are included to demonstrate the utility and applicability of the methodology, many of which are developed from tools available to download from the public domain. Topics and features: Provides a thorough introduction to the fundamental concepts, principles and processes of modeling and simulation, MDE and high-level architecture Describes a road map for building a DS system in accordance with the MDE perspective, and a technical framework for the development of conceptual models Presents a focus on federate (simulation environment) architectures, detailing a practical approach to the design of federations (i.e., simulation member design) Discusses the main activities related to scenario management in DS, and explores the process of MDE-based implementation, integration and testing Reviews approaches to simulation evolution and modernization, including architecture-driven modernization for simulation modernization Examines the potential synergies between the agent, DS, and MDE methodologies, suggesting avenues for future research at the intersection of these three fields Distributed Simulation - A Model Driven Engineering Approach is an important resource for all researchers and practitioners involved in modeling and simulation, and software engineering, who may be interested in adopting MDE principles when developing complex DS systems.
Software effort estimation is a key element of software project planning and management. Yet, in industrial practice, the important role of effort estimation is often underestimated and/or misunderstood. In this book, Adam Trendowicz presents the CoBRA method (an abbreviation for Cost Estimation, Benchmarking, and Risk Assessment) for estimating the effort required to successfully complete a software development project, which uniquely combines human judgment and measurement data in order to systematically create a custom-specific effort estimation model. CoBRA goes far beyond simply predicting the development effort; it supports project decision-makers in negotiating the project scope, managing project risks, benchmarking productivity, and directing improvement activities. To illustrate the method's practical use, the book reports several real-world cases where CoBRA was applied in various industrial contexts. These cases represent different estimation contexts in terms of software project environment, estimation objectives, and estimation constraints. This book is the result of a successful collaboration between the process management division of Fraunhofer IESE and many software companies in the field of software engineering technology transfer. It mainly addresses software practitioners who deal with planning and managing software development projects as part of their daily work, and is also of interest for students or courses specializing in software engineering or software project management.
Tackles a topic in a concise and accessible way that most believe too advanced to pick up easily. Author has over 40 years teaching and industry experience which they utilize in this book. Contains an appendix with extended code and examples of topics discussed in text.
The IT community has always struggled with questions concerning the value of an organizationa (TM)s investment in software and hardware. It is the goal of value-based software engineering (VBSE) to develop models and measures of value which are of use for managers, developers and users as they make tradeoff decisions between, for example, quality and cost or functionality and schedule a" such decisions must be economically feasible and comprehensible to the stakeholders with differing value perspectives. VBSE has its roots in work on software engineering economics, pioneered by Barry Boehm in the early 1980s. However, the emergence of a wider scope that defines VBSE is more recent. VBSE extends the merely technical ISO software engineering definition with elements not only from economics, but also from cognitive science, finance, management science, behavioural sciences, and decision sciences, giving rise to a truly multi-disciplinary framework. Biffl and his co-editors invited leading researchers and structured their contributions into three parts, following an introduction into the area by Boehm himself. They first detail the foundations of VBSE, followed by a presentation of state-of-the-art methods and techniques. The third part demonstrates the benefits of VBSE through concrete examples and case studies. This book deviates from the more anecdotal style of many management-oriented software engineering books and so appeals particularly to all readers who are interested in solid foundations for high-level aspects of software engineering decision making, i.e. to product or project managers driven by economics and to software engineering researchers and students.
Agile software development has become an umbrella term for a number of changes in how software developers plan and coordinate their work, how they communicate with customers and external stakeholders, and how software development is organized in small, medium, and large companies, from the telecom and healthcare sectors to games and interactive media. Still, after a decade of research, agile software development is the source of continued debate due to its multifaceted nature and insufficient synthesis of research results. Dingsoyr, Dyba, and Moe now present a comprehensive snapshot of the knowledge gained over many years of research by those working closely with or in the industry. It shows the current state of research on agile software development through an introduction and ten invited contributions on the main research fields, each written by renowned experts. These chapters cover three main issues: foundations and background of agile development, agile methods in practice, and principal challenges and new frontiers. They show the important results in each subfield, and in addition they explain what these results mean to practitioners as well as for future research in the field. The book is aimed at reflective practitioners and researchers alike, and it also can serve as the basis for graduate courses at universities.
The security of software systems in recent years has been transformed from a mono-dimensional technical challenge to a multi-dimensional technico-social challenge, due to the wide usage of software systems in almost every area of the human life. This situation requires a different and more holistic approach to the development of secure software systems. Software Engineering for Secure Systems: Industrial and Research Perspectives presents the most recent and innovative lines of research and industrial practice related to secure software engineering. The book provides coverage of recent advances in the area of secure software engineering that address the various stages of the development process from requirements to design to testing to implementation. Contributions offer a comprehensive understanding secure software engineering, inspire and motivate further research and development, and bridge the gap between academic research and industrial practice.
Many decisions are required throughout the software development process. These decisions, and to some extent the decision-making process itself, can best be documented as the rationale for the system, which will reveal not only what was done during development but the reasons behind the choices made and alternatives considered and rejected. This information becomes increasingly critical as software development becomes more distributed and encompasses the corporate knowledge both used and refined during the development process. The capture of rationale helps to ensure that decisions are well thought out and justified and the use of rationale can help avoid the mistakes of the past during both the development of the current system and when software products (architecture and design, as well as code) are reused in future systems. Burge, Carroll, McCall, and Mistrik describe in detail the capture and use of design rationale in software engineering to improve the quality of software. Their book is the first comprehensive and unified treatment of rationale usage in software engineering. It provides a consistent conceptual framework and a unified terminology for comparing, contrasting and combining the myriad approaches to rationale in software engineering. It is both an excellent introductory text for those new to the field and a uniquely valuable reference for experienced rationale researchers. The book covers the use of rationale for decision making throughout the software lifecycle, starting from the first decisions in a project and continuing through requirements definition, design, implementation, testing, maintenance, redesign and reuse."
Every enterprise architect faces similar problems when designing and governing the enterprise architecture of a medium to large enterprise. Design patterns are a well-established concept in software engineering, used to define universally applicable solution schemes. By applying this approach to enterprise architectures, recurring problems in the design and implementation of enterprise architectures can be solved over all layers, from the business layer to the application and data layer down to the technology layer. Inversini and Perroud describe patterns at the level of enterprise architecture, which they refer to as Enterprise Architecture Patterns. These patterns are motivated by recurring problems originating from both the business and the underlying application, or from data and technology architectures of an enterprise such as identity and access management or integration needs. The Enterprise Architecture Patterns help in planning the technological and organizational landscape of an enterprise and its information technology, and are easily embedded into frameworks such as TOGAF, Zachman or FEA. This book is aimed at enterprise architects, software architects, project leaders, business consultants and everyone concerned with questions of IT and enterprise architecture and provides them with a comprehensive catalogue of ready-to-use patterns as well as an extensive theoretical framework to define their own new patterns.
Agent-based modeling/simulation is an emerging field that uses bottom-up and experimental analysis in the social sciences. Selected research from that presented at the Third International Workshop on Agent-Based Approaches in Economic and Social Complex Systems 2004, held in May 2004 in Kyoto, Japan, is included in this book. The aim of the workshop was to employ the bottom-up approach to social and economic problems by modeling, simulation, and analysis using a software agent. This research area is an emerging interdisciplinary field among the social sciences and computer science, attracting broad attention because it introduces a simulation-based experimental approach to problems that are becoming increasingly complex in an era of globalization and innovation in information technology. The state-of-the-art research and findings presented in this book will be indispensable tools for anyone involved in this rapidly growing discipline. |
You may like...
Research Anthology on Architectures…
Information R Management Association
Hardcover
R13,357
Discovery Miles 133 570
|