![]() |
![]() |
Your cart is empty |
||
Books > Computing & IT > Computer programming > Software engineering
This is a how-to book for solving geometric problems robustly or error free in actual practice. The contents and accompanying source code are based on the feature requests and feedback received from industry professionals and academics who want both the descriptions and source code for implementations of geometric algorithms. The book provides a framework for geometric computing using several arithmetic systems and describes how to select the appropriate system for the problem at hand. Key Features: A framework of arithmetic systems that can be applied to many geometric algorithms to obtain robust or error-free implementations Detailed derivations for algorithms that lead to implementable code Teaching the readers how to use the book concepts in deriving algorithms in their fields of application The Geometric Tools Library, a repository of well-tested code at the Geometric Tools website, https://www.geometrictools.com, that implements the book concepts
GPU Parallel Program Development using CUDA teaches GPU programming by showing the differences among different families of GPUs. This approach prepares the reader for the next generation and future generations of GPUs. The book emphasizes concepts that will remain relevant for a long time, rather than concepts that are platform-specific. At the same time, the book also provides platform-dependent explanations that are as valuable as generalized GPU concepts. The book consists of three separate parts; it starts by explaining parallelism using CPU multi-threading in Part I. A few simple programs are used to demonstrate the concept of dividing a large task into multiple parallel sub-tasks and mapping them to CPU threads. Multiple ways of parallelizing the same task are analyzed and their pros/cons are studied in terms of both core and memory operation. Part II of the book introduces GPU massive parallelism. The same programs are parallelized on multiple Nvidia GPU platforms and the same performance analysis is repeated. Because the core and memory structures of CPUs and GPUs are different, the results differ in interesting ways. The end goal is to make programmers aware of all the good ideas, as well as the bad ideas, so readers can apply the good ideas and avoid the bad ideas in their own programs. Part III of the book provides pointer for readers who want to expand their horizons. It provides a brief introduction to popular CUDA libraries (such as cuBLAS, cuFFT, NPP, and Thrust),the OpenCL programming language, an overview of GPU programming using other programming languages and API libraries (such as Python, OpenCV, OpenGL, and Apple's Swift and Metal,) and the deep learning library cuDNN.
Computer games represent a significant software application domain for innovative research in software engineering techniques and technologies. Game developers, whether focusing on entertainment-market opportunities or game-based applications in non-entertainment domains, thus share a common interest with software engineers and developers on how to best engineer game software. Featuring contributions from leading experts in software engineering, the book provides a comprehensive introduction to computer game software development that includes its history as well as emerging research on the interaction between these two traditionally distinct fields. An ideal reference for software engineers, developers, and researchers, this book explores game programming and development from a software engineering perspective. It introduces the latest research in computer game software engineering (CGSE) and covers topics such as HALO (Highly Addictive, sociaLly Optimized) software engineering, multi-player outdoor smartphone games, gamifying sports software, and artificial intelligence in games. The book explores the use of games in software engineering education extensively. It also covers game software requirements engineering, game software architecture and design approaches, game software testing and usability assessment, game development frameworks and reusability techniques, and game scalability infrastructure, including support for mobile devices and web-based services.
Formal methods traditionally address the question of transforming software engineering into a mature engineering discipline. This essentially refers to trusting that the software-intensive systems that form our society's infrastructures are behaving according to their specifications. More recently, formal methods are also used to understand properties and evolution laws of existing complex and adaptive systems-man-made such as smart electrical grids or natural ones such as biological networks. A tribute to Professor Kaisa Sere's contributions to the field of computer science, From Action Systems to Distributed Systems: The Refinement Approach is the first book to address the impact of refinement through a multitude of formal methods ranging from Action Systems to numerous related approaches in computer science research. It presents a state-of-the-art review on the themes of distributed systems and refinement. A fundamental part of Kaisa Sere's research consisted of developing Action Systems, a formalism for modeling, analysing, and constructing distributed systems. Within the design of distributed systems, Kaisa Sere's main research focus was on refinement-based approaches to the construction of systems ranging from pure software to hardware and digital circuits. Presenting scientific contributions from renowned researchers around the world, this edited book consists of five sections: Modeling, Analysis, Proof, Refinement, and Applications. Each chapter has been thoroughly reviewed by experts in the field. The book covers both traditional aspects in formal methods research, as well as current and innovative research directions. It describes the transition from the strong theory of refinement to a methodology that can be applied in practice, with tool support. Examining industrial applications of the methods discussed, this book is a suitable resource for graduate students, researchers, and practitioners interested in using formal methods to develop distributed systems of quality.
Python for Scientific Computation and Artificial Intelligence is split into 3 parts: in Section 1, the reader is introduced to the Python programming language and shown how Python can aid in the understanding of advanced High School Mathematics. In Section 2, the reader is shown how Python can be used to solve real-world problems from a broad range of scientific disciplines. Finally, in Section 3, the reader is introduced to neural networks and shown how TensorFlow (written in Python) can be used to solve a large array of problems in Artificial Intelligence (AI). This book was developed from a series of national and international workshops that the author has been delivering for over twenty years. The book is beginner friendly and has a strong practical emphasis on programming and computational modelling. Features: No prior experience of programming is required. Online GitHub repository available with codes for readers to practice. Covers applications and examples from biology, chemistry, computer science, data science, electrical and mechanical engineering, economics, mathematics, physics, statistics and binary oscillator computing. Full solutions to exercises are available as Jupyter notebooks on the Web.
This textbook introduces software engineering to advanced undergraduates and graduates of computer science. It emphasizes a case-study approach whereby a project is developed through the course of the book, illustrating the different activities of software development. The sequence of chapters is essentially the same as the sequence of activities performed during a typical software project. The revised edition updates this sequence for today's standards and adds a valuable chapter on architecture. All activities, including quality assurance and control activities, are described in each chapter as integral activities for that phase of development. Similarly, the author carefully introduces appropriate metrics for controlling and assessing the software process. The text is bolstered by numerous examples, chapter summaries, a helpful bibliography, and good index.
To really benefit from the reliability and scalability you get with cloud platforms, your applications need to be designed for that environment. Cloud Native Spring in Action is a practical guide for planning, designing, and building your first cloud native apps using the powerful, industry-standard Spring framework Cloud Native Spring in Action teaches you effective Spring and Kubernetes cloud development techniques that you can immediately apply to enterprise-grade applications. As you develop an online bookshop, you'll learn how to build and test a cloud native app with Spring, containerize it with Docker, and deploy it to the public cloud with Kubernetes. Including coverage of security, continuous delivery, and configuration, this hands-on guide is the perfect primer for navigating the increasingly complex cloud landscape. About the Technology Modern applications need scalability, resilience, reliability, and zero-downtime. For most large systems, that means you'll take advantage of cloud-based tools and services. For Java developers, Spring helps effortlessly build cloud native, production-ready applications. Combined with Kubernetes, the Spring ecosystem offers numerous built-in features to help out developers migrating or building new cloud native projects efficiently.
How do you detangle a monolithic system and migrate it to a microservice architecture? How do you do it while maintaining business-as-usual? As a companion to Sam Newman's extremely popular Building Microservices, this new book details a proven method for transitioning an existing monolithic system to a microservice architecture. With many illustrative examples, insightful migration patterns, and a bevy of practical advice to transition your monolith enterprise into a microservice operation, this practical guide covers multiple scenarios and strategies for a successful migration, from initial planning all the way through application and database decomposition. You'll learn several tried and tested patterns and techniques that you can use as you migrate your existing architecture. Ideal for organizations looking to transition to microservices, rather than rebuild Helps companies determine whether to migrate, when to migrate, and where to begin Addresses communication, integration, and the migration of legacy systems Discusses multiple migration patterns and where they apply Provides database migration examples, along with synchronization strategies Explores application decomposition, including several architectural refactoring patterns Delves into details of database decomposition, including the impact of breaking referential and transactional integrity, new failure modes, and more
Over the past decade, software engineering has developed into a highly respected field. Though computing and software engineering education continues to emerge as a prominent interest area of study, few books specifically focus on software engineering education itself. Software Engineering: Effective Teaching and Learning Approaches and Practices presents the latest developments in software engineering education, drawing contributions from over 20 software engineering educators from around the globe. Encompassing areas such as student assessment and learning, innovative teaching methods, and educational technology, this much-needed book greatly enhances libraries with its unique research content.
Is your application or Web site ready for prime time?
Learn data science with Python by building five real-world projects! In Data Science Bookcamp you'll test and build your knowledge of Python and learn to handle the kind of open-ended problems that professional data scientists work on daily. Downloadable data sets and thoroughly-explained solutions help you lock in what you've learned, building your confidence and making you ready for an exciting new data science career. about the technologyIn real-world practice, data scientists create innovative solutions to novel open ended problems. Easy to learn and use, the Python language has become the de facto language for data science amongst researchers, developers, and business users. But knowing a few basic algorithms is not enough to tackle a vague and thorny problem. It takes relentless practice at cracking difficult data tasks to achieve mastery in the field. That's just what this book delivers. about the book Data Science Bookcamp is a comprehensive set of challenging projects carefully designed to grow your data science skills from novice to master. Veteran data scientist Leonard Apeltsin sets five increasingly difficult exercises that test your abilities against the kind of problems you'd encounter in the real world. As you solve each challenge, you'll acquire and expand the data science and Python skills you'll use as a professional data scientist. Ranging from text processing to machine learning, each project comes complete with a unique downloadable data set and a fully-explained step-by-step solution. Because these projects come from Dr. Apeltsin's vast experience, each solution highlights the most likely failure points along with practical advice for getting past unexpected pitfalls. When you wrap up these five awesome exercises, you'll have a diverse relevant skill set that's transferable to working in industry. what's inside Five in-depth Python exercises with full downloadable data sets Web scraping for text and images Organise datasets with clustering algorithms Visualize complex multi-variable datasets Train a decision tree machine learning algorithm about the readerFor readers who know the basics of Python. No prior data science or machine learning skills required. about the author Leonard Apeltsin is a senior data scientist and engineering lead at Primer AI, a startup that specializes in using advanced Natural Language Processing techniques to extract insight from terabytes of unstructured text data. His PhD research focused on bioinformatics that required analyzing millions of sequenced DNA patterns to uncover genetic links in deadly diseases.
Provides a practical and comprehensive introduction to the key aspects of model-based testing as taught in the ISTQB(R) Model-Based Tester Foundation Level Certification Syllabus This book covers the essentials of Model-Based Testing (MBT) needed to pass the ISTQB(R) Foundation Level Model-Based Tester Certification. The text begins with an introduction to MBT, covering both the benefits and the limitations of MBT. The authors review the various approaches to model-based testing, explaining the fundamental processes in MBT, the different modeling languages used, common good modeling practices, and the typical mistakes and pitfalls. The book explains the specifics of MBT test implementation, the dependencies on modeling and test generation activities, and the steps required to automate the generated test cases. The text discusses the introduction of MBT in a company, presenting metrics to measure success and good practices to apply. * Provides case studies illustrating different approaches to Model-Based Testing * Includes in-text exercises to encourage readers to practice modeling and test generation activities * Contains appendices with solutions to the in-text exercises, a short quiz to test readers, along with additional information Model-Based Testing Essentials Guide to the ISTQB(R) Certified Model-Based Tester Foundation Level is written primarily for participants of the ISTQB(R) Certification: software engineers, test engineers, software developers, and anybody else involved in software quality assurance. This book can also be used for anyone who wants a deeper understanding of software testing and of the use of models for test generation.
This book explores software's pivotal role as the code that powers computers, mobile devices, the Internet, and social media. Creating conditions for the ongoing development and use of software, including the Internet as a communications infrastructure, is one of the most compelling issues of our time. Free software is based upon open source code, developed in peer communities as well as corporate settings, challenging the dominance of proprietary software firms and promoting the digital commons. Drawing upon key cases and interviews with free software proponents based in Europe, Brazil and the U.S., the book explores pathways toward creating the digital commons and examines contemporary political struggles over free software, privacy and civil liberties on the Internet that are vital for the commons' continued development.
This classic reference work is a comprehensive guide to the design, evaluation, and use of reliable computer systems. It includes case studies of reliable systems from manufacturers, such as Tandem, Stratus, IBM, and Digital. It covers special systems such as the Galileo Orbiter fault protection system and AT&T telephone switching system processors.
The potential of software applications to solve an array of office and administrative problems is increasing faster than the ability of users to exploit it. We need to make systems easier to learn and more comfortable to use. This book reports a major advance in the effort to accomplish both goals. Flexcel enables users to modify access and dialog dynamics to their specific requirements. Relying on a plan recognition feature, the system proposes adaptations or uses of adaptations. The ongoing conflict between the adaptive and the adaptable is resolved in an integration: user and system share the responsibility for the initiatives, decision-making and execution. A "critic" component of the system then analyzes the user's handling of the adaptation tools and suggests improvements. The system offers an environment in which users can explore as they learn. HyPlan implements the context-sensitive help that facilitates learning on demand. When the PLANET plan-recognition feature identifies the kinds of support for work that may possibly be required, HyPlan provides, on request, specific assistance in the form of hypermedia or animated displays and tutorials. Developmental research has shown that users take advantage of opportunities to adapt interfaces only in conjunction with help-functions -- which are accepted when they do not interrupt work. And studies by social scientists have shown that adaptations of technical systems have to be integrated into the overall process of organizational innovation and undertaken cooperatively. This book will stimulate all those concerned with software -- from computational, cognitive, ergonomic, or organizational standpoints -- to reconceive the relationship between design and user support.
Few software projects are completed on time, on budget, and to their original specifications. Focusing on what practitioners need to know about risk in the pursuit of delivering software projects, Applied Software Risk Management: A Guide for Software Project Managers covers key components of the risk management process and the software development process, as well as best practices for software risk identification, risk planning, and risk analysis. Written in a clear and concise manner, this resource presents concepts and practical insight into managing risk. It first covers risk-driven project management, risk management processes, risk attributes, risk identification, and risk analysis. The book continues by examining responses to risk, the tracking and modeling of risks, intelligence gathering, and integrated risk management. It concludes with details on drafting and implementing procedures. A diary of a risk manager provides insight in implementing risk management processes. Bringing together concepts across software engineering with a project management perspective, Applied Software Risk Management: A Guide for Software Project Managers presents a rigorous, scientific method for identifying, analyzing, and resolving risk.
This book provides engineers, developers, and technicians with a detailed treatment of various models of software behavior that will support early analysis, comprehension, and model-based testing. The expressive capabilities and limitations of each behavioral model are also discussed.
Process Improvement and CMMI (R) for Systems and Software provides a workable approach for achieving cost-effective process improvements for systems and software. Focusing on planning, implementation, and management in system and software processes, it supplies a brief overview of basic strategic planning models and covers fundamental concepts and approaches for system and software measurement, testing, and improvements. The book represents the significant cumulative experience of the authors who were among the first to introduce quality management to the software development processes. It introduces CMMI (R) and various other software and systems process models. It also provides readers with an easy-to-follow methodology for evaluating the status of development and maintenance processes and for determining the return on investment for process improvements. The authors examine beta testing and various testing and usability programs. They highlight examples of useful metrics for monitoring process improvement projects and explain how to establish baselines against which to measure achieved improvements. Divided into four parts, this practical resource covers: Strategy and basics of quality and process improvement Assessment and measurement in systems and software Improvements and testing of systems and software Managing and reporting data The text concludes with a realistic case study that illustrates how the process improvement effort is structured and brings together the methods, tools, and techniques discussed. Spelling out how to lay out a reasoned plan for process improvement, this book supplies readers with concrete action plans for setting up process improvement initiatives that are effective, efficient, and sustainable.
This book provides a high-level description, together with a mathematical and an experimental analysis, of Java and of the Java Virtual Machine (JVM), including a standard compiler of Java programs to JVM code and the security critical bytecode verifier component of the JVM. The description is structured into language layers and machine components. It comes with a natural executable refinement (written in AsmGofer and provided on CD ROM) which can be used for testing code. The method developed for this purpose is based on Abstract State Machines (ASMs) and can be applied to other virtual machines and to other programming languages as well. The book is written for advanced students and for professionals and practitioners in research and development who need a complete and transparent definition and an executable model of the language and of the virtual machine underlying its intended implementation.The CD ROM contains the entire text of the book and numerous examples and exercises.
If you want to push your Java skills to the next level, this book provides expert advice from Java leaders and practitioners. You'll be encouraged to look at problems in new ways, take broader responsibility for your work, stretch yourself by learning new techniques, and become as good at the entire craft of development as you possibly can Edited by Kevlin Henney and Trisha Gee, 97 Things Every Java Programmer Should Know reflects lifetimes of experience writing Java software and living with the process of software development. Great programmers share their collected wisdom to help you rethink Java practices, whether working with legacy code or incorporating changes since Java 8 A few of the 97 things you should know: "Behavior Is Easy, State Is Hard"-Edson Yanaga "Learn Java Idioms and Cache in Your Brain"-Jeanne Boyarsky "Java Programming from a JVM Performance Perspective"-Monica Beckwith "Garbage Collection Is Your Friend"-Holly K Cummins "Java's Unspeakable Types"-Ben Evans "The Rebirth of Java"-Sander Mak "Do You Know What Time It Is?"-Christin Gorman
The calculus of IT support for the banking, securities, and insurance industries has changed dramatically and rapidly over the past few years. Consolidation and deregulation are creating opportunities and challenges never before seen. Unheard of just a few years ago, e-commerce has given birth to new infrastructures and departments needed to support them. And the Internet/Intranet/Extranet triple-whammy is the most critical component of most financial IT shops. At the same time, new intelligent agents stand ready to take on such diverse functions as customer profiling and data mining. Get a handle on all these new and newer ripples with Financial Services Information Systems. Here, in this exhaustive new guide and reference book, industry guru Jessica Keyes gives you the no-nonsense scoop on not just the tried and true IT tools of today, but also the up-and-coming "hot" technologies of tomorrow, and how to plan for them. Financial Services Information Systems addresses challenges and solutions associated with: supporting the self-service revolution by servicing kiosks and ATMs efficiently and economically, straight-through processing for the securities industry, outsourcing business communications in the insurance industry, distributed integration as a cost-effective alternative to data warehousing, and putting inbound fax automation to work in financial organizations.
To achieve consistent software project success under the pressures of today's software development environment, software organizations require achievable plans including viable estimates of schedule, resources, and risks. To estimate realistically, you must understand how to apply sound estimation processes, tools, and data. Software Sizing, Estimation, and Risk Management: When Performance is Measured Performance Improves is a practical, hands-on discussion of the software estimation, planning, and control process. This includes critical factors that impact estimates, methods for selecting and applying appropriate measures to projects, proper software sizing, and processes to identify and manage risk. The authors use their expertise in sizing, estimation, process engineering, and risk management to clearly demonstrate problems that make many estimates crumble and solutions that provide successful project plans. The book offers insight not available anywhere else, enabling you to recognize and avoid downstream impacts resulting from poor estimates.
Based upon the authors' experience in designing and deploying an embedded Linux system with a variety of applications, Embedded Linux System Design and Development contains a full embedded Linux system development roadmap for systems architects and software programmers. Explaining the issues that arise out of the use of Linux in embedded systems, the book facilitates movement to embedded Linux from traditional real-time operating systems, and describes the system design model containing embedded Linux. This book delivers practical solutions for writing, debugging, and profiling applications and drivers in embedded Linux, and for understanding Linux BSP architecture. It enables you to understand: various drivers such as serial, I2C and USB gadgets; uClinux architecture and its programming model; and the embedded Linux graphics subsystem. The text also promotes learning of methods to reduce system boot time, optimize memory and storage, and find memory leaks and corruption in applications. This volume benefits IT managers in planning to choose an embedded Linux distribution and in creating a roadmap for OS transition. It also describes the application of the Linux licensing model in commercial products.
Characterized by lightning quick innovation, abrupt shifts in technology, and shorter lifecycles, the marketing of IT products and services presents a unique set of challenges and often requires IT managers and developers to get involved in the marketing process. Marketing IT Products and Services is written to help busy IT managers and marketing managers get up to speed quickly and easily on what's needed to develop effective marketing strategies and campaigns. Focusing on the unique issues involved, this one-stop resource provides everything needed to understand the roles, responsibilities, and management techniques essential for the development of successful strategies. It covers strategic market planning, targeting markets, researching markets, understanding the competition, integrating market and sales strategies, nuances of global markets, developing marketing budgets, pricing, and implementing marketing campaigns. A plethora of appendices included on the book's downloadable resources allow you to get up and running right away. Aside from a complete marketing glossary, two complete marketing plans-one for a hardware product; the other for a software product-enable you to bypass the "scut" work of developing a marketing plan so you can focus on the creative aspects of marketing. Because a marketing plan is closely aligned with an organization's business and strategic plans, this book provides you with templates for both of these, as well as a template for that all-important business plan executive summary. The downloadable resources also feature loads of fill-in templates including customer and competitor analysis surveys, sample press releases, letters of agreement, demographic and target market worksheets, and cost benefit forms. If you have a marketing need, this book has an effective template to meet that need.
Delivering successful projects means the ability to produce high quality software within budget and on time-consistently, but when one mentions quality to software engineers or project managers, they talk about how impossible it is to eliminate defects from software. This assumption is passed on and on until it becomes accepted wisdom, with the power of a self-fulfilling prophecy. And when a project fails to arrive on time or up to standards, team members will turn on each other. The project got delayed because the engineers did a poor job in development or too much was promised upfront for this short of a timeline. In Delivering Successful Projects with TSPSM and Six Sigma: A Practical Guide to Implementing Team Software ProcessSM, you will learn how to effectively manage the development of a software project and deliver it in line with customer expectations. This refreshing volume - Offers real-world case studies about the author's experience at Microsoft successfully implementing TSP to achieve higher quality software Empowers software developers to take responsibility for project management Explains how Six Sigma and TSP combined can dramatically reduce software defects By applying these principles put forth by one of the most respected names in software development, your software team will learn how to function as a team and turn out products where zero defects and on-time delivery are the norm. |
![]() ![]() You may like...
Web Services - Concepts, Methodologies…
Information Reso Management Association
Hardcover
R9,718
Discovery Miles 97 180
Petri Nets in Science and Engineering
Raul Campos-Rodriguez, Mildreth Alcaraz-Mejia
Hardcover
R3,321
Discovery Miles 33 210
C++ How to Program: Horizon Edition
Harvey Deitel, Paul Deitel
Paperback
R1,917
Discovery Miles 19 170
Web-Based Services - Concepts…
Information Reso Management Association
Hardcover
R18,334
Discovery Miles 183 340
News Search, Blogs and Feeds - A Toolkit
Lars Vage, Lars Iselid
Paperback
R1,412
Discovery Miles 14 120
|