Professional Documents
Culture Documents
Software Engg
Software Engg
Software Engg
Notesify
A Student’s Assistant in Learning
Rajnish Kumar
17103069
Rubal Khehra
17103074
Rupinderjit Kaur
17103075
CONTENTS
S.NO. CONTENT DATE REMARKS
8. Introduction to Eclipse
9. Use-Case Diagram
Domain Specific – address any specific domain, every part of Papyrus may be customized:
UML profile, model explorer, diagram notation and style, properties views, palette and
creation menus, and much more.
Modular extensions:
Papyrus Layers – layers are used to accurately control what is shown by a diagram. A
layer is used to associate some properties (graphical or domain) to some views (class,
package).
Papyrus DSML Validation – component to generate a validation plug-in from a UML
Profile.
Moka – a Papyrus module for execution, animation and debugging of UML models.
Cross-platform support – runs on Linux, Mac OS X, and Windows operating systems.
This is a Java application.
Website: www.eclipse.org/papyrus
8. Eclipse
Eclipse is an integrated development environment (IDE) for Java and other programming
languages like C, C++, PHP, and Ruby etc. Development environment provided by Eclipse
includes the Eclipse Java development tools (JDT) for Java, Eclipse CDT for C/C++, and
Eclipse PDT for PHP, among others.
Development environments include the Eclipse Java development tools (JDT) for Java and
Scala, Eclipse CDT for C/C++, and Eclipse PDT for PHP, among others.
The initial codebase originated from IBM VisualAge. The Eclipse software development
kit (SDK), which includes the Java development tools, is meant for Java developers. Users
can extend its abilities by installing plug-ins written for the Eclipse Platform, such as
development toolkits for other programming languages, and can write and contribute their
own plug-in modules. Since the introduction of the OSGi implementation (Equinox) in
version 3 of Eclipse, plug-ins can be plugged-stopped dynamically and are termed (OSGI)
bundles
Eclipse software development kit (SDK) is free and open-source software, released under the
terms of the Eclipse Public License, although it is incompatible with the GNU General Public
License. It was one of the first IDEs to run under GNU Class Path and it runs without
problems under Iced Tea.
Unified Modelling Language (UML)
Unified Modelling Language (UML) is a general-purpose modelling language. The main aim
of UML is to define a standard way to visualize the way a system has been designed. It is
quite similar to blueprints used in other fields of engineering.
UML is not a programming language; it is rather a visual language. We use UML diagrams
to portray the behaviour and structure of a system. UML helps software engineers,
businessmen and system architects with modelling, design and analysis. The Object
Management Group (OMG) adopted Unified Modelling Language as a standard in 1997. It’s
been managed by OMG ever since. International Organization for Standardization (ISO)
published UML as an approved standard in 2005. UML has been revised over the years and is
reviewed periodically.
Complex applications need collaboration and planning from multiple teams and hence
require a clear and concise way to communicate amongst them.
Businessmen do not understand code. So, UML becomes essential to communicate with
non-programmers’ essential requirements, functionalities and processes of the system.
A lot of time is saved down the line when teams are able to visualize processes, user
interactions and static structure of the system.
UML Diagrams
UML can be used to construct nine different types of diagrams to capture five different
views of a system. Just as a building can be modelled from several views (or perspectives)
such as ventilation perspective, electrical perspective, lighting perspective, heating
perspective, etc.; the different UML diagrams provide different perspectives of the software
system to be developed and facilitate a comprehensive understanding of the system. Such
models can be refined to get the actual implementation of the system.
The UML diagrams can capture the following five views of a system:
• User’s view
• Structural view
• Behavioural view
• Implementation view
• Environmental view
User’s view: This view defines the functionalities (facilities) made available by the system to
its users. The users’ view captures the external users’ view of the system in terms of the
functionalities offered by the system. The users’ view is a black-box view of the system
where the internal structure, the dynamic behaviour of different system components, the
implementation etc. are not visible. The users’ view is very different from all other views in
the sense that it is a functional model compared to the object model of all other views. The
users’ view can be considered as the central view and all other views are expected to conform
to this view. This thinking is in fact the crux of any user centric development style.
Structural view: The structural view defines the kinds of objects (classes) important to the
understanding of the working of a system and to its implementation. It also captures
relationships among the classes (objects). The structural model is also called the static model,
since the structure of a system does not change with time.
Behavioural view: The behavioural view captures how objects interact with each other to
realize the system behaviour. The system behaviour captures the time-dependent (dynamic)
behaviour of the system.
Implementation view: This view captures the important components of the system and their
dependencies.
Environmental view: This view models how the different components are implemented on
different pieces of hardware.
Different diagrams
– Use case diagrams
– Class diagrams
– Object diagrams
– Sequence diagrams
– Collaboration diagrams
– State chart diagrams
– Activity diagrams
– Component diagrams
– Deployment diagrams
9. Use case diagrams
A use case diagram is a dynamic or behaviour diagram in UML. Use case diagrams model
the functionality of a system using actors and use cases. Use cases are a set of actions,
services, and functions that the system needs to perform. In this context, a "system" is
something being developed or operated, such as a web site. The "actors" are people or entities
operating under defined roles within the system.
A use case diagram at its simplest is a representation of a user's interaction with the system
that shows the relationship between the user and the different use cases in which the user is
involved. A use case diagram can identify the different types of users of a system and the
different use cases and will often be accompanied by other types of diagrams as well. The use
cases are represented by either circles or ellipses.
It is a behaviour that is divided into one or more actions. Activities are a network of nodes
connected by edges. There can be action nodes, control nodes, or object nodes. Action nodes
represent some action. Control nodes represent the control flow of an activity. Object nodes
are used to describe objects used inside an activity. Edges are used to show a path or a flow
of execution. Activities start at an initial node and terminate at a final node.
If a partition cannot be shown clearly, then the name of a partition is written on top of the
name of an activity.
Initial states: The starting stage before an activity takes place is depicted as the initial
state
Final states: The state which the system reaches when a specific process ends is
known as a Final State
State or an activity box:
Decision box: It is a diamond shape box which represents a decision with alternate
paths. It represents the flow of control.
ACTIVITY DIAGRAM OF PROJECT
12. Sequence diagrams
A Sequence Diagram is a diagram that shows the interaction among objects as a two-
dimensional chart. The chart is read from top to bottom. Sequence Diagrams are interaction
diagrams that detail how operations are carried out. They capture the interaction between
objects in the context of a collaboration. Sequence Diagrams are time focus and they show
the order of the interaction visually by using the vertical axis of the diagram to represent
time what messages are sent and when.
Actor
a type of role played by an entity that interacts with the subject (e.g., by exchanging
signals and data)
external to the subject (i.e., in the sense that an instance of an actor is not a part of the
instance of its corresponding subject).
represent roles played by human users, external hardware, or other subjects
Lifeline
A lifeline represents an individual participant in the Interaction.
Activations
A thin rectangle on a lifeline) represents the period during which an element is
performing an operation.
The top and the bottom of the of the rectangle are aligned with the initiation and the
completion time respectively
Call Message
A message defines a particular communication between Lifelines of an Interaction.
Call message is a kind of message that represents an invocation of operation of target
lifeline.
State chart diagrams provide us an efficient way to model the interactions or communication
that occur within the external entities and a system. These diagrams are used to model the
event-based system. A state of an object is controlled with the help of an event.
State chart diagrams are used to describe various states of an entity within the application
system.
Following are the various notations that are used throughout the state chart diagram. All these
notations, when combined, make up a single diagram.
Initial state
The initial state symbol is used to indicate the beginning of a state machine diagram.
Final state
Decision box
It contains a condition. Depending upon the result of an evaluated guard condition, a new
path is taken for program execution.
Transition
A transition is a change in one state into another state which is occurred because of some
event. A transition causes a change in the state of an object.
State box
It is denoted using a rectangle with round corners. The name of a state is written inside the
rounded rectangle.
The name of a state can also be placed outside the rectangle. This can be done in case of
composite or submachine states. One can either place the name of a state within the rectangle
or outside the rectangle in a tabular box. One cannot perform both at the same time.
A state can be either active or inactive. When a state is in the working mode, it is active, as
soon as it stops executing and transits into another state, the previous state becomes inactive,
and the current state becomes active.
Types of State
Simple state
o They do not have any substrate.
Composite state
o These types of states can have one or more than one substrate.
o A composite state with two or more sub states is called an orthogonal state.
Submachine state
o These states are semantically equal to the composite states.
o Unlike the composite state, we can reuse the submachine states.
STATE DIAGRAM OF PROJECT
14. Collaboration diagrams
A Collaboration Diagram is required to identify how various objects make up the entire
system. They are used to understand the object architecture within a system rather than the
flow of a message in a sequence diagram. An object an entity that has various attributes
associated with it. It is a concept of object-oriented programming. There are multiple objects
present inside an object-oriented system where each object can be associated with any other
object inside the system. Collaboration or communication diagrams are used to explore the
architecture of objects inside the system. The message flow between the objects can be
represented using a collaboration diagram.
Data-flow diagrams are a useful and intuitive way of describing a system. They are generally
understandable without specialized training, notably if control information is excluded. They
show end-to-end processing. That is the flow of processing from when data enters the system
to where it leaves the system can be traced.
Data-flow design is an integral part of several design methods, and most CASE tools support
data-flow diagram creation. Different ways may use different icons to represent data-flow
diagram entities, but their meanings are similar .
Data Dictionaries
A data dictionary lists all data elements appearing in the DFD model of a system. The data
items listed contain all data flows and the contents of all data stores looking on the DFDs in
the DFD model of a system.
A data dictionary lists the objective of all data items and the definition of all composite data
elements in terms of their component data items. For example, a data dictionary entry may
contain that the data grossPay consists of the parts regularPay and overtimePay.
For the smallest units of data elements, the data dictionary lists their name and their type.
A data dictionary plays a significant role in any software development process because of the
following reasons:
o A Data dictionary provides a standard language for all relevant information for use by
engineers working in a project. A consistent vocabulary for data items is essential
since, in large projects, different engineers of the project tend to use different terms to
refer to the same data, which unnecessarily causes confusion.
o The data dictionary provides the analyst with a means to determine the definition of
various data structures in terms of their component elements.
Structured Charts
It partitions a system into block boxes. A Black box system that functionality is known to the
user without the knowledge of internal design. Structure Chart represent hierarchical
structure of modules. It breaks down the entire system into lowest functional modules,
describe functions and sub-functions of each module of a system to a greater detail. Structure
Chart partitions the system into black boxes (functionality of the system is known to the users
but inner details are unknown). Inputs are given to the black boxes and appropriate outputs
are generated.
Modules at top level called modules at low level. Components are read from top to bottom
and left to right. When a module calls another, it views the called module as black box,
passing required parameters and receiving results.
It has 3 main parts afferent branch, control branch and efferent branch.
For three product categories, Bohme provides a different set of expression to predict effort (in
a unit of person month) and development time from the size of estimation in KLOC (Kilo
Line of code) efforts estimation takes into account the productivity loss due to holidays,
weekly off, coffee breaks, etc. According to Boehm, software cost estimation should be done
through three stages:
According to Boehm, software cost estimation should be done through three stages:
1. Basic Model
2. Intermediate Model
3. Detailed Model
1. Basic COCOMO Model: The basic COCOMO model provide an accurate size of the
project parameters. The following expressions give the basic COCOMO estimation model:
Effort=a1*(KLOC) a2 PM
Tdev=b1*(efforts)b2 Months
Where
KLOC is the estimated size of the software product indicate in Kilo Lines of Code,
a1, a2, b1, b2 are constants for each group of software products,
Effort is the total effort required to develop the software product, expressed in person
months (PMs).
For the three classes of software products, the formulas for estimating the effort based on the
code size are shown below:
For the three classes of software products, the formulas for estimating the development time
based on the effort are given below:
Some insight into the basic COCOMO model can be obtained by plotting the estimated
characteristics for different software sizes. Fig shows a plot of estimated effort versus product
size. From fig, we can observe that the effort is somewhat superliner in the size of the
software product. Thus, the effort required to develop a product increases very rapidly with
project size.
The development time versus the product size in KLOC is plotted in fig. From fig it can be
observed that the development time is a sub linear function of the size of the product, i.e.
when the size of the product increases by two times, the time to develop the product does not
double but rises moderately. This can be explained by the fact that for larger products, a
larger number of activities which can be carried out concurrently can be identified. The
parallel activities can be carried out simultaneously by the engineers. This reduces the time to
complete the project. Further, from fig, it can be observed that the development time is
roughly the same for all three categories of products. For example, a 60 KLOC program can
be developed in approximately 18 months, regardless of whether it is of organic,
semidetached, or embedded type.
From the effort estimation, the project cost can be obtained by multiplying the required effort
by the manpower cost per month. But, implicit in this project cost computation is the
assumption that the entire project cost is incurred on account of the manpower cost alone. In
addition to manpower cost, a project would incur costs due to hardware and software required
for the project and the company overheads for administration, office space, etc.
It is important to note that the effort and the duration estimations obtained using the
COCOMO model are called a nominal effort estimate and nominal duration estimate. The
term nominal implies that if anyone tries to complete the project in a time shorter than the
estimated duration, then the cost will increase drastically. But, if anyone completes the
project over a longer period of time than the estimated, then there is almost no decrease in the
estimated cost value.
2. Intermediate Model: The basic Cocomo model considers that the effort is only a function
of the number of lines of code and some constants calculated according to the various
software systems. The intermediate COCOMO model recognizes these facts and refines the
initial estimates obtained through the basic COCOMO model by using a set of 15 cost drivers
based on various attributes of software engineering.
Hardware attributes -
Personnel attributes -
o Analyst capability
o Software engineering capability
o Applications experience
o Virtual machine experience
o Programming language experience
Project attributes -
3. Detailed COCOMO Model: Detailed COCOMO incorporates all qualities of the standard
version with an assessment of the cost drivers effect on each method of the software
engineering process. The detailed model uses various effort multipliers for each cost driver
property. In detailed cocomo, the whole software is differentiated into multiple modules, and
then we apply COCOMO in various modules to estimate effort and then sum the effort.
Q. Assuming that the size of your project is 200 KLOC. The system is organic. Two pools of
developers are there. The first pool is highly capable but less experienced in the language being
used. The second pool has low-quality developers but experience in the language being used.
Find out the impact of hiring one or another pool. (use intermediate COCOMO model).
Git is used to store the source code for a project and track the complete history of all changes
to that code. It allows developers to collaborate on a project more effectively by providing
tools for managing possibly conflicting changes from multiple developers. GitHub allows
developers to change, adapt and improve software from its public repositories for free, but it
charges for private repositories, offering various paid plans. Each public or private repository
contains all of a project's files, as well as each file's revision history. Repositories can have
multiple collaborators and can be either public or private.
GitHub facilitates social coding by providing a web interface to the Git code repository and
management tools for collaboration. GitHub can be thought of as a serious social
networking site for software developers. Members can follow each other, rate each other's
work, receive updates for specific projects and communicate publicly or privately.
Three important terms used by developers in GitHub are fork, pull request and merge.
A fork, also known as a branch, is simply a repository that has been copied from one
member's account to another member's account. Forks and branches allow a developer to
make modifications without affecting the original code. If the developer would like to share
the modifications, she can send a pull request to the owner of the original repository. If, after
reviewing the modifications, the original owner would like to pull the modifications into the
repository, she can accept the modifications and merge them with the original repository.
Commits are, by default, all retained and interleaved onto the master project, or can be
combined into a simpler merge via commit squashing.
How to use GitHub?
Because GitHub is so intuitive to use and its version-control tools are so useful for
collaboration, nonprogrammers have also begun to use GitHub to work on document-based
and multimedia projects. GitLab is an open source alternative to GitHub.
GitHub offers an on-premises version in addition to the well-known SaaS product. GitHub
Enterprise supports integrated development environments and continuous integration tool
integration, as well as a litany of third-party apps and services. It offers increased security
and auditability than the SaaS version.
GitHub Gist allows GitHub users to share pieces of code or other notes.
GitHub Pages are static webpages to host a project, pulling information directly from an
individual's or organization's GitHub repository.
GitHub Desktop enables users to access GitHub from Windows or Mac desktops, rather
than going to GitHub's website.
GitHub Student Developer Pack is a free offering of developer tools that is limited to
students, and includes cloud resources, programming tools and support, and GitHub
access.
Bitbucket
Bitbucket is our Git repository management solution designed for professional teams. It gives
you a central place to manage git repositories, collaborate on your source code and guide you
through the development flow. It provides awesome features that include:
We offer three deployments options for Bitbucket. For an understanding of the basic
differences between these deployment options, you can read our Pros and Cons of Cloud vs.
Server or this article about Server vs. Data Centre.
Hence, the three deployment of Bitbucket offers different features that are summarized in
this features comparison matrix:
Bitbucket Cloud is hosted on Atlassian's servers and accessed via a URL. Bitbucket
Cloud has an exclusive built-in continuous integration tool, Pipelines, that enables you to
build, test and deploy from directly within Bitbucket. You can learn more about Pipelines
features and capabilities here. However, there are some restricted functions in Atlassian Cloud
apps.
Bitbucket Server is hosted on-premise, in your environment. Bitbucket Server does not come
with a built-in testing and deployment tool, but it has strong integrations with Bamboo, our
powerful continuous integration and continuous delivery tool that allows you to completely
automate your build processes. There are also more apps available than for Cloud, and the
license is perpetual.
Bitbucket Data Centre (our Enterprise offering) looks like a single instance of Bitbucket
Server to users, but it is hosted on a number of servers in a cluster on your environment. This
provides important benefits over Bitbucket Server:
Performance at scale: A cluster of many machines running Bitbucket Server can handle more
load than a single machine.
High Availability: If one cluster node goes down, then the remaining cluster node(s) can
continue servicing requests so users should see little or no loss of availability.
Smart mirroring: Smart Mirroring can improve Git clone speeds for distributed teams working
with large repositories.