ABDUL MOEED – BCS233202
-----------------------------------------------------------------------------------------------------------------------Define Software Engineering and explain its importance in software development.
Software Engineering is a systematic approach to the development, operation, maintenance,
and retirement of software. It encompasses a set of principles, methods, and tools that guide
software development processes to ensure high-quality software products.
Importance:
Quality Assurance: Software engineering practices help ensure that software is
reliable, efficient, and meets user requirements.
Cost-Effectiveness: By following structured methodologies, software engineering
can reduce development costs and time.
Manageability: It provides frameworks for managing complex software projects,
making it easier to track progress and manage resources.
Risk Management: Identifying and mitigating risks early in the development process
helps prevent costly failures.
Discuss the relationship between software engineering and computer science.
Software Engineering and Computer Science are closely related fields, but they focus on
different aspects of computing.
Computer Science: Primarily concerned with the theoretical foundations of
computation, algorithms, data structures, and the principles of programming. It
provides the knowledge base and technical skills necessary for software
development.
Software Engineering: Applies the principles of computer science along with
engineering practices to design, develop, and maintain software systems. It
emphasizes practical aspects such as project management, user requirements, and
software lifecycle.
In summary, computer science provides the theoretical underpinnings, while software
engineering focuses on applying those theories to create functional software.
Differentiate between Software Engineering and Programming, in terms of scope,
methodology, and objectives.
Aspect
Software Engineering
Scope
Encompasses the entire software development lifecycle, including requirements analysis, desig
Methodology Utilizes structured methodologies (e.g., Agile, Waterfall) to manage projects and ensure quality
Objectives
Aims to deliver high-quality software that meets user needs, is maintainable, and is scalable.
Define both Software Engineering and traditional engineering. Also highlight the
unique aspects of Software Engineering compared to traditional engineering.
Software Engineering: A discipline that applies engineering principles to software
development, focusing on systematic methods for designing, implementing, and
maintaining software systems.
Traditional Engineering: Involves the application of scientific and mathematical
principles to design and build physical structures, machines, and systems (e.g., civil,
mechanical, electrical engineering).
Unique Aspects of Software Engineering:
Intangibility: Software is intangible and cannot be physically tested until it is
executed, unlike traditional engineering products.
Changeability: Software can be modified easily and at a lower cost compared to
physical products, allowing for iterative development.
Complexity: Software systems can be more complex due to the need for integration
with other systems and the variability of user requirements.
Define Software Engineering Ethics. Also discuss ethical issues related to software
development such as data privacy, security, and intellectual property.
Software Engineering Ethics refers to the moral principles and standards that guide the
behavior of software engineers in their professional practice. It emphasizes the responsibility
of software engineers to act in the best interests of users, clients, and society.
Ethical Issues:
Data Privacy: Ensuring that user data is collected, stored, and processed in
compliance with privacy laws and regulations (e.g., GDPR).
Security: Protecting software from vulnerabilities and ensuring that it is secure
against unauthorized access and attacks.
Intellectual Property: Respecting copyrights, patents, and licenses when using
third-party software or code, and ensuring that original work is properly credited.
Define SDLC and describe its key phases: Requirement Analysis, Design,
Implementation, Testing, Deployment, and Maintenance.
The Software Development Life Cycle (SDLC) is a structured process used for developing
software applications. It outlines the stages involved in software development, ensuring a
systematic approach to building high-quality software.
Key Phases:
1. Requirement Analysis: Gathering and analyzing user requirements to define what
the software should accomplish.
2. Design: Creating architectural and detailed designs that outline how the software will
be structured and how it will function.
3. Implementation: Writing the actual code based on the design specifications.
4. Testing: Verifying that the software works as intended and identifying any defects or
issues.
5. Deployment: Releasing the software to users and ensuring it is operational in the
intended environment.
6. Maintenance: Ongoing support and updates to fix issues, improve performance, and
adapt to changing user needs.
List and explain the essential attributes of good software such as reliability,
maintainability, scalability, usability, and efficiency.
Good software possesses several essential attributes that contribute to its overall quality and
effectiveness:
1. Reliability: The ability of the software to perform its intended functions consistently
over time without failure. Reliable software minimizes downtime and ensures that
users can depend on it for critical tasks.
2. Maintainability: This refers to how easily the software can be modified to correct
defects, improve performance, or adapt to changes in requirements. High
maintainability reduces the cost and effort required for updates and enhancements.
3. Scalability: The capability of the software to handle increased loads or
accommodate growth without compromising performance. Scalable software can
efficiently manage more users, transactions, or data as demand increases.
4. Usability: The ease with which users can interact with the software. Good usability
ensures that users can navigate the interface intuitively, understand how to use the
features, and accomplish their tasks effectively.
5. Efficiency: The ability of the software to utilize system resources optimally, such as
CPU, memory, and network bandwidth. Efficient software performs tasks quickly and
with minimal resource consumption, enhancing user experience and reducing
operational costs.
Define ethical principles in software engineering.
Ethical principles in software engineering guide professionals in making decisions that align
with moral values and societal expectations. Key principles include:
1. Public Welfare: Prioritizing the safety, health, and welfare of the public in all software
engineering practices.
2. Honesty: Being truthful about the capabilities and limitations of software, avoiding
misleading claims.
3. Integrity: Upholding high standards of integrity in professional relationships and
ensuring that work is conducted fairly and responsibly.
4. Confidentiality: Respecting the privacy of users and clients by protecting sensitive
information and adhering to data protection laws.
5. Professional Development: Committing to continuous learning and improvement in
skills and knowledge to enhance the quality of work.
Choose a website or Mobile Application of your choice and Functional and NonFunctional Requirements of the system (at least 4).
Application Chosen: A Food Delivery Mobile Application
Functional Requirements:
1. User Registration: Users must be able to create an account using email or social
media logins.
2. Menu Browsing: Users should be able to view the menu of available restaurants,
including item descriptions and prices.
3. Order Placement: Users must be able to select items, customize orders, and place
them in a shopping cart for checkout.
4. Order Tracking: Users should receive real-time updates on the status of their orders,
including estimated delivery time.
Non-Functional Requirements:
1. Performance: The application should load within 3 seconds and handle up to 10,000
concurrent users without degradation in performance.
2. Security: User data must be encrypted, and the application should comply with data
protection regulations to ensure user privacy.
3. Usability: The application should have an intuitive interface that allows users to
navigate easily and complete orders with minimal steps.
4. Availability: The application should be available 99.9% of the time, ensuring users
can access it for ordering at any time.