Subject name: Software Engineering Design and Architecture |
Author : Topic content : |
The course is covered the theories and technologies used to identify and develop solutions to software design and architecture problems faced by teams of developers with flexible, reusable architectures that reflect optimal design solutions. Topics include software architecture principles and alternatives, design documentation, levels of abstraction, interrelationships between user interface design theory and practice, software sources and selection strategies, documenting designs, and patterns for reuse. • Assess and improve the effectiveness of a team of software project stakeholders, including customers, users, and members of a significantly sized development overall team that is made up of smaller teams and using cross-teams. • Recognize the differences between problems and solutions, and deal with their interactions. • Use agile methods to design and develop a system for a real customer. • Demonstrate object-oriented design basics like domain models, class diagrams, and interaction (sequence and communication) diagrams. • Use fundamental design principles, methods, patterns and strategies in the creation of a software system and its supporting documents. • Identify criteria for the design of a software system and select patterns, create frameworks, and partition software to satisfy the inherent trade-offs. • Analyze and explain the feasibility and soundness of a software design. • Describe the basic ingredients of successful software product lines – How to do multiple releases of software. •Analyze the quality attributes, economics and other global properties of existing designs and systems, and gain experience building systems so as to have desirable global properties. This is the heart of software architecture. Includes also make vs. buy decisions, and discussion of component selection. • Create and document the overall design for a system and document this design using UML and other methodologies and notations. This elaborates on the ways to develop, prototype and document architectures. • Practice the process by which architectures get created, in terms of technologies, economics, people, and processes, looking at more patterns and new angles, including also some full-blown design methods like use of different architectural styles.
|