A Philosophy of Software Design


Book Description

"This book addresses the topic of software design: how to decompose complex software systems into modules (such as classes and methods) that can be implemented relatively independently. The book first introduces the fundamental problem in software design, which is managing complexity. It then discusses philosophical issues about how to approach the software design process and it presents a collection of design principles to apply during software design. The book also introduces a set of red flags that identify design problems. You can apply the ideas in this book to minimize the complexity of large software systems, so that you can write software more quickly and cheaply."--Amazon.




Guide to the Software Engineering Body of Knowledge (Swebok(r))


Book Description

In the Guide to the Software Engineering Body of Knowledge (SWEBOK(R) Guide), the IEEE Computer Society establishes a baseline for the body of knowledge for the field of software engineering, and the work supports the Society's responsibility to promote the advancement of both theory and practice in this field. It should be noted that the Guide does not purport to define the body of knowledge but rather to serve as a compendium and guide to the knowledge that has been developing and evolving over the past four decades. Now in Version 3.0, the Guide's 15 knowledge areas summarize generally accepted topics and list references for detailed information. The editors for Version 3.0 of the SWEBOK(R) Guide are Pierre Bourque (Ecole de technologie superieure (ETS), Universite du Quebec) and Richard E. (Dick) Fairley (Software and Systems Engineering Associates (S2EA)).




Software Engineering at Google


Book Description

Today, software engineers need to know not only how to program effectively but also how to develop proper engineering practices to make their codebase sustainable and healthy. This book emphasizes this difference between programming and software engineering. How can software engineers manage a living codebase that evolves and responds to changing requirements and demands over the length of its life? Based on their experience at Google, software engineers Titus Winters and Hyrum Wright, along with technical writer Tom Manshreck, present a candid and insightful look at how some of the world’s leading practitioners construct and maintain software. This book covers Google’s unique engineering culture, processes, and tools and how these aspects contribute to the effectiveness of an engineering organization. You’ll explore three fundamental principles that software organizations should keep in mind when designing, architecting, writing, and maintaining code: How time affects the sustainability of software and how to make your code resilient over time How scale affects the viability of software practices within an engineering organization What trade-offs a typical engineer needs to make when evaluating design and development decisions




The Certified Software Quality Engineer Handbook


Book Description

This handbook contains information and guidance that supports all of the topics of the 2016 version of the CSQE Body of Knowledge (BoK) upon which ASQ's Certified Software Quality Engineer/(CSQE) exam is based. Armed with the knowledge presented in this handbook to complement the required years of actual work experience, qualified software quality practitioners may feel confident they have taken appropriate steps in preparation for the ASQ CSQE exam. However, the goals for this handbook go well beyond it being a CSQE exam preparation guide. Its author designed this handbook not only to help the software quality engineers, but as a resource for software development practitioners, project managers, organizational managers, other quality practitioners, and other professionals who need to understand the aspects of software quality that impact their work. It can also be used to benchmark their (or their organization's) understanding and application of software quality principles and practices against what is considered a cross-industry good practice baseline. After all, taking stock of strengths and weaknesses, software engineers can develop proactive strategies to leverage software quality as a competitive advantage. New software quality engineers can use this handbook to gain an understanding of their chosen profession. Experienced software quality engineers can use this handbook as a reference source when performing their daily work. It is also hoped that trainers and educators will use this handbook to help propagate software quality engineering knowledge to future software practitioners and managers. Finally, this handbook strives to establish a common vocabulary that software quality engineers, and others in their organizations can use to communicate about software and quality. Thus increasing the professionalism of the industry and eliminating the wastes that can result from ambiguity and misunderstandings.




Handbook on Intelligent Techniques in the Educational Process


Book Description

Education has a substantial impact and influences on almost all sectors in modern society. Different computer-supported educational systems have been developing for many decades to support and make easier teaching and learning processes on all levels of education. Influences of rapid development of Information Communication Technologies and other related disciplines on design and implementation of intelligent, sophisticated educational systems are evident. Nowadays intensive development and wide applications of Artificial Intelligent techniques significantly affect the development of intelligent tutoring systems, smart learning environments that incorporate virtual and augmented reality and robots. Artificial Intelligence has the potential to address some of the biggest challenges in education today, but also in the future in order to establish innovative teaching and learning practices facilitated by powerful educational datamining and learning analytics. This book presents a collection of 17 chapters that bring interesting aspects of the state-of-the-art of application of intelligent techniques in different educational processes and settings. We believe that the works presented in the book will be of great interest to readers and that will motivate them to try to enhance presented approaches and propose better and more advanced solutions.




A Practical Handbook for Software Development


Book Description

The designer of a software system, like the architect of a building, needs to be aware of the construction techniques available and to choose the ones that are the most appropriate. This book provides the implementer of software systems with a guide to 25 different techniques for the complete development processes, from system definition through design and into production. The techniques are described against a common background of the traditional development path, its activities and deliverable items. In addition the concepts of metrics and indicators are introduced as tools for both technical and managerial monitoring and control of progress and quality. The book is intended to widen the mental toolkit of system developers and their managers, and will also introduce students of computer science to the practical side of software development. With its wide-ranging treatment of the techniques available and the practical guidance it offers, it will prove an important and valuable work.




Software Architect’s Handbook


Book Description

A comprehensive guide to exploring software architecture concepts and implementing best practices Key Features Enhance your skills to grow your career as a software architect Design efficient software architectures using patterns and best practices Learn how software architecture relates to an organization as well as software development methodology Book Description The Software Architect’s Handbook is a comprehensive guide to help developers, architects, and senior programmers advance their career in the software architecture domain. This book takes you through all the important concepts, right from design principles to different considerations at various stages of your career in software architecture. The book begins by covering the fundamentals, benefits, and purpose of software architecture. You will discover how software architecture relates to an organization, followed by identifying its significant quality attributes. Once you have covered the basics, you will explore design patterns, best practices, and paradigms for efficient software development. The book discusses which factors you need to consider for performance and security enhancements. You will learn to write documentation for your architectures and make appropriate decisions when considering DevOps. In addition to this, you will explore how to design legacy applications before understanding how to create software architectures that evolve as the market, business requirements, frameworks, tools, and best practices change over time. By the end of this book, you will not only have studied software architecture concepts but also built the soft skills necessary to grow in this field. What you will learn Design software architectures using patterns and best practices Explore the different considerations for designing software architecture Discover what it takes to continuously improve as a software architect Create loosely coupled systems that can support change Understand DevOps and how it affects software architecture Integrate, refactor, and re-architect legacy applications Who this book is for The Software Architect’s Handbook is for you if you are a software architect, chief technical officer (CTO), or senior developer looking to gain a firm grasp of software architecture.




Become an Effective Software Engineering Manager


Book Description

Software startups make global headlines every day. As technology companies succeed and grow, so do their engineering departments. In your career, you'll may suddenly get the opportunity to lead teams: to become a manager. But this is often uncharted territory. How can you decide whether this career move is right for you? And if you do, what do you need to learn to succeed? Where do you start? How do you know that you're doing it right? What does "it" even mean? And isn't management a dirty word? This book will share the secrets you need to know to manage engineers successfully. Going from engineer to manager doesn't have to be intimidating. Engineers can be managers, and fantastic ones at that. Cast aside the rhetoric and focus on practical, hands-on techniques and tools. You'll become an effective and supportive team leader that your staff will look up to. Start with your transition to being a manager and see how that compares to being an engineer. Learn how to better organize information, feel productive, and delegate, but not micromanage. Discover how to manage your own boss, hire and fire, do performance and salary reviews, and build a great team. You'll also learn the psychology: how to ship while keeping staff happy, coach and mentor, deal with deadline pressure, handle sensitive information, and navigate workplace politics. Consider your whole department. How can you work with other teams to ensure best practice? How do you help form guilds and committees and communicate effectively? How can you create career tracks for individual contributors and managers? How can you support flexible and remote working? How can you improve diversity in the industry through your own actions? This book will show you how. Great managers can make the world a better place. Join us.




Code Complete


Book Description

Widely considered one of the best practical guides to programming, Steve McConnell’s original CODE COMPLETE has been helping developers write better software for more than a decade. Now this classic book has been fully updated and revised with leading-edge practices—and hundreds of new code samples—illustrating the art and science of software construction. Capturing the body of knowledge available from research, academia, and everyday commercial practice, McConnell synthesizes the most effective techniques and must-know principles into clear, pragmatic guidance. No matter what your experience level, development environment, or project size, this book will inform and stimulate your thinking—and help you build the highest quality code. Discover the timeless techniques and strategies that help you: Design for minimum complexity and maximum creativity Reap the benefits of collaborative development Apply defensive programming techniques to reduce and flush out errors Exploit opportunities to refactor—or evolve—code, and do it safely Use construction practices that are right-weight for your project Debug problems quickly and effectively Resolve critical construction issues early and correctly Build quality into the beginning, middle, and end of your project




Software Development


Book Description

Software Development VCE Units 3 & 4 is a complete revision of the highly respected text Building Information Systems VCE Units 3 & 4, rewritten by expert authors to meet the requirements of the revised Information Technology Study Design (2007 a 2010). This book is divided into 2 main sections. The first is an introduction to information systems engineering using the System Development Life Cycle (SDLC) and with a focus on networked systems. The second is an introduction to the development of software applications in a general purpose programming language (such as Visual C++, Java or Delphi) using the Software Development Life Cycle.