0% found this document useful (0 votes)
7 views

Lesson 1 - PDF

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
7 views

Lesson 1 - PDF

Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 43

BSc (Honours) in Computing /

Information Systems
ICT2405 - Software Engineering

Professional Software Engineering

©Lanka Nippon BizTech Institute


ACKNOWLEDGEMENT

Presented by: Ms.C.D.Padmaperuma


Lecturer in Information Technology
BSc.in CS(UCSC), MCS, MCSSL

Reviewed by: Prof.K.P.Hewagamage

Software Engineering | Professional Software Engineering 2


RESOURCES

• https://lmsbkp.lnbti.lk/course/

• Reference Somerville book


Software-Engineering-9th-Edition-by-Ian-Sommerville.pdf

• Online resources for the section


Udemy Courses

Software Engineering | Professional Software Engineering 3


AGENDA

• Overview of software engineering process.


• Software engineering products, systems and services.
• An overview of UML.
• Software engineering industrial standards.
• Software engineering products and processes.
• Ethical, legal and associated issues of software engineering.

Software Engineering | Professional Software Engineering 4


INTENDED LEARNING OUTCOMES (ILO)

By the end of this module, students should be able to:

ILO 1 - demonstrate comprehension of the fundamental concepts of


software development and maintenance
ILO 2 - transform a set of software requirements into software
requirements specification and then into software design choosing a
proper set of software engineering methods and techniques
ILO 3 - apply basic knowledge and skills of software testing
ILO 4 - demonstrate ability to analyze and assess opportunities for
achievement of software product quality and improvement of quality
assurance process
ILO 5 - demonstrate ability to evaluate methods and techniques for
verification and validation, and choose appropriate ones for the given
software development project

Software Engineering | Professional Software Engineering 5


Professional Software
Engineering

Software Engineering | Professional Software Engineering 6


What is a Software

• Program (Set of Instruction) that executes on a piece of


hardware

Software Engineering | Professional Software Engineering 7


Introduction to Software Engineering

Software Engineering | Professional Software Engineering 8


• Software Engineering is a systematic and disciplined approach to
the development, maintenance, and evolution of software
systems.
• It involves applying engineering principles, methods, and tools to
design, construct, test, and maintain high-quality software that
meets user needs, is reliable, scalable, and efficient, and is
delivered on time and within budget.

Software Engineering | Professional Software Engineering 9


• Software engineering encompasses various processes, including
requirements analysis, design, coding, testing, and maintenance,
with the aim of producing software that is robust, maintainable, and
able to adapt to changing requirements and technology
environments.
• It also addresses ethical and legal considerations related to
software development and usage.

Software Engineering | Professional Software Engineering 10


Importance of Software Engineering

Software engineering is essential for advancing technology,


ensuring the reliability and quality of software products, and
addressing the evolving needs of society.
It underpins innovation, efficiency, and safety across a wide
range of applications and industries.

Software Engineering | Professional Software Engineering 11


Software Engineering Process

 The software engineering process is a structured and


systematic approach to developing software applications or
systems.
 It involves a series of well-defined phases and activities aimed
at designing, creating, testing, deploying, and maintaining
software that meets user requirements and quality standards.

Software Engineering | Professional Software Engineering 12


Key Phases

1.Requirements Gathering and Analysis:


•Define and document user requirements, both functional and non-functional.
•Analyze and prioritize requirements to determine what the software must accomplish.
2.System Design:
•Create a high-level design that outlines the system's architecture, components, and interactions.
•Develop detailed design specifications, including data structures, algorithms, and user interfaces.
3.Implementation (Coding):
•Write the actual code based on the design specifications.
•Follow coding standards and best practices to ensure maintainability and readability.
•Perform code reviews to catch errors and improve code quality.
4.Testing:
•Develop a comprehensive testing strategy, including unit testing, integration testing, system
testing,
and user acceptance testing.
•Identify and fix defects, ensuring the software functions as intended.
•Conduct regression testing to ensure that changes do not introduce new issues.

Software Engineering | Professional Software Engineering 13


5.Deployment:
•Prepare the software for deployment, including packaging, installation, and
configuration.
•Deploy the software to production environments or distribute it to end-users.
6.Maintenance and Updates:
•Continuously monitor the software for defects and performance issues.
•Provide patches, updates, and enhancements as needed to address issues and meet
changing requirements.
•Maintain documentation and user support.

Software Engineering | Professional Software Engineering 14


It's important to note that different software development methodologies
(e.g., Waterfall, Agile, Scrum) may adapt and organize these phases
differently to suit specific project requirements and constraints. The
choice of methodology depends on factors like project size, complexity,
timeline, and customer needs.
Regardless of the methodology used, following a structured software
engineering process is essential for successful software development
and maintenance.

Software Engineering | Professional Software Engineering 15


Software Engineering Products

• Software engineering products encompass a wide range


of artifacts, documents, and deliverables that are created
and maintained throughout the software development
process.
• These products serve various purposes, from capturing
requirements to specifying design details and
documenting the final system.

Software Engineering | Professional Software Engineering 16


• Here are some common types of software engineering
products:
• Software Requirements Specification (SRS)
• System Architecture
• Detailed diagrams, charts, and documents that specify the internal structure,
algorithms, and data structures used in the software.
• Source Code
• Test Plans
• Test Cases
• Test Reports
• User Manuals
• Version Control Repositories
• Release Notes
• Bug Reports
• License Agreements
Software Engineering | Professional Software Engineering 17
• The role of software engineering products in delivering
value cannot be overstated. These products serve as
critical components in the software development lifecycle,
and their proper creation and management are
instrumental in achieving the following aspects of
delivering value:
• Alignment with user needs
• Quality Assurance
• Effective Design and Development
• Maintenance and Updates
• Communication and Collaboration
• Documentation for End Users
• Risk Management
• Compliance and Legal Considerations
• Efficient Project Management

Software Engineering | Professional Software Engineering 18


Software Engineering Products and Processes

Software engineering products and processes are intertwined,


with each process phase producing specific products. The quality
of these products and the effectiveness of the processes play a
crucial role in the success of software projects, ensuring that
software systems are delivered on time, meet user needs, and
remain maintainable and reliable.

Software Engineering | Professional Software Engineering 19


Software Process Models

• Waterfall model
• Prototyping model
• Evolutionary model
• The spiral model
• Incremental development
• Rapid Application Development

Software Engineering | Professional Software Engineering 20


Waterfall Model

Software Engineering | Professional Software Engineering 21


Spiral Model

Software Engineering | Professional Software Engineering 22


Incremental Model

Software Engineering | Professional Software Engineering 23


Software Systems and Services

• Software systems, also known as software applications or software


programs, are sets of instructions and data that enable a computer
or electronic device to perform specific tasks or functions.
• These systems are designed and developed to serve various
purposes and can range from simple applications to complex,
multifaceted software.
• System Software
• Application Software
• Enterprise Software
• Development Software
• Utility Software

Software Engineering | Professional Software Engineering 24


• These services provide a range of benefits to businesses and
developers, making it easier and more cost-effective to
develop, deploy, and maintain software applications.
• Services like Software as a Service (SaaS) and Platform as a
Service (PaaS) play crucial roles in the modern technology
landscape.

Software Engineering | Professional Software Engineering 25


Overview of UML

• Unified Modeling Language (UML) is a standardized modeling


language in the field of software engineering and system
design.
• It is a graphical language used to visualize, specify, design,
and document software systems. UML provides a common
and visual framework for understanding system architectures,
components, and interactions.

Software Engineering | Professional Software Engineering 26


• Common UML diagrams are graphical representations
used to model different aspects of a software system or
process.
• Each UML diagram focuses on specific elements and
relationships within a system.
• These common UML diagrams are widely used in
software development and system design to
communicate, document, and analyze different aspects of
a system.
• Depending on the specific needs of a project, one or more
of these diagrams may be employed to provide a
comprehensive view of the system's structure, behavior,
and interactions.
Software Engineering | Professional Software Engineering 27
Class Diagram:
• Purpose: Represents the static structure of a system by showing
classes, their attributes, methods, and relationships.
• Components: Classes, attributes, methods, associations, generalization
(inheritance), and dependencies.
• Use Cases: Designing the system's data structure, defining class
hierarchies, and illustrating relationships between classes.

Use Case Diagram:


• Purpose: Describes the interactions between a system and its users or
external entities, representing the system's functionalities.
• Components: Actors (users or external entities), use cases
(functionalities), and relationships (associations and dependencies).
• Use Cases: Capturing user requirements, defining system
functionalities, and illustrating user-system interactions.
Software Engineering | Professional Software Engineering 28
Software Engineering | Professional Software Engineering 29
Sequence Diagram:
• Purpose: Shows the interactions and message flow between objects or components in a specific scenario or
process.
• Components: Lifelines (representing objects), messages (communication between objects), activations, and
focus of control.
• Use Cases: Visualizing dynamic behavior, specifying object interactions, and designing the flow of a
particular scenario.

Activity Diagram:
• Purpose: Represents the workflow and activities within a process or system, showing actions, decisions,
and control flows.
• Components: Actions, control nodes, decisions, merges, forks, and joins.
• Use Cases: Modeling business processes, specifying workflows, and illustrating the sequence of actions in
a process.

State Diagram:
• Purpose: Models the different states of an object and the transitions between those states.
• Components: States, transitions, events, actions, and guard conditions.
• Use Cases: Describing the behavior of objects, specifying the lifecycle of an entity, and modeling state-
dependent actions.

Software Engineering | Professional Software Engineering 30


Software Engineering | Professional Software Engineering 31
Software Engineering Industrial Standards

• Software engineering industrial standards are a set of guidelines,


criteria, and best practices established by recognized organizations
to ensure the quality, reliability, and safety of software systems.
These standards help in developing, maintaining, and managing
software throughout its lifecycle.
• Here are some of the prominent software engineering industrial
standards:
• ISO/IEC 12207 (Systems and Software Engineering - Software Life Cycle
Processes)
• ISO/IEC 15288 (Systems and Software Engineering - System Life Cycle
Processes)
• ISO 9001 (Quality Management Systems)
• IEEE Software Engineering Standards

Software Engineering | Professional Software Engineering 32


Ethical and Legal Issues

• Privacy and Data Protection:


• Collecting, storing, and processing personal data without consent or for
unethical purposes can violate individuals' privacy. Developers and
organizations must respect privacy regulations and user preferences.
• Security:
• Developing secure software is an ethical imperative. Failing to address
security vulnerabilities can lead to data breaches, financial losses, and
harm to individuals and organizations.
• Transparency and Accountability:
• Developers and organizations should be transparent about how software
works, including algorithms, data usage, and decision-making processes.
They must be accountable for the consequences of software actions.

Software Engineering | Professional Software Engineering 33


• Bias and Fairness:
• Developers should avoid bias in algorithms and data that can
result in discriminatory outcomes. Fairness and equity should be
considered when designing and training software.
• Intellectual Property and Licensing:
• Respect for intellectual property rights, including copyrights and
licenses, is essential. Unlawful copying, distribution, or use of
software can have ethical and legal implications.
• Accessibility:
• Software should be designed to be accessible to all users,
including those with disabilities. Ignoring accessibility can
exclude individuals from using software and services.

Software Engineering | Professional Software Engineering 34


Associated Issues in Software Engineering

• Software engineering encompasses a wide range of activities


and processes involved in the development and maintenance
of software systems.
• Several associated issues and challenges often arise in the
field of software engineering.

Software Engineering | Professional Software Engineering 35


• Complexity and large numbers of details
• Easy to add new features
• Modifications are done without fully understanding
• Original design not accommodated modifications
• Uncertainty about technology
• Defects in hardware
• Bugs in Software/Software libraries
• Uncertainty about requirements
• Until the system is delivered and in use, not sure whether it
meets the customer’s requirements

Software Engineering | Professional Software Engineering 36


• Uncertainty about software engineering skills
• Software projects are heavily labor-intensive
• Skills of engineers
• Constant change
• Both technology and requirements can be expected to change
• Deterioration of software design
• Successive changes introduce bugs
• Political risks

Software Engineering | Professional Software Engineering 37


• Requirements Management: Defining, documenting, and managing
software requirements can be challenging. Changes in
requirements, ambiguity, and incomplete specifications can lead to
misunderstandings and project delays.
• Software Quality: Ensuring the quality of software is a critical issue.
This includes addressing issues related to code quality,
performance, security, and reliability. Quality assurance and testing
are vital in this regard.
• Software Security: With the increasing threat of cyberattacks,
software security has become a significant concern. Developers
need to address vulnerabilities and implement secure coding
practices to protect against various threats, such as data breaches
and malicious attacks.
• Scalability and Performance: Software systems often need to
handle growing amounts of data and users. Scalability issues can
arise if the architecture and design do not account for future growth.
Performance optimization is a continuous challenge.

Software Engineering | Professional Software Engineering 38


Why is it important to address these issues?

• Reliability and Quality: Resolving issues ensures that software operates as


intended, reducing the chances of system failures, crashes, or data corruption.
This enhances the reliability and quality of the software, which is crucial for user
satisfaction.
• Security: Many software issues, such as vulnerabilities and bugs, can be
exploited by malicious actors to compromise data or systems. Addressing these
issues is vital to maintain the security of software and protect sensitive
information.
• Customer Satisfaction: Software users have high expectations for reliability,
performance, and usability. Addressing issues promptly helps in meeting user
expectations and maintaining customer satisfaction, which is essential for user
retention and positive reviews.
• Cost-Efficiency: The earlier issues are identified and resolved in the software
development lifecycle, the less expensive it is to fix them. Delaying issue
resolution can lead to costly rework or even a complete rewrite of the software.

Software Engineering | Professional Software Engineering 39


• Compliance and Legal Requirements: Some industries and
applications have strict regulatory and legal requirements related to
software quality and security. Addressing issues is essential to
ensure compliance with these regulations, reducing the risk of legal
consequences.
• Efficiency and Productivity: Unresolved issues can hinder
developers' productivity and efficiency. They may spend more time
troubleshooting and debugging rather than working on new features
or improvements. Addressing issues ensures a more efficient
development process.
• Maintainability: Over time, software tends to accumulate technical
debt, making it harder to maintain and evolve. Resolving issues and
refactoring the codebase can help in reducing technical debt and
making software more maintainable.
• Competitive Advantage: In a competitive market, software with
fewer issues and a better user experience can give a company a
competitive advantage. Addressing issues helps maintain this
advantage and ensures that the software remains relevant.

Software Engineering | Professional Software Engineering 40


Software Engineering | Professional Software Engineering 41
Thank you
Software Engineering | Professional Software Engineering 42
Summary

By now you should be able to,

• ILO1: demonstrate comprehension of the fundamental concepts of software


development and maintenance✓

NEXT
System Engineering

Software Engineering | Professional Software Engineering 43

You might also like