What is Agile Modeling? - Definition & Primary Goal

Instructor: Bob Bruner

Bob is a software professional with 24 years in the industry. He has a bachelor's degree in Geology, and also has extensive experience in the Oil and Gas industry.

Software modeling is used to help bring clarity to the understanding of complex software systems. These modeling activities can honor the basic principles of Agile software development when used in that environment.

Modeling

Place a pre-schooler in front of a pile of blocks and the youngster will likely build a house, followed quickly by a little neighborhood. It is not that far from these very simple constructions to the more elaborate mockups of skyscrapers seen in architectural offices, or to the life-size dioramas you can stroll past in a museum. All of these models serve a purpose: they help us to learn something new about the actual objects they represent.

In this lesson we will look more closely at modeling procedures used in software development for the same general purpose. In particular, we will look at how modeling fits into Agile software development as a learning tool.

Software Modeling

Software deals with logical operations, and simple logic diagrams such as flowcharts have long been used to depict how software processes move programmatically from one step to another. Closed geometric shapes typically represent specific software operations. Arrows or lines follow the results of simple logical decisions, and can depict multiple branches or loops out to subsequent operation boxes. Like the flowchart itself, most software models are graphical in nature, making them excellent tools for depicting complex relationships that are difficult to visualize when working with a smaller portion of the codebase.

There are entire languages and tools that are now devoted to software modeling. For example, the Unified Modeling Language, or UML, which was created in the 1990's, has become something of an industry standard, and supports many different diagramming techniques based on a standard visualization system. These fairly rigorous modeling tools provide a way for team members to better view and discuss critical details of the software system, often before any code is actually written. All of these modeling tools support the goal of any good software model, which is to improve communication and comprehension across the entire team.

Agile Documentation and Modeling

Today's software modeling tools have one other thing in common: they can create massive amounts of documentation. And, as is often the case with any large documentation effort, the documented models themselves can rapidly become out-of-date as actual software coding progresses.

One of the key tenets of the Agile software methodology is that a team should value working software over comprehensive documentation. The widespread adoption of Agile software development methodology has led to much ongoing discussion about how much documentation, including these software modeling artifacts, is actually useful to the team.

In order to answer this question, we can go back to our basic definition of a model's primary use and combine it with the Agile communication goals. From these two concepts we can then surmise that any modeling efforts should be undertaken only if the models being created will improve communications, and provide a better understanding of the actual software being created.

Agile Methods and Modeling

It is useful to view the user story as the first type of model used on an Agile team. This user story is typically a conversational document describing how the end user wants the software to behave. It represents, or models, the software behavior in a way that helps the team members understand the software that will ultimately be produced.

In terms of general procedures, modeling activities should follow all the other basic tenets of Agile methodology. Modeling should be done in an iterative manner, and not only at the start of development. It is generally best to start with simple models, and then move to more complex representations only if they are actually needed. And, as with all documentation artifacts, models need to be continuously updated to reflect the actual state of the software at all times.

Good models help to remove some of the uncertainty that exists in the original user stories. One useful side effect of removing that uncertainty will be to help the team make better estimates of story size during iteration planning. For example, a network diagram is one type of model that visually depicts what physical software components are in contact with each other in the entire software system. Having a network diagram model can help the team avoid planning for, building, and testing useless configurations, avoiding waste in the process.

To unlock this lesson you must be a Study.com Member.
Create your account

Register to view this lesson

Are you a student or a teacher?

Unlock Your Education

See for yourself why 30 million people use Study.com

Become a Study.com member and start learning now.
Become a Member  Back
What teachers are saying about Study.com
Try it risk-free for 30 days

Earning College Credit

Did you know… We have over 200 college courses that prepare you to earn credit by exam that is accepted by over 1,500 colleges and universities. You can test out of the first two years of college and save thousands off your degree. Anyone can earn credit-by-exam regardless of age or education level.

To learn more, visit our Earning Credit Page

Transferring credit to the school of your choice

Not sure what college you want to attend yet? Study.com has thousands of articles about every imaginable degree, area of study and career path that can help you find the school that's right for you.

Create an account to start this course today
Try it risk-free for 30 days!
Create an account
Support