240 likes | 520 Views
Definition. CASE tools are software systems which are designed to support routine activities in the software process such as editing design diagrams, checking diagram consistency and keeping track of program tests which have been run. What is CASE (Computer Aided Software Engineering ) ?.
E N D
Definition CASE tools are software systems which are designed to support routine activities in the software process such as editing design diagrams, checking diagram consistency and keeping track of program tests which have been run.
What is CASE (Computer Aided Software Engineering ) ? • Software systems that are intended to provide automated support for software process activities. • CASE systems are often used for method support.
CASE Tools Categories • Upper-CASE • Tools to support the early process activities of requirements and design; • Lower-CASE • Tools to support later activities such as programming, debugging and testing. • Integrated-CASE • Tools to support the whole SDLC (system development life cycle).
Software Engineering (part 2) -The Role of Automation Computer Aided Software Engineering (CASE) • Tools for various stages of the process (analysis and design, programming, testing, maintenance, etc.) • Formal specification languages, e.g. Z • AI: Computers programming computers
Taxonomy(تصنيف) of CASE tools • Project management • Support • Analysis and Design • Programming • Integration and Testing • Prototyping • (Maintenance)
Project Management Tools • Project Planning Tools • Cost estimation: using lines of code to be produced, problem complexity, staff experience, time available • Project scheduling: define project tasks, create task network describing inter-dependencies and parallelism
Requirement Tracing Tools: making sure the contract is fulfilled and no requirements are accidentally missed • Metrics Tools: Evaluating quality of software under development and its functionality
Support, Analysis & Design Tools • Documentation Tools: 20-30% of software development effort is in documentation • SA/SD Tools: Structured Analysis & Structured Design, for creating more and more complex models of the system • PRO/SIM Tools: Prototyping and Simulation • Interface Design and Development Tools: Interface accounts for 50-80% of code generated
Programming Tools • Conventional coding tools: • Editor • Interpreter • Compiler • Debugger • Fourth Generation Language Tools
4GL • A fourth-generation programming language (1970s-1990) (abbreviated 4GL) is a programming language or programming environment designed with a specific purpose in mind, such as the development of commercial business software. • In the history of computer science, the 4GL followed the 3GL in an upward trend toward higher abstraction and statement power. The 4GL was followed by efforts to define and use a 5GL.
4GL (cont.) • All 4GLs are designed to reduce programming effort, the time it takes to develop software, and the cost of software development. • They are not always successful in this task, sometimes resulting in inelegant and unmaintainable code. • However, given the right problem, the use of an appropriate 4GL can be successful.
Integration and Testing Tools • Static analysis tools: • Code-based testing, generating test instances from source code • Specialised testing languages, for writing detailed test specifications • Requirement-based testing, generating test cases based on specific user requirements
Dynamic analysis tools: • Interactions with an executing program • Provide information regarding number of times a loop is executed, running time of components, etc. • Intrusive(تطفل) (inserting probes(تحقيقات)) vs. nonintrusive
Prototyping Tools Three kinds of prototypes: • Paper/PC-based prototype modelling the human-computer interaction • Working prototype implementing a subset of the desired functionality • Using an existing program as an approximation
Formal Specification Languages • Formal vs. informal specifications • Problems with informal specifications: • Contradictions • Ambiguities • Vagueness(غموض) • Incompleteness • Mixed levels of abstraction
Advantages of Formality • Formal = mathematically precise, usually involving formal logics • Advantages: • Contradictions can be spotted • No ambiguities possible • Vagueness dissolves • High level of validation: you can PROVE that design matches specification and that implementation correctly reflects design
Example: A Block Handler • Files are made up of blocks of storage • The computer system keeps tracks of unused and used blocks • 3 25 • 17 6 • 14 • 5 7 8 Used Unused 2 8 14 5 Queue
Informal Specification of BlockHandler • No block is both used and unused • Every block is either used or unused • All blocks in the queue are used • The queue does not contain duplicates (note vagueness)
Formal Specification of BlockHandler in Z State variables and data invariants BlockHandler
Informal Specification of RemoveBlock • Precondition: the queue must not be empty in order for operation to succeed • Postconditions: • The new set of used blocks must be the old set without the blocks specified in the first queue element • The new set of free blocks must be the old set plus the blocks specified in the first queue element • The new queue must be the old queue without the first element
Formal Specification of RemoveBlock in Z RemoveBlock
Problems with Formality • Time consuming • Difficult to carry out for complex software, e.g. formal validation of Windows is computationally infeasible • Consequently, formal specification is mainly used in safety-critical domains
Towards fully automatic software engineering • Computers programming computers: intelligent robots or softbots • Fourth Generation Languages, adding another layer of abstraction • Disadvantage: less control over details • Adding more Artificial Intelligence: Computer needs to make more decisions autonomously
Need: knowledge of user and domain • Advantage: restricted domain, e.g. database for E-commerce • But: Some kind of programming will remain necessary; the computer needs to know what you want it to do • Hence, some kind of software engineering methodology will always be needed