![]() |
![]() |
Your cart is empty |
||
Books > Computing & IT > Computer programming > Software engineering
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.
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.
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/
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.
Developing projects outside of a classroom setting can be intimidating for students and is not always a seamless process. Real-World Software Projects for Computer Science and Engineering Students is a quick, easy source for tackling such issues. Filling a critical gap in the research literature, the book: Is ideal for academic project supervisors. Helps researchers conduct interdisciplinary research. Guides computer science students on undertaking and implementing research-based projects This book explains how to develop highly complex, industry-specific projects touching on real-world complexities of software developments. It shows how to develop projects for students who have not yet had the chance to gain real-world experience, providing opportunity to become familiar with the skills needed to implement projects using standard development methodologies. The book is also a great source for teachers of undergraduate students in software engineering and computer science as it can help students prepare for the risk and uncertainty that is typical of software development in industrial settings.
This brilliant textbook explains in detail the principles of conceptual modeling independently from particular methods and languages and shows how to apply them in real-world projects. The author covers all aspects of the engineering process from structural modeling over behavioral modeling to meta-modeling, and completes the presentation with an extensive case study based on the osCommerce system. Written for computer science students in classes on information systems modeling as well as for professionals feeling the need to formalize their experiences or to update their knowledge, Olive delivers here a comprehensive treatment of all aspects of the modeling process. His book is complemented by lots of exercises and additional online teaching material."
'Evolutionary Computation for Optimization and Modelling' is an introduction to evolutionary computation, selectionist algorithms that operate on populations of structures. It includes over 100 experiments and over 700 homework problems that introduce the topic with an application-oriented approach.
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.
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.
How is it that one system is more effective, appealing, satisfying and/or more beautiful than another to its stakeholder community? This question drove Christopher Alexander's fifty-year quest to explain great physical architecture and gave birth to pattern-languages for building that underpin much of modern systems engineering. How is it that so many individual stakeholders consistently recognize the same quality, the same beauty in a system? This question led George Lakoff to research the role of conceptual metaphor in human understanding. What is essential to stakeholders' satisfaction with systems? Fred Brooks, in his publications, addressed this question. This monograph fuses these diverse streams of thought in proposing Thriving Systems Theory by translating Alexander's properties of physical design quality into the abstract domain of information systems and modeling. Metaphor-Driven Modeling incorporates the theory while examining its impact throughout the system life cycle: modeling, design and deployment. The result is holistic and innovative, a perspective on system quality invaluable to students, practitioners and researchers of software and systems engineering.
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.
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.
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.
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.
This is the second edition of Wil van der Aalst's seminal book on process mining, which now discusses the field also in the broader context of data science and big data approaches. It includes several additions and updates, e.g. on inductive mining techniques, the notion of alignments, a considerably expanded section on software tools and a completely new chapter of process mining in the large. It is self-contained, while at the same time covering the entire process-mining spectrum from process discovery to predictive analytics. After a general introduction to data science and process mining in Part I, Part II provides the basics of business process modeling and data mining necessary to understand the remainder of the book. Next, Part III focuses on process discovery as the most important process mining task, while Part IV moves beyond discovering the control flow of processes, highlighting conformance checking, and organizational and time perspectives. Part V offers a guide to successfully applying process mining in practice, including an introduction to the widely used open-source tool ProM and several commercial products. Lastly, Part VI takes a step back, reflecting on the material presented and the key open challenges. Overall, this book provides a comprehensive overview of the state of the art in process mining. It is intended for business process analysts, business consultants, process managers, graduate students, and BPM researchers.
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
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 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
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.
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.
Why have a book about the relation between requirements and software architecture? Understanding the relation between requirements and architecture is important because the requirements, be they explicit or implicit, represent the function, whereas the architecture determines the form. While changes to a set of requirements may impact on the realization of the architecture, choices made for an architectural solution may impact on requirements, e.g., in terms of revising functional or non-functional requirements that cannot actually be met. Although research in both requirements engineering and software architecture is quite active, it is in their combination that understanding is most needed and actively sought. Presenting the current state of the art is the purpose of this book. The editors have divided the contributions into four parts: Part 1 "Theoretical Underpinnings and Reviews" addresses the issue of requirements change management in architectural design through traceability and reasoning. Part 2 "Tools and Techniques" presents approaches, tools, and techniques for bridging the gap between software requirements and architecture. Part 3 "Industrial Case Studies" then reports industrial experiences, while part 4 on "Emerging Issues" details advanced topics such as synthesizing architecture from requirements or the role of middleware in architecting for non-functional requirements. The final chapter is a conclusions chapter identifying key contributions and outstanding areas for future research and improvement of practice.The book is targeted at academic and industrial researchers in requirements engineering or software architecture. Graduate students specializing in these areas as well as advanced professionals in software development will also benefit from the results and experiences presented in this volume.
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.
Anyone Can Code: The Art and Science of Logical Creativity introduces computer programming as a way of problem-solving through logical thinking. It uses the notion of modularization as a central lens through which we can make sense of many software concepts. This book takes the reader through fundamental concepts in programming by illustrating them in three different and distinct languages: C/C++, Python, and Javascript. Key features: Focuses on problem-solving and algorithmic thinking instead of programming functions, syntax, and libraries; Includes engaging examples, including video games and visual effects; Provides exercises and reflective questions. This book gives beginner and intermediate learners a strong understanding of what they are doing so that they can do it better and with any other tool or language that they may end up using later.
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.
This book focuses on elementary concepts of both radio frequency energy harvesting (RFEH) and wireless power transfer (WPT), and highlights their fundamental requirements followed by recent advancements. It provides a systematic overview of the key components required for RFEH and WPT applications and also comprehensively introduces the pioneering research advancements achieved to date. The state-of-the-art circuit design topologies for the two different applications are presented mainly in terms of antenna operating frequencies, polarization characteristics, efficient matching network circuits, rectifier topologies, and overall rectenna systems. The book serves as a single point of reference for practicing engineers and researchers searching for potential sources and elements involved in the RFEH system as well as in the WPT system, and need rapid training and design guidelines in the following areas: * Different sensing elements used in RFEH and WPT * Inclusions of mathematical expressions and design problems * Illustration of some design examples and performance enhancement techniques |
![]() ![]() You may like...
How Google Tests Software
James Whittaker, Jason Arbon, …
Paperback
Dark Silicon and Future On-chip Systems…
Suyel Namasudra, Hamid Sarbazi-Azad
Hardcover
R4,186
Discovery Miles 41 860
Essential Java for Scientists and…
Brian Hahn, Katherine Malan
Paperback
R1,341
Discovery Miles 13 410
Edge/Fog Computing Paradigm: The…
Pethuru Raj, Kavita Saini, …
Hardcover
Principles of Big Graph: In-depth…
Ripon Patgiri, Ganesh Chandra Deka, …
Hardcover
|