-1

I've been reading about Agile and it seems to be about making it easier to respond to changing requirements, evolutionary software design, getting working software over building a foundation, being able to deliver at any time, constant refactoring, etc. but I haven't really found anything pertaining to how to actually take requirements and translate them into software designs in a way that would help facilitate the mentioned 'goals' of Agile development besides following SOLID, use design patterns, and other guidelines.

Are there any methodologies out there that would help take me from requirements to software with Agile goals in mind?

fordeka
  • 979
  • 2
  • 7
  • 22

4 Answers4

2

As I understand it, agile is about work methodology, not about technical solutions.
It's all about how you manage your work, not how you do your work;
Agile methodologies were designed to solve managerial problems, not technical ones.
(theoretically you can use agile methedologies not only for software development, but for almost any kind of work.)

That said, there are several patterns & methodologies that are known to work well with agile development; among them are Test-Driven-Design and Acceptance-Test-Driven-Design, that are designed to help you provide working code quickly.

J. Ed
  • 6,692
  • 4
  • 39
  • 55
0

I have first hand experience with The Architecture Centric Design Methodology (ACDM). Based on your description I think this is close to what you might be looking for. It is not an agile methodology per se but it maps well to Agile methods such as Scrum and embraces many of the Agile values and principles (though there is some tension that novice teams may find tricky or frustrating). Further, ACDM is a true design methodology -- it provides specific guidance for understanding requirements and creating a design that satisfices those requirements. You will need to use a development methodology for guidance in writing the code, for example XP.

ACDM consists of 8 stages. The goal of the process in general is to help teams quickly and effectively move from what the author calls the period of uncertainty into the period of certainty regarding the architecture design of the system to be built.

  • Stage 1: Discover Architectural Drivers --> Author encourages teams to focus on 4 drivers -- technical constraints, business constraints, high-level functional requirements, and quality attributes. Specific elicitation techniques are not discussed and there are a wide variety of techniques out there.
  • Stage 2: Establish Project Scope --> basically, establish a notional design and make sure it aligns with discovered drivers.
  • Stage 3: Create/Refine Architecture --> This is where you would apply many of the principles you mentioned in your question, SOLID, patterns use, etc.
  • Stage 4: Architecture Review --> A scenario-based review of the design with a team of reviewers in a formal or semi-formal process. Based on the architectural drivers, this can be thought of as a variant of TDD for architecture design.
  • Stage 5: Production Go/No-Go --> skip to step 7 if design is Go. go/no-go is not all or none for the entire system meaning a subset of elements might be "go" for production while other elements must be refined further
  • Stage 6: Experimentation --> This is really the core of the process. If you don't understand something or aren't sure, you will often need to get your hands dirty and write some code to understand what needs to be done in the design. repeat to step 3
  • Stage 7: Production Planning
  • Stage 8: Production --> code construction begins, can happen in part or in whole

The book outlines just about everything you need to know. There are also several papers and presentations published by the author both leading up to the process released in the book and after.

Architecting Software Intensive Systems: A Practitioners Guide by Anthony Lattanze.

Michael
  • 701
  • 6
  • 18
0

I know what you mean. You're looking for a path to follow, it's OK. I'll recommend you a book and it will solve all of your problems, OK? It is named: The Art of Agile Development.

This book is the methodology (near to it) you are looking for. From there you will be able to continue your journey.

Besides a book: eXtreme Programming is more technical and specific than the other agile methodologies. You should look at it also at: http://www.extremeprogramming.org

Click the links on there and read everything.

Good luck.

Inanc Gumus
  • 25,195
  • 9
  • 85
  • 101
0

In order to be Agile, you need to be able to Change, quickly. Thus it is your software that has to be changeable. Achieving this is not easy, its in fact hard. I suggest you to read this book: http://www.amazon.de/Software-Development-Principles-Patterns-Practices/dp/0135974445 it is really good.

You can also read my blogpost: http://babdev.blogspot.co.at/2013/08/are-you-really-agile.html