You are on page 1of 9

The final report of Introduction to Software

Engineering

Software
Software is a set of instructions that tell a computer what to do. Software comprises the entire set
of programs, procedures, and routines associated with the operation of a computer system. The
term was coined to differentiate these instructions from hardware—i.e., the physical components
of a computer system. A set of instructions that directs a computer’s hardware to perform a task
is called a program, or software program.

The two main types of software are system software and application software. System software
controls a computer’s internal functioning, chiefly through an operating system, and also controls
such peripherals as monitors, printers, and storage devices. Application software, by contrast,
directs the computer to execute commands given by the user and may be said to include any
program that processes data for a user. Application software thus includes word processors,
spreadsheets, database management, inventory and payroll programs, and many other
“applications.” A third software category is that of network software, which coordinates
communication between the computers linked in a network.

Software is typically stored on an external long-term memory device, such as a hard drive or
magnetic diskette. When the program is in use, the computer reads it from the storage device and
temporarily places the instructions in random access memory (RAM). The process of storing and
then performing the instructions is called “running,” or “executing,” a program. By contrast,
software programs and procedures that are permanently stored in a computer’s memory using a
read-only (ROM) technology are called firmware, or “hard software.”

Software engineering
Software engineering is a detailed study of engineering to the design, development and
maintenance of software. Software engineering was introduced to address the issues of low-
quality software projects. Problems arise when a software generally exceeds timelines, budgets,
and reduced levels of quality. It ensures that the application is built consistently, correctly, on
time and on budget and within requirements. The demand of software engineering also emerged
to cater to the immense rate of change in user requirements and environment on which
application is supposed to be working.
Software engineering generally begins with the first step as a user-request initiation for a specific
task or an output. He submits his requirement to a service provider organization. The software
development team segregates user requirement, system requirement and functional requirements.
The requirement is collected by conducting interviews of a user, referring to a database, studying
the existing system etc. After requirement gathering, the team analyses if the software can be
made to fulfil all the requirements of the user. The developer then decides a roadmap of his plan.
System analysis also includes an understanding of software product limitations. As per the
requirement and analysis, a software design is made. The implementation of software design
starts in terms of writing program code in a suitable programming language. 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, product testing, in-house testing
and testing the product at user’s engagement and feedback.

Objectives of Software Engineering: 

1. Maintainability – 
It should be feasible for the software to evolve to meet changing requirements.
2. Efficiency – 
The software should not make wasteful use of computing devices such as memory,
processor cycles, etc.
3. Correctness – 
A software product is correct if the different requirements as specified in the SRS
document have been correctly implemented.
4. Reusability – 
A software product has good reusability if the different modules of the product can easily
be reused to develop new products.
5. Testability – 
Here software facilitates both the establishment of test criteria and the evaluation of the
software with respect to those criteria.
6. Reliability – 
It is an attribute of software quality. The extent to which a program can be expected to
perform its desired function, over an arbitrary time period.
7. Portability – 
In this case, the software can be transferred from one computer system or environment to
another.
8. Adaptability – 
In this case, the software allows differing system constraints and the user needs to be
satisfied by making changes to the software.
9. Interoperability – Capability of 2 or more functional units to process data cooperatively.

Big data
Big data is a collection of massive and complex data sets and data volume that include the huge
quantities of data, data management capabilities, social media analytics and real-time data. Big
Data analytics examples includes stock exchanges, social media sites, jet engines, etc. Big data
analytics is the process of examining large amounts of data. There exist large amounts of
heterogeneous digital data. Big data is about data volume and large data set's measured in terms
of terabytes or petabytes. This phenomenon is called Bigdata. After examining of Bigdata, the
data has been launched as Big Data analytics. In this paper, presenting the 5Vs characteristics of
big data and the technique and technology used to handle big data.
The challenges include capturing, analysis, storage, searching, sharing, visualization, transferring
and privacy violations. It can neither be worked upon by using traditional SQL queries nor can
the relational database management system (RDBMS) be used for storage. Though, a wide
variety of scalable database tools and techniques has evolved. Hadoop is an open source
distributed data processing is one of the prominent and well known solutions. The NoSQL has a
non-relational database with the likes of MongoDB from Apache.

Again, Big Data could be 1) Structured, 2) Unstructured or 3) Semi-structured. Few Big Data
characteristics are Volume, Variety, Velocity, and Variability. And Improved customer service,
better operational efficiency, Better Decision Making e.t.c. are few advantages of Big data.

Cloud Computing
Cloud Computing is the delivery of computing services such as servers, storage, databases,
networking, software, analytics, intelligence, and more, over the Cloud (Internet). It provides an
alternative to the on-premises data center. With an on-premises data center. we have to manage
everything, such as purchasing and installing hardware, virtualization, installing the operating
system, and any other required applications, setting up the network, configuring the firewall, and
setting up storage for data. After doing all the set-up, we become responsible for maintaining it
through its entire lifecycle. But, if we choose Cloud Computing, a cloud vendor is responsible
for the hardware purchase and maintenance. They also provide a wide variety of software and
platform as a service. We can take any required services on rent. The cloud computing services
will be charged based on usage.

Advantages of cloud computing


Cost: It reduces the huge capital costs of buying hardware and software.
Speed: Resources can be accessed in minutes, typically within a few clicks.
Scalability: We can increase or decrease the requirement of resources according to the business
requirements.
Productivity: While using cloud computing, we put less operational effort
Reliability: Backup and recovery of data are less expensive and very fast for business
continuity.
Security: Many cloud vendors offer a broad set of policies, technologies, and controls that
strengthen our data security.
Types of Cloud Computing
Public Cloud: The cloud resources that are owned and operated by a third-party cloud service
provider are termed as public clouds.
Private Cloud: The cloud computing resources that are exclusively used inside a single business
or organization are termed as a private cloud.
Hybrid Cloud: It is the combination of public and private clouds, which is bounded together by
technology that allows data applications to be shared between them.
Types of Cloud Services
Infrastructure as a Service (IaaS): In IaaS, we can rent IT infrastructures like servers and
virtual machines (VMs), storage, networks, operating systems from a cloud service vendor. We
can create VM running Windows or Linux and install anything we want on it
Platform as a Service (PaaS): This service provides an on-demand environment for developing,
testing, delivering, and managing software applications. The developer is responsible for the
application, and the PaaS vendor provides the ability to deploy and run it.
Software as a Service (SaaS): It provides a centrally hosted and managed software services to
the end-users. It delivers software over the internet, on-demand, and typically on a subscription
basis.

Artificial Intelligence
Artificial Intelligence is an approach to make a computer, a robot, or a product to think how
smart human think. AI is a study of how human brain think, learn, decide and work, when it tries
to solve problems. And finally this study outputs intelligent software systems.The aim of AI is to
improve computer functions which are related to human knowledge, for example, reasoning,
learning, and problem-solving.

The objectives of AI research are reasoning, knowledge representation, planning, learning,


natural language processing, realization, and ability to move and manipulate objects. There are
long-term goals in the general intelligence sector.

Approaches include statistical methods, computational intelligence, and traditional coding AI.
During the AI research related to search and mathematical optimization, artificial neural
networks and methods based on statistics, probability, and economics, we use many tools.
Computer science attracts AI in the field of science, mathematics, psychology, linguistics,
philosophy and so on.

Applications of AI

· Gaming − AI plays important role for machine to think of large number of possible positions
based on deep knowledge in strategic games. for example, chess,river crossing, N-queens
problems and etc.

· Natural Language Processing − Interact with the computer that understands natural language
spoken by humans.

· Expert Systems − Machine or software provide explanation and advice to the users.

· Vision Systems − Systems understand, explain, and describe visual input on the computer.
· Speech Recognition − There are some AI based speech recognition systems have ability to hear
and express as sentences and understand their meanings while a person talks to it. For example
Siri and Google assistant.

· Handwriting Recognition − The handwriting recognition software reads the text written on
paper and recognize the shapes of the letters and convert it into editable text.

· Intelligent Robots − Robots are able to perform the instructions given by a human.

Major Goals

 Knowledge reasoning

 Planning

 Machine Learning

 Natural Language Processing

 Computer Vision

 Robotic

software development process


In software engineering, a software development process (also known as a system
development methodology, software development life cycle, software development
methodology, software methodology) is a division of software development work into
distinct phases (or stages) containing activities with the intent of better planning and
management. It is often considered a subset of the systems development life cycle. The
methodology may include the pre-definition of specific deliverables and artifacts that are
created and completed by a project team to develop or maintain an application.

Common methodologies include waterfall, prototyping, iterative and incremental


development, spiral development, rapid application development, extreme programming and
various types of agile methodology. Some people consider a life-cycle “model” a more
general term for a category of methodologies and a software development “process” a more
specific term to refer to a specific process chosen by a specific organization. For example,
there are many specific software development processes that fit the spiral life-cycle model.

A variety of frameworks have evolved over the years, each with its own recognized strengths
and weaknesses. One software development methodology framework is not necessarily
suitable for use by all projects. Each of the available methodology frameworks are best suited
to specific kinds of projects, based on various technical, organizational, project and team
considerations.
Software development organizations implement process methodologies to ease the process of
development. Sometimes, contractors may require methodologies employed, an example is
the U.S. defense industry, which requires a rating based on process models to obtain
contracts. The international standard for describing the method of selecting, implementing
and monitoring the life cycle for software is ISO/IEC 12207.

Organizations may create a Software Engineering Process Group (SEPG), which is the focal
point for process improvement. Composed of line practitioners who have varied skills, the
group is at the center of the collaborative effort of everyone in the organization who is
involved with software engineering process improvement.

A particular development team may also agree to programming environment details, such as
which integrated development environment is used, and one or more dominant programming
paradigms, programming style rules, or choice of specific software libraries or software
frameworks. These details are generally not dictated by the choice of model or general
methodology.

Systems engineering
Systems engineering is a technique of using knowledge from various branches of engineering
and science to introduce technological innovations into the planning and development stages of a
system.
Systems engineering is not so much a branch of engineering as it is a technique for applying
knowledge from other branches of engineering and disciplines of science in effective
combination to solve a multifaceted engineering problem. It is related to operations research but
differs from it in that it is more a planning and design function, frequently involving technical
innovation. Probably the most important aspect of systems engineering is its application to the
development of new technological possibilities with the specific objective of putting them to use
as rapidly as economic and technical considerations permit. In this sense it may be seen as the
midwife of technological development.
The word “systems” is frequently used also in other combinations, especially when elements of
technological advance are not so important. Systems analysis is an example. Systems theory, or
sometimes systems science, is frequently applied to the analysis of physical dynamic systems.
An example would be a complex electrical network with one or more feedback loops, in which
the effects of a process return to cause changes in the source of the process.
In general, a systems engineering approach is likely to differ from a conventional design
approach by exhibiting increased generality in its basic logical framework and increased concern
with the fundamental objectives to be achieved. Thus, at each stage the systems engineer is likely
to ask both why and how, rather than merely how.
In addition to systems engineering, it is important to define systems themselves. The systems
with which a systems engineer is concerned are first of all man-made. Second, they are large and
complex; their component parts interact so extensively that a change in one part is likely to affect
many others. Unless there is such interaction, there is little for the systems engineer to do, at least
at the systems level; he can turn immediately to the components themselves. Another important
characteristic of systems is that their inputs are normally stochastic; that is, the inputs are
essentially random functions of time, although they may exhibit statistical regularities. Thus, one
cannot expect to foresee exactly what the system will be exposed to in actual operation, and its
performance must be evaluated as a statistical average of the responses to a range of possible
inputs. A calculation based on a single precisely defined input function will not do.

Requirement Engineering
Requirement Engineering is the process of defining, documenting and maintaining the
requirements. It is a process of gathering and defining service provided by the system.
Requirements Engineering Process consists of the following main activities:

 Requirements elicitation
 Requirements specification
 Requirements verification and validation
 Requirements management

Requirements Elicitation:
It is related to the various ways used to gain knowledge about the project domain and
requirements. The various sources of domain knowledge include customers, business manuals,
the existing software of same type, standards and other stakeholders of the project.
The techniques used for requirements elicitation include interviews, brainstorming, task analysis,
Delphi technique, prototyping, etc.

Requirements specification:
This activity is used to produce formal software requirement models. All the requirements
including the functional as well as the non-functional requirements and the constraints are
specified by these models in totality. During specification, more knowledge about the problem
may be required which can again trigger the elicitation process.

Requirements verification and validation:


Verification: It refers to the set of tasks that ensures that the software correctly implements a
specific function.
Validation: It refers to a different set of tasks that ensures that the software that has been built is
traceable to customer requirements.
The main steps for this process include:

 The requirements should be consistent with all the other requirements.


 The requirements should be complete in every sense.
 The requirements should be practically achievable.

Requirements management:
Requirement management is the process of analyzing, documenting, tracking, prioritizing and
agreeing on the requirement and controlling the communication to relevant stakeholders. This
stage takes care of the changing nature of requirements. It should be ensured that the SRS is as
modifiable as possible so as to incorporate changes in requirements specified by the end users at
later stages too. Being able to modify the software as per requirements in a systematic and
controlled manner is an extremely important part of the requirements engineering process.

Design Engineering
Design Engineering is basically the methodology used in the step by step analysis and design of
a any product or system. You get to understand the material aspect prior to the inception of
utility of software. You might be aware that material selection is the vital part for designing any
product. Then, you will get to understand the stress/strain aspects which act on the parts of a
component or existing ones. Also design engineering will include useful subjects such as
Research Methodology, Process planning and equipment, analysis of mechanisms, etc. which
gives you a detailed idea about the exact procedure and requirements for proper and efficient
design of a system or a product.

Some of the greatest human achievements have come from creative design engineering, allowing
the realisation of some truly remarkable change in our world. Design engineering has helped to
transform the environment, create incredible super-structures on land and sea, and even helped
people travel to, and live in, space (Figure 1).

At the same time some of the smallest designs have enabled the biggest steps in the progress of
humanity. The way people live has been changed by incremental advances in medicine, food
production and many of the materials and devices people use on a daily basis.

Design engineering has also developed many of the most important systems and services, from
individual right up to global and universal scales. These systems have supported radical scaling
up of human activity in a huge range of areas .

Design can be the fashionable, eye-catching products and images you probably think of. But
design is also the least noticeable (and often most important) services and systems. This course
will introduce you to some characteristics and drivers for design, some of which you might not
have come across before, and start to explore how data can be used to inform design decisions.

In simple word, Design engineering force student or provide a plate form for utilized thinking
and give a chance for convert imagination idea in physical or real object

so that the aware from real world, study world and find problem and also find out solution which
is useful economical and easy to make life joyful.
That’s All for my report.
Thanks for reading
I am sincerely grateful to
Associate professor
Tsu-Yang Wu
And
Teaching assistant
Ms. Xinglan Guo
(Master student)
For teaching us all of this.

You might also like