Software Engineering
Software Engineering
What is a Project?
modeling both software and non-software systems, including workflows in legal systems
wikipedia.org
diagrams, deployment diagrams, and use case diagrams to represent the static and
Why UML
As the strategic value of software increases for many companies, the industry looks for
techniques to automate the production of software and to improve quality and reduce
the complexity of systems as they increase in scope and scale. In particular, they
Additionally, the development for the World Wide Web, while making some things
simpler, has exacerbated these architectural problems. The Unified Modeling Language
(UML) was designed to respond to these needs. The primary goals in the design of the
follows:
1. Provide users with a ready-to-use, expressive visual modeling language so they
can develop and exchange meaningful models.
2. Provide extensibility and specialization mechanisms to extend the core concepts.
3. Be independent of particular programming languages and development
processes.
4. Provide a formal basis for understanding the modeling language.
5. Encourage the growth of the OO tools market.
6. Support higher-level development concepts such as collaborations, frameworks,
patterns and components.
7. Integrate best practices.
For whom?
A software development will have many stakeholders playing a part.
For Example:
● Analysts
● Designers
● Coders
● Testers
● QA
● The Customer
● Technical Authors
By integrating UML into your workflow, you can create more comprehensive and communicative
system models, improving the quality and clarity of your software designs12.
What is a Class Diagram?
The class diagram is a central modeling technique that runs through nearly all
object-oriented methods. This diagram describes the types of objects in the system and
Relationships
design.
Class Diagram Example
The following Class Diagram example represents two classes - User and
Attachment. A user can upload multiple attachments so the two classes are
Package Diagram
Package diagram is UML structure diagram which shows packages and dependencies
between the packages. Model diagrams allow to show different views of a system, for
model.
Component Diagram
In the Unified Modeling Language, a component diagram depicts how
Deployment Diagram
The Deployment Diagram helps to model the physical aspect of an Object-Oriented
and its environment (actors). Use cases enable you to relate what you
Think of a use-case model as a menu, much like the menu you'd find in a
restaurant. By looking at the menu, you know what's available to you, the
individual dishes as well as their prices. You also know what kind of cuisine
the menu, you get an overall impression of the dining experience that
awaits you in that restaurant. The menu, in effect, "models" the restaurant's
behavior.
members.
Activity Diagram
Activity diagrams are graphical representations of workflows of stepwise activities and
It shows how the objects interact with others in a particular scenario of a use case. With
the advanced visual modeling capability, you can create complex sequence diagram in
few clicks. Besides, some modeling tool such as Visual Paradigm can generate
sequence diagram from the flow of events which you have defined in the use case
description.
UML Terms
● Abstract Class - A class that will never be instantiated. An instance of this
with.
business process.
in an Association are equal, and are aware of each other through the
that the source end of the association is aware of the target end, but not
vice versa.
● Base Class: A Class which defines Attributes and Operations that are
emerge from the Branch, each with a Guard Condition. When control
reaches the Branch, exactly one Guard Condition must be true; and control
them.
Diagram, indicating that Messages can pass back and forth between the
Objects.
during which several iterations of functionality are built into the system
Processors.
● Domain -The part of the universe that the system is involved with.
that allows for additional project planning including the iterations of the
construction phase.
begin.
● High Cohesion - A GRASP evaluative pattern which makes sure the class
subclass.
called an instance of the class. Any number of instances of the class may
be created.
or Component may then Depend upon the Interface and thus use the
together.
● Message - A request from one object to another asking the object
● Notation - Graphical document with rules for creating analysis and design
methods.
● Note: A text note added to a diagram to explain the diagram in more detail.
together.
● Package Diagram: A Class Diagram in which all of the elements are
problem.
pattern.
that only code for the Classifier that contains the member can access the
member.
indicating that only code for the Classifier that contains the member or for
domain model.
Interface.
● Role - Used in a domain model, it is an optional description about the role
of an actor.
time, and the Messages that pass between those Objects over time to
carry out some behavior. State chart diagram - A diagram that shows all
data.
Transitions between States, and the Events that cause the Transitions.
Operation to indicate that the Operation stands on its own and doesn't
● Time Boxing - Each iteration will have a time limit with specific goals.
● Transition Phase - The last phase of the Rational Unified Process during
which users are trained on using the new system and the system is made
available to users.
● Use Case: In a Use Case Diagram, represents an action that the system
● Use Case Diagram: A diagram that shows relations between Actors and
Use Cases.
has access to the member. Visibility levels include Public, Protected, and
Private.
oriented systems. A class diagram in the Unified Modeling Language (UML) is a type of
static structure diagram that describes the structure of a system by showing the
system's:
● classes,
● their attributes,
Example
A dog has states - color, name, breed as well as behaviors -wagging, barking, eating.
(operations). Each attribute has a type. Each operation has a signature. The class
Class Attributes:
● Operations are shown in the third partition. They are services the class provides.
● The return type of a method is shown after the colon at the end of the method
signature.
● The return type of method parameters are shown after the colon following the
●
Class Visibility
The +, - and # symbols before an attribute and operation name in a class denote the
process. During the formulation of a domain model, for example, you would seldom
move past the conceptual perspective. Analysis models will typically feature a mix of
start with heavy emphasis on the specification perspective, and evolve into the
implementation perspective.
A diagram can be interpreted from various perspectives:
software
The perspective affects the amount of detail to be supplied and the kinds of
relationships worth presenting. As we mentioned above, the class name is the only
mandatory information.
will correctly reflect the intent of the designer. Can you describe what each of the
relationships mean relative to your target programming language shown in the Figure
below?
If you can't yet recognize them, no problem this section is meant to help you to
relationships with other classes. A relationship can be one of the following types:
Inheritance (or Generalization):
more specific classifier. Each instance of the specific classifier is also an indirect
instance of the general classifier. Thus, the specific classifier inherits the features of the
SubClass2 are derived from SuperClass. The relationship is displayed as a solid line
with a hollow arrowhead that points from the child element to the parent element.
Association
Associations are relationships between classes in a UML Class Diagram. They are
represented by a solid line between classes. Associations are typically named using a
verb or verb phrase which reflects the real world problem domain.
Simple Association
The figure below shows an example of simple association. There is an association that
connects the <<control>> class Class1 and <<boundary>> class Class2. The
● one to one
● one to many
● many to many
Aggregation
● A special type of aggregation where parts are destroyed when the whole is
destroyed.
solid line with a filled diamond at the association end, which is connected to the class
Dependency
An object of one class might use an object of another class in the code of a method. If
the object is not stored in any field, then this is modeled as a dependency relationship.
● Exists between two classes if changes to the definition of one may cause
Realization
Realization is a relationship between the blueprint class and the object containing its
respective implementation level details. This object is said to realize the blueprint class.
In other words, you can understand this as the relationship between the interface and
For example, the Owner interface might specify methods for acquiring property and
disposing of property. The Person and Corporation classes need to implement these
Abstraction
Let us start with abstraction.
Abstraction uses symbols << xxxxxx >>
Abstract is DRY
Association
It is a typr of relationship. Not the dependency
Aggregation
A spl. Type of association. A hollow diamond
Turtle → creep
Composition
A Solid diamond
Multiplicity
Class Diagram Example: Order System
Example: GUI
Student Administration system:
A generic process framework encompasses five activities which are given below one by one:
3. ISO 9003: This standard applies to organizations that are involved only
in the installation and testing of the products. For example, Gas companies.
There are several reasons why software industry must get an ISO
certification. Some of reasons are as follows:
CMM is similar to ISO 9001, one of the ISO 9000 series of standards
specified by the International Organization for Standardization. The ISO
9000 standards specify an effective quality system for manufacturing and
service industries; ISO 9001 deals specifically with software development
and maintenance.
The main difference between CMM and ISO 9001 lies in their respective
purposes: ISO 9001 specifies a minimal acceptable quality level for
software processes, while CMM establishes a framework for continuous
process improvement. It is more explicit than the ISO standard in defining
the means to be employed to that end. Emphasizing
1. Initial (Level 1). At the initial level, processes are disorganized, ad
hoc and even chaotic. Success likely depends on individual efforts
and is not considered to be repeatable. Defined processes and
standard practices that exist are abandoned during a crisis. Success
the entire organization and all projects across the organization use
an approved
The following framework activities are carried out irrespective of the process
1. Communication
2. Planning
3. Modeling
4. Construction
5. Deployment
Requirements Document
S/w requirements document or S/w requirements specification
Includes 2 types of the specs. template
1. Functional requirements are product features that developers must
implement to enable the users to achieve their goals, i.e., function to meet
the ends. For example, ‘The system must send a confirmation email
whenever an order is placed.’ is a functional requirement.
2. Non-functional requirements detail how it will do it and, therefore, must be
included in SRD. If the functional requirement was, ‘The system must send
a confirmation email whenever an order is placed,’ the non-functional
requirement would be, ‘When the payment is complete, the email should
go within 2 seconds.’
Rules:
Keep it organized and professional
Make requirements testable
Apply implementation-neutral functional requirements
Evaluate documentation with stakeholders
Here is a model or template of of an example RDS
Prescriptive process models
Below are some of the types of prescriptive process models:
● The Waterfall Model
● Incremental Process model
1.Waterfall Model
The Waterfall model uses a logical progression of SDLC steps for a project,
similar to the direction water flows over the edge of a cliff. It sets distinct
endpoints or goals for each phase of the development process. Those
endpoints or goals can't be revisited after their completion.
Project teams and project managers use the Waterfall model to achieve goals
based on the needs of their business. The model is used in many different
project management contexts, such as in construction, manufacturing, IT and
software development.
In the Waterfall methodology, each step is dependent on the output of the
previous step. There's a linear progression to the way these projects unfold.
For example, in construction, these three general steps are usually followed:
The Waterfall model doesn't include a project's end users or clients as much
as other development methodologies. Users are consulted during the initial
stages of gathering and defining requirements, and client feedback is
incorporated after that. By leaving the client out of the main part of the
Waterfall process, the development team moves quickly through the phases of
a project.
This methodology is good for teams and projects that want to develop
a project according to fixed or unchanging requirements set forth at
the beginning of the project. Waterfall projects have a high degree of
process definition with little or no output variability. Waterfall is also a
good choice if the project has cost or time constraints.
Projects based on the Waterfall method are well defined, are predictable and
have specific documentation. They have the following characteristics: fixed
requirements, ample resources, an established timeline and well-understood
technology. They usually aren't likely to require significant changes.
Waterfall aims to achieve its goals on the first try. So, in software development
processes, if an application must work out of the box immediately at the risk of
losing customers or some other serious issue, Waterfall is a suitable method.
When used for complex projects, such as software development, the Waterfall
development methodology has seven stages:
Before moving to the next phase in the Waterfall process, there's usually a
review and sign-off to ensure all defined goals have been met. For example,
developers ensure each unit of technology is properly integrated in the
implementation phase before moving to the testing phase.
Key note:
Meaning that there is no going back to previous stages once they are
finished, similar to how water flows down a waterfall without going back
up
For whom?
The Agile methodology is often used in place of the Waterfall model. However,
there are advantages to the Waterfall vs. Agile approaches, such as the
following:
The basic methodology of this model is that the software development process is
divided into different phases and the next phase can only begin after finishing the
previous one, making it sequential. Requirement analysis, designing, development,
testing, deployment, and maintenance are the different phases of this model.
It is a basic model, every stage is defined clearly, every step is well documented, and
is suitable for small projects. Limitations: The first one is that there is very little scope
of flexibility for error correction.
If any mistake happens between the phases, there is no way to fix it until the entire
process is complete. Moreover, there is no provision to skip, reverse or overlap any
stages. Due to these reasons, this model is proven to be expensive and tedious.
By breaking the project into increments, teams can prioritize features and
address changes efficiently. This process promotes collaboration and
adaptability, making it essential for effectively managing intricate projects in
today's dynamic digital landscape. Continuous assessment, feedback, and
adjustments are integral to this model, enabling prompt identification and
correction of errors. To ensure the smooth integration of increments, careful
planning and coherent design are crucial.
Phases of Incremental Model
● Requirements Gathering: In this initial phase, the high-level requirements for the
software are gathered and analyzed. These requirements serve as a foundation
for the subsequent phases.
● Design: Based on the gathered requirements, the software's architecture,
design, and user interfaces are planned and developed. The design is often
divided into smaller segments to ensure a focused and organized development
process.
● Implementation: Each increment involves implementing a portion of the
software's functionality. Developers work on adding features, modules, or
components that were planned in the design phase. This incremental approach
allows for quicker delivery of usable software.
● Testing: As each increment is completed, testing is carried out to ensure that the
new features work as expected and do not negatively impact the existing
functionality. This ongoing testing helps catch and address issues early in the
development process.
● Integration: In this phase, the newly developed increments are integrated into
the existing software. This can involve merging code, resolving conflicts, and
ensuring that all components work together smoothly.
● Evaluation and Feedback: After each increment, stakeholders review the
functionality added and provide feedback. This feedback can be used to refine
the requirements, design, and implementation of subsequent increments.
● Iterative Process: The software development process iterates through the
above phases, gradually adding new features and improvements. With each
iteration, the software becomes more robust and feature-rich.
The key advantage of the incremental model is its ability to provide early and
continuous releases of usable software, which can help gather user feedback
and adapt to changing requirements.
Advantages
● Early Release of Partial Functionality: Incremental model allows for the early
release of a basic working version of the software, even if not all features are
complete. This can be advantageous for getting user feedback and satisfying
immediate needs.
● Reduced Risk of Big Failures: Since the development process is broken down
into smaller, manageable chunks, the risk of a catastrophic failure is reduced. If a
problem arises, it is typically easier to identify and address in a smaller
increment.
● Feedback Incorporation: Each increment can be reviewed by stakeholders and
users, leading to the incorporation of their feedback into subsequent increments.
This ensures that the final product better aligns with user expectations.
● Flexible and Adaptive: Changes and adjustments can be accommodated more
easily during the development process. The incremental model allows for
flexibility in adapting to changing requirements.
● Early Availability of Features: Core features can be delivered early, allowing
users to start benefiting from the software sooner, even if the complete
application is still being developed.
● Reduced Development Time: By breaking down the project into smaller
increments, development time can be reduced as the focus is on delivering a
subset of features in each iteration.
Disadvantages
In simple words,
Feedback is provided by the users on the product for the planning stage of the
next cycle and the development team responds, often by changing the
product, plan or process. Therefore, the software product evolves with time.
Key features
● It follows an
❖iterative,
❖incremental,
❖architecture-centric, and
more entities. A use case refers to the process of the team performing the
requirements are made from the list of requirements that were specified by
specified in terms of use cases such as "add a course," "delete a course," "pay
The architecture-centric approach defines the form of the system and how it
and test.
Phases
ends with the release of a new system version for the customers. We have
● Inception
● Elaboration
● Construction
● Transition
1.Inception
The main goal of this phase involves delimiting the project scope. This is
where we define why we are making this product in the first place. It should
2.Elaboration
We build the system given the requirements, cost, and time constraints and all
3.Construction
This phase is where the development, integration, and testing take place. We
build the complete architecture in this phase and hand the final
4.Transition
This phase involves the deployment, multiple iterations, beta releases, and
improvements of the software. The users will test the software, which may
raise potential issues. The development team will then fix those errors.
Activities
The Team Software Process (TSP) aims to build self-directed teams that plan,
track work, establish goals, and manage their own processes and plans.
The team itself creates its own process and at the same time meet the narrow
needs of individuals and the broader needs of the organisation
The goal is to build a “self detected” project team that organizes itself to produce
Agile software development methodologies are one of the simplest and most effective
processes for translating a vision for a business need into a software solution. Agile is a
term used to describe software development approaches that include continuous
planning, learning, improvement, team collaboration, evolutionary development, and
early deployment. Promote flexible responses to change.
software products.
Agile Methods break the product into small incremental builds. These builds
● Planning
● Design
● Development/Implementation
● Testing
● Deploy
● Reviews from customer
After taking the feedback from the customer, these phases are implemented again, and
then again, the feedback is taken from the customer, and the phases are repeated. This
happens until the customer is satisfied or accepts the final project.
● The agile development process usually deploys Pair Programming.
In Pair programming, two programmers work together at one
workstation. One does coding while the other reviews the code as it
is typed in. The two programmers switch their roles every hour or
so.
product requirements.
By using multiple approaches simultaneously, you save time and resources. Plus, this
model is more effective in overcoming resistance to changes. Since each change
occurs in different projects simultaneously, implementing new ideas is much easier than
with a single project approach.
2. Adaptability
3. Quick
If a new system needs to be built for an upcoming event, an agile team can quickly
respond with minimal planning time. They can quickly adapt by changing code or adding
new features to suit the occasion. In contrast, long-term planning approaches require
additional adapt lead times since it’s done after the plans are made.
After each iteration, project customers and stakeholders have a complete picture of the
updated software developed according to an agile model. In this way, all changes in the
system can be addressed in each iteration.
In Agile, documentation happens throughout the project, often in time to create the
output rather than at the beginning. This leaves less detail and is often delayed. Due to
the absence of proper documentation, when the project completes and the developers
are assigned to another project, maintenance of the developed project can become a
problem.
is not clear, then the development team can be driven in the wrong direction.
work in an iterative environment. This can be challenging for teams that are
not experienced in agile development practices and can lead to delays and
Controlling In the waterfall method, the The Agile Team contributors are
supervisor procedure is continually interchangeable; as a result, they
trustworthy, so the venture paint faster. Likewise, no want for
supervisor performs a crucial venture managers because the tasks
position throughout each are controlled through the complete
degree of SDLC. team.
Scrum is a lightweight Agile framework for small teams, while Scaled Agile Framework
(SAFe) is a more comprehensive framework for large organizations. Both are widely
used Agile frameworks.
SAFe
The Scaled Agile Framework (SAFe) is a set of organizational and workflow patterns for
implementing agile practices at an enterprise scale. The framework is a body of
knowledge that includes structured guidance on roles and responsibilities, how to plan
and manage the work, and values to uphold.
SAFe promotes alignment, collaboration, and delivery across large numbers of agile
teams. It was formed around three primary bodies of knowledge: agile software
development, lean product development, and systems thinking.
As businesses grow in size, SAFe provides a structured approach for scaling agile.
There are four configurations in SAFe to accommodate various levels of scale:
● Essential SAFe,
● Large Solution SAFe,
● Portfolio SAFe, and
● Full SAFe.
The best software process model depends on the project requirements, team,
and other factors. For highly flexible and iterative development, Agile is often
preferred for its adaptability and frequent feedback loops. The Waterfall model
can be effective for well-defined projects with clear requirements due to its
structured approach.
Communication Principles in Software Engineering
There are some principles outlined for effective communication for the ideal development of the
end product.
Deploy
Communic Planning Mode Constructi
ment
ation lling on
Communication principles
1) Listen carefully: – To understand customers' requirements perfectly and listen carefully to
speakers which ensure proper data collection. Ask for classification of something is under , but
avoid constant interceptions. Concentrate on speakers’ words so there should be any chance of
misinterpretation.
2) Prepare before you communicate: – spend the time to understand the problem before meeting
with customers. If necessary, do some research to understand business terminologies .So it is
necessary to prepare the agenda for the meeting.
3) Someone should facilitate the activity: – every communication meeting should have a leader
to keep conversation moving in productive direction. To solve any conflict that does occur
5) Take notes and document decisions: – note down all important points and issues raised in the
meeting and maintain record. One participant of the meeting may act as a recorder for the notes
and document decision.
6) Strive for collaboration: – collaboration in team members is essential for better team work.
Collaboration is achieved when collective knowledge of member of the team is united to
illustrate product of system function or system feature. It helps to build faith among team
member and create generic goal for team. So the collaboration is very important in the team
members.
7) Stay focused, modularize your discussion :- the more people involved in any communication
the more chances to bounce topic form one to other. The facilitator should keep conversation in
one direction and important topic will be focused. so stay be focused modularize with your
discussion.
C) If a feature of function is not clear. In the meeting many people require to discussion different
issues. So communication like any software engineering activity takes time .the people who
participate should recognize many topics require discussion and that “ moving on ” is best
option to achieve communication.
10) Negotiation is successful when both parties win :- there are many instances in which
software engineer and customer must negotiate function and feature priorities and delivery dates.
Planning Principles
The project planning process involves a set of interrelated activities followed in an orderly
manner to implement user requirements in software and includes the description of a series of
project planning activities and individual(s) responsible for performing these activities. In
addition, the project planning process comprises the following.
Project planning process comprises several activities, which are essential for carrying out a
project systematically. These activities refer to the series of tasks performed over a period of time
for developing the software. These activities include estimation of time, effort, and resources
required and risks associated with the project.
Fig: Project Management perceptive
Approaches
Minimum consider the strategies needed at minimum to start.
Traditional very methodical approach touching every aspect of the turns of the project.
Agile way Be quick and keep reviewing the adopted strategies every moment.
Principles
1. Understand the scope of the project. Scope → amount of the effort
2. Involve stakeholders in plan process. StakeHolder → The persons who impacts
3. Recognize that the plan is iterative. As work starts things change. Adjust changes.
4. Estimate based on what you know plan. Every point, estimate.
project management triangle or the iron triangle, is a model that
shows how scope, time, and budget relate to each other.
5. Consider the risk as you define the plan. Contingencies and risk mitigation
6. Be Realistic. Don’t be ignorant of real happenings. Tech expert leaves. Govt rules chges…
7. Adjust granularity as you define plan
8. Define how you intend to ensure quality
9. Define how you intend to accommodate the change
10.Keep track the frequently and make adjustments as required
Modelling Principles
Requirement models
represent customer requirements by the covering software in 3 different
domains, 1) information 2) functional and 3) behaviour
Design models
help people to construct effectively the Architecture, the UI user’s interface
the component levels
We should know P O C
Principles
1. The primary goal of the software team is to build software, not create models
2. Travel lite – don't create more models than needed
3. Strive to produce the simplest model that will describe the problem or the software
4. Build the models in a way that makes them responsive to change
Assume that the models will change.
Without a good requirements model if you create a design model, it will miss
important features of the product.
5. 5Be able to state an explicit purpose for each model that is created
6. Adapt the models you develop to the system at hand
Ex. Enterprise app vs Gaming app
7. Try to build useful models but forget about building perfect models
8. Don't become dogmatic about the syntax of the model you could communicates and
content successfully representation is secondary
SO think of UML
9. If you were finishing tell you a model isn't right even though it seem so can paper you
proudly have a reason to be concerned
10.Get feedback as soon as you can
You have take other stakeholders inputs for clarity
Construction Principles
This is the phase where the actual coding is worked on based on the previous inputs.
Coding activity:
program from scratch
Use tools to create a place holders from architecture diagrams
Testing activity:
Integration Testing: Integrates all of the components and test
Validation Testing: test if all of the requirements are met for entire application
Acceptance testing: test different scenarios if the user test for all of the features
and functions
Coding phase practices:
Understand the problem
Identify the programming lang; tools like IDE Environment
Identify the tools and helper apps
Every line of code should be carefully evaluated
Follow indentation practices
Be judgemental for naming variable names, method names
For each of the methods / functions write junit tests
Make modularization; never write monolithic code.
follow good coding practices like, cohesion, Loose coupling, Design patterns etc.
Do pair programming if adheres to the organization practices.
Conduct code reviews
Principles
Deployment Model
●
●
●
Ex. Ola, Uber, Swiggy. → how they started and became the successful
Elicitation
3.Problems of volatility
Elaboration
Negotiation
Customers ask for conflicting requirements
Reconcile those conflicts through a process of negotiations
Discuss with customers to prioritize the reqts and provide the ranks
Now, assess the cost and risks with the changed or negotiated
requirements and address any conflicts
Validation
Systems Engineering
Business Process Engineering
Product Engineering
Types of S/w Products
Essential characteristics of well engineered S/w product
Roles and responsibilities