Computer-aided software engineering (CASE), in the field software engineering is the
scientific application of a set of tools and methods to a software which results in high- quality, defect-free, and maintainale software products!["#] $t also refers to methods for the de%elopment of information systems together with automated tools that can e used in the software de%elopment process![""] &he term 'computer-aided software engineering' (CASE) can refer to the software used for the automated de%elopment of systems software, i!e!, computer code! &he CASE functions include analysis, design, and programming! CASE tools automate methods for designing, documenting, and producing structured computer code in the desired programming language!["(] &wo )ey ideas of Computer-aided Software System Engineering (CASE) are*["+] ,oster computer assistance in software de%elopment and or software maintenance processes, and An engineering approach to software de%elopment and or maintenance! &ypical CASE tools e-ist for configuration management, data modeling, model transformation, refactoring, source code generation, and .nified /odeling 0anguage! $ntegrated de%elopment en%ironment[edit] An1uta, a C and C22 $3E for the 456/E en%ironment An integrated de%elopment en%ironment ($3E) also )nown as integrated design en%ironment or integrated deugging en%ironment is a software application that pro%ides comprehensi%e facilities to computer programmers for software de%elopment! An $3E normally consists of a* source code editor, compiler and7or interpreter, uild automation tools, and deugger (usually)! $3Es are designed to ma-imi8e programmer producti%ity y pro%iding tight-)nit components with similar user interfaces! &ypically an $3E is dedicated to a specific programming language, so as to pro%ide a feature set which most closely matches the programming paradigms of the language! /odeling language[edit] A modeling language is any artificial language that can e used to e-press information or )nowledge or systems in a structure that is defined y a consistent set of rules! &he rules are used for interpretation of the meaning of components in the structure! A modeling language can e graphical or te-tual!["9] 4raphical modeling languages use a diagram techniques with named symols that represent concepts and lines that connect the symols and that represent relationships and %arious other graphical annotation to represent constraints! &e-tual modeling languages typically use standardised )eywords accompanied y parameters to ma)e computer-interpretale e-pressions! E-ample of graphical modelling languages in the field of software engineering are* :usiness ;rocess /odeling 5otation (:;/5, and the </0 form :;/0) is an e-ample of a process modeling language! E<;=ESS and E<;=ESS-4 ($S6 "#+#+-"") is an international standard general- purpose data modeling language! E-tended Enterprise /odeling 0anguage (EE/0) is commonly used for usiness process modeling across layers! ,lowchart is a schematic representation of an algorithm or a stepwise process, ,undamental /odeling Concepts (,/C) modeling language for software-intensi%e systems! $3E, is a family of modeling languages, the most notale of which include $3E,# for functional modeling, $3E,"< for information modeling, and $3E,> for modeling ontologies! 0e;.S+ is an o1ect-oriented %isual 3esign 3escription 0anguage and a formal specification language that is suitale primarily for modelling large o1ect-oriented (?a%a, C22, C@) programs and design patterns! Specification and 3escription 0anguage(S30) is a specification language targeted at the unamiguous specification and description of the eha%iour of reacti%e and distriuted systems! .nified /odeling 0anguage (./0) is a general-purpose modeling language that is an industry standard for specifying software-intensi%e systems! ./0 (!#, the current %ersion, supports thirteen different diagram techniques, and has widespread tool support! 5ot all modeling languages are e-ecutale, and for those that are, using them doesnAt necessarily mean that programmers are no longer needed! 6n the contrary, e-ecutale modeling languages are intended to amplify the producti%ity of s)illed programmers, so that they can address more difficult prolems, such as parallel computing and distriuted systems! ;rogramming paradigm[edit] A programming paradigm is a fundamental style of computer programming, in contrast to a software engineering methodology, which is a style of sol%ing specific software engineering prolems! ;aradigms differ in the concepts and astractions used to represent the elements of a program (such as o1ects, functions, %ariales, constraints!!!) and the steps that comprise a computation (assignations, e%aluation, continuations, data flows!!!)! A programming language can support multiple paradigms! ,or e-ample programs written in C22 or 61ect ;ascal can e purely procedural, or purely o1ect-oriented, or contain elements of oth paradigms! Software designers and programmers decide how to use those paradigm elements! $n o1ect-oriented programming, programmers can thin) of a program as a collection of interacting o1ects, while in functional programming a program can e thought of as a sequence of stateless function e%aluations! Bhen programming computers or systems with many processors, process-oriented programming allows programmers to thin) aout applications as sets of concurrent processes acting upon logically shared data structures! ?ust as different groups in software engineering ad%ocate different methodologies, different programming languages ad%ocate different programming paradigms! Some languages are designed to support one paradigm (Smalltal) supports o1ect-oriented programming, Cas)ell supports functional programming), while other programming languages support multiple paradigms (such as 61ect ;ascal, C22, C@, Disual :asic, Common 0isp, Scheme, ;ython, =uy, and 68)! /any programming paradigms are as well )nown for what methods they forid as for what they enale! ,or instance, pure functional programming forids using side-effectsE structured programming forids using goto statements! ;artly for this reason, new paradigms are often regarded as doctrinaire or o%erly rigid y those accustomed to earlier styles![citation needed] A%oiding certain methods can ma)e it easier to pro%e theorems aout a programAs correctness, or simply to understand its eha%ior! Software framewor)[edit] A software framewor) is a re-usale design for a software system or susystem! A software framewor) may include support programs, code liraries, a scripting language, or other software to help de%elop and glue together the different components of a software pro1ect! Darious parts of the framewor) may e e-posed %ia an A;$! Software de%elopment process[edit] A software de%elopment process is a framewor) imposed on the de%elopment of a software product! Synonyms include software life cycle and software process! &here are se%eral models for such processes, each descriing approaches to a %ariety of software de%elopment process methodologies! /any of them are in the defense industry, which in the .!S! requires a rating ased on Aprocess modelsA to otain contracts! &he international standard descriing the method to select, implement and monitor the life cycle for software is $S67$EC "((#F! A decades-long goal has een to find repeatale, predictale processes that impro%e producti%ity and quality! Some try to systemati8e or formali8e the seemingly unruly tas) of writing software! 6thers apply pro1ect management methods to writing software! Bithout pro1ect management, software pro1ects can easily e deli%ered late or o%er udget! Bith large numers of software pro1ects not meeting their e-pectations in terms of functionality, cost, or deli%ery schedule, effecti%e pro1ect management appears to e lac)ing!