220 likes | 258 Views
CASE (Computer-Aided Software Engineering). Scope of CASE Can support the entire life-cycle Graphical display tools (many for PCs) Data flow diagrams Entity-relationship diagrams Module-interconnection diagrams Petri nets Structure charts. Taxonomy of CASE. UpperCASE versus lowerCASE
E N D
CASE (Computer-Aided Software Engineering) • Scope of CASE • Can support the entire life-cycle • Graphical display tools (many for PCs) • Data flow diagrams • Entity-relationship diagrams • Module-interconnection diagrams • Petri nets • Structure charts
Taxonomy of CASE • UpperCASE versus lowerCASE • Tool versus workbench versus environment
Essential Coding Tools • Coding tools • Products (such as text editors, debuggers, and pretty printers) designed to • Simplify programmer’s task • Reduce frustration • Increase programmer productivity • Conventional coding scenario for programming-in-the-small • Editor-compiler cycle • Editor-compiler-linker cycle • Editor-compiler-linker-execute cycle • “There must be a better way”
Graphical Tool • Additional features • Data dictionary • Screen and report generators • Consistency checker; the various views are always consistent • Specifications and design workbench
Syntax-Directed Editor • “Understands” language • Speeds up implementation • User interface of an editor is different to that of a compiler • There is no need to change thinking mode • No mental energy is wasted on these adjustments • One piece of system software, two languages • High-level language of module • Editing command language • Pretty-printer
Online Interface Checker • Example • The programmer tries to call procedurecomputeAverage, but the linker cannot find it • The programmer realizes that the actual name of the procedure is computeMean • A structure editor must support online interface checking • Editor must know name of every procedure • Interface checking is an important part of programming-in-the-large
Online Interface Checker (contd) • Example • The user enters the call average = computeAverage (dataArray, numberOfValues); • Editor immediately responds with a message such as Procedure computeAverage not known • Programmer is given two choices • Correct the name of the procedure • Declare new procedurecomputeAverageand specify its parameters • Enables full interface checking
Online Interface Checker (contd) • Example • Declaration ofqis void q (float floatVar, int intVar, String s1, String s2); • Call (invocation) is q (intVar, floatVar, s1, s2); • Online interface checker detects the fault • Help facility • Online information as to the parameters of methodq • Better: Editor generates a template for the call • Shows type of each parameter • Programmer replaces formal by actual parameter
Online Interface Checker (contd) • Advantages • No need for different tools with different interfaces • Hard-to-detect faults are immediately flagged for correction • Wrong number of parameters • Parameters of wrong type • Essential when software is produced by a team • If one programmer changes the interface specification, all modules calling that changed module must be disabled
Online Interface Checker (contd) • Remaining problem • The programmer still has to exit from the editor to invoke the compiler (to generate code) • Then, the linker must be called to link the product • Must adjust to the JCL, compiler, and linker output
Operating System Front-End in Editor • Single command • goorrun • Use of the mouse to choose icon, or menu selection • Causes the editor to invoke the compiler, linker, loader, and execute the product
Operating System Front-End in Editor (contd) • Online documentation • Help information regarding • Operating system • Editor • Programming language • Programming standards • Manuals • Editor manuals • Programming manuals
Online Documentation • Problems with • Manuals • Updating • Essential online documentation • Help information • Programming standards • Manuals
Source Level Debugger • Example: • Product executes terminates abruptly and prints Overflow at 4B06, or Core dumped, or Segmentation fault
Source Level Debugger (contd) • The programmer works in a high-level language, but must examine • Machine code core dumps • Assembler listings • Linker listings • Similar low-level documentation • Destroys the advantage of programming in a high-level language • We need • Interactive source level debugger (like dbx)
Programming Workbench • Structure editor with • Online interface checking capabilities • Operating system front-end • Online documentation • Source level debugger • Constitutes a simple programming environment
Programming Workbench (contd) • This is by no means new • All the above features are supported by FLOW (1980) • The technology has been in place for years • Surprisingly, some programmers still implement code Ye Olde-Fashioned Way
Software Versions • During maintenance, at all times there are at least two versions of the product: • The old version, and • The new version • Two types of versions: revisions and variations
Revisions and Variations • Revision • Version to fix a fault in the module • We cannot throw away an incorrect version • Perfective and adaptive maintenance also results in revisions
Revisions and Variations (contd) • Variation • Version for different operating system–hardware • Variations are designed to coexist in parallel
Configuration Control • Every module exists in three forms • Source code; object code; executable load image • Configuration • Version of each module from which a given version of a product is built