0% found this document useful (0 votes)
5 views45 pages

Software Engineering RE-EXAM Document

The document provides an overview of software engineering, detailing its definition, goals, principles, and the characteristics of good software and software engineers. It also outlines the Software Development Life Cycle (SDLC), including stages like communication, requirement gathering, feasibility study, design, and testing, along with various software development methodologies such as Waterfall, Iterative, Spiral, and Agile. Additionally, it introduces Unified Modeling Language (UML) and use case diagrams to illustrate system interactions and requirements.

Uploaded by

MAHER MOHAMED
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)
5 views45 pages

Software Engineering RE-EXAM Document

The document provides an overview of software engineering, detailing its definition, goals, principles, and the characteristics of good software and software engineers. It also outlines the Software Development Life Cycle (SDLC), including stages like communication, requirement gathering, feasibility study, design, and testing, along with various software development methodologies such as Waterfall, Iterative, Spiral, and Agile. Additionally, it introduces Unified Modeling Language (UML) and use case diagrams to illustrate system interactions and requirements.

Uploaded by

MAHER MOHAMED
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/ 45

Welcome

Software Engineering
By Eng.Adulahi M. Adan

p://www.mahergelle.com

http://www.mahergelle.com
Chapter One: -
Introduction to
Software Engineering
Software Engineering
Software Engineering

➢ Software is more than just a program code.


➢ A program is an executable code, which serves some
computational purpose.
➢ Software is considered to be collection of executable
programming code, associated libraries () and
documentations.
➢ Software, when made for a specific requirement is called
software product.
➢ Engineering on the other hand, is all about developing
products, using well- defined, scientific principles and methods
Software Engineering
Software Engineering

➢Software engineering is an engineering branch associated


with development of software product using well-defined
scientific principles, methods and procedures.

➢The outcome of software engineering is an efficient and reliable


software product.
Software Engineering Goals and Principles
Software Engineering

❖ Goals:- The software engineering goals include:


❖ Principles:-
✓ Maintainability.
1. Abstraction
2. Information Hiding.
✓ Reliability
3. Modularity
✓ Efficiency 4. Localization
5. Uniformity
✓ Understand ability 6. Completeness
7. Confirm ability
Characteristics of good software
Software Engineering

A software product can be judged by what it offers and how well it


can be used. This software must satisfy on the following grounds:
Operational Transitional Maintenance
✓ Budget
✓ Portability ✓ Maintainability
✓ Usability
✓ Interoperability ✓ Flexibility
✓ Efficiency
✓ Reusability
✓ Correctness ✓ Scalability
✓ Adaptability
✓ Functionality
✓ Dependability
✓ Security and Safety
Who is Software Engineer
Software Engineering

• Who is a Software Engineer?


• A software engineer is an individual who applies the principles of
software engineering to the design, development, testing, and
evaluation of the software and systems in order to meet with
client‘s requirements.
Characteristics of a good software engineer
Software Engineering

The features that good software engineers should possess


are as follows:

• Familiarity with software engineering principles.


• Good technical knowledge of the project range
• Good programming abilities.
• Good communication skills.
• Sound knowledge of fundamentals of computer science.
• Ability to work in a team
• High motivation
• Discipline
Functions of a Software Engineer
Software Engineering

• Analyses information to determine, recommend, and plan


computer specifications and layouts, and peripheral
equipment modifications.
• Analyses user needs and software requirements to
determine feasibility of design within time and cost constraints.
• Coordinates software system installation and monitor
equipment functioning to ensure specifications are met.
• Designs, develops and modifies software systems
• Determines system performance standards.
• Modifies existing software
• Obtains and evaluates information
• Stores, retrieves, and manipulates data
Chapter Two: -
Software Development
Life Cycle
SDLC
Software Engineering

➢ Software Development Life Cycle, SDLC for short, is a well-


defined, structured sequence of stages in software engineering
to develop the intended software product.
➢ SDLC Activities
➢ SDLC provides a series of steps to be followed to design and
develop a software product efficiently.
➢ SDLC framework includes the following steps:
SDLC
Software Engineering

❑ Communication: -
➢ This is the first step where the user initiates the request for a
desired software product.
➢ The user contacts the service provider and tries to negotiate
the terms, submits the request to the service providing
organization in writing.
SDLC
Software Engineering

❑ Requirement Gathering: -
➢ This step onwards the software development team works to
carry on the project.
➢ The team holds discussions with various stakeholders from
problem domain and tries to bring out as much information
as possible on their requirements.
➢ The requirements are contemplated and defined into
1. User requirements,
2. System requirements
3. Functional requirements and
4. Non Functional requirement
What happens if the requirements are wrong?
RE and SM

❖ The system may be delivered late and cost more than originally
expected.
❖ The customer and end-users are not satisfied with the system. The
y may not use its facilities or may even decide to scrap it altogether.
❖ The system may be unreliable in use with regular system errors
and crashes disrupting normal operation.
❖ If the system continues in use, the costs of maintaining and
evolving the system are very high.
Why is requirements engineering difficult?
RE and SM

❖ Businesses operate in a rapidly changing environment so their


requirements for system support are constantly changing.
❖ Multiple stakeholders with different goals and priorities are
involved in the requirements engineering process.
❖ System stakeholders do not have clear ideas about the system
support that they need.
❖ Requirements are often influenced by political and organisational
factors that stakeholders will not admit to publicly.
SDLC
Software Engineering

❑ Feasibility Study
➢ After requirement gathering, the team comes up with a rough
plan of software process.
➢ At this step the team analyzes if a software can be designed
to fulfill all requirements of the user, and if there is any
possibility of software being no more useful.
❑ Types of Feasibility Study
1. Technical Feasibility: Evaluates the availability of necessary
technology, resources, and expertise to successfully implement
the project. It considers factors like hardware, software,
personnel, and technical infrastructure.
SDLC
Software Engineering

❑ Types of Feasibility Study


2. Economic Feasibility: Assesses the financial viability of the
project, including its projected costs, revenues, and return on
investment (ROI).
3. Operational/ Practical Feasibility: Evaluates the project's
compatibility with the organization's existing operations, policies,
procedures, and resources. It considers factors like staffing,
logistics, and integration with existing systems.
SDLC
Software Engineering

❑ Software Design
➢ Next step is to bring down whole knowledge of requirements
and analysis on the desk and design the software product.
➢ The inputs from users and information gathered in
requirement gathering phase are the inputs of this step.
➢ The output of this step comes in the form of two designs;
1. logical design (Algorithms), and
2. physical design (UML Diagrams).
➢ Engineers produce meta-data and data dictionaries, logical
diagrams, data-flow diagrams.
SDLC
Software Engineering

❑ Testing
➢ Software testing is done while coding by the developers and
thorough testing is conducted by testing experts at various
levels of code such as module testing, program testing,
System testing, and testing the product at user’s end.
➢ Early discovery of errors and their remedy is the key to
reliable software.
Chapter Three: -
Software Development
Methodologies
Software Development Paradigm
Software Engineering

➢ The software development paradigm helps a developer to


select a strategy to develop the software.
➢ A software development paradigm has its own set of tools,
methods, and procedures, which are expressed clearly and
defines software development life cycle.
➢ A few of software development paradigms or process
models are defined as follows:
Software Development Paradigm
Software Engineering

❑ Waterfall Model
➢ Waterfall model is the simplest model of software
development paradigm.
➢ All the phases of SDLC will function one after another in linear
manner.
➢ That is, when the first phase is finished then only the second
phase will start and so on.
Software Development Paradigm
Software Development Paradigm
Software Engineering

Advantages
• Simple and easy to use.
• Easy to manage
• Works well for smaller projects
• Disadvantages
• Adjusting scope during the life cycle can kill a project
• No working software is produced until late
• Poor model for long and ongoing projects.
Software Development Paradigm
Software Engineering

❑ Iterative Model
➢ This model leads the software development process in
iterations. It projects the process of development in cyclic
manner repeating every step after every cycle of SDLC
process.
➢ The software is first developed on very small scale and all the
steps are followed which are taken into consideration. Then,
on every next iteration, more features and modules are
designed, coded, tested, and added to the software.
Software Development Paradigm
Software Engineering
Software Development Paradigm
Software Engineering

➢ Advantages
1. More flexible – inexpensive to change scope and
requirements.
2. Easier to test and debug during a smaller iteration.
3. Easier to manage risk because risky pieces are identified
and handled during its iteration.
4. Each of the iterations is an easily managed landmark
Software Development Paradigm
Software Engineering

❑ Spiral Model
➢ Spiral model is a combination of both, iterative model and one
of the SDLC model. It can be seen as if you choose one
SDLC model and combined it with cyclic process (iterative).
➢ This model considers risk, which often goes un-noticed by
most other models.
Software Development Paradigm
Software Development Paradigm
Software Engineering

Advantages
1. High amount of risk analysis
2. Good for large and mission-critical projects.
3. Software is produced early in the software life cycle.
Disadvantages
1. Can be a costly model to use.
2. Risk analysis requires highly specific expertise.
3. Project‘s success is highly dependent on the risk analysis phase.
4. Doesn‘t work well for smaller projects.
Software Development Paradigm
Software Engineering

❑ Agile Process model


➢ The meaning of Agile is swift or versatile. "Agile process
model" refers to a software development approach based on
iterative development. Agile methods break tasks into smaller
iterations, or parts do not directly involve long term planning.
➢ The project scope and requirements are laid down at the
beginning of the development process.
➢ Plans regarding the number of iterations, the duration and
the scope of each iteration are clearly defined in advance
Software Development Paradigm
Software Engineering
Software Development Paradigm
Software Engineering

❑ Advantages:
✓ Frequent Delivery
✓ Face-to-Face Communication with clients.
✓ Efficient design and fulfills the business requirement.
✓ Anytime changes are acceptable.
✓ It reduces total development time.
Software Development Paradigm
Software Engineering

❑ Disadvantages:
✓ Due to the shortage of formal documents, it creates confusion
and crucial decisions taken throughout various phases can be
misinterpreted at any time by different team members.

✓ Due to the lack of proper documentation, once the project


completes and the developers allotted to another project,
maintenance of the finished project can become a difficulty.
Chapter Four: -
Introduction to
Software Design
Introduction to UML,
UML diagrams and Relationships
Software Eng

• UML stands for unified modeling language.


• UML was created by the object management group
(OMG).
• "The Unified Modeling Language (UML) is a
graphical language for visualizing, specifying,
constructing, and documenting the artifacts of a
software-intensive system.
Use case Diagram
Software Eng

• In the Unified Modeling Language (UML), a use case diagram

can summarize the details of your system's users (also known

as actors) and their interactions with the system.


Use case diagram components
Software Eng

• Actors: The users that interact with a system. An actor can be


a person, an organization, or an outside system that interacts
with your application or system. They must be external objects
that produce or consume data.
• Use case: It describes set of actions performed by a system
for a specific goal.
• System: A specific sequence of actions and interactions
between actors and the system. A system may also be
referred to as a scenario.
• Goals: The end result of most use cases. A successful
diagram should describe the activities and variants used to
reach the goal.
Case Study 1

Software Eng

• Let us consider an Automated Trading House System.


• We assume the following features of the system −
• The trading house has transactions with two types of customer
s, individual customers and corporate customers.
• Once the customer places an order, it is processed by the
sales department and the customer is given the bill.
• The system allows the manager to manage customer account
s and answer any queries posted by the customer.
Case Study 1
Case Study 2
Software Eng

Let us consider a Hotel Management System for managing day-to-day


hotel operations.
1.The system allows:
1. The Manager to manage employees, generate reports, and perfo
rm tasks related to employee records (such as adding, updating,
viewing, and terminating employees).
2. The Receptionist to accept customer bookings, manage complai
nts, and view customer payments.
3. The Customer to reserve rooms, view hotel location, visit the hot
el website, perform registration, and leave comments.
4. The System Administrator to manage room operations (such as
adding, updating, and deleting rooms) and change the hotel's pro
file.
2.All actors must log into the system before performing their specific task
Use case diagram Examples

Hotel
Chapter End

You might also like