Software Requirements: Practical Techniques For... [HOT]
Without formal, verifiable software requirements--and an effective system for managing them--the programs that developers think they've agreed to build often will not be the same products their customers are expecting. In SOFTWARE REQUIREMENTS, Second Edition, requirements engineering authority Karl Wiegers amplifies the best practices presented in his original award-winning text'now a mainstay for anyone participating in the software development process. In this book, you'll discover effective techniques for managing the requirements engineering process all the way through the development cycle--including dozens of techniques to facilitate that all-important communication between users, developers, and management. This updated edition features new case examples, anecdotes culled from the author's extensive consulting career, and specific Next Steps for putting the book's process-improvement principles into practice. You'll also find several new chapters, sample documents, and an incisive troubleshooting guide. Discover how to: Set achievable expectations for functionality and quality NEW: Incorporate business rules into application development Employ use cases to discover user requirements Arrest creeping requirements and manage change requests NEW: Deal with requirements on maintenance, outsourced, and package solution projects Curb the impulse to "gold-plate" your programs NEW: Grow effective requirements analysts Cut revisions--and costs--dramatically Produce better software! No matter what kind of software you build, or what your role in the development process, SOFTWARE REQUIREMENTS, Second Edition, delivers expert guidance and field-tested techniques for engineering software
Software requirements: practical techniques for...
This book provides an overview of tools and techniques used in enterprise software development, many of which are not taught in academic programs or learned on the job. This is an ideal resource containing lots of practical information and code examples that you need to master as a member of an enterprise development team.
This book aggregates many of these "on the job" tools and techniques into a concise format and presents them as both discussion topics and with code examples. The reader will not only get an overview of these tools and techniques, but also several discussions concerning operational aspects of enterprise software development and how it differs from smaller development efforts.
It is related to the various ways used to gain knowledge about the project domain and requirements. The various sources of domain knowledge include customers, business manuals, the existing software of same type, standards and other stakeholders of the project. The techniques used for requirements elicitation include interviews, brainstorming, task analysis, Delphi technique, prototyping, etc. Some of these are discussed here. Elicitation does not produce formal models of the requirements understood. Instead, it widens the domain knowledge of the analyst and thus helps in providing input to the next stage.
Engineering techniques are used to inform the software development process, which involves the definition, implementation, assessment, measurement, management, change, and improvement of the software life cycle process itself. It heavily uses software configuration management, which is about systematically controlling changes to the configuration, and maintaining the integrity and traceability of the configuration and code throughout the system life cycle. Modern processes use software versioning.
In large organizations one often finds a mixture of development models. Some projects are done in Agile, some in a more traditional way such as waterfall or RUP. Everyone has heard of agile development, but shifting to more Agile methods can often be a long and hard journey. This paper aims to explain a number of practical Agile techniques that can easily be applied to any development, and practical tips, which you can start using in your day to day work right away, even as of today.
Use case analysis is a methodology for defining the outward features of a software system from the user's point of view. Applying Use Cases, Second Edition, offers a clear and practical introduction to this cutting-edge software development technique. Using numerous realistic examples and a detailed case study, you are guided through the application of use case analysis in the development of software systems.
In traditional software engineering, developers claim that testing is an integral part of the design and development process. However, as programming techniques become more advanced and complex, there is little consensus on what testing is necessary or how to perform it. Furthermore, many of the procedures that have been developed for V&V are so poorly documented that only the originator can reproduce the procedures. The complexity and uncertainty of these procedures has led to the inadequate testing of software systems (even operational systems). As software becomes more complex, it becomes more difficult to produce correct software, and the penalties for errors will increase.
Wrapping: The inclusion of code that checks a software module in the module itself, and reports success or failure to the module caller. To make wrapping practical for engineering problems, a simple form of executable specifications has been developed, along with software for executing the specifications.
In addition, methods for which writing the specifications in a formal specification language is at least as difficult as writing the software itself have been excluded, because these methods are judged to be too expensive, too error-prone, and too foreign to current practitioners to be practical.
Applying traditional software V&V techniques to highway software is particularly difficult because the specifications for that software are usually complex and incomplete. This is because software like CORSIM (a tool that simulates traffic and traffic control conditions on combined surface streets and freeway networks) models real-world systems that have complex, often conflicting requirements placed on them. In addition, the long life and wide application of some highway software means that the original software specifications cannot anticipate all the tasks the software will be asked to perform during its lifetime. The traditional specify-develop-validate life cycle is not completely practical in the real world. Accordingly, the techniques presented in this handbook are designed to fit into a real-world situation in which a program and its specifications evolve over time. The wrapping technique and accompanying SpecChekTM tool have been provided to meet this need.
Embedding Formative Assessment, which I wrote with Siobhán Leahy, is designed specifically to help individual teachers develop their practice of formative assessment on their own or with small groups of colleagues. Here are some suggestions for practical techniques you can try in your classroom right now.
The history of Agile can be traced back to 1957: At that time Bernie Dimsdale, John von Neumann, Herb Jacobs, and Gerald Weinberg were using incremental development techniques (which are now known as Agile), building software for IBM and Motorola. Although, not knowing how to classify the approach they were practicing, they realized clearly that it was different from Waterfall in many ways.
The specialization focuses on current approaches to software product management, including the principles of efficient and effective software development using the "Agile" framework. It provides an opportunity for professional development for those already in the field-whether they are looking at exploring current practices and techniques, or wishing to move into the role of a software product manager.
In this specialization you will master Agile software practices to lead a team of developers and interact with clients. In the final capstone project you will practice and apply management techniques to realistic scenarios that you will face in your career as a Software Product Manager. You will have the opportunity to share your experiences and learn from the insights of others as part of a Software Product Management community.
This four-week course covers the techniques required to break down and map requirements into plans that will ultimately drive software production. Upon successful completion of this course, you will be able to:
This four-week course covers techniques for monitoring your projects in order to align client needs, project plans, and software production. It focuses on metrics and reviews to track and improve project progress and software quality. Upon successful completion of this course, you will be able to:
In this six-week capstone course, you will gain practical management experience in a safe, simulated softwmastering Agile software development practices to confidently interact with clients and work with a development teamare production setting. You will apply agile practices and techniques to conquer industry-inspired challenges. Interacting with a realistic client, you will discern what they want, what they truly need, and express that as software requirements to drive software production. Upon completing the capstone, you will be prepared to advance your career as a confident software product management professional.
Program Mission Our mission is to provide educational excellence in software engineering to meet urban and industrial challenges, and prepare graduates that are intellectually, professionally, spiritually, ethically, and socially developed to pursue a graduate degree in software engineering, or a career in industry, education, health, and government. To this extent, the program will focus on team-based projects and practical lab assignments, and disseminate the knowledge needed to allow students to efficiently define, plan, develop and implement high quality, reliable, and secure software systems under realistic constraints. 041b061a72