Computer Aided Software Engineering

Computer Aided Software Engineering

CASE

Moayad H Almohaishi

CSC532:

Advanced Topic:Software Engineering

Dr. Box

1. Introduction:

The computer became the most important technology for this century. We are able now to save and analyze masses of data in few nanoseconds. A computer that was covering 1,000 square feet in the past its place now in a small bag that you can carry on your shoulder or on your back. Not only did the size change but also the capacity and the speed are almost 1000 times more than the first PC. Even the applications are better and cover more usages than before. Instead of the black screen with so much texts to write in The MS-DOS, now we have a fully graphical operating system like MS Windows Vista, Mac X and also the free open-source Linux which all require only a few clicks on your computer mouse. This changes made it harder for the software engineers to manage the software development life cycle alone. The computer with its ability to compute and analysis the data in an accurate way brought us a new tools to manage and automate the development of the software, they called it CASE tools.

2. CASE Tools:

Case referred to Computer Aided Software Engineering. Which it means in a general “The use of the computer-based support in the software development process. [1]” The start of thinking about getting aid from the computer itself to help in the creating of more complex softwares started in the 70s, when the software engineers started implementing the production concepts from the hardware manufacturers.

More likely later the definition of the CASE became more specific, “ A CASE tool is a computer-based product aimed at supporting one or more software engineering activities within a software development process.[1]” The main reasons of the CASE tools is to support the life cycle of the project (Software) development in some of its phases. Those tools might not only help supporting but also managing the production of the software.

These tools meant in the first to fasten and lower the cost of the software production, by lower the need of the programmers, this goal couldn't happen because until now there is no application that can be smart enough to know all the customers need and build another application for them. But CASE tools helped to lower the cost of the software production, by making it easier and faster than before, more likely it helped to alleviate the quality of the product and made the maintenance much easier and faster than any time before.

The Case tool contain a dictionary which contain all the names and description of data , process and so, then this dictionary will be held in a repository, this repository also contain the plane, models and designs, codes, and documents that project needs. With maintaining all the data that the software need in a single repository helped the maintenance and the update of the software to be easy and fast, more than that helped to use the same data in building a new software depending on the old one, without the need to start one from the scratch again and again.

3. CASE and Software Life-Cycle:

There are lots of methods for the software life-cycle, but all are there to help building the software and help it to survive as long as it could. The CASE tools help the production of the software starting from the first step, which is collecting the requirements. Instead of the old way to write the use cases on a paper, mostly would be damaged or lost later, or the little old way to scan or make these diagrams as a pictures on the computer or soft-copy, these tools would help these diagrams to be a life soft-copy. All he diagrams are connected to each other, so you won't need to change all the diagrams if you changed one, everything would react to that change by its own, making it easy and fast to be changed and modified. Those tools are walking along with the software more on its life, even when you draw the use cases diagram those tools could help you more to build the requirement documents that you need automatically, building a more detailed design documents, and also building a prototype of the user interface for that application.

One of the power that can be count to these tools are the fully support for the OO (Object Oriented) concepts, using one of the famous tools UML (Unified Model Language). UML help maintain all the diagrams and designs on a single repository, analyses them together, helping in writing the code in a very easy way, and providing easy access to the code than the normal way. With using UML programming became easer and also more fun than before, To start programming all you need is to draw the classes, write there attributes and behaviors, put the connections between them, then write the code for their behaviors. When a changes required on one class or function, instead of scrolling through hundreds or thousands of code lines, UML provide you with a graphical diagrams showing all the classes and all the relation between them, all you need is finding the class you need and clicking on his behavior to change its code.

CASE tools went to more steps than helping; it can produce some codes too. For example, when you put a use case that show a login or logout, eventually this tools can build the code for the known use cases. We don't need to write the login code again and again for each software, all of us know that a login page needs user name, password, and a bottom to login. And most of us know that the user names and passwords must be available in kind of a data base, and when you click the login bottom it look over the data base for matches, and if not the login fails. Most login cases are the same unless the client wanted other input method, like finger print login, voice recognition, face recognition, or even eye lens, but still the concepts are the same, there must be a database to compare the input data with the stored data. So with hundreds of other cases, maybe the programming became so easy that you need only to chose some ready to use codes from a box and drop them into your application to build a basic software.

One of the most importation CASE tools that people don't know that they are using it most of the time is, compilers. Before the compilers invented, programmers suffered from hard time to program a machine that use only 0 and 1. The basic programming language for the computers is the assembly, but these compilers built to ease the programming. Instead of writing in the Assembly language which is difficult to learn and more difficult to use, you can write in easy human-like language such as C/C++, Java, Visual basic, C# or any other language.

Some CASE tools build to help managing the subversions of the product or to managing the changes on the product. One of the known version control system is CVS (Concurrent Versions System), when you make some changes on the current version of the application and build new version, using CVS you can easily travel between versions.

Therefore we can maintain the uses of CASE tools as:

  1. Configuration management.
  1. Data modeling.
  1. Model transformation.
  1. Refactoring.
  1. Source code generating.
  1. Unified Modeling Language.

4.I-CASE and CASE environment:

CASE tools are build to help each phase in the software life cycle, but when a tool made to help on two or all the phases, then it called I-CASE (Integrated CASE). I-CASE helped to cover the gape that the CASE tools have, the incompatibility between the CASE tools for the different phases.

Because the need of the computer aid in more broad way a new CASE method came to life, CASE environment. “A CASE environment is a collection of CASE tools and other components together with an integration approach that supports most or all of the interactions that occur among the environment components, and between the users of the environment and the environment itself.[1]”

CASE tools Advantages:

  1. Ease the software production stage.
  2. Good to organize and manage large and complex projects.
  1. Allow all the working team to know where the project stands.
  1. It can show the progress in the project as graphs.
  2. It works as repository or database for the project.
  3. Fasten and ease the change on the software.

CASE tools limitations:

  1. Software Engineering required creative thought, which any tools can't provide.
  1. It can't support the team interactions.
  1. If using different tools for each phase of the development, it would be hard to connect them all.

Conclusion:

CASE tools helped to bring the software engineering to a new level; faster and more accurate. Therefore we were able to have more complicated applications, and managing them so easily. Without those tools maybe we couldn't have those amazing and complex software, because CASE didn't only helped in easing the production but also helped to ease the change management on the product which is as important as the production itself or more to insure the project survival.

Appendix

Git–Fast Version Control System

Git is an open source software build by the known Linus Torvalds, who made the Linux core(Kernel). Most of us know the CVS application. Linus said on 2007 in Google talk presentation, that he was working on Linux for almost 10 years, making changes and improvement on the core, without using CVS. Or CSM, all what he was using is a tarball.

Git built to manage large and complex projects, in a fast and effective way. As well, it is good in working with small projects too.

Git Highlights:

1. Distributed development.

2. Strong support for non-linear development.

3. Efficient handling of large projects.

4. Cryptographic authentication of history.

5. Toolkit Design.

Git can work on most operation systems available now, Linux/Unix, Mac, and Windows, without any problems, it is fast and reliable. Linus use it to manage his Linux Kernel now is a one example of its reliability. More than that it is free, and open source tool.

Referneses:

  1. New Product Development Solutions “Computer Aided Software Engineering” < Doa: Sep24th, 2008.
  2. Carnegie Mellon Software Engineering Institute. “What is CASE Environment?”. <http://www.sei.cmu.edu/legacy/case/case_whatis.html> . Doa: Sep24th,2008.
  3. Wikipedia „Computer Aided Software Engineering” < Oct 9th,2008.
  4. The TechTarget Library of White Papers < > Doa:Oct 10th,2008.
  5. Software Engineering, 7th Edition, Presentation Chapter 4: software procsses, < Doa: Oct18,2008.
  6. Computer Careers: Working with Automation tools to help you develop software program application < Doa, Oct18,2008.
  7. Git < Doa, Oct 25,2008.
  8. Dr. box Class Presentations about UML <http://www2.latech.edu/~box/ase/intro_oo.pdf> Doa, Sept15,2008.