0% found this document useful (0 votes)
51 views26 pages

SoftwareE Sheet 1

Uploaded by

bananabeast0
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
51 views26 pages

SoftwareE Sheet 1

Uploaded by

bananabeast0
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 26

Sheet 1

1.1. Explain why professional software that is developed for a customer


is not simply the programs that have been developed and delivered.

Software developed for a customer by a professional company of software


developers is more than the programs as designed and delivered because of
the extended system. Here’s why:

1. Custom Development Process


It is specialized software necessary for solving certain problems of a
particular customer. It is a product of continuing symbiosis, perhaps
involving the collection of requirements, the breaking down of which is then
followed through in a formal development cycle such as the Agile or
Waterfall models. This includes:
Requirements analysis
System design
Development and coding
Testing and validation

2. Documentation
In addition to the code, professional software contains full-fledged
documentation. This documentation may cover:
Tutorial on installing, configuring and other ways of using the software
The information that is contained as technical documentation for use in the
maintenance and troubleshooting processes.
API documentation in case of if it interfaces with other systems
3. Testing and Quality Assurance
Extensive testing is performed before delivering the software, including:
Unit tests
Integration tests
Performance and stress tests This ensure that the software passes quality
checks that is expected to deliver whenever Quality Assurance I
Programming Tests ensure that the developed software possesses a particular
level of quality that is fit for certain usage or situations.

4. Maintenance and Support


Delivery of the software products does not mark the entire process.
Professional software typically comes with:
Updates for bug report to fix or improve some vulnerability, and
enhancement of some features.
Help desk services involving answering inquiries from customers, solving
some problems after product releases

5. Deployment and Integration


The software has to be installed in the customer premises, which poses a
challenge of installing the software on servers, interfacing it with other
existing systems and other software tools that the customer employs.

6. Training and Onboarding


Another issue may maybe that the customer may need training to their users
of staff to enable them use the software. This can be in form of tutorials,
training or even on boarding documents.
7. Security and Compliance
Business software must vital guardia against these threats and conform to
security policies and laws that concerns different industries and business
such as the general data protection regulation act or the health insurance
portability and accountability act.

8. This is where the functionality of the site comes in, as well as the ‘look
and feel’ of the site.
The software is not only completely utilitarian but also represents software
which includes UX quality. This means that site design is straightforward
and that the program fits well with the customer’s business environment,
which entails modification most of the time.

9. Change Management and Updates


Business software, on the other hand, is developed with the assumption that
some changes are bound to happen. This includes how one might anticipate
changes, new additions to the product or services and flexibility for
accepting other new technologies or the customer tastes in future.

10. Ownership, Licensing and Intellectual property


Software deliveries frequently include provisions for property rights and its
usage. Customers need clarity on:
Who owns the software
License agreement provisions
Concerning usage rights contingent on any limitations as well.
1.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

The most important difference between generic software product


development and custom software development lies in their target audience
and purpose:

 Generic Software Product Development:


This type of software is made for the general populace and aims to satisfy
the requirements of hundreds and thousands of consumers or organizations.
They are pre developed software that can be run irrespective of any
modifications that has to be made in the software (for example: MS office,
photoshop etc.). They are prescriptive and initial for broad use across
different applications in the platforms and programs.

 Custom Software Development:


It is an application software which is customized and then developed for a
specific client or organization. It is designed in accordance to the
fundamental of the client in terms of the processes and business objectives.
Custom software, by contrast, is specific to a particular, well-defined need
and typically interfaces heavily with other systems in the organization.

 Implications for Users of Generic Software Products:


For users of generic software products, the following practical implications
are common:
Limited Customization:
Relative to specific software, generic ones might not best suit the needs of
an organization, organization’s practices. Many a time user has to manage
their processes into the context of the given software instead of the software
managing into the context of user processes.
Moreover, unlike in the case of custom software solutions, there are only
some degrees of freedom (options, plug-ins, and settings).
 Feature Overload or Deficiency:
Compared to specifically tailored software, generic software usually has a
number of elements which may be irrelevant to a particular user or an
organization (beware of the feature creep). On the other hand, it also might
not have some few characteristics that could be very important to a certain
business or user.
Customers have to pay for a package which might contain features which the
client might never use and this might feel a lot like a wrong thing.

 Cost and Accessibility:


Canned software are usually cheaper than bespoke software, for the reason
that the cost of development is distributed among big number of users. Such
means make them cheaper to individuals and small companies to access and
acquire.
Recurring fees as an option to one-time charges business models are often
used; therefore, barriers to entry are relatively low.

 Updates and Support:


Customers using generic software solutions usually enjoy constant curial
features update and enhancements offered by the vendor. However, such
enhancements can be irrelevant to their needs or time preferences from time
to time.
It is largely passive and non-specialized meaning that when one encounters a
problem or requires assistance that may require the attention of a
programmer it will take longer than in the case where a business uses custom
software mostly programmed to meet the needs of the business.

 Scalability and Flexibility:


Using generic software can be a big mistake because as the business grows
or even changes, the software may not scale in the same way or even be as
flexible as that business needs it to be. The system in use may not respond to
changes in the organization’s growth; it may act as a hindrance or even
necessitate the formulation of workarounds. On the other hand, it is possible
to develop software that meets the needs of the business and that changes
with the business.

 Learning Curve:
Main types of software may take more time to learn for the users because the
clients need to identify as to what extend they should incorporate the options
available for use. Also, adopting users often require to figure how to
construct the software to meet their tasks, a factor that can complicate the
work.

1.3. Briefly discuss why it is usually cheaper in the long run to use
software engineering methods and techniques for software
systems.

 Using software engineering methods and techniques is usually


cheaper in the long run for the development of software systems due
to several important reasons:
 Quality has been brought up to better quality from version to version
and the number of bugs has gone down.
 Software engineering pays much attention to the rigorous
methodologies for the systematic development of software including
requirement engineering, designing, writing code, and testing. These
practices help to:
 Capture problems early in the development processes shaping and
prevent costly reflexive work.
 Make sure that the software is more stable and less likely to contain
more bugs or serious system failure once it goes live. actual operation
system bugs are ten times more costly to rectify than in the
development phase.
 Efficient Use of Resources
 With proper software engineering techniques, development teams can:
 Manage resources well, decide which tasks should be implemented by
developers, and which ones can cause unnecessary effort or
redundancy.
 Here, one can utilize means of boosting up the process such as using
version control and setting up automated testing.
 It also has easier maintenance and scaling of the overall system.
 Well-engineered software is typically:
 Easier to maintain is because of codings, donor and documentation as
well as it’s capacity to encourage structural module. One of the
primary reasons why the global expense for maintenance is very high
is that maintenance expenses take up a large proportion of the general
expenses of software systems.
 Design scalable, which means it may be easier and cheaper to
incorporate new constructs, to accommodate growing rates here or to
alter the system due to altering needs.
 Better Risk Management
 Software engineering processes, such as formal requirements
gathering, risk analysis, and iterative development (e.g., Agile), help
to:
 To include reducing the exposure to expensive redesigning of projects
or project failure.
 Prevent assumptions that may cause misunderstanding between
stakeholders with the consequence that wrong features are
implemented and costly refactoring might occur.
 Reusability of Components
 Software engineering also encourages the concept of what can be used
in an application, potentially by using different applications, so some
applications may use libraries or frameworks from another. Reuse is
merely advantageous since first, it makes work quicker and second; it
utilizes less development time in forthcoming projects hence less
development expenses.
 Long-term reliability and performance are the main goals of almost
any equipment, structure, or system in operation today.
 Proper methods ensure that when the computer software system is
implemented it will last for a longer period. This makes it possible for
the organization to minimize recurrent costly remedies and avoid big
performance hitches that might affect the business or accumulated
costs.
 Lowered Operating and Management Expenditure
 Software that is engineered following best practices is often:
 Quicker to implement and can easily interface with existing structures,
which militates against the time and money required in installation.
 More easily comprehensed and managed by users thereby reducing
training and subsequent customer support costs.
 The assessment of (standards and regulations) compliance.
 Software engineering best practices means that the system is
compliant with current laws and ordinances involving use of systems
(for example on security, data protection, and accessibility), this
eliminates chances of legal troubles and subsequent penalties such as
fines or legal costs in future.

1.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

Ethical considerations in the sphere of software engineering are important


since software and systems affects hundreds of millions of users, enterprises,
and the world at large. Ethical factors arise to make sure that software
developing initially and rightfully balances user rights, safety, and general
values. Here are some key ethical issues that have an impact on the software
engineering domain:
1. Privacy and Data Protection

Issue: One of the largest ethical issues relates to the management of user
information with priority given to privacy. Software systems involve the use
of a number of individual’s data including; names, addresses, financial
information and health records among others in the form of data sets or even
as items within databases.
Example: Allowing the user’s data to go unguarded exposes them to risk,
where their information is published to the wrong people and used to steal
their identity, money or anything else.
Ethical Responsibility: One of a software engineers’ roles is to make sure
that data is properly stored, transmitted, and processed, so that it meets the
legal requirements of the country (example; GDPR in Europe or HIPAA in
USA).

2. Bias and fairness in decision:


A study on algorithms Issue:

This means that use of improper algorithms can results into involving biased
treatment of individuals or even groups. This is especially the case in
industries such as hiring software, facial recognition systems, or even
predictive policing where the data is either racists or the design is
prejudiced.
Example: An algorithm for employing talents that discriminates against
potential hires in various groups because of bias training information or
criteria.
Ethical Responsibility: Scientists working in the field of engineering must
guarantee that their algorithms are harmless and bias-free. This includes
issues such selection and evaluation of datasets in a way that does not
replicate social injustices within the society.
3. Security and Cybersecurity

Issue: Practices such as lax security lead to manufacture of software that


becomes liable for hacking, data leakage and other unlawful activities. Lack
of security in software systems causes damage to person and other units,
company, and society as a whole.
Example: A bug within a security layer of a banking application might limit
a user’s ability to conduct transactions or the attackers can siphon off users’
money or steal their details.
Ethical Responsibility: It means that engineers working on the creation of
such systems have to follow general standards for ensuring cybersecurity
and update existing systems regarding new threats regularly. If this is not
done it can leads to catastrophic effects for users.

4. PATENT, TRADEMARKS, COPYRIGHTS AND COMPUTER


SOFTWARE PIRACY

Issue: Piracy and unauthorized copying of software are against the law, and
affects businesses and independent content creators. Second, the engineers
may incorporate unauthorised and unlicensed software components in the
development of their BE.
Example: Using the code from libraries without obtaining permission or
license and then incorporating them in commercial software.
Ethical Responsibility: Engineers have to be careful when choosing software
components at it is crucial not to violate intellectual property rights and their
usage has to conform to licenses.

5. With virtue of workplace automation, there is balzackation of employment


opportunities which leads to job displacement.
Issue: Computerization, in particular when this is powered by software,
results in several employment losses; these are areas where computerization
of working force takes place. Such considerations as unemployment or
economical straining must be taken into account by engineers when
designing software systems.
Example: Designing AI systems on the model of automating significant
portions of work from industries such as manufacturing or service industries.
Ethical Responsibility: Engineers should look more at the bigger picture and
think about ways they can make software better for the overall society, while
keeping in mind that they may be replacing jobs in the process.

6. Safety-Critical Systems
Issue: There are applications in which software manages complex control
systems at risk of failure, which might lead to injury, death or serious
consequence (i.e. medical devices, self-driving automobiles, and aviation
system).
Example: Automonitor self-driving car malfunction can lead to an accident
that causes injuries to the occupants or other people on the road.
Ethical Responsibility: If the lives of people will depend on software
systems then safety comes first, systems have to be tested like absolutely
nothing like them exists in the universe as software has to be fail-safe.

7. Use of Technology and The Digital Divide


Issue: About the digital divide or the gap that exist between the people who
use technology in their line of work and those who do not for software
engineers. There might be a possibility that some decisions which are taken
in the software development will not allow some group of people to own
some particular technology or it might facilitate inequality.
Example: Developing software that presupposes constant access to the
internet and effective hardware prerequisites means leaving behind those
who live in rural areas as well as those in developing countries.
Ethical Responsibility: Civil engineers must ensure that software programs
are developed in such a way that all Universal Software users in any part of
the world including disabled persons and those in the developing nations is
addressed.
8. Patient Control / Informed Consent
Issue: It is noteworthy that many software applications, particularly in the
sphere of the digital economy, contain practically incomprehensible terms of
service or policies governing the usage of data. Sometimes the subject might
not even know that it is signing away its rights to data or accepting
destructive practices.
Example: A social networking site that logs users’ activity without
necessarily notifying them or allowing the user way out.

9. Abuse of Software for Other Unsocial Uses


Issue: Software is often used in criminal ways or can be designed for bad
intent including viruses, Trojan horses and other malicious software, spying
and controlling freedoms in dictatorial societies.
Example: Creating spyware that some governments employ on critics or that
some companies utilize to spy on individual users.
Ethical Responsibility: It is recommended that engineers should not work on
a structure that could be exploited for the wrong reasons and the
consequences of the systems engineers design are important.

10. Environmental Impact

Issue: The software industry also has this factor where energy centers,
blockchain technological systems contribute to energy consumption and
carbon footprint.
Example: A data intensive application that uses a large number of servers
and consumes energy and emits green house gases.
Ethical Responsibility: The engineers need to factor the consequences of
their software on the environment and look for ways to produce the best
software performance and energy efficiency.
Ethical Responsibility: Broader utility requires that engineers help users to
understand how software works, and offer them choices for how their data is
collected and utilized.
1.5. Based on your own knowledge of some of the application types
discussed in Section 1.1.2, explain, with examples, why different
application types require specialized software engineering
techniques to support their design and development.

This is because, unlike traditional applications, each type of application has


its own application characteristics, constraints, and user needs when being
developed by software engineers. These variations affect the construction,
implementation, evaluation, and support life cycle. Here are examples of
different application types and the specialized

software engineering techniques needed for each:

1. Stand-alone Applications
Description: It is applications that are installed on a local computer (desktop,
laptop) cannot operate on the internet for their usefulness (Word,
Photoshop).
Specialized Techniques:
User Interface (UI) Design: While applications that are individual and stand
alone are normally very capable, they normally demand more delicate and
very sensitive UIs. It means that engineers need to pay attention to the
usability and accessibility.
Performance Optimization: Since the application runs locally as an
application in the database, performance, especially for CPU, memory, and
storage options are vital. Scheduling for the maximum utilization of
resources is useful mainly for the grid computing systems which have scarce
hardware resources.
Cross-platform Compatibility: If the application is to be compiled and run on
different operating systems such as Windows, macOS …the application
development tools like electron, Qt, becomes compulsory and platform-
dependent testing is a necessity.
2. Web-based Applications
Description: These applications function within web browsers and depend
on internet connection (Google Docs, Gmail, marketing sites such as
Amazon).
Specialized Techniques:
Client-server Architecture: Web based application contain a customer, which
is the Web browser and a server that processes request. Often, engineers
have to come up with the ways to deal with multiple users and requests, that
is why they have to implement the principles of RESTful API design,
asynchronous communication, and load balancing.
Security and Data Privacy: Technological risks that affect web applications
include, SQL injection, cross-site scripting (XSS), cross-site request forgery
(CSRF). Various procedures including Secure Coding, SSL Security and
other tests falls under security engineering.
Scalability and High Availability: Thus, web applications commonly deal
with a substantial, geographically dispersed customer base, therefore to cope
with request rates, horizontal scaling, caching, and cloud deployment are
employed.

3. Real-time Embedded Systems


Description: An embedded system is a system that is located within ohner
hardware device, that usually needs to provide real time responses (as for
example automobile controls or some medical equipment such as
pacemakers).
Specialized Techniques:
Real-time Constraints: Specifically, real-time systems require precise time
constraints, for example, response of the system in terms of milliseconds.
Real-time operating systems (RTOS) are employed by engineers to
accomplish a set of tasks within a stipulated time and opt for methods such
as deadline scheduling and priority inversion.
Safety-Critical Design: Fields such as medical devices or automobile
software are high-risk that cannot afford to have devices with poorly written
software in the market. FMEA and formal/independent verification, fault-
tolerant design and validation stress testing are the measures applied to
achieve the system reliability.
Resource Constraints: It is also important to understand that embedded
systems are usually realized on rather limited hardware (such as low
memory and low CPU). From the case engineers have to implement methods
like coding and memory-optimization to make the software run in these
constraints.

4. Mobile Applications
Description: Mobile applications are intended for smart phones and tablets
and may use local storage as well as cloud storage (such as Instagram,
Whats App).
Specialized Techniques:
Responsive Design: When it comes to factor, anywhere, mobile applications
need to deal with different sizes, resolutions and even change of orientation.
UX designers combine Progressive Web App (PWA) concepts and engaging
UI design methods and approaches including React natively or flutter
natively.
Energy Efficiency: However, using of mobile devices has limitations in
terms of battery power of the gadgets. DevelopersResponseBody Learn what
engineers must do to manage CPU, control background apps, and minimize
network activity to conserve power.
Offline Functionality: It is astonishing, but many mobile applications need to
work in the offline mode. Forwarding techniques like local data caching and
synchronization, and technologies like progressive web apps (PWAs) are
applied to achieve operational capability offline.

5. Distributed Systems
Description: These are systems in which the software comprises is
distributed across several network-connected computers and perform
cohesively (for instance, Google Cloud and Netflix CDN).
Specialized Techniques:
Distributed Data Management: Engineers have to deal with data
synchronization across distributed systems, methodologies such as eventual
consistency, replication, or distributed data stores, (e.g. Cassandra,
MongoDB).
Concurrency and Fault Tolerance: Concurrency – many processes occur in
parallel – is an essential attribute of distributed systems, as is the failure of
some of the components in the system. Some examples include consensus
algorithms such as Paxos, Raft, redundancy and checkpointing, to ensure the
system; is resilient a failure.
Microservices Architecture: Software in distributed environments is
replicated using the microservices architecture in most cases. All of them are
decoupled and implement some practices to manage interactions and
orchestration, such as containers (like Docker), service discovery, and API
gateway.

6. Computer Based Systems (e.g., Games)


Description: Spinning software that needs fast data rendering for real-time
use, graphics to produce high quality input/output, featuring video games
(Fortnite, FIFA etc.).
Specialized Techniques:
Real-time Graphics Rendering: Sustained graphic work (for instance, ray
tracing, shaders, games using Unity and Unreal engine) are important for
high-quality graphics.
User Interaction and Experience: Games need real-time response and this
means engineers employ Input handling and Event-Driven techniques to
respond promptly to user inputs.
Networked Multiplayer Systems: In games that support multiplayer, specific
practices such as synching, lagging, and peer-to-peer, or client-server
structures are applied on-line.

7. AI-based Applications
Description: Such applications include applications using machine learning,
natural language processing, or other artificial intelligence technologies
(such as facial recognition, auto-driving).
Specialized Techniques:
Model Training and Optimization: AI applications involve data
preprocessing in building effective machine learning models and model
training as well as hyperparameters tuning.
Ethical AI and Bias Mitigation: The ethical use of the AI application has to
be a concern such as bias behavior or fairness. Application of bias detection
and fairness constraints is applied on models developed by engineers.
Continuous Learning and Adaptation: AI systems: require learning at one or
more times. Such practices include online learning, reinforcement learning
and model retraining, that make the AI system continue to learn.

1.6. Explain why the fundamental software engineering principles of


process, dependability, requirements management, and reuse are
relevant to all types of software system.

Fundamental Software Engineering Principles are relevant to all types of software


Systems Regardless of the size, complexity, or domain of the software project,
process, dependability, requirements, management, and reuse are fundamental
software engineering principles that are essential to quality, efficiency, and success
of the software project. Let's explore why these principles are universally
applicable:
1. Process:
• Structure and Guidance: A software development process is a well defined
process, which gives framework where tasks to be planned, executed and
monitored systematically. It prevents the chaos, decreases risks and overall project
management.
• Quality Assurance: An effort to follow a process helps find and solve early
problems during the development cycle and consequently, delivers quality
software.
• Adaptability: However, the principles underlying processes can be tailored to a
specific project need but t still remain adaptable to many software systems.
2. Dependability:
• Reliability and Availability: Reliable software system is software systems that
(1) work properly so that the intended function of the software is performed
correctly and (2) that are available so they are accessible when needed. Such
systems must clearly delineate function independently of change of ownership of a
software module.
• Security: Security is also part of dependability — the system will be free of
unauthorized access, attacks and data breach.
• Maintainability: It makes software more manageable, easier to maintain and
update, and it saves on long term costs.
3. Requirements Management:
• Clear Understanding: Good requirements management means that all
stakeholders have a common and mutual understanding of what the software
system is trying to achieve, does not do, and should not be. Misunderstandings are
prevented, and the chance of costly rework is reduced.
• Traceability: Requirements management is used to trace requirements from the
design to implementation to the point of testing to guarantee that the final product
will fulfill what is required.
• Prioritization: With the aid of requirements prioritization, development teams can
prioritize requirements to help them focus on the most critical requirements all the
while optimizing resource allocation and improving time to market.
4. Reuse:
• Efficiency and Cost-Effectiveness: It is a reuse that can save time and cost of
developing the new software with minimize the retest from previous software. It
lets teams take advantage of proven solutions while avoiding building this wheel
from scratch.
• Quality Improvement: The software system can vary in quality and
reliability with high reuse of well tested components.
• Consistency: 1. Reuse Benefits: like maintainability and usability. 2.
Reusing Benefits: maintainability and usability.
1.7. Explain how electronic connectivity between various development
teams can support software engineering activities

There is need for effective electronic connectivity between development teams


during software engineering activities. By eliminating email, it allows users to
collaborate seamlessly, communicate and share knowledge, sending and receiving
all information within the single tool, thereby enhancing project efficiency,
productivity and success. Here are some ways electronic connectivity can support
software engineering:
1. Enhanced Collaboration:
• Real-time communication: Teams can communicate and collaborate in real
time, regardless of where they are, thanks to instant messaging, video conferencing
and online collaboration tools.
• Shared workspaces: Shared workspaces, in fact, are cloud based platforms
where teams can share and edit documents, code, and other project artifacts at the
same time.
• Version control: With versions control systems like Git, teams can see what’s
been changed in code and other files and who is responsible for the changes.
2. Improved Communication:
• Centralized communication: Electronic platforms create a center of
communications in which conversations can be tracked and information can be
shared.
• Asynchronous communication: Emailing and the use of forums allow for
asynchronous communication and a small amount of flexibility and the removal of
interruptions.
• Knowledge sharing: Within the team knowledge can be shared through
wikis, blogs and knowledge bases.
3. Efficient Knowledge Sharing:
• Centralized repositories: It’s easy to store and organise code, documentation
and other project artifacts in Electronic repositories, while also ensuring they are
accessible by team members.
• Search capabilities: With powerful search features, teams can go from
needing it to getting it with speed.
• Version history: Version control systems help teams track changes to code,
and other files allowing teams to get the most current version of them.

4. Increased Productivity:
• Reduced overhead: Electronic connectivity can reduce the overhead that
comes with the traditional methods of communication in places like travel and
paperwork.
• Improved coordination: Tools electronically used by teams allow for better
coordination of their work thereby reducing the risk of delays and errors.
• Enhanced collaboration: Electronic connectivity breaks down silos and
encourages collaboration that can enable more innovative and creative solutions.
5. Enhanced Project Management:
• Real-time project tracking: Real time visibility into project progress through
electronic tools enables managers to see potential problems before they become
problems.
• Automated workflows: Automation can take away error points in project
workflows and make them less prone to mistakes.
• Improved reporting: It’s possible to create detailed reports on how project
progresses, how resources are used, and other important metrics using electronic
tools.
1.8. Noncertified individuals are still allowed to practice software
engineering. Discuss some of the possible drawbacks of this.

Reasons to Be Accountable to an End User in the Software Engineering Profession


Certification can be a great credential for software engineers, but sometimes the
certification isn't a strict requirement for practice. However, allowing noncertified
individuals to engage in software engineering activities can pose certain
drawbacks:
1. Lack of Standardized Knowledge and Skills:
o Inconsistent quality: Without a standardized curriculum and assessment
process, the knowledge and skill of noncertified engineers can likewise be
extremely varied. But this will result in the project quality will be inconsistent.
o Potential for errors: Lack of standardised training may increase the risk of
errors, bugs, etc. on software systems.
2. Difficulty in Assessing Competence:
o Subjective evaluation: Because it is hard, when looking at noncertified
engineers, to objectively measure their competence, for employers it is hard to
know if they are suitable for a particular role.
o Potential for mismatches: Mismatch by the skills of an engineer with the
project requirements may result in a delay, increases in cost, and reduced quality.
3. Limited Professional Recognition:
o Reduced credibility: The problem for noncertified engineers is that they may
not be able to establish credibility and be recognized within the software
engineering community.
o Difficulty in securing employment: However, certification can be a good
way to ensure you land a job and advance in your career.
4. Potential for Ethical Concerns:
o Lack of ethical guidelines: Without a standardized ethical framework, it may
be that noncertified engineers are less likely to strive to the ethical principles when
working.
o Increased risk of malpractice: A lack of ethical guidelines can lead to
unethical practice, for example plagiarism, data breaches or intellectual property
theft.

5. Difficulty in Keeping Up with Industry Trends:


o Limited access to training: For noncertified engineers, continuous
professional development opportunities through a continuing education program
can be limited, making it hard to keep current with the latest technologies and
happenings.
o Reduced adaptability: Not keeping up with the latest knowledge can stop an
engineer from becoming capable of adapting to new challenges and the use of
modern technologies.

1.9. For each of the clauses in the ACM/IEEE Code of Ethics shown in
Figure 1.4, propose an appropriate example that illustrates that
clause.

1.10. The “Drone Revolution” is currently being debated and


discussed all over the world. Drones are unmanned flying
machines that are built and equipped with various kinds of
software systems that allow them to see, hear, and act. Discuss
some of the societal challenges of building such kinds of systems.

Society Challenges of the "Drone Revolution"


From drones (unmanned aerial vehicles, or UAVs) to rivulets, drones are already
revolutionizing multiple industries and for many, the sky’s the limit. Despite all of
this, the development and deployment of drones would also bring real substantive
social challenges which would need to be carefully considered. Here are some of
the key areas of concern:
1. Privacy and Surveillance:
• Mass surveillance: High resolution cameras and other drone sensors in the
hands of drones, can be utilized for mass surveillance, which compromises
individual's privacy rights.
• Unauthorized surveillance: Unsurprisingly, unlicensed use of drones for
unauthorized surveillance of private property, businesses, or individuals becomes
likely.
2. Safety and Security:
• Collisions: The use of drones can create risks with manned aircraft, that of a
collision and an accident.
• Terrorism and crime: Terrorists and drug traffickers could use drones for that
other than spying.
• Infrastructure damage: They can potentially impact critical infrastructure,
such as power lines or communications towers.
3. Economic Impact:
• Job displacement: The use of drones can lead to a reduction in the demand
for jobs in the photography, delivery services and agriculture industries.
• Economic inequality: Though drone technology offers potential benefits,
such benefits may not be shared equally, increasing already existing inequalities in
the economic category.
4. Ethical Considerations:
• Autonomous decision-making: Now that more drones are becoming
autonomous, responsibility for their actions and decisions is on the line.
• Weaponization: Ethical concerns about the use of lethal force in the military
raise serious issues surrounding the dronization of the weaponisation of drones.
5. Regulatory Challenges:
• International cooperation: Effective regulations of drones would demand
such international cooperation regarding issues of airspace management as well as
cross border operations.
• Enforcement: Easier said than done; enforcing drone regulations
proves especially difficult when there are restrictions in place for remote or
inaccessible areas.
Research

What is Software engineering:


Software Engineering is a systematic approach to the design, development,
operation, and maintenance of software. It combines elements of computer science,
engineering, and mathematics to produce high-quality software that meets specific
needs.
Software engineering goals:
 Problem Solving: Software engineers must be skilled at identifying and
solving problems.
 Design: They create software designs that are efficient, maintainable, and
scalable.
 Implementation: They write code that is clean, well-structured, and easy to
understand.
 Testing: They conduct thorough testing to ensure that the software works as
intended.
 Maintenance: They provide ongoing support and updates to the software.
Software engineering can use in:
 Systems Software: Operating systems, compilers, and database
management systems.
 Application Software: Business applications, games, and mobile apps.
 Embedded Systems: Software integrated into hardware devices.
 Web Development: Creating websites and web applications.
 Software Testing: Ensuring the quality and reliability of software.
 Software Project Management: Planning, organizing, and controlling
software development projects.
Why we use Software engineering:
 Economic Impact: Software engineering has a significant impact on the
global economy, driving innovation and creating jobs.
 Problem Solving: Software engineers play a vital role in solving complex
problems and challenges.

What is SDLC:
The Software Development Lifecycle (SDLC) is a structured process that
software engineers follow to develop high-quality software. It typically involves
the following phases:
1. Planning: This phase involves defining the project's goals, requirements,
and scope.
2. Design: The software's architecture and design are created, outlining the
components and how they will interact.
3. Development: The actual coding and implementation of the software takes
place.
4. Testing: The software is thoroughly tested to identify and fix bugs.
5. Deployment: The software is released to users or clients.
6. Maintenance: Ongoing updates, bug fixes, and enhancements are made to
the software.

You might also like