Software Engineering Unit1
Software Engineering Unit1
UNIT I
● Maintainability
● Dependability
● Efficiency
● Usability
Maintainability refers to the ease with which software can be modified to
correct faults, improve performance, or adapt to a changed environment. It is a
critical characteristic that ensures the longevity and adaptability of software
systems.
Attributes:
- Modularity: Software components are divided into distinct modules, each
handling a specific function, making it easier to understand and modify.
-Readability: Clear, well-documented code that is easy for developers to read
and understand.
-Testability: The ease with which software can be tested to ensure it is
functioning correctly after modifications.
-Extensibility: The ability to add new features or enhance existing ones with
minimal effort
Dependability
Dependability encompasses various attributes that ensure the software
performs reliably and correctly. It includes aspects like availability, reliability,
safety, and security.
Attributes:
- Reliability: The ability of software to perform its required functions under
stated conditions for a specified period.
- Availability: The degree to which the software is operational and accessible
when required for use.
- Safety: The software's ability to operate without causing unacceptable risk
or harm.
- Security: Protection against unauthorized access, modification, and
ensuring data integrity and confidentiality.
Efficiency
Efficiency in software engineering refers to the optimal use of system resources,
such as CPU time, memory, bandwidth, and other computing resources. Efficient
software performs its functions without wasting resources.
Attributes:
○ Performance: The speed and responsiveness with which the software
executes tasks.
○ Resource Utilization: The effective management of system resources,
ensuring minimal wastage and maximal productivity.
○ Scalability: The ability to handle increased load or expand resources
without degradation in performance.
Usability
Usability is the ease with which end-users can learn to operate, prepare inputs for,
and interpret outputs of a system or component. It focuses on the user experience
and interaction.
Attributes:
- Learnability: How quickly and easily a new user can become proficient with the
software.
- Efficiency: How quickly a user can perform tasks once they have learned the
software.
- Memorability: How easily users can remember how to use the software after not
using it for a period.
- Error Handling: The ability to prevent errors and assist users in recovering
from them.
- Satisfaction: The degree to which users are happy with the software and find it
pleasant to use.
Software application domains
• Web Applications:
Examples: E-commerce sites, social media platforms, online banking
systems.
Focus: User interfaces for browsers, web servers, and internet-based
services.
• Mobile Applications:
Examples: Smartphone apps like Instagram, Uber, and fitness trackers.
Focus: Development for mobile operating systems (iOS, Android).
• Desktop Applications:
Examples: Microsoft Office Suite, Adobe Photoshop, local database
applications.
Focus: Software designed to run on personal computers with graphical user
interfaces.
● Embedded Systems:
Examples: Firmware in medical devices, automotive control systems, smart
home devices.
● Enterprise Applications:
Examples: Enterprise Resource Planning (ERP) systems, Customer
Relationship Management (CRM) systems.
● Healthcare Applications:
Examples: Electronic Health Records (EHR) systems, telemedicine platforms,
medical imaging software.
Focus: Managing patient data, supporting medical professionals, and ensuring
compliance with healthcare regulations.
●
●
● Finance and Banking:
Examples: Trading platforms, personal finance apps, banking systems.
Focus: Transaction processing, security, financial data analysis.
The older programs which are developed decades ago that are still in use
by performing modifications in order to meet the business requirements.
The rapid increase of such systems may cause the risk to the larger
organizations as they may require outdated hardware and operating
system.
Many legacy systems remain supportive to core business functions and are
important to business.
Old Technology: Legacy software is built on older technology, programming
languages, or platforms that are no longer widely used or supported.
Critical Role: Despite being outdated, legacy software often plays a critical role
in the operations of businesses and organizations. It may handle important
functions that are difficult or expensive to replace.
The second layer establishes the methods of developing the software. This
includes any technical knowledge and resources required for development.
Some tasks include choosing methods for:
• Communication
• Analysis
• Modeling
• Program construction
• Testing and support
Layer 3 — Process
Layer three focuses on the framework that needs to be established to deliver
software effectively. This layer can be broken down into five sub-layers:
• Communication. First, communication with the client is required to
understand the needs, demands, criteria, and parameters of the project.
• Planning. This sub-layer involves making a map or blueprint to break down the
process of development and document goals, milestones, and plans.
• Modeling. For this part of the process, developers create a model so the client
can visualize the finished product.
• Construction. This sub-layer refers to the actual coding and testing of the
product.
• Deployment. This differs from modeling. Rather than just providing the client
with a model, the team delivers an actual version of the software for testing,
evaluation, and feedback.
Layer 4 — A Quality Focus
Laying out the tools, methods, and processes from the start of the software
engineering process and then communicating these decisions to the
development team allows clients, project managers, and team members to
periodically test the quality and usability of the end product. The layered
approach allows a team to deliver even complex software on budget and on
time.
Practices-essence of practice and software myths
Software Engineering Practice
Essence of practice