Taking a learn-by-doing approach, Software Engineering Design: Theory and Practice uses examples, review questions, chapter exercises, and case study assignments to provide students and practitioners with the understanding required to design complex software systems. Explaining the concepts that are immediately relevant to software designers, it begins with a review of software design fundamentals. The text presents a formal top-down design process that consists of several design activities with varied levels of detail, including the macro-, micro-, and construction-design levels. As part of the top-down approach, it provides in-depth coverage of applied architectural, creational, structural, and behavioral design patterns. For each design issue covered, it includes a step-by-step breakdown of the execution of the design solution, along with an evaluation, discussion, and justification for using that particular solution. The book outlines industry-proven software design practices for leading large-scale software design efforts, developing reusable and high-quality software systems, and producing technical and customer-driven design documentation. It also: Offers one-stop guidance for mastering the Software Design & Construction sections of the official Software Engineering Body of Knowledge (SWEBOK®) Details a collection of standards and guidelines for structuring high-quality code Describes techniques for analyzing and evaluating the quality of software designs Collectively, the text supplies comprehensive coverage of the software design concepts students will need to succeed as professional design leaders. The section on engineering leadership for software designers covers the necessary ethical and leadership skills required of software developers in the public domain. The section on creating software design documents (SDD) familiarizes students with the software design notations, structural descriptions, and behavioral models required for SDDs. Course notes, exercises with answers, online resources, and an instructor’s manual are available upon qualified course adoption. Instructors can contact the author about these resources via the author's website: http://softwareengineeringdesign.com/
I'm just reading a book about Software Engeneering Design (book on amazon). I can not understand an example of correct and incorrect requirement, described in the book.
The book says:
the incorrect requirement is:
The software shall require users to log on using a unique combination of user ID and password.
the correct requirement is:
The software shall require users to log on using a user ID and password. The software shall require users to log on using a valide-mail address.
To illustrate the problem of requirements correctness, the book presents the example:
Example is based on requirements for a computer security system for which it requires users to log on using a unique combination of user ID and password.
In this case, when users attempt to log on using already existing user name or password, the system is required to reject the attempt, therefore giving insight into someone else's logon information.
How it is possible to give insight into user's logon information? What information can be obtained from the rejection of log on?
If you get a rejection that means that either the username or the password is already used by someone else. So if I chose p@assw0rd as my password and someone else already has it as a password it will get rejected, so then I know that this is someones password and I could give it a try.
Nevertheless I guess the point is to illustrate that when writing down requirements you have to be accurate. Maybe the example is not clear.