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.
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
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.
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.
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:
Gantt charts are a common management tool for Waterfall projects. These
charts enable easy visualization of sequential phases, letting project
managers map dependencies and subtasks for each phase of the process.
They also provide a clear view of timelines and deadlines for each phase.