Unit 10 Advanced Topics in Software Engineering

You might also like

Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 20

UNIT-10

Advanced Topics in Software Topics

Prepared By
Prof. Mital Sarvaiya
Computer Engineering
BHGCET - Rajkot
Topics

● Component-Based Software Engineering


● Client/Server Software Engineering, Web Engineering
● Reengineering
● Computer-Aided Software Engineering
● Software Process Improvement
● Emerging Trends in software Engineering.
Component-Based Software Engineering

Component-based software engineering (CBSE) is a process that makes the


design and construction of computer-based systems using reusable software
“components”CBSE seems quite similar to conventional or object-oriented
software engineering
Component-Based Software Engineering Continue…

CBSE Activities
1) Component Qualification
• Component qualification ensures that a component will
• Perform the function required
• Will properly “fit” into the architectural style specified for the system
• Will have the quality characteristics (e.g., performance, reliability,
usability) that are required for the application
2) Component Adaptation
Domain engineering creates a library of components that can be easily
integrated into an application architecture
The implication of “easy integration” is that
1. Consistent methods of resource management have been implemented for
all components in the library
2. Common activities such as data management exist for all components
3. Interfaces within the architecture and with the external environment have
been implemented in a consistent manner
Component-Based Software Engineering Continue…

3) Component Composition
Architectural style again plays a key role in the way in which software
components are integrated to form a working system
4) Component Update
• When systems are implemented with a third party components, update
is complicated.
• i.e., the organization that developed the reusable component may be
outside the control of the software engineering organization
Client/Server Software Engineering, Web Engineering

Two approaches are most commonly used


• An evolutionary paradigm that makes use of event-based and/or object-
oriented software engineering
• Component based software engineering that draws on a library of COTS
(commercial off-the-shelf)
– Client/server systems are developed using the classic software
engineering activities - analysis, design, construction and testing
– Instead of viewing software as a monolithic application to be
implemented on one machine, the software has several distinct
subsystems that can be allocated to the client, the server or
distributed between both machines
Client/Server Software Engineering, Web Engineering Continue…

Software Components for Client/Server Systems


• User interaction/presentation subsystem
– This subsystem implements all functions that are typically associated
with a graphical user interface
• Application subsystem
– This subsystem implements the requirements defined by the
application
• Database management subsystem
– This subsystem performs the data manipulation and management
required by an application
– Data manipulation and management may be as simple as the transfer of
a record or as complex as the processing of SQL transactions.
Client/Server Software Engineering, Web Engineering Continue…

Structure of Client/Server System


Client/Server Software Engineering, Web Engineering Continue…

Web-Engineering
• Web engineering is the process used to create high-quality Web Apps
• Web engineering is not a perfect clone of software engineering, but it borrows
many of software engineering’s fundamental concepts and principles,
emphasizing the same technical and management activities
• Web Engineering (WebE) is concerned with the establishment and use of
sound scientific, engineering and management principles
• It is a systematic approach to the successful development, deployment and
maintenance of high quality Web-based systems and applications
Web Engineering Process
• The characteristics of Web-based applications have a impact on the WebE process
• Immediacy and continuous evolution require an iterative, incremental process
model that produces WebApp releases in rapid sequence
• The network-intensive nature of applications in this domain suggests a
population of users that is diverse and an application architecture that can be
highly specialized
• Because WebApps are often content driven with an emphasis on aesthetics
• It is likely that parallel development activities will be scheduled within the
WebE process and involve a team of both technical and non-technical people
Client/Server Software Engineering, Web Engineering Continue…

Framework of web engineering:


Reengineering

Reengineering is most
commonly defined as
the redesign of
business processes—
and the associated
systems and
organizational
structures—to achieve a
dramatic improvement
in business
performance. ... It is the
examination and change
of five components of
the business strategy,
process, technology,
organization, and
culture.
Reengineering Continue…
Computer-Aided Software Engineering

Computer aided software engineering (CASE) is the implementation of


computer facilitated tools and methods in software development. CASE is used to
ensure a high-quality and defect-free software. CASE ensures a check-pointed and
disciplined approach and helps designers, developers, testers, managers and others
to see the project milestones during development.
 
CASE Tools: 
The essential idea of CASE tools is that in-built programs can help to analyze
developing systems in order to enhance quality and provide better outcomes.
Throughout the 1990, CASE tool became part of the software lexicon, and big
companies like IBM were using these kinds of tools to help create software. 

Various tools are incorporated in CASE and are called CASE tools, which are used
to support different stages and milestones in a software development life cycle. 
Computer-Aided Software Engineering Continue…

Types of CASE Tools: 


• Diagramming Tools
• Computer Display and Report Generators 
• Analysis Tools 
• Central Repository 
• Documentation Generators 
• Code Generators 
Software Process Improvement

• Software Process Improvement (SPI) methodology is defined as a


sequence of tasks, tools, and techniques to plan and implement
improvement activities to achieve specific goals such as increasing
development speed, achieving higher product quality or reducing costs.
• This definition is combined. SPI can be considered as process re-
engineering or change management project to detect the software
development lifecycle inefficiencies and resolve them to have a better
process. This process should be mapped and aligned with organizational
goals and change drivers to have real value to the organization.
• SPI mainly consists of 4 cyclic steps as shown in the figure below, while
these steps can be broken down into more steps according to the method
and techniques used. While in most cases the process will contain these
steps.
Software Process Improvement Continue…
Software Process Improvement Continue…

Why are Companies Seeking SPI – The motivators?


• Standardization and Process consistency
• Cost Reduction
• Competitive Edge
• Meeting targets and reduce time to market
• Improve customers satisfaction
• Job satisfaction, Responsibilities, and Resource Management
• Automation and Autonomy
• Proven outcome
Emerging Trends in software Engineering.

• 1. Low-Code/No-Code Platforms
• 2. Machine Learning Operations
• 3. User Experience Design
• 4. DevSecOps
• 5. Near-Perfect Digital Experiences
• 6. Native Mobile-Development Languages
• 7. Progressive Web Apps
• 8. The API Economy
• 9. A ‘Shift Left’ Approach To Security And Compliance
• 10. Balanced Development Automation
Emerging Trends in software Engineering Continue…

• 11. Vulnerability Disclosure Programs


• 12. Mobile-Responsive Design
• 13. Continuous Integration And Delivery
• 14. Code-As-A-Service
• 15. E-Commerce Cloud Integration
• 16. Serverless Computing
THANK YOU(*_*)

You might also like