Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

My employer (Not a Developer) thinks that CASE tools will help us improve our development process and documentation. I am not sure about that, we are a small team of 5 developers building mobile banking solutions for local clients. I think CASE tools will be a waste of time and money as they need to be purchased and we will need some time before we get used to them and be efficient working with them for modeling and stuff. Code generation is another issue, I really think that the CASE generated code won't be as good as code written by good developers.

I think that if we stick with agile principles, design patterns, use TDD, and keep our code clean. we should be good. And as far as Analysis and Design, I think simple UML diagrams on whiteboard should do the trick. Documentation is good and important, but should be made as little as possible and we should not focus on Docs and forget the code. This is what i think.

Am I correct? or should I listen to my employer and start researching for an appropriate CASE Tool?

share|improve this question
18  
"I really think that the CASE generated code won't be as good as code written by good developer" - people used to say the same about code generated by compilers. –  user4051 Sep 5 '12 at 14:32
7  
The answer depends a lot on whether or not you would like to keep your job :) –  dasblinkenlight Sep 5 '12 at 14:40
18  
The 1990s called, and they want their fad back. –  Blrfl Sep 5 '12 at 15:22
5  
@GrahamLee there's a huge difference between the two though - you read (when debugging) and make additions to (via partial classes or the like) CASE-generated code all the time, while you basically don't care about compiler-generated code being readable. –  guillaume31 Sep 5 '12 at 16:21
5  
@guillaume31: Once you've hand-tweaked CASE-generated code, you have code that needs to be maintainable by humans and therefore readable. I can't remember the last time I had to modify compiler output at all, much less not being able to get those tweaks back into the source in the form of in-lined assembler. –  Blrfl Sep 5 '12 at 17:27
show 9 more comments

7 Answers

Yes you should.

  1. Because you need evidence to back up your assertion that they won't help. You never know, you might find that they will help.
  2. Because your employer told you to.

I won't repeat the points laid out by David Kaczynski in his excellent answer as they are exactly the steps you should follow.

share|improve this answer
    
Do you think they won't help? –  omsharp Sep 5 '12 at 14:41
    
@omsharp - I've no idea whether they'd help you or not. I was answering the question you posed "should I listen to my employer and start researching for a [sic] appropriate CASE Tool". –  ChrisF Sep 5 '12 at 14:42
7  
+1 for point #1. Far too many people think they can not do their job because "they know better". –  TZHX Sep 5 '12 at 14:50
1  
"Because your employer told you to" should never be a reason for anything. –  Picarus Sep 18 '12 at 21:17
1  
@Picarus - Yes it should - even if it's handing in your resignation when they told you to do something unethical or illegal. –  ChrisF Sep 18 '12 at 21:21
show 1 more comment

The situation warrants an analytical approach to the decision. The bottom line will be "Does the CASE tool provide a value to the business?" Often, management will want developers to adopt a methodology or tool because they have heard good things about it, regardless of how well it fits into the current processes and culture of the organization.

If your employer has asked you to look into CASE tools, as ChrisF points out, you should oblige (this is a workplace issue, not programming). Some factors that would affect the adoption of a CASE tool include:

  • For which of your processes are there CASE tools available,
  • An estimation of how many person-hours would be needed to adopt the new tool(s),
  • How would the process(es) change with the adoption of the new tool(s),
  • or What kind of positive (or negative) impact would be measurable from adopting the new tool(s)

Think of this as an opportunity to upgrade your development environment and processes. It may be that your current processes are a perfect match for your organization's culture, but you owe it to your employer and your team to do the appropriate research.

share|improve this answer
    
This is a well written answer, sir. Thank you. –  omsharp Sep 5 '12 at 14:54
14  
"Think of this as an opportunity to upgrade your development environment and processes." - CASE tools are intended to solve problem X. We don't have problem X because of A,B, and C. A more relevant tool is tool Y, which solves related problem Z. –  Brian Sep 5 '12 at 15:05
add comment

It seems like a big paradigm shift indeed from Agile to CASE/MDA oriented development with code generation. Not necessarily from a project management point of view (a CASE approach won't conflict with the concepts of iterations, user stories, quick feedback or continuous improvement) but definitely so from a "software craftsmanship" perspective - it means less control over the code produced, generated code that will probably be unreadable, rigid, harder to test, constantly in need of sync with the model, and so on.

From what you describe, what your employer needs is easily understandable :

  • Better documentation in order to avoid knowledge loss if a developer was to leave the team.
  • A faster development process.

As a software professional, you definitely can (and should) tell him about your doubts on the CASE approach's ability to match these expectations. It is also your duty to start looking at CASE tools if he demands so. Just trying out one of them doesn't mean 1/ that the results will be satisfying (I'm especially thinking about the potentially big code generation overhead which kind of conflicts with the need to develop faster) and 2/ that you can't find a compromise where some features of the CASE tool (diagrams, documentation generation) will be used while preserving the existing agile context.

Here's an interesting article about CASE tools in an Agile environment and their possible benefits/drawbacks : http://www.agilemodeling.com/essays/simpleTools.htm

share|improve this answer
1  
That article would be an excellent starting point for @omsharp –  David Kaczynski Sep 5 '12 at 15:56
add comment

One of the benefits you would get out of investigating / implementing CASE tools is that you will have acquired a more marketable skill set for future employment. I think that many of your concerns are noteworthy, but, as pointed out by David Kaczynski, this is not a programming question so much as it is a employer / employee relationship question. Another benefit of CASE tools is that once learned, your company will be in a position to take on a wider range of projects of greater complexity. It may very well be that a contract your employer is looking to get requires, or places preference toward the use of CASE tools.

share|improve this answer
add comment

You are mixing the problem and the solution and your boss is trying to help, with more or less success. To challenge your boss you must have clear what is your role in the organization. If he is the CEO and you are the CTO the decision is yours and the CEO should just point on what business aspects are affected by the lack of documentation. Your obligation will be then to solve the business problem, with a CASE tool or any other solution you come out with.

Regarding the specific suggestion of using CASE tools, I think you must choose it properly so that you achieve your goal without overloading your team with extra work. If documentation is what you want to improve you may have enough with a tool that is able to generate diagrams from the code, not necessarily to generate the code from the graphical diagram. An example of such a tool is Codelogic. I used some years ago to make sure that our designs where clean and clear to be understood and it was quite easy to use. If as you express money is another concern you can probably look in the open source (I cannot help here but would be interested on the result of any research).

The alternative to CASE tools can also help. Measuring things like cyclomatic or other complexity measures will keep your design well structured and developers focused on the code. Better comments on your code, Javacode-like, can also help to improve documentation.

Honestly, I think if you consider that CASE tools don't help your boss must know it. If he is a good boss he will value your opinion. I have never liked an employee who just does what he is told without critical analysis. But of course, as David suggests, any discussion should be hold on strong and objective arguments.

share|improve this answer
add comment

I'd try to make your employer realize that he/she has gotten things backwards. If there is room for investment for the software team, you should identify what your bottlenecks or quality problems are. IF it turns out that you have most room for improvement in documentation and development process areas, you should identify what changes has biggest ROI with regards to improving these areas. That might or might not turn out to be starting to use CASE tools.

share|improve this answer
add comment

Help Your Boss, Help Yourself

You can react or act on this request.

Remember all the "Move Mount Fuji" questions? If you were in an interview for a job you really wanted, you would not tell the interviewer how stupid the question was, but would keep asking questions and expressing your best ideas about solving it. In some cultures, you would not ever say no to a boss who actually asked you to move Mount Fuji, but would find a way for you to both save face.

Reframing the Question

If you were to reframe the question into something like,

"Can I buy or otherwise acquire a suite of tools that automate as many of the low productivity tasks related to software as possible?"

this assignment becomes much more palatable. Help your boss (and yourself) by giving him an option with clear tracability to CASE, and one or two Agile / open source / cloud based options.

CASE Revisited

In the '90s, CASE tools might take the form of a suite of tools from Rational that probably included Requisite Pro, Rational Rose, Clear Case, Rational Robot (a test runner), Purify, Pure Coverage, and Quantify, and several other tools that were integrated together. If you were a MAD shop (Medical, Avionics, Defense) you might use updated versions of these tools to produce extensive and traceable documentation and artifacts that are often required by customers in those markets.

Contact IBM and get a salesman out to give a quote for five licences (or just one floating license). Add in some training too. Sharing this quote with your manager may end the talk about CASE tools. But don't get me wrong. I like Rational, their chief scientists, and their products, but have mainly accessed them through university site licenses because their price was too high for the companies where I have worked. If you are approved, at least from my experience, they will treat your right with good support, quality training (usually at a top resort with great food).

Tools for Sale

You still have a great opportunity to go tool shopping. Agile developers need tools too. You could buy a suite that gives you documentation support for online story cards, use cases, use case and other UML diagram types. Atlassian has what I think is a nice suite of tools - Jira for task and bug tracking, Green Hopper for what they describe as Agile project management, Confluence for an intranet wiki, Crucible for online code review, and Bamboo for a continuous integration server. There are software as a service licenses for these and other tool suites targeted to your needs if you are Agile.

IDE integration is another avenue of getting a year 2012 CASE equivalent. If you are a Microsoft development house, Visual Team Studio has tools that are of similar scope to what Rational created. They have some round-trip software engineering, generation of unit test stubs from classes, integration with source control systems, and a bunch of tools for team collaboration.

Open Source Tools

On the open source side, Eclipse and its many plug-ins try to integrate a bunch of open source tools. I am not sure if Eclipse Modeling Framework is mature or if there are other tools that give effective round-trip software engineer, but last time I looked, it didn't seem very easy to achieve. The Qt Creator environment integrates with source control, and has some capabilities to help with spot checking from code coverage of changes while you are in the editor.

Iterative Incremental Tool Adoption

An iterative / incremental approach to tool selection can also be very effective. Open source projects often support single or multiple environments. Your tool choices may be influenced by the stacks that you use. There is never a good time to completely shut down development, so adding and training the team in a few smaller tools per quarter may be better than a big bang approach that changes everything at once.

Cloud Tool Solutions

Many of the solutions listed may require servers and relatively complex setup. There are a lot of options coming into the market that are cloud based and provide software as a service hosted by a provider for a monthly fee. This may make sense for your team, either short or long term. Some may have a hosted solution you can use for a quick start, with the option to buy licenses later on.

None of these suggestions is an inexpensive and easy road to instant productivity improvement, but if you may find some of the tools indispensible once you give them a try.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.