Guide to Efficient Software Design: An MVC Approach to Concepts, Structures, and Models (Texts in Computer Science)

October 30, 2020
Guide to Efficient Software Design: An MVC Approach to Concepts, Structures, and Models (Texts in Computer Science)

This classroom-tested textbook presents an active-learningapproach to the foundational concepts of software design. Theseconcepts are then applied to a case study, and reinforced throughpractice exercises, with the option to follow either a structureddesign or object-oriented design paradigm. The text applies anincremental and iterative software development approach,emphasizing the use of design characteristics and modelingtechniques as a way to represent higher levels of designabstraction, and promoting the model-view-controller (MVC)architecture.Topics and features: provides a case study to illustrate thevarious concepts discussed throughout the book, offering anin-depth look at the pros and cons of different software designs;includes discussion questions and hands-on exercises that extendthe case study and apply the concepts to other problem domains;presents a review of program design fundamentals to reinforceunderstanding of the basic concepts; focuses on a bottom-upapproach to describing software design concepts; introduces thecharacteristics of a good software design, emphasizing themodel-view-controller as an underlying architectural principle;describes software design from both object-oriented and structuredperspectives; examines additional topics on human-computerinteraction design, quality assurance, secure design, designpatterns, and persistent data storage design; discusses designconcepts that may be applied to many types of software developmentprojects; suggests a template for a software design document, andoffers ideas for further learning.Students of computer science and software engineering will findthis textbook to be indispensable for advanced undergraduatecourses on programming and software design. Prior backgroundknowledge and experience of programming is required, butfamiliarity in software design is not assumed.