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
A complete introduction to building robust and reliable software Beginning Software Engineering demystifies the software engineering methodologies and techniques that professional developers use to design and build robust, efficient, and consistently reliable software. Free of jargon and assuming no previous programming, development, or management experience, this accessible guide explains important concepts and techniques that can be applied to any programming language. Each chapter ends with exercises that let you test your understanding and help you elaborate on the chapter's main concepts. Everything you need to understand waterfall, Sashimi, agile, RAD, Scrum, Kanban, Extreme Programming, and many other development models is inside! * Describes in plain English what software engineering is * Explains the roles and responsibilities of team members working on a software engineering project * Outlines key phases that any software engineering effort must handle to produce applications that are powerful and dependable * Details the most popular software development methodologies and explains the different ways they handle critical development tasks * Incorporates exercises that expand upon each chapter's main ideas * Includes an extensive glossary of software engineering terms
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 focuses on mathematical modeling, describes the process of constructing and evaluating models, discusses the challenges and delicacies of the modeling process, and explicitly outlines the required rules and regulations so that the reader will be able to generalize and reuse concepts in other problems by relying on mathematical logic.Undergraduate and postgraduate students of different academic disciplines would find this book a suitable option preparing them for jobs and research fields requiring modeling techniques. Furthermore, this book can be used as a reference book for experts and practitioners requiring advanced skills of model building in their jobs.
This book constitutes refereed proceedings of the 13th International Conference on International Conference on Computational Collective Intelligence, ICCCI 2021, held in Kallithea, Rhodes, Greece, in October - November 2021. Due to the the COVID-19 pandemic the conference was held online. The 44 full papers and 14 short papers were thoroughly reviewed and selected from 231 submissions. The papers are organized according to the following topical sections: social networks and recommender systems; collective decision-making; computer vision techniques; innovations in intelligent systems; cybersecurity intelligent methods; data mining and machine learning; machine learning in real-world data; Internet of Things and computational technologies for collective intelligence; smart industry and management systems; low resource languages processing; computational intelligence for multimedia understanding.
Category theory is unmatched in its ability to organize and layer abstractions and to find commonalities between structures of all sorts. No longer the exclusive preserve of pure mathematicians, it is now proving itself to be a powerful tool in science, informatics, and industry. By facilitating communication between communities and building rigorous bridges between disparate worlds, applied category theory has the potential to be a major organizing force. This book offers a self-contained tour of applied category theory. Each chapter follows a single thread motivated by a real-world application and discussed with category-theoretic tools. We see data migration as an adjoint functor, electrical circuits in terms of monoidal categories and operads, and collaborative design via enriched profunctors. All the relevant category theory, from simple to sophisticated, is introduced in an accessible way with many examples and exercises, making this an ideal guide even for those without experience of university-level mathematics.
Customer experience engineering applied to the engineering department is rare, but needed. Most companies keep support, UX, engineering, product, and CX separate. To address this gap, this book highlights roles and techniques that are proven to accelerate issue detection and prevention by 30% or more. With the author's vast experience in tech support, he has developed techniques and skills that allow engineers to gain customer insights faster and through new and insightful sources that are within their reach. You will develop a deep understanding of the impact of issues; understand and optimize the speed of the engineering feedback loop (issue resolution time); and develop the ability to calculate the cost of the issues or customer friction to the business (in aggregate and on a case-by-case basis). Organizations can save significant money and add additional revenue by addressing customer friction proactively in collaboration with product, engineering, and site reliability engineering (SRE) functions and reduce the average time of an issue resolution by 80%. The cross-functional leadership, mentoring, and engineering techniques you'll learn from this proactive stance are very valuable and teachable, and this book will show you the path forward. What You Will Learn Gain the techniques and tools necessary to validate customer journey success in production Contribute to customer-centric key performance indicators (KPIs) on executive dashboards Create meaningful insights and data points that allowed the feedback loop to be optimized and efficient Who This Book is For Professionals participating in the value stream of digital software engineering for the benefit of customer experiences, directly or indirectly. You may be an engineer practicing DevOps or site reliability, or you might be a product owner, UX designer, or researcher. You might be working in support and seeking for new ways to engage with your engineering teams.
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.
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.
Do you have creative ideas that you wish you could transform into code? Do you want to boost your problem solving and logic skills? Do you want to enhance your career by adopting an algorithmic mindset? In our increasingly digital world, coding is an essential skill. Communicating an algorithm to a machine to perform a set of tasks is vital. Beginner's Guide to Code Algorithms: Experiments to Enhance Productivity and Solve Problems written by Deepankar Maitra teaches you how to think like a programmer. The author unravels the secret behind writing code - building a good algorithm. Algorithmic thinking leads to asking the right question and enables a shift from issue resolution to value creation. Having this mindset will make you more marketable to employers. This book takes you on a problem-solving journey to expand your mind and increase your willingness to experiment with code. You will: Learn the art of building an algorithm through hands-on exercises Understand how to develop code for inspiring productivity concepts Build a mentality of developing algorithms to solve problems Develop, test, review, and improve code through guided experimentation This book is designed to develop a culture of logical thinking through intellectual stimulation. It will benefit students and teachers of programming, business professionals, as well as experienced users of Microsoft Excel who wish to become proficient with macros.
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.
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.
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 addresses mechanisms for reducing model heterogeneity induced by the absence of explicit semantics expression in the formal techniques used to specify design models. More precisely, it highlights the advances in handling both implicit and explicit semantics in formal system developments, and discusses different contributions expressing different views and perceptions on the implicit and explicit semantics. The book is based on the discussions at the Shonan meeting on this topic held in 2016, and includes contributions from the participants summarising their perspectives on the problem and offering solutions. Divided into 5 parts: domain modelling, knowledge-based modelling, proof-based modelling, assurance cases, and refinement-based modelling, and offers inspiration for researchers and practitioners in the fields of formal methods, system and software engineering, domain knowledge modelling, requirement analysis, and explicit and implicit semantics of modelling languages.
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 constitutes the refereed proceedings of the Software Engineering and Algorithms section of the 10th Computer Science On-line Conference 2021 (CSOC 2021), held on-line in April 2021. Software engineering research and its applications to intelligent algorithms take an essential role in computer science research. In this book, modern research methods, application of machine and statistical learning in the software engineering research are presented.
This book helps participants in agile software development environments learn to become leaders. Facilitative leaders should be at every level of the organization, from individual contributor to informal team leader to managers of all stripes -- it takes much focus and intentionality from senior organizational leaders, who have special obligations in creating successful lean and agile development environments. But, beyond the principles of facilitative leadership for agility, People over Process provides tips and demonstrative scenes for the more important and common software meetings: architecture simulations, project planning, team configurations, retrospectives, and more. The author fully illustrates the principles and shares proven techniques for the most important leadership events in agile projects. While this book focuses on facilitating extraordinarily well-prepared meetings, it serves as a metaphor for leadership more broadly. The leader's obligation to help their team make rigorous fact-based decisions; to gain broad input and have participants aligned on the outcomes and next steps; and to do so in an efficient way that respects the time of the participants is as relevant to every-day leadership activity as it is to conducting meetings. The author mixes background and explanation with demonstration -- in this case, the story of an agile project at the fictitious Pacifica Bank. The scenario constructed at Pacifica illustrates the concepts of effective leadership and productive workplace environments. The book concentrates on the flow of software from understanding what is needed through design, development, testing, and deployment. Essentially, the author provides a simple and powerful model of leadership, examples, and tips. This is not a cookbook on how to lead -- It is a set of principles and examples. All leaders must find their own way for their team, their organization, and their unique challenges.
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.
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).
The C programming language is a popular language in industries as well as academics. Since its invention and standardized as ANSI C, several other standards known as C99, C11, and C17 were published with new features in subsequent years. This book covers all the traits of ANSI C and includes new features present in other standards. The content of this book helps a beginner to learn the fundamental concept of the C language. The book contains a step-by-step explanation of every program that allows a learner to understand the syntax and builds a foundation to write similar programs. The explanation clarity, exercises, and illustrations present in this book make it a complete textbook in all aspects. Features: Other than ANSI C, the book explains the new C standards like C99, C11, and C17. Most basic and easy-to-follow programs are chosen to explain the concepts and their syntax. More emphasis is given to the topics like Functions, Pointers, and Structures. Recursion is emphasized with numerous programming examples and diagrams. A separate chapter on the command-line argument and preprocessors is included that concisely explains their usage. Several real-life figures are taken to explain the concepts of dynamic memory allocation, file handling, and the difference between structure and union. The book contains more than 260 illustrations, more than 200 programs, and exercises at the end of each chapter. This book serves as a textbook for UG/PG courses in science and engineering. The researcher, postgraduate engineers, and embedded software developers can also keep this book as reference material for their fundamental learning.
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.
Survival analysis uses statistics to calculate time to failure. Survival Analysis with Python takes a fresh look at this complex subject by explaining how to use the Python programming language to perform this type of analysis. As the subject itself is very mathematical and full of expressions and formulations, the book provides detailed explanations and examines practical implications. The book begins with an overview of the concepts underpinning statistical survival analysis. It then delves into Parametric models with coverage of Concept of maximum likelihood estimate (MLE) of a probability distribution parameter MLE of the survival function Common probability distributions and their analysis Analysis of exponential distribution as a survival function Analysis of Weibull distribution as a survival function Derivation of Gumbel distribution as a survival function from Weibull Non-parametric models including Kaplan-Meier (KM) estimator, a derivation of expression using MLE Fitting KM estimator with an example dataset, Python code and plotting curves Greenwood's formula and its derivation Models with covariates explaining The concept of time shift and the accelerated failure time (AFT) model Weibull-AFT model and derivation of parameters by MLE Proportional Hazard (PH) model Cox-PH model and Breslow's method Significance of covariates Selection of covariates The Python lifelines library is used for coding examples. By mapping theory to practical examples featuring datasets, this book is a hands-on tutorial as well as a handy reference.
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.
This book summarizes the research findings presented at the 13th International Joint Conference on Knowledge-Based Software Engineering (JCKBSE 2020), which took place on August 24-26, 2020. JCKBSE 2020 was originally planned to take place in Larnaca, Cyprus. Unfortunately, the COVID-19 pandemic forced it be rescheduled as an online conference. JCKBSE is a well-established, international, biennial conference that focuses on the applications of artificial intelligence in software engineering. The 2020 edition of the conference was organized by Hiroyuki Nakagawa, Graduate School of Information Science and Technology, Osaka University, Japan, and George A. Tsihrintzis and Maria Virvou, Department of Informatics, University of Piraeus, Greece. This research book is a valuable resource for experts and researchers in the field of (knowledge-based) software engineering, as well as general readers in the fields of artificial and computational Intelligence and, more generally, computer science wanting to learn more about the field of (knowledge-based) software engineering and its applications. An extensive list of bibliographic references at the end of each paper helps readers to probe further into the application areas of interest to them.
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 |
You may like...
Writing Better Requirements - Writing…
Ian Alexander, Richard Stevens
Paperback
R2,122
Discovery Miles 21 220
|