Unit 1
Unit 1
Why needed?
Traditional engineering struggles with:
1. Frequent requirement changes
2. Security challenges
3. Distributed & large scale systems
Aspect-Oriented Software Development (AOSD) Problem: In large software systems, some
functionalities such as logging, security, and error handling are required in many modules.
These repeated functionalities are called cross-cutting concerns.
Aspect-Oriented Software Development separates these concerns from the main business logic and manages
them as independent units called aspects. This separation improves software quality and makes the system
easier to manage.
Example:
Security checks in every module → handled separately as an aspect
Benefits:
Clean and readable code
Easy maintenance
Better modularity
Agile Software Development: Agile software development is an iterative and incremental approach that
focuses on customer satisfaction and quick delivery of working software.
Instead of building the complete system at once, development is done in small cycles called iterations or
sprints, allowing frequent feedback and improvement.
Core Ideas:
• Small and frequent iterations
• Continuous customer feedback
• Working software over heavy documentation
Security Goals:
• Confidentiality
• Integrity
• Availability
Example:
Online banking application
OTP
Encryption
Access control
Example:
Web browser → Client
Website backend → Server
Characteristics:
• Distributed system
• Network-based communication
• Scalable architecture
Issues:
Network failure
Security risks
Performance challenges
Software Engineering Aspects of Programming Languages: Programming languages play an important
role in software engineering by helping developers build structured, reliable, and maintainable software.
Modern languages provide built-in features that support good software engineering practices.
Examples:
Java → Object-Oriented features + security
Python → Fast development and simplicity
➡ Choice of programming language directly impacts software quality
Cleanroom Software Engineering: Cleanroom software engineering is a disciplined development
approach used to produce software with very low defect rates.
Instead of finding errors through extensive testing, this method focuses on preventing defects using formal
specifications and correctness-based design.
Cleanroom = Develop software with near-zero defects
Key Idea:
Prevent bugs instead of fixing them later
Steps:
• Formal specification
• Incremental development
• Statistical testing
Example:
• ATM system functions:
Withdraw cash
Check balance
Cleanroom Design & Testing
Cleanroom design follows formal methods and box-structured design to ensure correctness at every
development stage.
Testing is performed separately using statistical methods that reflect real user behaviour.
Design:
• Based on formal methods
• Box-structured design
Testing:
• Statistical usage testing
• Reliability measurement
Summary:
• AOSD ne code ko clean banaya
• Agile ne process ko flexible banaya
• Security Engineering ne system ko safe banaya
• Client/Server ne system ko scalable banaya
• Programming Language aspects ne quality ensure ki
• Cleanroom ne reliability ko extreme level pe le gaya
Component Characteristics:
• Reusable
• Independent
• Well-defined interface
Elements of a Component:
• Interface
• Implementation
• Documentation
Component Models – Concept & Principle: Component models define the rules and standards that
software components must follow in order to work together correctly.
They specify how components are developed, deployed, and how they interact with each other in a system.
Core Principles:
• Reusability
• Replaceability
• Interoperability
Examples:
JavaBeans
.NET components
COTS (Commercial Off-The-Shelf) & Myths: Commercial Off-The-Shelf (COTS) components are
ready-made software products available in the market.
They are used to reduce development time by avoiding development from scratch.
Common Myths:
• COTS is always cheap ❌
• COTS has no integration issues ❌
Reality:
• Customization is often required
• Compatibility issues may arise
CBSE Process: The Component-Based Software Engineering process focuses on building systems by
selecting and integrating reusable components instead of developing everything from scratch.
Focus Areas:
• Assembly
• Configuration
• Integration
Benefits:
• Faster development
• Reduced cost
Classifying & Retrieving Components helps developers quickly find suitable reusable components from a
component repository.
Classification Methods:
• Keyword-based → Components are searched using keywords or names
• Faceted classification → Components are classified using multiple attributes
Goal:
• Quick and accurate retrieval from repository
Economics of CBSE :
The economics of CBSE focuses on the cost and benefits of using reusable components in software
development.
Advantages:
• Less development time
• Lower development cost
• Higher reliability (tested components)
Challenges:
• Licensing cost of components
• Integration and maintenance overhead
PART–3: Engineering Web Applications
Web-Based Applications: Web-based applications are software systems that run on web servers and are
accessed through web browsers. They are platform-independent and easily accessible. Due to their wide user
base, web applications must handle scalability, performance, and security issues effectively.
Steps:
1. Communication : Understanding requirements through interaction with stakeholders
2. Planning : Defining schedule, resources, and project scope
3. Modeling : Designing system structure, data, and user interface
4. Construction : Coding and testing the web application
5. Deployment : Delivering the application to users and providing support
Formulation includes:
• Goals
• Target users
• Content scope
Example:
College website → students + faculty
Analyzing & Design of Web-Based Systems: Analysis and design are important stages in web
engineering. During analysis, we study what the web system should contain, how users will interact with it, and
what functions it must perform. This helps in understanding user needs clearly.
In the design phase, these requirements are converted into proper layouts, page structures, navigation flow, and
user interfaces. A good design makes the web application easy to use, fast, and easy to maintain.
Design types:
• Information design : Organizes content in a clear and logical manner.
• Interface design : Focuses on the look and feel of web pages.
• Navigation design : Defines how users move between pages easily.
Testing Web Applications: Testing is an essential phase in web application development to ensure the system
works correctly, safely, and efficiently. Since web applications are accessed by different users, browsers, and
devices, proper testing helps improve reliability and user satisfaction. It also ensures that the application
performs well under real-world conditions.
Types of Testing:
• Functional testing : Checks whether all features work as expected (login, forms, links).
• Usability testing : Ensures the application is easy to use and user-friendly.
• Security testing : Identifies vulnerabilities and protects data from attacks.
• Performance testing : Evaluates speed, load handling, and responsiveness.