This textbook aims to prepare students, as well as, practitioners for software design and production. Keeping in mind theory and practice, the book keeps a balance between theoretical foundations and practical considerations. The book by and large meets the requirements of students at all levels of computer science and engineering/information technology for their Software design and Software engineering courses.
The book begins with concepts of data and object. This helps in exploring the rationale that guide high level programming language (HLL) design and object oriented frameworks. Once past this post, the book moves on to expand on software design concerns. The book emphasizes the centrality of Parnas's separation of concerns in evolving software designs and architecture. The book extensively explores modelling frameworks such as Unified Modelling Language (UML) and Petri net based methods. Next, the book covers architectural principles and software engineering practices such as Agile – emphasizing software testing during development. It winds up with case studies demonstrating how systems evolve from basic concepts to final products for quality software designs.
• Undergraduate/postgraduate students of Computer Science and Engineering, and Information Technology
• Postgraduate students of Software Engineering/Software Systems