Hi,
I look at "Agile" as more of a philosophy rather than a specific set of guidelines - it's a style of dealing with projects rather than something that replaces the traditional waterfall model. Ultimately, in my opinion, everything boils down to the Software (or System) Development Lifecycle - SDLC. If we take a look at it, it has some very concrete steps:
Analysis -> Design -> Implementation -> Maintenance -> Planning -> Analysis -> Design -> Implementation -> Maintenance -> Planning -> Analysis .....
Notice, that I've tried to represent this as a cycle - where the first step can either be Analysis, or may be Implementation or, may be you come on board onto a project where you are within the stage of Maintenance ... it doesn't matter - what matters is that first and foremost you recognize which stage of the project, you've arrived in.
Each of these steps are a context within themselves and each require the need for a Business Analyst. If we are talking about each of these steps within the "Agile" context and we abide by the "Agile" mantra: "Just barely good enough", I usually follow these steps:
1. Identify first and foremost the bigger picture for the stage you are in.
2. Identify all the actors within the bigger picture.
3. Identify the responsibilities of all the actors ("actors" may not mean people - it may mean anything that has an impact on the system you work with - so it can be processes, people, other systems etc....)
4. Break down the bigger picture in stage 1 by the responsibility of each actor you identified in step 2
5. Break down each of the actor's responsibilities and / or tasks identified in step 3 into actions (where each action is defined as a set of pre-conditions which result in a set of post-conditions based on a number of variables or constants passed to the actor for a given task). Of course you need to identify what each of the pre-conditions / post-conditions are based on the variables or constants passed to the actor for the tasks you've identified and so on ....
What you will notice yourself doing is eventually drilling down from a very general scope to a very narrow scope through each iteration as you simply try to identify the "Just barely good enough" components / modules / actions / whatever that make the system operational within the scope of the SDLC stage you found yourself in.
Ultimately, I see the responsibility of the business analyst to be the individual who makes sure that the scope of the project meets the overall expectations of the top project stakeholder. With the approach I try to use above, I generally manage to have a much better contextual understanding from a big picture perspective, as well as a low-level understanding of whether the project as is, meets the requirements within the SDLC stage I find myself in. If not, as a business analyst, you should communicate to the team that you see gaps which have the potential to affect the ultimate goals of the project.
You will also notice that as you drill down from above, you will have a much better understanding of the system and as such will be much better equipped to design test scenarios which will ultimately decide if the project is being implemented in a way satisfying business requirements.
I hope that I've posted something which adds value to the general discussion - this is a topic which could go on for a lot longer than this post ....
Cheers,
Michael
Sr. Business Analyst @ Fidelity Information Systems