![]() |
![]() |
Your cart is empty |
||
Books > Computing & IT > Computer programming > Software engineering
This book discusses automated string-analysis techniques, focusing particularly on automata-based static string analysis. It covers the following topics: automata-bases string analysis, computing pre and post-conditions of basic string operations using automata, symbolic representation of automata, forward and backward string analysis using symbolic automata representation, constraint-based string analysis, string constraint solvers, relational string analysis, vulnerability detection using string analysis, string abstractions, differential string analysis, and automated sanitization synthesis using string analysis. String manipulation is a crucial part of modern software systems; for example, it is used extensively in input validation and sanitization and in dynamic code and query generation. The goal of string-analysis techniques and this book is to determine the set of values that string expressions can take during program execution. String analysis can be used to solve many problems in modern software systems that relate to string manipulation, such as: (1) Identifying security vulnerabilities by checking if a security sensitive function can receive an input string that contains an exploit; (2) Identifying possible behaviors of a program by identifying possible values for dynamically generated code; (3) Identifying html generation errors by computing the html code generated by web applications; (4) Identifying the set of queries that are sent to back-end database by analyzing the code that generates the SQL queries; (5) Patching input validation and sanitization functions by automatically synthesizing repairs illustrated in this book. Like many other program-analysis problems, it is not possible to solve the string analysis problem precisely (i.e., it is not possible to precisely determine the set of string values that can reach a program point). However, one can compute over- or under-approximations of possible string values. If the approximations are precise enough, they can enable developers to demonstrate existence or absence of bugs in string manipulating code. String analysis has been an active research area in the last decade, resulting in a wide variety of string-analysis techniques. This book will primarily target researchers and professionals working in computer security, software verification, formal methods, software engineering and program analysis. Advanced level students or instructors teaching or studying courses in computer security, software verification or program analysis will find this book useful as a secondary text.
Conceptual modeling has always been one of the main issues in information systems engineering as it aims to describe the general knowledge of the system at an abstract level that facilitates user understanding and software development. This collection of selected papers provides a comprehensive and extremely readable overview of what conceptual modeling is and perspectives on making it more and more relevant in our society. It covers topics like modeling the human genome, blockchain technology, model-driven software development, data integration, and wiki-like repositories and demonstrates the general applicability of conceptual modeling to various problems in diverse domains. Overall, this book is a source of inspiration for everybody in academia working on the vision of creating a strong, fruitful and creative community of conceptual modelers. With this book the editors and authors want to honor Prof. Antoni Olive for his enormous and ongoing contributions to the conceptual modeling discipline. It was presented to him on the occasion of his keynote at ER 2017 in Valencia, a conference that he has contributed to and supported for over 20 years. Thank you very much to Antoni for so many years of cooperation and friendship.
This book presents a key solution for current and future technological issues, adopting an integrated system approach with a combination of software engineering applications. Focusing on how software dominates and influences the performance, reliability, maintainability and availability of complex integrated systems, it proposes a comprehensive method of improving the entire process. The book provides numerous qualitative and quantitative analyses and examples of varied systems to help readers understand and interpret the derived results and outcomes. In addition, it examines and reviews foundational work associated with decision and control systems for information systems, to inspire researchers and industry professionals to develop new and integrated foundations, theories, principles, and tools for information systems. It also offers guidance and suggests best practices for the research community and practitioners alike. The book's twenty-two chapters examine and address current and future research topics in areas like vulnerability analysis, secured software requirements analysis, progressive models for planning and enhancing system efficiency, cloud computing, healthcare management, and integrating data-information-knowledge in decision-making. As such it enables organizations to adopt integrated approaches to system and software engineering, helping them implement technological advances and drive performance. This in turn provides actionable insights on each and every technical and managerial level so that timely action-based decisions can be taken to maintain a competitive edge. Featuring conceptual work and best practices in integrated systems and software engineering applications, this book is also a valuable resource for all researchers, graduate and undergraduate students, and management professionals with an interest in the fields of e-commerce, cloud computing, software engineering, software & system security and analysis, data-information-knowledge systems and integrated systems.
During the last few years, software evolution research has explored new domains such as the study of socio-technical aspects and collaboration between different individuals contributing to a software system, the use of search-based techniques and meta-heuristics, the mining of unstructured software repositories, the evolution of software requirements, and the dynamic adaptation of software systems at runtime. Also more and more attention is being paid to the evolution of collections of inter-related and inter-dependent software projects, be it in the form of web systems, software product families, software ecosystems or systems of systems. With this book, the editors present insightful contributions on these and other domains currently being intensively explored, written by renowned researchers in the respective fields of software evolution. Each chapter presents the state of the art in a particular topic, as well as the current research, available tool support and remaining challenges. The book is complemented by a glossary of important terms used in the community, a reference list of nearly 1,000 papers and books and tips on additional resources that may be useful to the reader (reference books, journals, standards and major scientific events in the domain of software evolution and datasets).This book is intended for all those interested in software engineering, and more particularly, software maintenance and evolution. Researchers and software practitioners alike will find in the contributed chapters an overview of the most recent findings, covering a broad spectrum of software evolution topics. In addition, it can also serve as the basis of graduate or postgraduate courses on e.g., software evolution, requirements engineering, model-driven software development or social informatics.
Since its first volume in 1960, Advances in Computers has presented detailed coverage of innovations in computer hardware, software, theory, design, and applications. It has also provided contributors with a medium in which they can explore their subjects in greater depth and breadth than journal articles usually allow. As a result, many articles have become standard references that continue to be of significant, lasting value in this rapidly expanding field.
This textbook provides a detailed introduction to the use of software in combination with simple and economical hardware (a sound level meter with calibrated AC output and a digital recording system) to obtain sophisticated measurements usually requiring expensive equipment. It emphasizes the use of free, open source, and multiplatform software. Many commercial acoustical measurement systems use software algorithms as an integral component; however the methods are not disclosed. This book enables the reader to develop useful algorithms and provides insight into the use of digital audio editing tools to document features in the signal. Topics covered include acoustical measurement principles, in-depth critical study of uncertainty applied to acoustical measurements, digital signal processing from the basics, and metrologically-oriented spectral and statistical analysis of signals. The student will gain a deep understanding of the use of software for measurement purposes; the ability to implement software-based measurement systems; familiarity with the hardware necessary to acquire and store signals; an appreciation for the key issue of long-term preservation of signals; and a full grasp of the often neglected issue of uncertainty in acoustical measurements. Pedagogical features include in-text worked-out examples, end-of-chapter problems, a glossary of metrology terms, and extensive appendices covering statistics, proofs, additional examples, file formats, and underlying theory.
System Quality and Software Architecture collects state-of-the-art knowledge on how to intertwine software quality requirements with software architecture and how quality attributes are exhibited by the architecture of the system. Contributions from leading researchers and industry evangelists detail the techniques required to achieve quality management in software architecting, and the best way to apply these techniques effectively in various application domains (especially in cloud, mobile and ultra-large-scale/internet-scale architecture) Taken together, these approaches show how to assess the value of total quality management in a software development process, with an emphasis on architecture. The book explains how to improve system quality with focus on attributes such as usability, maintainability, flexibility, reliability, reusability, agility, interoperability, performance, and more. It discusses the importance of clear requirements, describes patterns and tradeoffs that can influence quality, and metrics for quality assessment and overall system analysis. The last section of the book leverages practical experience and evidence to look ahead at the challenges faced by organizations in capturing and realizing quality requirements, and explores the basis of future work in this area.
This book introduces Software Thermal Management (STM) as a means of reducing power consumption in a computing system in order to manage heat, improve component reliability and increase system safety. Readers will benefit from this pragmatic guide to the field of STM for embedded systems and its catalog of software power management techniques. Since thermal management is a key bottleneck in embedded systems design, this book focuses on root cause of heat in embedded systems: power. Since software has an enormous impact on power consumption in an embedded system, this book urges software engineers to manage heat effectively by understanding, categorizing and developing new ways to reduce static and dynamic power consumption. Whereas most books on thermal management describe mechanisms to remove heat, this book focuses on ways for software engineers to avoid generating heat in the first place.
This book describes pragmatic instruments and methods that enable business experts and software engineers to develop a common understanding of the software to be created, to determine their key requirements, and to manage the project in a way that fosters trust, encourages innovation and distributes risk fairly between clients and contractors. After an introduction to the fundamentals of agile software development in Part I, Part II describes the Interaction Room, an actual room where digitalization and mobilization strategies are developed, where technology potentials are evaluated, where software projects are planned and managed, and where business and technical stakeholders can communicate face to face, visualize complex relationships intuitively, and highlight value, effort and risk drivers that are keys to the project's success. After addressing these constructive aspects, the book focuses on the commercial aspects of software development: The adVANTAGE contract model described in Part III ensures that the insight-driven innovation process of software development does not just function, but is allowed to flourish in a trusted client-contractor relationship. Even though software contracting and construction may be grounded in two different academic disciplines, they are inseparable in practice, and how they interact is illustrated in the case study of developing a private health insurance benefit system in Part IV. Ultimately though, the success of every software project depends on the skills of the stakeholders. Part V therefore describes the qualification profile that software engineers and domain experts have to satisfy today. This book is aimed at CIOs, project managers and software engineers in industrial software development practice who want to learn how to effectively deal with the inevitable uncertainty of complex projects, who want to achieve higher levels of understanding and cooperation in their relationships with clients and contractors, and who want to run lower-risk software projects despite their inherent uncertainties.
From the Foreword "Getting CPS dependability right is essential to forming a solid foundation for a world that increasingly depends on such systems. This book represents the cutting edge of what we know about rigorous ways to ensure that our CPS designs are trustworthy. I recommend it to anyone who wants to get a deep look at these concepts that will form a cornerstone for future CPS designs." --Phil Koopman, Carnegie Mellon University, Pittsburgh, Pennsylvania, USA Trustworthy Cyber-Physical Systems Engineering provides practitioners and researchers with a comprehensive introduction to the area of trustworthy Cyber Physical Systems (CPS) engineering. Topics in this book cover questions such as What does having a trustworthy CPS actually mean for something as pervasive as a global-scale CPS? How does CPS trustworthiness map onto existing knowledge, and where do we need to know more? How can we mathematically prove timeliness, correctness, and other essential properties for systems that may be adaptive and even self-healing? How can we better represent the physical reality underlying real-world numeric quantities in the computing system? How can we establish, reason about, and ensure trust between CPS components that are designed, installed, maintained, and operated by different organizations, and which may never have really been intended to work together? Featuring contributions from leading international experts, the book contains sixteen self-contained chapters that analyze the challenges in developing trustworthy CPS, and identify important issues in developing engineering methods for CPS. The book addresses various issues contributing to trustworthiness complemented by contributions on TCSP roadmapping, taxonomy, and standardization, as well as experience in deploying advanced system engineering methods in industry. Specific approaches to ensuring trustworthiness, namely, proof and refinement, are covered, as well as engineering methods for dealing with hybrid aspects.
"Economics-driven Software Architecture" presents a guide for engineers and architects who need to understand the economic impact of architecture design decisions: the long term and strategic viability, cost-effectiveness, and sustainability of applications and systems. Economics-driven software development can increase quality, productivity, and profitability, but comprehensive knowledge is needed to understand the architectural challenges involved in dealing with the development of large, architecturally challenging systems in an economic way. This book covers how to apply economic considerations during the
software architecting activities of a project. Architecture-centric
approaches to development and systematic evolution, where managing
complexity, cost reduction, risk mitigation, evolvability,
strategic planning and long-term value creation are among the major
drivers for adopting such approaches. It assists the objective
assessment of the lifetime costs and benefits of evolving systems,
and the identification of legacy situations, where architecture or
a component is indispensable but can no longer be evolved to meet
changing needs at economic cost. Such consideration will form the
scientific foundation for reasoning about the economics of
nonfunctional requirements in the context of architectures and
architecting.
Modern optimization approaches have attracted an increasing number of scientists, decision makers, and researchers. As new issues in this field emerge, different optimization methodologies must be developed and implemented. Exploring Critical Approaches of Evolutionary Computation is a vital scholarly publication that explores the latest developments, methods, approaches, and applications of evolutionary models in a variety of fields. It also emphasizes evolutionary models of computation such as genetic algorithms, evolutionary strategies, classifier systems, evolutionary programming, genetic programming, and related fields such as swarm intelligence and other evolutionary computation techniques. Highlighting a range of pertinent topics such as neural networks, data mining, and data analytics, this book is designed for IT developers, IT theorists, computer engineers, researchers, practitioners, and upper-level students seeking current research on enhanced information exchange methods and practical aspects of computational systems.
This book provides formal and informal definitions and taxonomies for self-aware computing systems, and explains how self-aware computing relates to many existing subfields of computer science, especially software engineering. It describes architectures and algorithms for self-aware systems as well as the benefits and pitfalls of self-awareness, and reviews much of the latest relevant research across a wide array of disciplines, including open research challenges. The chapters of this book are organized into five parts: Introduction, System Architectures, Methods and Algorithms, Applications and Case Studies, and Outlook. Part I offers an introduction that defines self-aware computing systems from multiple perspectives, and establishes a formal definition, a taxonomy and a set of reference scenarios that help to unify the remaining chapters. Next, Part II explores architectures for self-aware computing systems, such as generic concepts and notations that allow a wide range of self-aware system architectures to be described and compared with both isolated and interacting systems. It also reviews the current state of reference architectures, architectural frameworks, and languages for self-aware systems. Part III focuses on methods and algorithms for self-aware computing systems by addressing issues pertaining to system design, like modeling, synthesis and verification. It also examines topics such as adaptation, benchmarks and metrics. Part IV then presents applications and case studies in various domains including cloud computing, data centers, cyber-physical systems, and the degree to which self-aware computing approaches have been adopted within those domains. Lastly, Part V surveys open challenges and future research directions for self-aware computing systems. It can be used as a handbook for professionals and researchers working in areas related to self-aware computing, and can also serve as an advanced textbook for lecturers and postgraduate students studying subjects like advanced software engineering, autonomic computing, self-adaptive systems, and data-center resource management. Each chapter is largely self-contained, and offers plenty of references for anyone wishing to pursue the topic more deeply.
A new product can be easy or difficult to use, it can be efficient or cumbersome, engaging or dispiriting, it can support the way we work and think - or not. What options are available for systematically addressing such parameters and provide users with an appropriate functionality, usability and experience? In the last decades, several fields have evolved that encompass a user-centred approach to create better products for the people who use them. This book provides a comprehensible introduction to the subject. It is aimed first and foremost at people involved in software and product development - product managers, project managers, consultants and analysts, who face the major challenge of developing highly useful and usable products. Topics include: The most important user-centred techniques and their alignment in the development process Planning examples of user-centred activities for projects User-oriented approaches for organisations Real-life case studies Checklists, tips and a lot of background information provide help for practitioners
Computer Aided Software Engineering (CASE) tools typically support individual users in the automation of a set of tasks within a software development process. Such tools have helped organizations in their efforts to develop better software within budget and time constraints. However, many organizations are failing to take full advantage of CASE technology as they struggle to make coordinated use of collections of tools, often obtained at different times from different vendors. This book provides an in-depth analysis of the CASE tool integration problem, and describes practical approaches that can be used with current CASE technology to help your organization take greater advantage of integrated CASE.
This book summarizes the results of Design Thinking Research Program at Stanford University in Palo Alto, California, USA and the Hasso Plattner Institute in Potsdam, Germany. Offering readers a closer look at design thinking, its innovation processes and methods, it covers topics ranging from how to design ideas, methods and technologies, to creativity experiments and creative collaboration in the real world, and the interplay between designers and engineers. But the topics go beyond this in their detailed exploration of design thinking and its use in IT systems engineering fields, and even from a management perspective. The authors show how these methods and strategies actually work in companies, and introduce new technologies and their functions. Furthermore, readers learn how special-purpose design thinking can be used to solve thorny problems in complex fields. Thinking and devising innovations are fundamentally and inherently human activities - so is design thinking. Accordingly, design thinking is not merely the result of special courses nor of being gifted or trained: it's a way of dealing with our environment and improving techniques, technologies and life. This edition offers a historic perspective on the theoretical foundations of design thinking. Within the four topic areas, various frameworks, methodologies, mindsets, systems and tools are explored and further developed. The first topic area focuses on team interaction, while the second part addresses tools and techniques for productive collaboration. The third section explores new approaches to teaching and enabling creative skills and lastly the book examines how design thinking is put into practice. All in all, the contributions shed light and provide deeper insights into how to support the collaboration of design teams in order to systematically and successfully develop innovations and design progressive solutions for tomorrow.
In recent years, searching for source code on the web has become increasingly common among professional software developers and is emerging as an area of academic research. This volume surveys past research and presents the state of the art in the area of "code retrieval on the web." This work is concerned with the algorithms, systems, and tools to allow programmers to search for source code on the web and the empirical studies of these inventions and practices. It is a label that we apply to a set of related research from software engineering, information retrieval, human-computer interaction, management, as well as commercial products. The division of code retrieval on the web into snippet remixing and component reuse is driven both by empirical data, and analysis of existing search engines and tools. Contributors include leading researchers from human-computer interaction, software engineering, programming languages, and management. "Finding Source Code on the Web for Remix and Reuse" consists of five parts. Part I is titled "Programmers and Practices," and consists of a retrospective chapter and two empirical studies on how programmers search the web for source code. Part II is titled "From Data Structures to Infrastructures," and covers the creation of ground-breaking search engines for code retrieval required ingenuity in the adaptation of existing technology and in the creation of new algorithms and data structures. Part III focuses on "Reuse: Components and Projects," which are reused with minimal modification. Part IV is on "Remix: Snippets and Answers," which examines how source code from the web can also be used as solutions to problems and answers to questions. The book concludes with Part V, "Looking Ahead," that looks at future programming and the legalities of software reuse and remix and the implications of current intellectual property law on the future of software development. The story, "Richie Boss: Private Investigator Manager," was selected as the winner of a crowdfunded short story contest."
Object-oriented inheritance has been in widespread use for a decade, and it is now realised that although inheritance is a powerful modelling tool with many associated advantages, its benefits are not automatically conferred on systems that simply use it.This book introduces a model of inheritance based around five fundamental inheritance relationships. Each relationship has a clear conceptual basis, representing a fundamental, specialised use of inheritance. The resulting model replaces a confused notion of inheritance with five distinct conceptual relationships supporting more precise modelling of systems and capturing the semantic intent of each use of inheritance within a system.
Scala is a new and exciting programming language that is a hybrid between object oriented languages such as Java and functional languages such as Haskell. As such it has its own programming idioms and development styles. Scala Design Patterns looks at how code reuse can be successfully achieved in Scala. A major aspect of this is the reinterpretation of the original Gang of Four design patterns in terms of Scala and its language structures (that is the use of Traits, Classes, Objects and Functions). It includes an exploration of functional design patterns and considers how these can be interpreted in Scala's uniquely hybrid style. A key aspect of the book is the many code examples that accompany each design pattern, allowing the reader to understand not just the design pattern but also to explore powerful and flexible Scala language features. Including numerous source code examples, this book will be of value to professionals and practitioners working in the field of software engineering.
This book constitutes the refereed post-conference proceedings of the 10th IFIP WG 5.14 International Conference on Computer and Computing Technologies in Agriculture, CCTA 2016, held in Dongying, China, in October 2016. The 55 revised papers presented were carefully reviewed and selected from 128 submissions. They cover a wide range of interesting theories and applications of information technology in agriculture, including intelligent sensing, cloud computing, key technologies of the Internet of Things, precision agriculture, animal husbandry information technology, including Internet + modern animal husbandry, livestock big data platform and cloud computing applications, intelligent breeding equipment, precision production models, water product networking and big data , including fishery IoT, intelligent aquaculture facilities, and big data applications.
Das Buch behandelt Prinzipien und Methoden der Software-Entwicklung fA1/4r Kommunikationsnetze, basierend auf praktischen Erfahrungen aus einer Reihe von Software-Projekten. Die spezifischen Merkmale dieser Software sind parallele AblAufe, zeitkritisches Antwortverhalten, komplexe FunktionalitAt und sehr hohe QualitAtsanforderungen. Eine wesentliche Rolle bei der Beherrschung der Software-KomplexitAt spielt die Architektur. Sie stellt die Regeln und Methoden fA1/4r einen effektiven Systementwurf zur VerfA1/4gung, auf dem sich der gesamte Entwicklungsprozess abstA1/4tzen kann. Dazu gehArt eine vollstAndige Spezifikationsmethodik auf der Grundlage einer formalen Sprache, deren Semantik an den typischen Merkmalen von Kommunikations-Software ausgerichtet ist. Schwerpunkt der AusfA1/4hrungen ist die Anpassung der Software-Entwicklung an die steigenden Anforderungen bezA1/4glich FunktionalitAt, Marktorientierung, Kosten und Zeit.
How to structure and build an automated testing regime that will give lasting benefits. Software testing is vitally important in the software development process, as illustrated by the growing market for automated testing tools. However, many attempts to automate software testing are not successful. At first glance, it seems easy to automate testing: just buy one
of the popular test execution tools, record the manual tests, and
play them back whenever you want to. Unfortunately, as those who
tried it have discovered, it doesn't work like that in practice.
Just as there is more to software design than knowing a programming
language, there is more to automating testing than knowing a
testing tool. "This first comprehensive treatment of software test automation
provides the equivalent of 2 or 3 years of on the job
experience." Features:
This is the first book that presents a comprehensive overview of sustainability aspects in software engineering. Its format follows the structure of the SWEBOK and covers the key areas involved in the incorporation of green aspects in software engineering, encompassing topics from requirement elicitation to quality assurance and maintenance, while also considering professional practices and economic aspects. The book consists of thirteen chapters, which are structured in five parts. First the Introduction gives an overview of the primary general concepts related to Green IT, discussing what Green "in" Software Engineering is and how it differs from Green "by" Software Engineering.Next Environments, Processes and Construction presents green software development environments, green software engineering processes and green software construction in general. The third part, Economic and Other Qualities, details models for measuring how well software supports green software engineering techniques and for performing trade-off analyses between alternative green practices from an economic perspective. Software Development Process then details techniques for incorporating green aspects at various stages of software development, including requirements engineering, design, testing, and maintenance. In closing, Practical Issues addresses the repercussions of green software engineering on decision-making, stakeholder participation and innovation management. The audience for this book includes software engineering researchers in academia and industry seeking to understand the challenges and impact of green aspects in software engineering, as well as practitioners interested in learning about the state of the art in Green in Software Engineering. "
This book describes in contributions by scientists and practitioners the development of scientific concepts, technologies, engineering techniques and tools for a service-based society. The focus is on microservices, i.e cohesive, independent processes deployed in isolation and equipped with dedicated memory persistence tools, which interact via messages. The book is structured in six parts. Part 1 "Opening" analyzes the new (and old) challenges including service design and specification, data integrity, and consistency management and provides the introductory information needed to successfully digest the remaining parts. Part 2 "Migration" discusses the issue of migration from monoliths to microservices and their loosely coupled architecture. Part 3 "Modeling" introduces a catalog and a taxonomy of the most common microservices anti-patterns and identifies common problems. It also explains the concept of RESTful conversations and presents insights from studying and developing two further modeling approaches. Next , Part 4 is dedicated to various aspects of "Development and Deployment". Part 5 then covers "Applications" of microservices, presenting case studies from Industry 4.0, Netflix, and customized SaaS examples. Eventually, Part 6 focuses on "Education" and reports on experiences made in special programs, both at academic level as a master program course and for practitioners in an industrial training. As only a joint effort between academia and industry can lead to the release of modern paradigm-based programming languages, and subsequently to the deployment of robust and scalable software systems, the book mainly targets researchers in academia and industry who develop tools and applications for microservices.
This book provides advanced analytics and decision management techniques and tools for developing sustainable competitive advantages in the studied target context. In order to achieve sustainable economy, the capacity to endure, it is essential to understand and study the mechanisms for interactions and impact from and among these perspectives. |
![]() ![]() You may like...
Advancing Information Management through…
Patricia Ordonez De Pablos, Hector Oscar Nigro, …
Hardcover
R5,263
Discovery Miles 52 630
The Definitive Guide to CentOS
Peter Membrey, Tim Verhoeven, …
Paperback
Ubiquitous and Pervasive Knowledge and…
Miltiadis D Lytras, Ambjorn Naeve
Hardcover
R2,836
Discovery Miles 28 360
bash Cookbook 2e - Solutions and…
Carl Albing, Vossen, …
Paperback
Learn PowerShell in a Month of Lunches…
Travis Plunk, James Petty, …
Paperback
Emerging Technologies of Augmented…
Michael Haller, Mark Billinghurst, …
Hardcover
R2,868
Discovery Miles 28 680
|