Case
Case
Case
Software includes:
Instructions (computer programs) that when executed provide desired functions and performance
Data structures that enable the programs to adequately manipulate information.
Documents that describe the operation and use of the programs.
Software is a collection of programs whose objective is to enhance the capabilities of the hardware.
Definition of software given by the IEEE:
Software is the collection of computer programs, procedure rules and associated
Software Engineering
The economies of ALL developed nations are dependent on software.
More and more systems are software-controlled
Software engineering is concerned with theories, methods and tools for professional software development.
Expenditure on software represents a significant fraction of Gross National Product (GPN) in all developed countries.
Software Products
Generic products
Stand-alone systems that are marketed and sold to any customer who wishes to buy them.
Examples – PC software such as graphics programs, and project management tools, software for specific markets such as
appointment systems for dentists.
Customized products
Software that is commissioned by a specific customer to meet their own needs.
Examples – embedded control systems, air traffic control software, traffic monitoring systems.
Software Specification
Generic products
The specification of what the software should do is owned by the software developer and decisions on software change
are made by the developer.
Customized products
The specification of what the software should do is owned by the customer for the software and they make decisions on
software changes that are required.
Performance:
The software runs efficiently and quickly, and it can handle large amounts of data or traffic.
Security:
The software is protected against unauthorized access and it keeps the data and functions safe from malicious attacks.
Maintainability:
The software is easy to change and update, and it is well-documented so that it can be understood and modified by
other developers.
Reusability:
The software can be reused in other projects or applications, and it is designed in a way that promotes code reuse.
Scalability:
The software can handle an increasing workload and it can be easily extended to meet the changing requirements.
Testability:
The software is designed in a way that makes it easy to test and validate, and it has a comprehensive test coverage.
CASE Tool
CASE tools are a set of software application programs that are used to automate SDLC activities.
CASE tools are used by software project managers, analysts, and engineers to develop software systems.
CASE tools are used to support software process activities
• Provides software process support by
o automating some process activities
o providing information about the software being developed
Almost all the phases of the software development life cycle are supported by them such as analysis; design, etc
CASE Tools
There are a number of CASE tools available to simplify various stages of the Software Development Life Cycle
Analysis tools,
Design tools,
Project management tools,
Database Management tools,
Documentation tools
Tools
Support individual process tasks
Examples:
• Checking the consistency of a design
• Compiling a program
• Comparing test results
Workbenches
• Collection of tools that together support:
• Process workflows (requirements, design, etc.)
• One or two activities where an activity is a related collection of tasks
Examples:
• Power Builder
• Software Through Pictures
• Software Architect
Environments
• Support the complete software process or, at least, a large portion of the software process
• Normally include several different workbenches which are integrated in some way
They provide a unified workspace where developers can manage all aspects of the development process from
requirements gathering to deployment.
CASE (Computer-Aided Software Engineering) tools can be integrated into each phase of the SDLC
Automate tasks,
Facilitate collaboration,
Improve the overall efficiency
Quality of the software development process
Requirements Analysis
CASE tools help us gather and organize all the information about what the software needs to do. They make it easier to
understand and manage all the requirements.
Upper CASE Tools:
Tools like Visure Requirements and Jama Connect
Help capture analyze, and manage requirements and document systems through diagrams, traceability matrices,
and version control.
They facilitate stakeholder collaboration and ensure complete and consistent requirements.
Use case diagrams, and other artifacts to ensure a clear understanding of stakeholders' needs.
Application: For example, a hospital management system project might use a CASE tool to capture requirements
like appointment scheduling, patient record management, and billing functionalities.
Design
CASE tools support the creation of system architecture and design documents.
They enable software engineers to model system components, define interfaces, and visualize system structure
and behavior using techniques such as UML diagrams
Upper CASE Tools:
Tools like Enterprise Architect and Sparx Systems Enterprise Architect
Offer modeling capabilities for data flow diagrams, entity-relationship diagrams, and system architecture diagrams.
These tools automate code generation and improve design consistency.
Application: The hospital management system project might use an Upper CASE tool to design user interfaces, data
flows, and system interactions.
Implementation
CASE tools make writing code faster and less prone to mistakes.
They help us organize our code and catch errors early on.
CASE tools aid in code generation, code refactoring,
Streamline the implementation phase.
They provide features for writing and organizing code,
Lower CASE Tools:
Tools like Xtend and Developer automate
Code generation based on design models, reducing development time and errors.
Application: In the hospital system project, code generation could significantly speed up the development of data
access layers and core functionalities.
Testing
With CASE tools, we can create tests to check if the software works as expected.
They help us find and fix bugs before the software is used by people.
CASE tools assist in creating and managing test cases, executing tests, and analyzing test results.
Testing CASE Tools:
Tools like TestRail and Zephyr
integrate with requirements and design documents to generate test cases automatically.
They track test execution, defects, and coverage metrics.
Application: Automated test cases generated from requirements and design ensure comprehensive testing of the
hospital system's functionalities.
Deployment
These tools help us manage the process of putting the software into use.
They make sure everything goes smoothly when we launch the software for people to use
Help automate deployment processes and manage configurations for different environments.
Jenkins: An open-source continuous integration and continuous delivery tool that can be used to automate the
deployment process.
Microsoft Azure DevOps: A cloud-based platform that provides a variety of tools for DevOps, including deployment
tools.
AWS CodeDeploy: A managed service from Amazon Web Services (AWS) that can be used to automate deployments to
AWS environments.
Maintenance
CASE tools support change management, issue tracking, and version control to facilitate software maintenance
activities.
CASE tools help us keep track of changes and updates to the software.
They make it easier to fix problems and make improvements over time.
Documentation Tools:
Tools like MadCap Flare and Adobe RoboHelp
assist in creating and maintaining user manuals, technical documentation, and release notes.
Version Control Systems: Tools like Git and Subversion track code changes, facilitating regression testing and bug
fixes.
Application: Throughout the lifecycle of the hospital system, documentation tools help maintain accurate
documentation, while version control systems track changes and enable efficient maintenance.