Assignment 1 software engineering
Assignment 1 software engineering
1. Explain why professional software that is developed for a customer is not simply the programs
that have been developed and delivered.
2. What is the most important difference between generic software product development and
custom software development? What might this mean in practice for users of generic software
products?
3. Briefly discuss why it is usually cheaper in the long run to use software engineering methods
and techniques for software systems.
4. Software engineering is not only concerned with issues like system heterogeneity, business
and social change, trust, and security, but also with ethical issues affecting the domain. Give
some examples of ethical issues that have an impact on the software engineering domain.
5. Based on your own knowledge of some of the application types discussed during our classes,
explain, with examples, why different application types require specialized software engineering
techniques to support their design and development.
Answer
Q1- professional software is not just the programs developed for customer because it involves a
higher level of competence, professionalism, and accountability. Society expects software
professionals to adhere to certain standards and ensure the safety and reliability of critical
systems.
Q2- The most important difference between generic software product development and custom
software development is that generic software products are designed to be used by a wide range
of users with varying needs, while custom software is specifically built to meet the unique
requirements of a specific customer.
For users of generic software products, this means that the features and functionalities provided
may not fully align with their individual needs. They might have to adapt their workflows or find
workarounds to fit the limitations of the software.
Q3- Using software engineering methods and techniques for software systems is usually cheaper
in the long run because it helps in creating more reliable, maintainable, and scalable software. By
following established practices like requirements gathering, design, testing, and maintenance, it
ensures that the software is developed with quality and efficiency in mind. This reduces the
likelihood of costly errors, bugs, and inefficiencies that may arise from a haphazard development
approach. Additionally, software engineering methods promote modularity and reusability,
allowing for easier updates, enhancements, and future expansions, ultimately saving time and
resources.
Q4- Ethical issues in the software engineering domain are diverse and can have significant impacts
on individuals, organizations, and society as a whole. Some examples include:
– Privacy: Ethical concerns arise regarding the collection, storage, and use of personal data by
software systems. Developers must consider how to responsibly handle sensitive information
to protect user privacy.
– Security: Developers face ethical dilemmas surrounding cybersecurity, including the creation
of secure systems, disclosure of vulnerabilities, and balancing security measures with user
convenience.
– Bias and Fairness: Software algorithms can inadvertently perpetuate biases, leading to unfair
treatment or discrimination against certain groups. Ethical software engineering involves
mitigating bias and ensuring fairness in algorithmic decision-making.
– Intellectual Property: Issues related to intellectual property rights, such as copyright
infringement and unauthorized use of software, require ethical consideration to respect the
work and rights of creators.
– Accessibility: Ethical software engineering entails designing software that is accessible to
individuals with disabilities, ensuring inclusivity and equal access to technology for all users.
– Environmental Impact: Developers must consider the environmental impact of software
systems, including energy consumption and electronic waste, and strive to minimize negative
environmental effects.
– Accountability: Ethical responsibility extends to accountability for the consequences of
software systems, including unintended harm caused by errors or misuse of technology.
– Stand-alone applications: These run locally on a computer, such as a PC, offering all necessary
functionality without requiring network connectivity.
– Interactive transaction-based applications: These execute on remote servers and are
accessed by users from their PCs or terminals. Examples include e-commerce web
applications.
– Embedded control systems: These software systems manage and control hardware devices,
with embedded systems being one of the most prevalent types.
– Batch processing systems: Designed for processing data in large batches, these systems
handle numerous inputs to generate corresponding outputs, typically in business contexts.
– Entertainment systems: Intended for personal enjoyment, these systems aim to entertain
users with various forms of media or interactive content.
– Systems for modeling and simulation: Developed by scientists and engineers, these systems
simulate physical processes or scenarios involving multiple interacting objects.
– Data collection systems: Equipped with sensors, these systems gather data from the
environment and transmit it to other systems for analysis and processing.
– Systems of systems: Comprising multiple interconnected software systems, these systems
coordinate the operation of various individual components to achieve specific objectives.