locked
How would you analyse and design system with AGILE approach? RRS feed

  • Question

  • Hi everyone,

    I have studied about agile approach in which it says we should continuously be in touch with customer and generate prototypes time by time as we go forward. The question is:

    1.By not knowing the whole system (and just what the customer just said), or not having full insight of whole system how is the architect able to design the structure of the system( i.e design the tables of database and their relations, further knowledge of integration between prototypes,etc)

    how these issues are solved in AGILE approach?

    2.Another question:What kind of UML diagrams should an architect provide for developers?

    3.Another question:By using ORM tools (e.g Entity framework), should we use Interface Approach other than the ORM layer(which itself uses interface based) for BLL layer?.(By interface I mean interface keyword in c#, In Gang of Four they insist on using interface based apps due to the fact that by this approach software would be resistance to change)

    4.I want to design my software so that it can be viewed both in web-form and windows-form.I know I should use SOA as its core functionality.By the fact is should I use WCF or Basic Web services in ASP.net to write the core functionality and then access them via win or web apps?How is this constructed?

    If anybody could be of any assistance in providing answers to my question, I would highly appreciate it. thanks in advance


    Brainstorm your Brain and find solution,if no result stuck to Brainstormer.

    Sunday, June 24, 2012 11:48 AM

Answers

  • answer to question 1: Architect knows the User stories for example User swipes his card and ATM gives him the money. He then analyses what information is needed to make user story work. He then analyses various options for communication between ATM and command center. Should he choose TCP/IP or any other mode of communication? How much traffic is flowing towards command center from all these ATMs? What kind of database should he use?

    It might happen that Architect chose XML as his message format initially, and later learn that he could have used fixed length fields instead. Architect should be an expert in domain, and in technology that solves similar problems that he knows in the domain.

    Team works on the sprints taking the input from Architect (which is highlevel in nature). Architect doesn't design the database or tables. He know only that SQL Server can take the load, and he knows the stories the sql server is called for Data. Architect decides the infrastructure, communication flow, and overall structure of the system. 

    if this is the case, then how would the architect make relation between different sprints in future as he doesn't know the whole system at present and focusing on present sprint or user story?

    Development team (including Project Manager) decides how they are going to achieve the features marked for  the release(typically multiple sprints make a release). Then they create the tasks that needs to be completed to accomplish the feature. These tasks are then assigned to sprints. These tasks may include database design, modelling, UI design, Testing..

    Isn't this approach going to add overloading work of integration and change in future?How is this issue seen in Agile approach?

    Team can not go back on the high level solution given by architect. They concentrate on the user stories, and tasks related to it. It can happen that customer identifies more things to be done after each iterations, then new tasks are created.

    What do you mean by modelling in domain driven?

    This is a design approach. You can refer Domain Driven Design by Eric Evans

    http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215

    http://domaindrivendesign.org/

    You can take a look at dependency injection, SOLID principles. Can you briefly summarize them?

    You can take a look at http://lostechies.com/wp-content/uploads/2011/03/pablos_solid_ebook.pdf

    So you think that using WCF for writting core functionality and then write different layers of GUI on web or win for achieving this.

    Yes, you can use that approach with WCF


    • Edited by xeon2k Monday, June 25, 2012 7:03 AM correcting the question
    • Marked as answer by simosi Tuesday, June 26, 2012 4:31 AM
    Monday, June 25, 2012 7:01 AM

All replies

  • 1. .By not knowing the whole system (and just what the customer just said), or not having full insight of whole system how is the architect able to design the structure of the system( i.e design the tables of database and their relations, further knowledge of integration between prototypes,etc)?

    Technical architect can solve the design only if he has the complete requirement. Usually in AGILE, whatever is known during each iterations or sprints, the team will work on it.

    Team will take up high priority tasks, and architect should have complete understanding of the requirement

    2.What kind of UML diagrams should an architect provide for developers?

    UML is just a tool to aid the understanding. I found sequence diagrams more useful as it takes the snapshot of the system while running.. But its upto you to choose which diagram suits the discussion. Modelling in domain driven design helps more in this aspect. 

    3. .Another question:By using ORM tools (e.g Entity framework), should we use Interface Approach other than the ORM layer(which itself uses interface based) for BLL layer?.(By interface I mean interface keyword in c#, In Gang of Four they insist on using interface based apps due to the fact that by this approach software would be resistance to change)?

    True.. System modules that depend on each other via interface are resistant to change. You can take a look at dependency injection, SOLID principles. They add great values to the system. Again all depends on the complexity of the problem.

    4.I want to design my software so that it can be viewed both in web-form and windows-form.I know I should use SOA as its core functionality.By the fact is should I use WCF or Basic Web services in ASP.net to write the core functionality and then access them via win or web apps?How is this constructed?

    Basically I would think the scenario in terms of client interoperability. WCF is designed for vendor agnostic purpose. It supports ws standard messages which is followed by many vendors. Also if you are planning for flexibility in communication (like you want to enable TCP/IP enabled clients for the same business logic), its a good choice. Apart from that you got various security choices, and extension points in WCF which you can exploit to your benefit.. WCF is a good choice.

    Regards,

    xeon2k

    Monday, June 25, 2012 5:18 AM
  •  Thanks xeon2k,Please clarify these:

    in question 1:you said:Usually in AGILE, whatever is known during each iterations or sprints, the team will work on it. if this is the case, then how would the architect make relation between different sprints in future as he doesn't know the whole system at present and focusing on present sprint or user story? Isn't this approach going to add overloading work of integration and change in future?How is this issue seen in Agile approach?

    in question 2:you said: Modelling in domain driven design helps more in this aspect.What do you mean by modelling in domain driven?

    in question 3:you said:You can take a look at dependency injection, SOLID principles.Can you briefly summarize them?

    in question 4:you said:WCF is a good choice.So you think that using WCF for writting core functionality and then write different layers of GUI on web or win for achieving this.

    thanks for your kind and helpful answer.


    Brainstorm your Brain and find solution,if no result stuck to Brainstormer.


    • Edited by simosi Monday, June 25, 2012 6:07 AM
    Monday, June 25, 2012 6:07 AM
  • answer to question 1: Architect knows the User stories for example User swipes his card and ATM gives him the money. He then analyses what information is needed to make user story work. He then analyses various options for communication between ATM and command center. Should he choose TCP/IP or any other mode of communication? How much traffic is flowing towards command center from all these ATMs? What kind of database should he use?

    It might happen that Architect chose XML as his message format initially, and later learn that he could have used fixed length fields instead. Architect should be an expert in domain, and in technology that solves similar problems that he knows in the domain.

    Team works on the sprints taking the input from Architect (which is highlevel in nature). Architect doesn't design the database or tables. He know only that SQL Server can take the load, and he knows the stories the sql server is called for Data. Architect decides the infrastructure, communication flow, and overall structure of the system. 

    if this is the case, then how would the architect make relation between different sprints in future as he doesn't know the whole system at present and focusing on present sprint or user story?

    Development team (including Project Manager) decides how they are going to achieve the features marked for  the release(typically multiple sprints make a release). Then they create the tasks that needs to be completed to accomplish the feature. These tasks are then assigned to sprints. These tasks may include database design, modelling, UI design, Testing..

    Isn't this approach going to add overloading work of integration and change in future?How is this issue seen in Agile approach?

    Team can not go back on the high level solution given by architect. They concentrate on the user stories, and tasks related to it. It can happen that customer identifies more things to be done after each iterations, then new tasks are created.

    What do you mean by modelling in domain driven?

    This is a design approach. You can refer Domain Driven Design by Eric Evans

    http://www.amazon.com/Domain-Driven-Design-Tackling-Complexity-Software/dp/0321125215

    http://domaindrivendesign.org/

    You can take a look at dependency injection, SOLID principles. Can you briefly summarize them?

    You can take a look at http://lostechies.com/wp-content/uploads/2011/03/pablos_solid_ebook.pdf

    So you think that using WCF for writting core functionality and then write different layers of GUI on web or win for achieving this.

    Yes, you can use that approach with WCF


    • Edited by xeon2k Monday, June 25, 2012 7:03 AM correcting the question
    • Marked as answer by simosi Tuesday, June 26, 2012 4:31 AM
    Monday, June 25, 2012 7:01 AM