![]() |
![]() |
Your cart is empty |
||
Books > Computing & IT > Computer programming > Software engineering
Defines concepts and processes of software and software development, such as agile processes, requirements engineering, and software architecture, design, construction Uncovers and answers various misconceptions about the software development process and presents an up-to-date reflection on the state of practice in the industry Details how non-software engineers can better communicate their needs to software engineers and more effectively participate in design and testing to ultimately lower software development and maintenance costs Helps answer the question: How can I better leverage embedded software in my design? Adds new chapters on software architecture, software engineering and systems, and software engineering and disruptive technologies, as well as information on cybersecurity Features new appendices that describe a sample automation system, covering software requirements, architecture, and design
Effective Data Science Infrastructure is a hands-on guide to assembling infrastructure for data science and machine learning applications. It reveals the processes used at Netflix and other data driven companies to manage their cutting edge data infrastructure. As you work through this easy-to-follow guide, you'll set up end-to end infrastructure from the ground up, with a fully customizable process you can easily adapt to your company. You'll learn how you can make data scientists more productive with your existing cloud infrastructure, a stack of open source software, and idiomatic Python. Throughout, you'll follow a human-centric approach focused on user experience and meeting the unique needs of data scientists. About the Technology Turning data science projects from small prototypes to sustainable business processes requires scalable and reliable infrastructure. This book lays out the workflows, components, and methods of the full infrastructure stack for data science, from data warehousing and scalable compute to modeling frameworks.
Software Product Management (SPM) is a key success factor for software products and software-intensive products. This book gives a comprehensive overview on SPM for beginners as well as best practices, methodology and in-depth discussions for experienced product managers. This includes product strategy, product planning, participation in strategic management activities and orchestration of the functional units of the company. The book is based on the results of the International Software Product Management Association (ISPMA (R), SPM Body of Knowledge V.2) which is led by a group of SPM experts from industry and research with the goal to foster software product management excellence across industries. This book can be used as textbook for ISPMA (R)-based education and as guide for anybody interested in SPM as one of the most exciting and challenging disciplines in the business of software.
Knowledge Architectures reviews traditional approaches to managing information and explains why they need to adapt to support 21st-century information management and discovery. Exploring the rapidly changing environment in which information is being managed and accessed, the book considers how to use knowledge architectures, the basic structures and designs that underlie all of the parts of an effective information system, to best advantage. Drawing on 40 years of work with a variety of organizations, Bedford explains that failure to understand the structure behind any given system can be the difference between an effective solution and a significant and costly failure. Demonstrating that the information user environment has shifted significantly in the past 20 years, the book explains that end users now expect designs and behaviors that are much closer to the way they think, work, and act. Acknowledging how important it is that those responsible for developing an information or knowledge management system understand knowledge structures, the book goes beyond a traditional library science perspective and uses case studies to help translate the abstract and theoretical to the practical and concrete. Explaining the structures in a simple and intuitive way and providing examples that clearly illustrate the challenges faced by a range of different organizations, Knowledge Architectures is essential reading for those studying and working in library and information science, data science, systems development, database design, and search system architecture and engineering.
Do modern programming languages, IDEs, and libraries make coding easy? Maybe, but coding is not design. Large-scale or expensive apps clearly require evaluation of design choices. Still, software design directly impacts code reuse and longevity even for small-scale apps with limited overhead. This text evaluates and contrasts common object-oriented designs. A given problem may have many solutions. A developer may employ different design techniques - composition, inheritance, dependency injection, delegation, etc. - to solve a particular problem. A skilled developer can determine the costs and benefits of different design responses, even amid competing concerns. A responsible developer documents design choices as a contract with the client, delineating external and internal responsibilities. To promote effective software design, this book examines contractual, object-oriented designs for immediate and sustained use as well as code reuse. The intent of identifying design variants is to recognize and manage conflicting goals such as short versus long-term utility, stability versus flexibility, and storage versus computation. Many examples are given to evaluate and contrast different solutions and to compare C# and C++ effects. No one has a crystal ball; however, deliberate design promotes software longevity. With the prominence of legacy OO code, a clear understanding of different object-oriented designs is essential. Design questions abound. Is code reuse better with inheritance or composition? Should composition rely on complete encapsulation? Design choices impact flexibility, efficiency, stability, longevity, and reuse, yet compilers do not enforce design and syntax does not necessarily illustrate design. Through deliberate design, or redesign when refactoring, developers construct sustainable, efficient code.
This book presents a comprehensive coverage of the five fundamental yet intertwined pillars paving the road towards the future of connected autonomous electric vehicles and smart cities. The connectivity pillar covers all the latest advancements and various technologies on vehicle-to-everything (V2X) communications/networking and vehicular cloud computing, with special emphasis on their role towards vehicle autonomy and smart cities applications. On the other hand, the autonomy track focuses on the different efforts to improve vehicle spatiotemporal perception of its surroundings using multiple sensors and different perception technologies. Since most of CAVs are expected to run on electric power, studies on their electrification technologies, satisfaction of their charging demands, interactions with the grid, and the reliance of these components on their connectivity and autonomy, is the third pillar that this book covers. On the smart services side, the book highlights the game-changing roles CAV will play in future mobility services and intelligent transportation systems. The book also details the ground-breaking directions exploiting CAVs in broad spectrum of smart cities applications. Example of such revolutionary applications are autonomous mobility on-demand services with integration to public transit, smart homes, and buildings. The fifth and final pillar involves the illustration of security mechanisms, innovative business models, market opportunities, and societal/economic impacts resulting from the soon-to-be-deployed CAVs. This book contains an archival collection of top quality, cutting-edge and multidisciplinary research on connected autonomous electric vehicles and smart cities. The book is an authoritative reference for smart city decision makers, automotive manufacturers, utility operators, smart-mobility service providers, telecom operators, communications engineers, power engineers, vehicle charging providers, university professors, researchers, and students who would like to learn more about the advances in CAEVs connectivity, autonomy, electrification, security, and integration into smart cities and intelligent transportation systems.
The ?rst and foremost goal of this lecture series was to show the beauty, depth and usefulness of the key ideas in computer science. While working on the lecture notes, we came to understand that one can recognize the true spirit of a scienti?c discipline only by viewing its contributions in the framework of science as a whole. We present computer science here as a fundamental science that, interacting with other scienti?c disciplines, changed and changes our view on the world, that contributes to our understanding of the fundamental concepts of science and that sheds new light on and brings new meaning to several of these concepts. We show that computer science is a discipline that discovers spectacular, unexpected facts, that ?nds ways out in seemingly unsolvable s- uations, and that can do true wonders. The message of this book is that computer science is a fascinating research area with a big impact on the real world, full of spectacular ideas and great ch- lenges. It is an integral part of science and engineering with an above-average dynamic over the last 30 years and a high degree of interdisciplinarity. The goal of this book is not typical for popular science writing, whichoftenrestrictsitselftooutliningtheimportanceofaresearch area. Whenever possible we strive to bring full understanding of the concepts and results presented.
Published in 1993. Software reuse has been shown to achieve improvements in productivity, quality and timeliness of software. The collection of papers in this book were given at a seminar organized by UNICOM and the British Computer Society Software Reuse Specialist Group. They address the reasons why software reuse can maximize an organization's return from past expenditure and ensure a good future expenditure. Increasing the automation of software development requires access to explicit knowledge about processes and products involved. The chapters examine the relationship between reuse and other aspects of software engineering, including management techniques and structures, CASE, methodologies and object orientation. In addition, the papers aim to provide a structures insight into new techniques which will become available through the 1990s. This text is suitable for software managers and directors, software engineers, software professionals, academics, and other involved in software engineering research.
Software Design: Creating Solutions for Ill-Structured Problems, Third Edition provides a balanced view of the many and varied software design practices used by practitioners. The book provides a general overview of software design within the context of software development and as a means of addressing ill-structured problems. The third edition has been expanded and reorganised to focus on the structure and process aspects of software design, including architectural issues, as well as design notations and models. It also describes a variety of different ways of creating design solutions such as plan-driven development, agile approaches, patterns, product lines, and other forms. Features *Includes an overview and review of representation forms used for modelling design solutions *Provides a concise review of design practices and how these relate to ideas about software architecture *Uses an evidence-informed basis for discussing design concepts and when their use is appropriate This book is suitable for undergraduate and graduate students taking courses on software engineering and software design, as well as for software engineers. Author David Budgen is a professor emeritus of software engineering at Durham University. His research interests include evidence-based software engineering (EBSE), software design, and healthcare informatics.
Using the implementation of a deep learning framework as an example, C++ Template Metaprogramming in Practice: A Deep Learning Framework explains the application of metaprogramming in a relatively large project and emphasizes ways to optimize systems performance. The book is suitable for developers with a basic knowledge of C++. Developers familiar with mainstream deep learning frameworks can also refer to this book to compare the differences between the deep learning framework implemented with metaprogramming and compile-time computing with deep learning frameworks using object-oriented methods. Consisting of eight chapters, the book starts with two chapters discussing basic techniques of metaprogramming and compile-time computing. The rest of the book's chapters focus on the practical application of metaprogramming in a deep learning framework. It examines rich types and systems, expression templates, and writing complex meta-functions, as well as such topics as: Heterogeneous dictionaries and policy templates An introduction to deep learning Type system and basic data types Operations and expression templates Basic layers Composite and recurrent layers Evaluation and its optimization Metaprogramming can construct flexible and efficient code. For C++ developers who are familiar with object-oriented programming, the main difficulty in learning and mastering C++ metaprogramming is establishing the thinking mode of functional programming. The meta-programming approach involved at compile time is functional, which means that the intermediate results of the construction cannot be changed, and the impact may be greater than expected. This book enables C++ programmers to develop a functional mindset and metaprogramming skills. The book also discusses the development cost and use cost of metaprogramming and provides workarounds for minimizing these costs.
Knowledge Architectures reviews traditional approaches to managing information and explains why they need to adapt to support 21st-century information management and discovery. Exploring the rapidly changing environment in which information is being managed and accessed, the book considers how to use knowledge architectures, the basic structures and designs that underlie all of the parts of an effective information system, to best advantage. Drawing on 40 years of work with a variety of organizations, Bedford explains that failure to understand the structure behind any given system can be the difference between an effective solution and a significant and costly failure. Demonstrating that the information user environment has shifted significantly in the past 20 years, the book explains that end users now expect designs and behaviors that are much closer to the way they think, work, and act. Acknowledging how important it is that those responsible for developing an information or knowledge management system understand knowledge structures, the book goes beyond a traditional library science perspective and uses case studies to help translate the abstract and theoretical to the practical and concrete. Explaining the structures in a simple and intuitive way and providing examples that clearly illustrate the challenges faced by a range of different organizations, Knowledge Architectures is essential reading for those studying and working in library and information science, data science, systems development, database design, and search system architecture and engineering.
An up-to-date text designed for undergraduate courses in control systems engineering and principles of automatic controls. The book focuses on design and implementation rather than just the mathematics of control systems. Using a balanced approach, the text presents a unified energy-based approach to modeling; covers analysis techniques for the models presented; and offers a detailed study of digital control and the implementation of digital controllers. Also included are examples and homework problems.
Content-Based Image Classification: Efficient Machine Learning Using Robust Feature Extraction Techniques is a comprehensive guide to research with invaluable image data. Social Science Research Network has revealed that 65% of people are visual learners. Research data provided by Hyerle (2000) has clearly shown 90% of information in the human brain is visual. Thus, it is no wonder that visual information processing in the brain is 60,000 times faster than text-based information (3M Corporation, 2001). Recently, we have witnessed a significant surge in conversing with images due to the popularity of social networking platforms. The other reason for embracing usage of image data is the mass availability of high-resolution cellphone cameras. Wide usage of image data in diversified application areas including medical science, media, sports, remote sensing, and so on, has spurred the need for further research in optimizing archival, maintenance, and retrieval of appropriate image content to leverage data-driven decision-making. This book demonstrates several techniques of image processing to represent image data in a desired format for information identification. It discusses the application of machine learning and deep learning for identifying and categorizing appropriate image data helpful in designing automated decision support systems. The book offers comprehensive coverage of the most essential topics, including: Image feature extraction with novel handcrafted techniques (traditional feature extraction) Image feature extraction with automated techniques (representation learning with CNNs) Significance of fusion-based approaches in enhancing classification accuracy MATLAB (R) codes for implementing the techniques Use of the Open Access data mining tool WEKA for multiple tasks The book is intended for budding researchers, technocrats, engineering students, and machine learning/deep learning enthusiasts who are willing to start their computer vision journey with content-based image recognition. The readers will get a clear picture of the essentials for transforming the image data into valuable means for insight generation. Readers will learn coding techniques necessary to propose novel mechanisms and disruptive approaches. The WEKA guide provided is beneficial for those uncomfortable coding for machine learning algorithms. The WEKA tool assists the learner in implementing machine learning algorithms with the click of a button. Thus, this book will be a stepping-stone for your machine learning journey. Please visit the author's website for any further guidance at https://www.rikdas.com/
This book supports readers in the development of a remotely operated vehicle (ROV) pilot training simulator by exploiting open-source or free gaming software and emphasizing the importance of using established and widely-available game design techniques to provide engaging scenarios for ROV training developers and trainees. There is no such book to guide the users to create an open-source virtual simulator for pilot training in the marine and offshore industry. This book can be used as a reference for undergraduate and postgraduate students, engineers, researchers, and lecturers in VR simulation using UnityTM as the leading software. Some of the key features of the book include: * Step-by-step procedures in development ROV pilot training simulator * Use of open-source software UnityTM that is freely available to all readers * The codes used in the book are self-sufficient as there are no codes hidden from readers
In any serious engineering discipline, it would be unthinkable to construct a large system without having a precise notion of what is to be built and without verifying how the system is expected to function. Software engineering is no different in this respect. Formal methods involve the use of mathematical notation and calculus in software development; such methods are difficult to apply to large-scale systems with practical constraints (e.g., limited developer skills, time and budget restrictions, changing requirements). Here Liu claims that formal engineering methods may bridge this gap. He advocates the incorporation of mathematical notation into the software engineering process, thus substantially improving the rigor, comprehensibility and effectiveness of the methods commonly used in industry. This book provides an introduction to the SOFL (Structured Object-Oriented Formal Language) method that was designed and industry-tested by the author. Written in a style suitable for lecture courses or for use by professionals, there are numerous exercises and a significant real-world case study, so the readers are provided with all the knowledge and examples needed to successfully apply the method in their own projects.
Effective Software Testing is a hands-on guide to creating high quality tests, from your first line of code through pre-delivery checks. It's full of techniques drawn from proven research in software engineering. You'll learn to efficiently engineer tests specifically for your software and end reliance on generic testing practices that may be right for every project. Each chapter puts a new technique into practice with source code samples, real-world tradeoffs, and answers to the common questions developers pose about testing. You'll learn how to scrutinize your requirements for potential tests, generate tests from your code structure, and engineer rigorous suites of unit, integration, and system tests. Go beyond unit tests! Great software testing makes the entire development process more efficient, from understanding your code before you write it to catching bugs in tricky corner cases.Effective Software Testing teaches you a systematic approach to software testing. You'll master easy-to-apply techniques to create strong test suites that are specifically engineered for your code. Following real-world use cases and detailed code samples, you'll soon be engineering tests that find the bugs hiding in edge cases and the parts of code you would never think of testing! Along the way, you'll develop an intuition for testing that can save years of learning by trial and error.
This book focuses on a specialized branch of the vast domain of software engineering: component-based software engineering (CBSE). Component-Based Software Engineering: Methods and Metrics enhances the basic understanding of components by defining categories, characteristics, repository, interaction, complexity, and composition. It divides the research domain of CBSE into three major sub-domains: (1) reusability issues, (2) interaction and integration issues, and (3) testing and reliability issues. This book covers the state-of-the-art literature survey of at least 20 years in the domain of reusability, interaction and integration complexities, and testing and reliability issues of component-based software engineering. The aim of this book is not only to review and analyze the previous works conducted by eminent researchers, academicians, and organizations in the context of CBSE, but also suggests innovative, efficient, and better solutions. A rigorous and critical survey of traditional and advanced paradigms of software engineering is provided in the book. Features: In-interactions and Out-Interactions both are covered to assess the complexity. In the context of CBSE both white-box and black-box testing methods and their metrics are described. This work covers reliability estimation using reusability which is an innovative method. Case studies and real-life software examples are used to explore the problems and their solutions. Students, research scholars, software developers, and software designers or individuals interested in software engineering, especially in component-based software engineering, can refer to this book to understand the concepts from scratch. These measures and metrics can be used to estimate the software before the actual coding commences.
The book addresses the need to investigate new approaches to lower energy requirement in multiple application areas and serves as a guide into emerging circuit technologies. It explores revolutionary device concepts, sensors, and associated circuits and architectures that will greatly extend the practical engineering limits of energy-efficient computation. The book responds to the need to develop disruptive new system architectures and semiconductor processes aimed at achieving the highest level of computational energy efficiency for general purpose computing systems. Discusses unique technologies and material only available in specialized journal and conferences. Covers emerging materials and device structures, such as ultra-low power technologies, nanoelectronics, and microsystem manufacturing. Explores semiconductor processing and manufacturing, device design, and performance. Contains practical applications in the engineering field, as well as graduate studies. Written by international experts from both academia and industry.
The book addresses the need to investigate new approaches to lower energy requirement in multiple application areas and serves as a guide into emerging circuit technologies. It explores revolutionary device concepts, sensors, and associated circuits and architectures that will greatly extend the practical engineering limits of energy-efficient computation. The book responds to the need to develop disruptive new system architecutres, circuit microarchitectures, and attendant device and interconnect technology aimed at achieving the highest level of computational energy efficiency for general purpose computing systems. Features Discusses unique technologies and material only available in specialized journal and conferences Covers emerging applications areas, such as ultra low power communications, emerging bio-electronics, and operation in extreme environments Explores broad circuit operation, ex. analog, RF, memory, and digital circuits Contains practical applications in the engineering field, as well as graduate studies Written by international experts from both academia and industry
This book argues that the key problems of software systems development (SSD) are socio-technical rather than purely technical in nature. Software systems are unique. They are the only human artefacts that are both intangible and determinant. This presents unprecedented problems for the development process both in determining what is required and how it is developed. Primarily this is a problem of communications between stakeholders and developers, and of communications within the development team. Current solutions are not only inadequate in expressing the technical problem, they also evade the communications problems almost entirely. Whilst the book addresses the theoretical aspects of the process, its fundamental philosophy is anchored in the practical problems of everyday software development. It therefore offers both a better understanding of the problems of SSD and practical suggestions of how to deal with those problems. It is intended as a guide for practising IT project managers, particularly those who are relatively new to the position or do not have a strong IT development background. The book will also benefit students in computing and computer-related disciplines who need to know how to develop high quality systems. Software systems development (particularly of large projects) has a notoriously poor track record of delivering projects on time, on budget, and of meeting user needs. Proponents of software engineering suggest that this is because too few project managers actually comply with the disciplines demanded of the process. It is time to ask the question, if this is the case, why might this be? Perhaps instead, it is not the project managers who are wrong, but the definition of the process. The new understanding of the SSD presented here offers alternative models that can help project managers address the difficulties they face and better achieve the targets they are set. This book argues that time is up for the software engineering paradigm of SSD and that it should be replaced with a socio-technical paradigm based on open systems thinking.
Coloured Petri Nets (CPN) is a graphical language for modelling and validating concurrent and distributed systems, and other systems in which concurrency plays a major role. The development of such systems is particularly challenging because of inherent intricacies like possible nondeterminism and the immense number of possible execution sequences. In this textbook Jensen and Kristensen introduce the constructs of the CPN modelling language and present the related analysis methods in detail. They also provide a comprehensive road map for the practical use of CPN by showcasing selected industrial case studies that illustrate the practical use of CPN modelling and validation for design, specification, simulation, verification and implementation in various application domains. Their presentation primarily aims at readers interested in the practical use of CPN. Thus all concepts and constructs are first informally introduced through examples and then followed by formal definitions (which may be skipped). The book is ideally suitable for a one-semester course at an advanced undergraduate or graduate level, and through its strong application examples can also serve for self-study. An accompanying website offers additional material such as slides, exercises and project proposals. Book website: http: //www.cs.au.dk/CPnets/cpnbook/
Coach Individuals, Teams, and Organizations to Greater Success with
Agile
The coaching exercises and resources in the appendices are available as free downloads. Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.
Managing risk is essential for every organization. However, significant opportunities may be lost by concentrating on the negative aspects of risk without bearing in mind the positive attributes. The objective of Project Risk Management: Managing Software Development Risk is to provide a distinct approach to a broad range of risks and rewards associated with the design, development, implementation and deployment of software systems. The traditional perspective of software development risk is to view risk as a negative characteristic associated with the impact of potential threats. The perspective of this book is to explore a more discerning view of software development risks, including the positive aspects of risk associated with potential beneficial opportunities. A balanced approach requires that software project managers approach negative risks with a view to reduce the likelihood and impact on a software project, and approach positive risks with a view to increase the likelihood of exploiting opportunities. Project Risk Management: Managing Software Development Risk explores software development risk both from a technological and business perspective. Issues regarding strategies for software development are discussed and topics including risks related to technical performance, outsourcing, cybersecurity, scheduling, quality, costs, opportunities and competition are presented. Bringing together concepts across the broad spectrum of software engineering with a project management perspective, this volume represents both a professional and scholarly perspective on the topic.
Businesses today are faced with a highly competitive market and fast-changing technologies. In order to meet demanding customers' needs, they rely on high quality software. A new field of study, soft computing techniques, is needed to estimate the efforts invested in component-based software. Component-Based Systems: Estimating Efforts Using Soft Computing Techniques is an important resource that uses computer-based models for estimating efforts of software. It provides an overview of component-based software engineering, while addressing uncertainty involved in effort estimation and expert opinions. This book will also instruct the reader how to develop mathematical models. This book is an excellent source of information for students and researchers to learn soft computing models, their applications in software management, and will help software developers, managers, and those in the industry to apply soft computing techniques to estimate efforts.
Businesses today are faced with a highly competitive market and fast-changing technologies. In order to meet demanding customers' needs, they rely on high quality software. A new field of study, soft computing techniques, is needed to estimate the efforts invested in component-based software. Component-Based Systems: Estimating Efforts Using Soft Computing Techniques is an important resource that uses computer-based models for estimating efforts of software. It provides an overview of component-based software engineering, while addressing uncertainty involved in effort estimation and expert opinions. This book will also instruct the reader how to develop mathematical models. This book is an excellent source of information for students and researchers to learn soft computing models, their applications in software management, and will help software developers, managers, and those in the industry to apply soft computing techniques to estimate efforts. |
![]() ![]() You may like...
Research Anthology on Architectures…
Information R Management Association
Hardcover
R14,048
Discovery Miles 140 480
Hardware Accelerator Systems for…
Shiho Kim, Ganesh Chandra Deka
Hardcover
R4,095
Discovery Miles 40 950
Essential Java for Scientists and…
Brian Hahn, Katherine Malan
Paperback
R1,296
Discovery Miles 12 960
Dark Silicon and Future On-chip Systems…
Suyel Namasudra, Hamid Sarbazi-Azad
Hardcover
R4,084
Discovery Miles 40 840
|