Software Engineering and Environment examines the various aspects of software development, describing a number of software life cycle models. Twelve in-depth chapters discuss the different phases of a software life cycle, with an emphasis on the object-oriented paradigm. In addition to technical models, algorithms, and programming styles, the author also covers several managerial issues key to software project management. Featuring an abundance of helpful illustrations, this cogent work is an excellent resource for project managers, programmers, and other computer scientists involved in software production.
Environment Modeling-Based Requirements Engineering for Software Intensive Systems provides a new and promising approach for engineering the requirements of software-intensive systems, presenting a systematic, promising approach to identifying, clarifying, modeling, deriving, and validating the requirements of software-intensive systems from well-modeled environment simulations. In addition, the book presents a new view of software capability, i.e. the effect-based software capability in terms of environment modeling. - Provides novel and systematic methodologies for engineering the requirements of software-intensive systems - Describes ontologies and easily-understandable notations for modeling software-intensive systems - Analyzes the functional and non-functional requirements based on the properties of the software surroundings - Provides an essential, practical guide and formalization tools for the task of identifying the requirements of software-intensive systems - Gives system analysts and requirements engineers insight into how to recognize and structure the problems of developing software-intensive systems
This work presents the full range of UNIX/C tools in the context of a full software life cycle. The authors show how to use UNIX tools and the C language to produce reliable, efficient, and maintainable software products.
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
This two-volume set (CCIS 158 and CCIS 159) constitutes the refereed proceedings of the International Workshop on Computer Science for Environmental Engineering and EcoInformatics, CSEEE 2011, held in Kunming, China, in July 2011. The 150 revised full papers presented in both volumes were carefully reviewed and selected from a large number of submissions. The papers are organized in topical sections on computational intelligence; computer simulation; computing practices and applications; ecoinformatics; image processing information retrieval; pattern recognition; wireless communication and mobile computing; artificial intelligence and pattern classification; computer networks and Web; computer software, data handling and applications; data communications; data mining; data processing and simulation; information systems; knowledge data engineering; multimedia applications.
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.
"This book provides analysis, characterization and refinement of software engineering data in terms of machine learning methods. It depicts applications of several machine learning approaches in software systems development and deployment, and the use of machine learning methods to establish predictive models for software quality while offering readers suggestions by proposing future work in this emerging research field"--Provided by publisher.
The software profession has a problem, widely recognized but which nobody seems willing to do anything about; a variant of the well known ""telephone game,"" where some trivial rumor is repeated from one person to the next until it has become distorted beyond recognition and blown up out of all proportion. Unfortunately, the objects of this telephone game are generally considered cornerstone truths of the discipline, to the point that their acceptance now seems to hinder further progress. This book takes a look at some of those ""ground truths"" the claimed 10x variation in productivity between developers; the ""software crisis""; the cost-of-change curve; the ""cone of uncertainty""; and more. It assesses the real weight of the evidence behind these ideas - and confronts the scary prospect of moving the state of the art forward in a discipline that has had the ground kicked from under it.
This volume focuses on current and future trends in the interplay between software engineering and artificial intelligence. This interplay is now critical to the success of both disciplines, and it also affects a wide range of subject areas. The articles in this volume survey the significant work that has been accomplished, describe the state of the art, analyze the current trends, and predict which future directions have the most potential for success. Areas covered include requirements engineering, real-time systems, reuse technology, development environments and meta-environments, process representations, safety-critical systems, and metrics and measures for processes and products.
Process-Centered Software Engineering Environments (PSEEs) represent a new generation of software engineering environments in which the processes used to produce and maintain software products are explicitly modeled in the environment. PSEEs hold the exciting promise of enabling a significant increase in both software productivity and quality. The book presents a comprehensive picture of this emerging technology while highlighting the key concepts and issues. The first chapter introduces some of the basic concepts and developments behind PSEEs and discusses the unifying role it plays in combining project management, software engineering, and process engineering. The second chapter reviews related process modeling and representation concepts, terminology, and issues. Chapter 3 analyzes the features of some example PSEEs and Chapter 4 takes an inside look at the implementation of these features by describing specific design choices made by researchers. The last chapter discusses the evolution of PSEEs to accommodate practical issues in actual work settings and to play a more significant role in the software life cycle. The text is a collection of influential papers that will bring the newcomer quickly up to speed on this fast-moving field. For the researcher, the issues described in the text present a challenge to be conquered and directions to pursue. For the practitioner, they represent benefits that may be gained in the application of PSEEs in the work environment.