![]() |
![]() |
Your cart is empty |
||
Books > Computing & IT > Computer programming > Software engineering
This book presents interdisciplinary research in software engineering with applications for the social sector. The author focuses on software applications that are used for social good and that serve the needs of society. The author aims to bridge the knowledge gap between requirement engineers, industry, and users in order to help identify a diverse range of needs in the social sector (taking into account user crowd diversity in terms of technological competencies, geography, demographics, and behavioral and psychographic aspects). The book provides rigorous empirical studies and validates solutions that serve as a guide to the software engineering community, researchers, graduate students, and teachers. Provides interdisciplinary research in software engineering and the needs of the social sector, helping to increase success rates of society focused startups and applications Ideal for social entrepreneurs who can use the book for doing customer development with diverse users Establishes a new research line of social sector requirement engineering, taking into account user age, language, ability, and access
This monograph discusses software reuse and how it can be applied at different stages of the software development process, on different types of data and at different levels of granularity. Several challenging hypotheses are analyzed and confronted using novel data-driven methodologies, in order to solve problems in requirements elicitation and specification extraction, software design and implementation, as well as software quality assurance. The book is accompanied by a number of tools, libraries and working prototypes in order to practically illustrate how the phases of the software engineering life cycle can benefit from unlocking the potential of data. Software engineering researchers, experts, and practitioners can benefit from the various methodologies presented and can better understand how knowledge extracted from software data residing in various repositories can be combined and used to enable effective decision making and save considerable time and effort through software reuse. Mining Software Engineering Data for Software Reuse can also prove handy for graduate-level students in software engineering.
Azure Infrastructure as Code is a comprehensive guide to seamlessly managing your application infrastructure with Azure's native IaC tools. The book is aimed at supporting collaboration between operations professionals and software developers, to help speed up and improve the quality of software delivery. After you master the basics, you'll dive into niche and advanced topics such as testing, reusing templates between multiple teams, and how you can define policy as code. Discover cutting-edge Deployment Stacks, and how they can help you clean up unused resources, group resources in logical containers to help visualize potential changes, and build starting plateaus for other teams to work on. About the Technology Infrastructure as code does away with time-consuming manual tasks-no more detailed scripts for creating the correct database or virtual machine. Instead, Azure's native IaC tools create infrastructure from a declarative specification in JSON (ARM) or a domain-specific language (Bicep). They empower users to create or recreate complete infrastructures with just a line of code, as well as take advantage of automation tools like Github Actions or Azure Pipelines.
This book constitutes the refereed proceedings of the 27th International Symposium on Model Checking Software, SPIN 2021, held virtually in July 2021.The 3 full papers, 4 tool papers, and 1 case study presented together with 2 invited talks were carefully reviewed and selected from 20 submissions. Topics covered include formal verification techniques for automated analysis of software; formal analysis for modeling languages, such as UML/state charts; formal specification languages, temporal logic, design-by-contract; model checking, automated theorem proving, including SAT and SMT; verifying compilers; abstraction and symbolic execution techniques; and much more.
This book constitutes selected papers from the Second International Conference on Microelectronic Devices, Circuits and Systems, ICMDCS 2021, held in Vellore, India, in February 2021. The 32 full papers and 6 short papers presented were thoroughly reviewed and selected from 103 submissions. They are organized in the topical sections on digital design for signal, image and video processing; VLSI testing and verification; emerging technologies and IoT; nano-scale modelling and process technology device; analog and mixed signal design; communication technologies and circuits; technology and modelling for micro electronic devices; electronics for green technology.
A comprehensive guide to understanding the standard and most recent advances in the design of reliable computer systems. It is organized into three sections, beginning with an in-depth review of existing reliability techniques and evaluation criteria for both hardware and software. also examined are the models for detecting faults and predicting failures, and the financial considerations which are inherent in the design, purchase, operation, and maintenance of a reliable system.
This book presents contemporary empirical methods in software engineering related to the plurality of research methodologies, human factors, data collection and processing, aggregation and synthesis of evidence, and impact of software engineering research. The individual chapters discuss methods that impact the current evolution of empirical software engineering and form the backbone of future research. Following an introductory chapter that outlines the background of and developments in empirical software engineering over the last 50 years and provides an overview of the subsequent contributions, the remainder of the book is divided into four parts: Study Strategies (including e.g. guidelines for surveys or design science); Data Collection, Production, and Analysis (highlighting approaches from e.g. data science, biometric measurement, and simulation-based studies); Knowledge Acquisition and Aggregation (highlighting literature research, threats to validity, and evidence aggregation); and Knowledge Transfer (discussing open science and knowledge transfer with industry). Empirical methods like experimentation have become a powerful means of advancing the field of software engineering by providing scientific evidence on software development, operation, and maintenance, but also by supporting practitioners in their decision-making and learning processes. Thus the book is equally suitable for academics aiming to expand the field and for industrial researchers and practitioners looking for novel ways to check the validity of their assumptions and experiences. Chapter 17 is available open access under a Creative Commons Attribution 4.0 International License via link.springer.com.
This book details the conceptual foundations, design and implementation of the domain-specific language (DSL) development system DjDSL. DjDSL facilitates design-decision-making on and implementation of reusable DSL and DSL-product lines, and represents the state-of-the-art in language-based and composition-based DSL development. As such, it unites elements at the crossroads between software-language engineering, model-driven software engineering, and feature-oriented software engineering. The book is divided into six chapters. Chapter 1 ("DSL as Variable Software") explains the notion of DSL as variable software in greater detail and introduces readers to the idea of software-product line engineering for DSL-based software systems. Chapter 2 ("Variability Support in DSL Development") sheds light on a number of interrelated dimensions of DSL variability: variable development processes, variable design-decisions, and variability-implementation techniques for DSL. The three subsequent chapters are devoted to the key conceptual and technical contributions of DjDSL: Chapter 3 ("Variable Language Models") explains how to design and implement the abstract syntax of a DSL in a variable manner. Chapter 4 ("Variable Context Conditions") then provides the means to refine an abstract syntax (language model) by using composable context conditions (invariants). Next, Chapter 5 ("Variable Textual Syntaxes") details solutions to implementing variable textual syntaxes for different types of DSL. In closing, Chapter 6 ("A Story of a DSL Family") shows how to develop a mixed DSL in a step-by-step manner, demonstrating how the previously introduced techniques can be employed in an advanced example of developing a DSL family. The book is intended for readers interested in language-oriented as well as model-driven software development, including software-engineering researchers and advanced software developers alike. An understanding of software-engineering basics (architecture, design, implementation, testing) and software patterns is essential. Readers should especially be familiar with the basics of object-oriented modelling (UML, MOF, Ecore) and programming (e.g., Java).
Apply the industrial engineering science of invention and assembly to how software is described, planned, and built, allowing you to be free to flex your practices according to your needs, putting principle over habit and rules.Reading about Agile practices is like reading diet advice. Everything sounds unique and good; everything starts with good intentions. Then reality sets in. Organizations adapt their practices, but lose sight of grounding principles. A bias toward ceremonies, metrics, and recipes comes at the expense of efficiently getting the real work done. Managers and developers are incentivized to game the system. Organizational metrics become detached from the reality of what is being delivered and how.The Agile Codex shows you how to describe a software project as an acyclic dependency tree of sized work items, scoped to be operated on by one software engineer each and completed within a week. It provides Open Source tooling to help you visualize, sequence and assign these work items to account for risk and increase predictability in your delivery times. You'll see the value of doing this as it applies to efficiently planning and adjusting software projects in the face of learning and change. Finally, the book covers the collaborative agile principles required to bring this skill set and practice to a software team.Throughout the book you'll be reminded that software engineering is not a rote task - it is primarily a skilled, creative act. As such, you'll see that we need to account for the space needed to research, plan, create, and adjust. The Agile practices serving the codex deal with this intersection between the engineering problem of software delivery flow, and the human reality of how work is described, owned, executed, and transitioned from one state to another.Everything an agile team does must serve the codex. The creation and the care and feeding of this structured tree of work sets the frame in which all other team actions take place and against which all successes or failures can be evaluated.
This textbook addresses students, professionals, lecturers and researchers interested in software product line engineering. With more than 100 examples and about 150 illustrations, the authors describe in detail the essential foundations, principles and techniques of software product line engineering. The authors are professionals and researchers who significantly influenced the software product line engineering paradigm and successfully applied software product line engineering principles in industry. They have structured this textbook around a comprehensive product line framework. Software product line engineering has proven to be the paradigm for developing a diversity of software products and software-intensive systems in shorter time, at lower cost, and with higher quality. It facilitates platform-based development and mass customisation. The authors elaborate on the two key principles behind software product line engineering: (1) the separation of software development in two distinct processes, domain and application engineering; (2) the explicit definition and management of the variability of the product line across all development artefacts. As a student, you will find a detailed description of the key processes, their activities and underlying techniques for defining and managing software product line artefacts. As a researcher or lecturer, you will find a comprehensive discussion of the state of the art organised around the comprehensive framework. As a professional, you will find guidelines for introducing this paradigm in your company and an overview of industrial experiences with software product line engineering.
Graduate to the next level of your software development career, learning the tools you need to successfully manage the complexity of modern software systems. Whether you are a developer at a small software company, or one of many developers at a large enterprise, your success directly correlates to the ability of your development team to rapidly respond to change. What makes this task challenging in today's world, is that the technical challenges we as developers strive to overcome are becoming increasingly more complex. We have to consider many more options when it comes to things like requirements, solution hosting, support, pace of change, and generally with less time and warning. A good developer knows that it is critical to manage every aspect of software development from soup to nuts, and understands that when details and decisions are left to chance, outcomes can be negatively impacted. Poor planning can result in increased errors, substandard quality, budget and schedule overruns, and result in the ultimate business failure, dissatisfied customers, and stakeholders. This book will help you put on the lenses of a software engineer. You will come away with an understanding of how to view the entire spectrum of the software development process, learn valuable concepts, and apply these principles through meaningful examples, case studies, and source code. What You Will Learn Move beyond being a programmer to being a professional software engineer Spend more time doing software development; minimize time spent dealing with ineffective or inadequate processes Reduce errors in judgment and provide predictable outcomes, while still maintaining agility and responsiveness using Lean and Agile practices Know the steps you can take to ensure a shared understanding among stakeholders Discover tools to validate user experience early and often to minimize costly re-work Develop software designs and architectures that enable long-term business agility Implement patterns and processes that result in "falling into the pit of success" instead of into the "pit of failure" Adopt processes and patterns that will result in pervasive "institutionalized" quality Understand the necessity of redefining the essential role of technical leadership to ensure team maturity and growth Who This Book Is For Software developers and team leaders who have struggled to implement design and development best practices due to lack of team resources, in-depth knowledge, or experience, and want a book designed to provide the confidence and foundational skills needed to achieve success
This book constitutes the refereed proceedings of the 17th IFIP WG 2.13 International Conference on Open Source Systems, OSS 2021, held virtually in May 2021.The 4 full papers and 3 short papers presented were carefully reviewed and selected from 23 submissions. The papers cover a wide range of topics in the field of free/libre open source software (FLOSS) and discuss theories, practices, experiences, and tools on development and applications of OSS systems, with a specific focus on two aspects:(a) the development of open source systems and the underlying technical, social, and economic issue, (b) the adoption of OSS solutions and the implications of such adoption both in the public and in the private sector.
Service engineering is increasingly posing challenges to traditional software engineering methodologies including specification, modeling, architecture, and verification, just to name a few. On the other hand, the latest advancements in software engineering are continuously leveraged in Service Engineering research, especially in the design and implementation of service-oriented systems. Several mutual impacts between service engineering and software engineering could be observed in the last decade, and many research efforts have been devoted to the field. However, in spite of the considerable efforts and significant contributions, few have attempted to summarize the research results systematically.
Written by two very experienced instructors, with more than thirty years of teaching experience between them; Presents material that is grounded in practical applications that are representative of the problems researchers encounter in real life; Teaches readers the core features of modern JavaScript; Covers programming with callbacks and promises; Describes how to build data services and data visualization;
The three-volume set CCIS 1419, CCIS 1420, and CCIS 1421 contains the extended abstracts of the posters presented during the 23rd International Conference on Human-Computer Interaction, HCII 2021, which was held virtually in July 2021. The total of 1276 papers and 241 posters included in the 39 HCII 2021 proceedings volumes was carefully reviewed and selected from 5222 submissions.The posters presented in these three volumes are organized in topical sections as follows: Part I: HCI theory and methods; perceptual, cognitive and psychophisiological aspects of interaction; designing for children; designing for older people; design case studies; dimensions of user experience; information, language, culture and media. Part II: interaction methods and techniques; eye-tracking and facial expressions recognition; human-robot interaction; virtual, augmented and mixed reality; security and privacy issues in HCI; AI and machine learning in HCI. Part III: interacting and learning; interacting and playing; interacting and driving; digital wellbeing, eHealth and mHealth; interacting and shopping; HCI, safety and sustainability; HCI in the time of pandemic.
Perspectives on Data Science for Software Engineering presents the best practices of seasoned data miners in software engineering. The idea for this book was created during the 2014 conference at Dagstuhl, an invitation-only gathering of leading computer scientists who meet to identify and discuss cutting-edge informatics topics. At the 2014 conference, the concept of how to transfer the knowledge of experts from seasoned software engineers and data scientists to newcomers in the field highlighted many discussions. While there are many books covering data mining and software engineering basics, they present only the fundamentals and lack the perspective that comes from real-world experience. This book offers unique insights into the wisdom of the community's leaders gathered to share hard-won lessons from the trenches. Ideas are presented in digestible chapters designed to be applicable across many domains. Topics included cover data collection, data sharing, data mining, and how to utilize these techniques in successful software projects. Newcomers to software engineering data science will learn the tips and tricks of the trade, while more experienced data scientists will benefit from war stories that show what traps to avoid.
Developing a large-scale software system in C++ requires more than just a sound understanding of the logical design issues covered in most books on C++ programming. To be successful, you will also need a grasp of physical design concepts that, while closely tied to the technical aspects of development, include a dimension with which even expert software developers may have little or no experience. This is the definitive book for all C++ software professionals involved in large development efforts such as databases, operating systems, compilers, and frameworks. It is the first C++ book that actually demonstrates how to design large systems, and one of the few books on object-oriented design specifically geared to practical aspects of the C++ programming language. In this book, Lakos explains the process of decomposing large
systems into physical (not inheritance) hierarchies of smaller,
more manageable components. Such systems with their acyclic
physical dependencies are fundamentally easier and more economical
to maintain, test, and reuse than tightly interdependent systems.
In addition to explaining the motivation for following good
physical as well as logical design practices, Lakos provides you
with a catalog of specific techniques designed to eliminate cyclic,
compile-time, and link-time (physical) dependencies. He then
extends these concepts from large to very large systems. The book
concludes with a comprehensive top-down approach to the logical
design of individual components. Appendices include a valuable
design pattern "Protocol Hierarchy" designed to avoid fat
interfaces while minimizing physical dependencies; the details of
implementing an ANSI C compatible C++procedural interface; and a
complete specification for a suite of UNIX-like tools to extract
and analyze physical dependencies. Practical design rules,
guidelines, and principles are also collected in an appendix and
indexed for quick reference.
This textbook offers theoretical, algorithmic and computational guidelines for solving the most frequently encountered linear-quadratic optimization problems. It provides an overview of recent advances in control and systems theory, numerical line algebra, numerical optimization, scientific computations and software engineering.
Any organization with valuable data has been or will be attacked, probably successfully, at some point and with some damage. And, don't all digitally connected organizations have at least some data that can be considered "valuable"? Cyber security is a big, messy, multivariate, multidimensional arena. A reasonable "defense-in-depth" requires many technologies; smart, highly skilled people; and deep and broad analysis, all of which must come together into some sort of functioning whole, which is often termed a security architecture. Secrets of a Cyber Security Architect is about security architecture in practice. Expert security architects have dozens of tricks of their trade in their kips. In this book, author Brook S. E. Schoenfield shares his tips and tricks, as well as myriad tried and true bits of wisdom that his colleagues have shared with him. Creating and implementing a cyber security architecture can be hard, complex, and certainly frustrating work. This book is written to ease this pain and show how to express security requirements in ways that make the requirements more palatable and, thus, get them accomplished. It also explains how to surmount individual, team, and organizational resistance. The book covers: What security architecture is and the areas of expertise a security architect needs in practice The relationship between attack methods and the art of building cyber defenses Why to use attacks and how to derive a set of mitigations and defenses Approaches, tricks, and manipulations proven successful for practicing security architecture Starting, maturing, and running effective security architecture programs Secrets of the trade for the practicing security architecture Tricks to surmount typical problems Filled with practical insight, Secrets of a Cyber Security Architect is the desk reference every security architect needs to thwart the constant threats and dangers confronting every digitally connected organization.
BrunoBuchberger This book is a synopsis of basic and applied research done at the various re search institutions of the Softwarepark Hagenberg in Austria. Starting with 15 coworkers in my Research Institute for Symbolic Computation (RISC), I initiated the Softwarepark Hagenberg in 1987 on request of the Upper Aus trian Government with the objective of creating a scienti?c, technological, and economic impulse for the region and the international community. In the meantime, in a joint e?ort, the Softwarepark Hagenberg has grown to the current (2009) size of over 1000 R&D employees and 1300 students in six research institutions, 40 companies and 20 academic study programs on the bachelor, master's and PhD level. The goal of the Softwarepark Hagenberg is innovation of economy in one of the most important current technologies: software. It is the message of this book that this can only be achieved and guaranteed long term by "watering the root", namely emphasis on research, both basic and applied. In this book, we summarize what has been achieved in terms of research in the various research institutions in the Softwarepark Hagenberg and what research vision we have for the imminent future. When I founded the Softwarepark Hagenberg, in addition to the "watering the root" principle, I had the vision that such a technology park can only prosper if we realize the "magic triangle", i.e. the close interaction of research, academic education, and business applications at one site, see Figure 1.
In this truly unique technical book, today's leading software architects present valuable principles on key development issues that go way beyond technology. More than four dozen architects -- including Neal Ford, Michael Nygard, and Bill de hOra -- offer advice for communicating with stakeholders, eliminating complexity, empowering developers, and many more practical lessons they've learned from years of experience. Among the 97 principles in this book, you'll find useful advice such as: Don't Put Your Resume Ahead of the Requirements (Nitin Borwankar)Chances Are, Your Biggest Problem Isn't Technical (Mark Ramm)Communication Is King; Clarity and Leadership, Its Humble Servants (Mark Richards)Simplicity Before Generality, Use Before Reuse (Kevlin Henney)For the End User, the Interface Is the System (Vinayak Hegde)It's Never Too Early to Think About Performance (Rebecca Parsons) To be successful as a software architect, you need to master both business and technology. This book tells you what top software architects think is important and how they approach a project. If you want to enhance your career, 97 Things Every Software Architect Should Know is essential reading.
The use of Python as a powerful computational tool is expanding with great strides. Python is a language which is easy to use, and the libraries of tools provides it with efficient versatility. As the tools continue to expand, users can create insightful models and simulations. While the tools offer an easy method to create a pipeline, such constructions are not guaranteed to provide correct results. A lot of things can go wrong when building a simulation - deviously so. Users need to understand more than just how to build a process pipeline. Modeling and Simulation in Python introduces fundamental computational modeling techniques that are used in a variety of science and engineering disciplines. It emphasizes algorithmic thinking skills using different computational environments, and includes a number of interesting examples, including Shakespeare, movie databases, virus spread, and Chess. Key Features: Several theories and applications are provided, each with working Python scripts. All Python functions written for this book are archived on GitHub. Readers do not have to be Python experts, but a working knowledge of the language is required. Students who want to know more about the foundations of modeling and simulation will find this an educational and foundational resource.
One of the best languages for the development of financial engineering and instrument pricing applications is C++. This book has several features that allow developers to write robust, flexible and extensible software systems. The book is an ANSI/ISO standard, fully object-oriented and interfaces with many third-party applications. It has support for templates and generic programming, massive reusability using templates (?write once?) and support for legacy C applications. In this book, author Daniel J. Duffy brings C++ to the next level by applying it to the design and implementation of classes, libraries and applications for option and derivative pricing models. He employs modern software engineering techniques to produce industrial-strength applications: Using the Standard Template Library (STL) in financeCreating your own template classes and functionsReusable data structures for vectors, matrices and tensorsClasses for numerical analysis (numerical linear algebra ?)Solving the Black Scholes equations, exact and approximate solutionsImplementing the Finite Difference Method in C++Integration with the ?Gang of Four? Design PatternsInterfacing with Excel (output and Add-Ins)Financial engineering and XMLCash flow and yield curves Included with the book is a CD containing the source code in the Datasim Financial Toolkit. You can use this to get up to speed with your C++ applications by reusing existing classes and libraries. 'Unique... Let's all give a warm welcome to modern pricing
tools.' |
![]() ![]() You may like...
Java Software Structures - Designing and…
John Lewis, Joseph Chase
Digital product license key
R5,892
Discovery Miles 58 920
Positive Youth Development, Volume 41
Richard Lerner, Jacqueline Lerner, …
Hardcover
Business Intelligence and Modelling…
Damianos P. Sakas, Dimitrios K. Nasiopoulos, …
Hardcover
R5,648
Discovery Miles 56 480
|