1 / 21

Agile Software Architecture

Agile Software Architecture. Cesario Ramos. Agile Architecture. Classic Architecture. Code focussed Do what is important now Evolves during the project Defers Implementation. Documentation focussed Do what is important in the long term Defined upfront Includes Implementation.

samira
Download Presentation

Agile Software Architecture

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Agile Software Architecture Cesario Ramos

  2. Agile Architecture Classic Architecture • Code focussed • Do what is important now • Evolves during the project • Defers Implementation • Documentation focussed • Do what is important in the long term • Defined upfront • Includes Implementation

  3. Why agile software architecture?

  4. Deliver Fast • Increase ROI. • Early validation of your business case. • Give customers what they want when they want it.

  5. Defer Commitment • Reduce risk. • Decide based on most possible knowledge. • Keep yours and the customers options open.

  6. Eliminate Waste • Support something that does not add value now. • Have the architecture slow you down

  7. so we need architecture to... • Be the simplest solution to support the current functionality. • Change without increasing risk or waste. • Change economically. • Change without making the software worse. • Evolve in early and refine later iterations.

  8. Comparing with engineering

  9. Plan the work, work the plan • Based on concrete analysis using physics and mathematics. • Based on things you know and change slowly. • Plan, Do, Review.

  10. Software Development Civil Engineering • Requirements • Design • Coding • Testing • Release • Analysis • Design • Construction • Inspection • Release Coding is NOT Construction

  11. and then.... • When do we test our requirements? • When do we test our design? • What if we overdevelop it? • How do you handle changes? • Requirements • Architecture and Design • Coding • Testing • Release

  12. How to create agile software architecture?

  13. High level steps. • Establish vision and high level requirements. • Perform Lightweight domain analysis. • Work on architectural components only when actually needed. • Consider ROI in the decision making process • Evolve the architecture during the project • Do not let quality decay. • Refactor to the Open Closed. • Validate and adapt.

  14. Lean architecture using DCI • What the system IS • Captures what is stable • The domain classes • What the system DOES • User stories. • Business objects.

  15. Open Closed Principle • A module should be open for extension and closed for modification

  16. Refactoring • Refactoring as Fowler proposed • Improving the design of existing code. • Refactoring to be Open Closed. • For handling future requirements. • Provides Value by • Reducing Risk • Reducing Waste

  17. Separation Of Concerns • Low Coupling • Minimal dependencies • Minimal side effects • High Cohesion • Single responsibility • One reason to change

  18. Tests Drive Design • Forces you to look at your public API. • Forces you to think about cohesion. • Forces you to think about coupling. • Forces you to not produce redundancies.

  19. Test Driven Development • Documents your intent • Investigates the nature of the code you are developing • Report on progress

  20. Summary • Agile Architecture helps you reduce risk and waste. • OO/XP principles and practices make evolving architecture possible. • Particular approach depends upon knowledge of domain, technology and project size.

  21. Agile Software Architecture Cesario Ramos

More Related