authorizations

  • Oracle
  • ForgeRock
  • symantec
  • gurulabs
Newsletter

Would you like to receive newsletters? Send us your email.


Pragmatic Software Architecture

Course ID : JPSA Duration : 3 days

The course provides introduction to a software architecture guided by pragmatic principles. Such architecture emphasizes the practical results of the developed systems as the most important goal. It explains the role and responsibilities of software architect as a key player in the software development process. The place of software architecture and design in the software development process is described as well as basic principles to follow and problems to avoid.

The course is focused on software development a deployment of complex software systems. It may be useful to software architect who lead development of new products, custom software but also to architects  that lead deployment complex custom or customized systems. The described architectural principles are aimed at creation of network-enabled distributed systems, therefore problems specific to  this field are discussed during the course. The course does not depend on any specific environment, however examples from enterprise and Internet environment are used to illustrate the problems and solutions. The provided examples of code are in Java or Java-like symbolic languages, but full understanding of Java in not required. The diagrams are illustrated in UML or UML dialects. However, UML is not considered to be a dogma and it is used  just for illustration.

The provided architectural principles are compiled to support small-to-medium software projects, approximately 10-300 man-months per major phase. The principles are chosen to be effective in small project, while they can still hold for mid-size projects. The architecture emphasizes the proper balancing of scope, quality and cost of the project, focusing on getting acceptable practical results within the limits imposed by the cost, skills of the team, time, etc.

Some project management topics are covered by the course as well. These are supposed to support cooperation of software architect with the management and business layer of the project, as such cooperation is critical for project success.

The course is lead by interleaving instructor-lead slide presentations and discussions in the team. The course is theoretical, without any programming exercises. However, practical architectural problems are used for the purpose of theoretical exercises and to build up discussion topics in the team.



Select date

Course ID :
JPSA

Price
1 250 €

Duration
3 days

Book

Prerequisites

  • Understand basic computing, programming and networking concepts. (Required)
  • Understand basic software design and development principles. (Required)
  • Understand at least one programming language. (Required)
  • Understand Unified Modeling Language (UML). (Recommended)
  • Understand object-oriented programming and design principles. (Recommended)
  • University degree in the field of computer science or 5-year experience in software design or system deployment. (Recommended)
  • Participation on small-to-medium software project (min. 25 man-months) (Recommended)
  • An experience in leading a small technological team. (Recommended)
:

Course Content

Module 1 - Introduction

  • Motivation
  • Software Architecture
  • Architectural Constraints
  • Pragmatic Approach

Module 2 - Software Development Process

  • Software Development Tasks
  • Project Team Structure
  • The Iron Triangle
  • Software Development Methodologies
  • Waterfall, Unified Process and Agile Methods Evolution vs Revolution

Module 3 - Architectural and Design Principles

  • Architectural Foundations
  • Separation of Concerns
  • Interface Dependencies Models
  • Prototypes
  • Extensions
  • Common Sense

Module 4 - Software Qualities

  • Software Qualities
  • Performance, Scalability
  • Understandability, Visibility
  • Flexibility, Reliability, Security

Module 5 - The Golden Path

  • Pragmatism
  • Balance
  • Parsimony
  • Feasibility
  • Divide and Conquer
  • Defend the Empire
  • Feedback
  • Vision

Module 6 - The Fallacies

  • Eight Fallacies of Distributed Computing
  • Symptoms of Rotting
  • Design Anti-patterns ... and many more

Module 7 - Famous Architectures

  • Platform, Network System and Framework
  • Internet
  • World Wide Web
  • Java Enterprise Edition

Module 8 - Trends

  • Beware the Buzzwords
  • Enterprise Architecture
  • Web Services and SOA
  • Web 2.0

Module 9 - Management

  • Economy of Software Development
  • Leadership
  • The Rule of the Rules

Module 10 - Conclusion

  • Recapitulation
  • Concluding Discussion

Details

What this course is *not*:
  • It is not a programming course
  • It is not a course to teach object-oriented design in Java
  • It is not UML-based system analysis course
  • It is not a training for use of a UML modeling tool
  • It is not a leadership or a project management course
  • It is not a product or marketing-oriented course

  

Instructor and Author

Radovan Semančík, Software Architect, nLight.eu