You are on page 1of 43

WOLKITE UNIVERSITY

COLLEGE OF COMPUTING AND INFORMATICS


DEPARTMENT OF SOFTWARE ENGINEERING
TITLE:- Group Assignment
Group Members
Name ID
Ambesaw Simachew 246/10
Sewmehon Aschenek 304/10
yeabisra Gesese 318/10
Tebarek Reshad 308/10
Desalegn Dana 262/10
Adugnaw Teshale 244/10

Wolkite University, Wolkite, Ethiopia

Submitted to: -Mr. Kuma


Friday, May 14, 2021
1. What is Software Engineering? State the difference between software
engineering and traditional engineering
 What is software engineering?

The term software engineering is the product of two words, software, and engineering.

The software is a collection of integrated programs.

Software subsists of carefully-organized instructions and code written by developers on


any of various particular computer languages.

Computer programs and related documentation such as requirements, design models and
user manuals. Engineering is the application of scientific and practical knowledge to
invent, design, build, maintain, and improve frameworks.

 Why is Software Engineering required?

Software Engineering is required due to the following reasons:

 To manage Large software


 For more Scalability

1
 Cost Management
 To manage the dynamic nature of software
 For better quality Management
 Need of Software Engineering

The necessity of software engineering appears because of a higher rate of progress in user
requirements and the environment on which the program is working.

 Huge Programming: It is simpler to manufacture a wall than to a house or


building, similarly, as the measure of programming become extensive
engineering has to step to give it a scientific process.
 Adaptability: If the software procedure were not based on scientific and
engineering ideas, it would be simpler to re-create new software than to scale
an existing one.
 Cost: As the hardware industry has demonstrated its skills and huge
manufacturing has let down the cost of computer and electronic hardware. But
the cost of programming remains high if the proper process is not adapted.
 Dynamic Nature: The continually growing and adapting nature of
programming hugely depends upon the environment in which the client works.
If the quality of the software is continually changing, new upgrades need to be
done in the existing one.
 Quality Management: Better procedure of software development provides a
better and quality software product .
 Characteristics of a good software engineer

The features that good software engineers should possess are as follows:

 Exposure to systematic methods, i.e., familiarity with software engineering


principles.
 Good technical knowledge of the project range (Domain knowledge).
 Good programming abilities.
 Good communication skills. These skills comprise of oral, written, and
interpersonal skills.

2
 Software Engineering Process:
 It is an engineering process which is mainly related to computers and
programming and developing different kinds of applications through the use
of information technology’s
 Traditional Engineering Process:
 It is an engineering process which is highly based on empirical knowledge
and is about building cars, machines and hardware
Difference between Software Engineering Process and Traditional Engineering Process:
S.No. Software Engineering Process traditional Engineering Process

Software Engineering Process is a process which traditional Engineering Process is a proces


majorly involves computer science, information which majorly involves science, mathematic
1. technology and discrete mathematics. and empirical knowledge.

It is mainly related with computers, programming and It is about building cars, machines, hardwar
2. writing codes for building applications. buildings etc.

In Software Engineering Process construction and In traditional Engineering Process constructio


3. development cost is low. and development cost is high.

It can involve the application of new and untested It usually applies only known and teste
4. elements in software projects. principles to meet product requirements.

In traditional Engineering Process, mo


development efforts are required to change ol
designs
In Software Engineering Process, most development It majorly emphasizes on mass production.
6. effort goes into building new designs and features. .

7. It majorly emphasize on quality.

3
Hardware and Software. Hardware refers to the physical and visible components of the
system such as a monitor, CPU, keyboard and mouse
2. Differentiate between the characteristics of Hardware and Software with real example

A computer system is divided into two categories:


Software, on the other hand, refers to a set of instructions which enable the hardware to
perform a specific set of tasks. The software must be installed in the hardware to function
properly and similarly; the hardware must be present for the tasks to be performed. Both
are interdependent, yet they are also different from each other.

Differences between Hardware and Software

Hardware Software

Hardware is further divided into four main Software is further divided into two main
categories: categories:

 Input Devices  Application Software


 Output Devices  System Software
 Secondary Storage Devices
 Internal Components

Developed using electronic and other Developed writing using instructions using a
materials programming language

When damaged, it can be replaced with a new When damaged it can be installed once more
component using a backup copy

Hardware is physical in nature and hence one The software cannot be physically touched
can touch and see hardware but still can be used and seen

Hardware cannot be infected by Viruses The software can be infected by Viruses

Hardware will physically wear out over time Software does not wear out but it can be
affected by bugs and glitches

An example of Hardware is hard drives, An example of software is Windows 10,


monitors, CPU, scanners, printers etc. Adobe Photoshop, Google Chrome etc.

4
3. Explain the waterfall model software development model in details.

The waterfall model is a classical model used in system development life cycle to create a system
with a linear and sequential approach. It is termed as waterfall because the model develops
systematically from one phase to another in a downward fashion

The Waterfall Model was the first Process Model to be introduced. It is also referred to as a linear-
sequential life cycle model. It is very simple to understand and use. In a waterfall model, each
phase must be completed before the next phase can begin and there is no overlapping in the
phases.
The Waterfall model is the earliest SDLC approach that was used for software development
 Waterfall Model - Design
Waterfall approach was first SDLC Model to be used widely in Software Engineering to ensure
success of the project. In "The Waterfall" approach, the whole process of software development
is divided into separate phases. In this Waterfall model, typically, the outcome of one phase acts
as the input for the next phase sequentially.
The following illustration is a representation of the different phases of the Waterfall

5
The sequential phases in Waterfall model are −
 Requirement Gathering and analysis − All possible requirements of the system to be
developed are captured in this phase and documented in a requirement specification
document.
 System Design − the requirement specifications from first phase are studied in this phase
and the system design is prepared. This system design helps in specifying hardware and
system requirements and helps in defining the overall system architecture.
 Implementation − with inputs from the system design, the system is first developed in
small programs called units, which are integrated in the next phase. Each unit is developed
and tested for its functionality, which is referred to as Unit Testing.
 Integration and Testing − All the units developed in the implementation phase are
integrated into a system after testing of each unit. Post integration the entire system is
tested for any faults and failures.
 Deployment of system − Once the functional and non-functional testing is done; the
product is deployed in the customer environment or released into the market.
Maintenance − There are some issues which come up in the client environment. To fix those
issues, patches are released. Also to enhance the product some better versions are released.
Maintenance is done to deliver these changes in the customer environment
4. State the merits and demerits of spiral model software development model.
 What is Spiral Model?
Spiral Model: - is a risk-driven software development process model. It is a combination of
waterfall model and iterative model.

Each phase of spiral model in software engineering begins with a design goal and ends with the
client reviewing the progress. The spiral model in software engineering was first mentioned by
Barry Boehm in his 1986 paper.

The development process in Spiral model in SDLC, starts with a small set of requirement and goes
through each development phase for those set of requirements. The software engineering team
adds functionality for the additional requirement in every-increasing spirals until the application
is ready for the production phase.

6
Spiral Model Advantages and Disadvantages

Advantages Disadvantages

 Additional functionality or changes  Risk of not meeting the schedule or


can be done at a later stage budget

 Cost estimation becomes easy as the  Spiral development works best for
prototype building is done in small large projects only also demands risk
fragments assessment expertise

 Continuous or repeated development  For its smooth operation spiral model


helps in risk management protocol needs to be followed strictly

 Development is fast and features are  Documentation is more as it has


added in a systematic way in Spiral intermediate phases
development

7
 There is always a space for customer  Spiral software development is not
feedback advisable for smaller project, it might
cost them a lot

5. Discuss the software engineering practices for both software product and for
software development (process – software to use and after software product
delivered).

 The Software Practice is a technology company based in Singapore that builds software
applications for clients as well as for its own business. Our core strength is in building
large and complex web and mobile applications. We’re a full service development firm
who’ve launched several products working with clients from an idea to a prototype to
production with real world users
 The Software Practice is a Singapore based technology development firm that builds
software for clients and its own business. Our core strength is in developing large and
complex web and mobile applications by architecting and implementing robust, scalable
and performant software
The software engineering best practice such as
 Develop iterative
 Control change
 Verify quality
 Mange requirement
 Model software visually
 Use component architecture
Software development is the process of conceiving, specifying ,designing, programming,
, documenting, testing, and bug fixing involved in creating and
maintaining applications, frameworks, or other software components. Software development is a
process of writing and maintaining the source code, but in a broader sense, it includes all that is
involved between the conception of the desired software through to the final manifestation of the
software, sometimes in a planned and structured process. Therefore, software development may
include research, new development, prototyping, modification, reuse, re-engineering,
maintenance, or any other activities that result in software products

Software Products are nothing but software systems delivered to the customer with the
documentation that describes how to install and use the system. In certain cases, software
products may be part of system products where hardware, as well as software, is delivered to a

8
customer. Software products are produced with the help of the software process. The software
process is a way in which we produce software.
 Types of software products:
Software products fall into two broad categories:
 Generic products:
 Generic products are stand-alone systems that are developed by a production unit
and sold on the open market to any customer who is able to buy them.
 Customized Products:
 Customized products are the systems that are commissioned by a particular
customer. Some contractor develops the software for that customer
 Essential characteristics of Well-Engineered Software Product:
 A well-engineered software product should possess the following essential
characteristics:
 Efficiency:
 The software should not make wasteful use of system resources such as memory
and processor cycles.
 Maintainability:
 It should be possible to evolve the software to meet the changing requirements of
customers.
 Dependability:
 It is the flexibility of the software that ought to not cause any physical or economic
injury within the event of system failure. It includes a range of characteristics
such as reliability, security, and safety.
 In time:
 Software should be developed well in time.
 Within Budget:
 The software development costs should not overrun and it should be within the
budgetary limit.
 Functionality:
 The software system should exhibit the proper functionality, i.e. it should perform
all the functions it is supposed to perform.
 Adaptability:
 The software system should have the ability to get adapted to a reasonable extent
with the changing requirements

Software engineering process is the model chosen for managing the creation of software from
initial customer inception to the release of the finished product. The chosen process usually
involves techniques such as
• Analysis,
• Design,

9
• Coding,
• Testing
• Maintenance
Several different process models exist and vary mainly in the frequency, application and
implementation of the above techniques, for example, different process models use different
analysis techniques, other models attempt to implement the solution to a problem in one big-
bang approach, while others adopt an iterative approach whereby successively larger and more
complete versions of the software are built with each iteration of the process model
.

 The Software Engineering Process - The Software Life Cycle


The illustration below highlights the various phases of what is probably the oldest software
development process in existence, namely the classic life-cycle paradigm, sometimes called
the "waterfall model, “This paradigm implies a systematic, sequential approach (rarely
achieved in practice) to software development that begins at the system level and progresses
through analysis, design, coding, testing and maintenance.
6. Differentiate software methodology, software tools and software procedures and give
example for each of them
Software development methodology is a process or series of processes used
in software development. It is designed to describe the how of the life cycle of a piece of software.
It is also codified communication. software development methodology or system development
methodology in software engineering is a framework that is used to structure, plan, and control the
process of developing an information system. Every software development methodology
framework acts as a basis for applying specific approaches to develop and maintain software.
Several software development approaches have been used since the origin of information
technology. These are: [2]

 Waterfall: a linear framework


 Prototyping: an iterative framework
 Incremental: a combined linear-iterative framework
 Spiral: a combined linear-iterative framework
 Rapid application development (RAD): an iterative framework
 Extreme Programming
 Waterfall development
The Waterfall model is a sequential development approach, in which development is seen as
flowing steadily downwards (like a waterfall) through the phases of requirements analysis, design,
implementation, testing (validation), integration, and maintenance. The first formal description of
the method is often cited as an article published by Winston W. Royce [3] in 1970 although Royce
did not use the term "waterfall" in this article.

10
 The basic principles are:[2]

 Project is divided into sequential phases, with some overlap and splash back acceptable
between phases.
 Emphasis is on planning, time schedules, target dates, budgets and implementation of an entire
system at one time.
 Tight control is maintained over the life of the project via extensive written documentation,
formal reviews, and approval/signoff by the user and information technology management
occurring at the end of most phases before beginning the next phase.
 Prototyping
Software prototyping, is the development approach of activities during software development, the
creation of prototypes, i.e., incomplete versions of the software program being developed.
 The basic principles are:

 Not a standalone, complete development methodology, but rather an approach to handling


selected parts of a larger, more traditional development methodology (i.e. incremental, spiral,
or rapid application development (RAD)).
 Attempts to reduce inherent project risk by breaking a project into smaller segments and
providing more ease-of-change during the development process.
 User is involved throughout the development process, which increases the likelihood of user
acceptance of the final implementation.
 Small-scale mock-ups of the system are developed following an iterative modification process
until the prototype evolves to meet the users’ requirements.
 While most prototypes are developed with the expectation that they will be discarded, it is
possible in some cases to evolve from prototype to working system.
 A basic understanding of the fundamental business problem is necessary to avoid solving the
wrong problem.
 Incremental development
Various methods are acceptable for combining linear and iterative systems development
methodologies, with the primary objective of each being to reduce inherent project risk by breaking
a project into smaller segments and providing more ease-of-change during the development
process.
 The basic principles are:[2]

 A series of Mini-Waterfalls are performed, where all phases of the Waterfall are completed
for a small part of a system, before proceeding to the next increment, or
 Overall requirements are defined before proceeding to evolutionary, Mini-Waterfall
development of individual increments of a system, or
 The initial software concept, requirements analysis, and design of architecture and system core
are defined via Waterfall, followed by iterative Prototyping, which culminates in installing the
final prototype, a working system.
Spiral development

11
 The spiral model.
The spiral model is a software development process combining elements of both design and
prototyping-in-stages, in an effort to combine advantages of top-down and bottom-up concepts.
The basic principles are:[2]

 Focus is on risk assessment and on minimizing project risk by breaking a project into smaller
segments and providing more ease-of-change during the development process, as well as
providing the opportunity to evaluate risks and weigh consideration of project continuation
throughout the life cycle.
 "Each cycle involves a progression through the same sequence of steps, for each part of the
product and for each of its levels of elaboration, from an overall concept-of-operation
document down to the coding of each individual program."[4]
 Each trip around the spiral traverses four basic quadrants: (1) determine objectives,
alternatives, and constraints of the iteration; (2) evaluate alternatives; Identify and resolve
risks; (3) develop and verify deliverables from the iteration; and (4) plan the next iteration. [4][5]
 Begin each cycle with an identification of stakeholders and their win conditions, and end each
cycle with review and commitment. [6]
Rapid application development[edit | edit source]
Rapid application development (RAD) is a software development methodology, which involves
iterative development and the construction of prototypes. Rapid application development is a term
originally used to describe a software development process introduced by James Martin in 1991.
The basic principles are:[2]

 Key objective is for fast development and delivery of a high quality system at a relatively low
investment cost.
 Attempts to reduce inherent project risk by breaking a project into smaller segments and
providing more ease-of-change during the development process.
 Aims to produce high quality systems quickly, primarily via iterative Prototyping (at any stage
of development), active user involvement, and computerized development tools. These tools
may include Graphical User Interface (GUI) builders, Computer Aided Software Engineering
(CASE) tools, Database Management Systems (DBMS), fourth-generation programming
languages, code generators, and object-oriented techniques.

12
 Key emphasis is on fulfilling the business need, while technological or engineering excellence
is of lesser importance.
 Project control involves prioritizing development and defining delivery deadlines or “time
boxes”. If the project starts to slip, emphasis is on reducing requirements to fit the time box,
not in increasing the deadline.
 Generally, includes joint application design (JAD), where users are intensely involved in
system design, via consensus building in either structured workshops, or electronically
facilitated interaction.
 Active user involvement is imperative.
 Iteratively produces production software, as opposed to a throwaway prototype.
 Produces documentation necessary to facilitate future development and maintenance.
 Standard systems analysis and design methods can be fitted into this framework.
Software tools: -A software tool is a program that automates some of the labor involved in the
management, design, coding, testing, inspection, or maintenance of other programs. Commercially
available tools range in size and complexity from simple aids for individual programmers and end
users to complex tools that can support many software projects simultaneously. The following are
some common tools: Preprocessors-Preprocessors perform preliminary work on a draft computer
program before it is completely tested on the computer. Types of preprocessors include filters (also
known as code auditors), which allow management to determine quickly whether programmers
are adhering to specifications and standards, and shorthand preprocessors, which allow
programmers and end users to write the programs in an abbreviated form that is then expanded by
the preprocessor before it is tested on the computer. Shorthand preprocessors reduce writing,
keypunching, and proofreading effort. Programmer or user support libraries-These automated
filing systems can support the programming development projects of entire installations. Such a
support library maintains files of draft programs, data, and documentation and can be used to
provide management with progress reports. Program analyzers-These tools modify or monitor the
operation of an applications program to allow information about its operating characteristics to be
collected automatically. This information can then be used to help modify the program to reduce
its run cost or to verify that the program operates correctly. Online programming support
programs-These tools enable programmers and users to quickly correct and modify applications
programs and test program results. Test data generators-These tools analyze a program and
produce files of data needed to test the logic of the program.
Soft techniques: - Soft$&e techniques are methods or procedures for designing, developing,
documenting, and maintaining programs, or for managing these activities. There are generally two
types of software techniques: those used by personnel who work on programs and those used by
managers to control the work. Examples of software techniques useful to workers include:
Structured Programming-Developing programs in a certain style with standard constructs so that
they will be more easily understood by others who must later maintain and modify them, which
facilitates documentation, testing, and correction.
Software Development Tools that will make you more productive
 GitHub. The world's leading software development platform. ...
 Git. ...

13
 GitLab. ...
 IntelliJ IDEA. ...
 Stack Overflow. ...
 Docker. ...
 Jira. ...
 Jenkins
7. What is the role of Software Requirements Specification in Software Engineering?
A software requirements specification (SRS) is a description of a software system to be developed.
Used appropriately, software requirements specifications can help prevent software project
failure. The software requirements specification document lists sufficient and
necessary requirements for the project development
It defines functional and non-functional requirement. It eliminates any confusion or
misunderstanding on initial stage. It reduces development effort. It reduces the chances
of requirement creep
A software requirements specification is the basis for your entire project. It lays the framework
that every team involved in development will follow. It's used to provide critical information to
multiple teams — development, quality assurance, operations, and maintenance. A software
requirements specification is a document that describes requirements for a software product,
program or set of programs.
8. Briefly explain Software Requirements Specification and Business Requirements
Specification?
 Software Requirements Specification
Requirement Specification (SRS) is a descriptive note about the software that is under
development. It is documented by the developer of the software for the clients and users and
describes the purpose of the software. It gives a detailed overview of the software product, its
parameters and goals.
A software requirements specification (SRS) is a description of a software system to be developed.
It is modeled after business requirements specification (CONOPS), also known as a stakeholder
requirements specification (StRS). The software requirements specification lays out functional and
non-functional requirements, and it may include a set of use cases that describe user interactions
that the software must provide to the user for perfect interaction.

Some briefly clean definition of SRS:


 SRS is the detailed description of a software product to be developed.
 It traces out the functional and non-functional requirements of the product.

14
 It includes the set of use cases that describe interactions of users
 Moreover, it establishes the basis for an agreement between clients and suppliers.
 Hence it provides a realistic basis for estimating product costs, schedules and risks.
 Here, we enlist necessary requirements required for the product development.
 Business Requirements Specification?
Use this Business Requirements Specification to: Establish what needs to change in order for
the business to achieve its objectives Determine what information is needed to support the
organization’s business activities and to measure its performance Define the requirements for
change at a high-level
Business requirements, also known as stakeholder requirements specifications (StRS), describe
the characteristics of a proposed system from the viewpoint of the system's end user like a
CONOPS. Products, systems, software, and processes are ways of how to deliver, satisfy, or meet
business requirements. Consequently, business requirements are often discussed in the context of
developing or procuring software or other systems
Business requirements in the context of software engineering or the software development life
cycle, is the concept of eliciting and documenting business requirements of business users such as
customers, employees, and vendors early in the development cycle of a system to guide the design
of the future system. Business requirements are often captured by business analysts, who analyze
business activities and processes, and often study "as-is" process to define a target "to-be" process.
9. What is the use of a change management system for tracking software defect?

Change management tools are pieces of software that companies use during periods of
organizational change to make the process as smooth and seamless as possible for employees,
managers, and customers. Of course, just as there are different types of organizational change,
there are also many different types of change management tools.
Finding the right tool will partly depend on what type of change you’re implementing and where
in the change management cycle you are. For example, if you recently split a large department into
several small departments, you might want a feedback tool to survey your teams and see how you
can make each department run more smoothly.
Empower your IT Operations Teams with Richer Contextual Information to Minimize
Risks. Jira Service Management Empowers Dev & Ops Teams to Deliver Value Fast. Start
Free Today. Transparent Pricing. 25% Fewer Tickets. For High-Velocity Teams
10. What is revision management and its role in software development?

Revision control manages changes: - to a set of data over time. These changes can be structured
in various ways. Often the data is thought of as a collection of many individual items, such as files

15
or documents, and changes to individual files are tracked. A look at how a code revision control
tool can help keep automation project development efficient and organize.
To make change management easy you need a simple method of tracking, evaluating and recording
changes. This can be a simple database or log but in large projects it has evolved into a customized
information system in its own right.
As such the system needs to be able to handle:
Logging requests for changes against products and documentation Recording and managing the
priority of a particular change Logging the decision of a change management authority Recording
the method and implementation of change. Tracking implemented changes against a particular
version of the product or document
In many projects the change management system can be linked to (or is part of) a defect tracking
system. Since resolution of a defect is, in effect, a request for change both can often be handled by
the same system. The change and defect tracking system can also be linked with version control
software to form what is commonly known as a Software Configuration Management (SCM)
system. This integrated system directly references changes in the software against specific versions
of the product or system as contained in its version control system. The direct one-to-one reference
cuts down on management overhead and maintenance and allows the enforcement of strict security
on allowable changes

11. What are meta-languages, scripts, rules, targets and actions and their role in
software engineering development life cycle?

A metalanguage is a means of describing the format or grammar of another language. Typically,


in computing metalanguages are used to describe the syntax of a programming language or the
format of data for storing in a file or transferring between applications. This may seem a little
abstract but after seeing a few examples it's function should become clear.

 Description - a collection of rules which together define the language.

 Rule - a collection of terminal and non-terminal symbols describing a part of the language.

 Terminal symbol - a part of the rule which is displayed exactly as it is shown.

 Non Terminal - a part of the rule which is further defined as another rule.

16
12. Explain version control and history of version control with their features in detail
explanation

Version control, also known as source control, is the practice of tracking and managing changes
to software code. Version control for software mimicked the established techniques of the drawing
office, but only the parts that were possible within the crude technology of the time. Back in the
days of punch cards, once the programmers had finished with their routine, they would take the
punched cards, change cards, or coding forms to the version-control or configuration-management
team who would duly update the library, and build the customer-ready product from the official
version.

At the same time, there was an office process that recorded the work and managed the versioning
task. The work was treated as if it were a technical drawing. To alter a version, you checked the
code in and out as though it were a technical drawing that had to be altered. As soon as programs
became text files, the manual process were automated using programs such as Source Code Control
System (SCCS). At this stage, there wasn’t the concept of storing just the difference between file
versions. The technology was there but we weren’t culturally ready.

This practice of delta-storage became mainstream in the 1980s with Revision Control System
(RCS), but the whole process still used the analogy of the file being the unit of work, as if it were
a technical drawing.

The idea of being able to deal with a whole lot of files at once took a long time to catch on, as did
having more than one person working on a file at the same time. Although Concurrent Versions
Systems (CVS) was the first to break free from the idea of locking out the file to work on it, it was
unreliable until the introduction of Subversion. Even now, it is only too easy for the version control
system to fail to sort out the merging of two simultaneous alterations of a version file, and ‘merge
failure’ is still a phrase dreaded by most developers.

 Centralized version control came first

The original version control software was mainframe-based, and individual programmers accessed
the system via a terminal. UNIX systems were the first to introduce server-based, or centralized
version control systems that relied on a single, shared repository, and these eventually became

17
available on MS-DOS and Windows. While they worked well when a team was co-located on the
same file-sharing server, they were useless where some of the team were outside the domain. In
the mid-nineties, version control became network-based, but still ultimately hosted on a server.
From this point, the idea of a hosted service on the Internet was just a short step.

 Distributed version control made branching and merging easier

More fundamental was the change to a distributed model for version control, in which no single
computer held the master copy. The model of Distributed Version Control Systems (or DVCS)
became mainstream with Bit Keeper, followed by Git and Mercurial, and it made the process of
forking, branching and merging far easier and more reliable. Distributed version control systems
don’t necessarily rely on a central server to store all the files. Instead, every developer ‘clones’ a
copy of the repository and has the full history of the project on their own machine. When
developers get new changes from a repository, they ‘pull’ them. When they commit their own
changes to the repository to make them available for the rest of the team, they now ‘push’ them.

 Version control is now standard in application development

Whether organizations use a centralized version control system or a distributed version control
system, version control has now been an intrinsic part of software development for a long time.

The advances in version control have led to a fundamental change in the way we develop software.
It has made possible the surge of collaborative work and the increasingly rapid delivery of
software.

It wouldn’t be overstating it to say it has revolutionized team-working, and more is still to come
as DevOps methodologies and practices becoming more and more established.

Where version control has previously largely been used to manage application code within or
across development teams, operations teams are now working much more closely with
development and the need to include database changes alongside code changes in version control
is becoming accepted.

13. What are the software Engineering Tools used in software development with their
categories of their application?
 Recommended Tool

18
 RAD Studio

RAD Studio is a Powerful IDE For Building Native Apps on Windows, Android, iOS, macOS and
Linux. It enables you to design Beautiful Desktop and Mobile App UIs with less coding effort.
Write once, compile everywhere.

 Embold

Fixing bugs before deployment saves a lot of time and energy in the long run. Embold is a software
analytics platform that analyses source code and uncovers issues that impact stability, robustness,
security, and maintainability.

 Kite

Kite is IDE for Software Development that automatically completes multiple line codes. This
editor supports more than 16 languages. It helps you to code faster with no hassle.

 IDE (Integrated Development Environment)


 NetBeans:

NetBeans is a popular, Free, open-source IDE. It allows developing desktop, mobile and web
applications.

 Cloud9 IDE:

Cloud9 IDE is an online integrated software development environment. It supports many


programming languages like C, C++, PHP, Ruby, Perl, Python, JavaScript and Node.js.

 Atom:

Atom is a solid all-around text-editor. It is fully free and open source. It can be customized to do
anything but without a need of modifying the confit file.

 Code Charge Studio:

Code Charge Studio offers the fastest way to build applications. This tool helps to develop data-
driven Web sites or enterprise Internet and Intranet systems.

 Frameworks
 Bootstrap:
19
Bootstrap is a responsive framework for developing with HTML, CSS, and JS. It has many in-
builds components, which you can easily drag and drop to assemble responsive web pages.

 HTML5 Builder:

HTML5 Builder is a software solution for building the web and mobile apps. It can develop an
app using a single HTML5, CSS3, JavaScript and PHP codebase. It helps to target multiple mobile
operating systems, devices and Web browsers.

 Visual Online:

Visual Studio Online is a collection of services. It is fast and easy to plan, build and ship software
across a variety of platforms. These software development tools allow the organization to create
the perfect development environment.

 Cloud Tools
 Kwatee:

Kwatee Agile Deployment is a software development tool. It automates applications or micro


services to any number of servers. It fully automates deployments of text and binary files from any
number of target servers.

 Azure

Microsoft Azure is widely used by developers to build, deploy and manage web applications.

 Data Science
 Data studio:

Dataiku DSS is a collaborative data science software platform. It is used by data scientists, data
analysts, and engineers to explore, prototype, build and deliver their data products.

 Source Control
 Github:

GitHub allows developers to review code, manage projects, and build software. It offers right tool
for different development jobs.

 Cloudforge:

20
CloudForge is a software-as-a-service product for application development. It Integrates and
manages various development tools.

 Prototyping
 Axure

Axure provides the capability to produce wireframes, prototypes, and create documentation. This
tool is used by business analysts, product managers, and IT consultants around the world.

 DevOps
 Codenvy:

Codenvy automates applications or micro services to any number of servers. It fully automates
deployments of text and binary files from any number of target servers.

 Notifications
 SendBird:

Sendbird is used as a messaging and Chat API for Mobile Apps and Websites. It offers scalability
for a massive audience. It also prevents spam flooding of chat rooms.

 UML
 Enterprise Architect:

Enterprise Architect is a requirement management tool. It integrates seamlessly with other


development tools by creating requirements in the model.

14. Discuss the performance, load and non-functional testing tools with their lists and
explain them.

What is Performance /load Testing? Performance Testing is a type of software testing which
ensures that the application is performing well under the workload. The goal of performance
testing is not to find bugs but to eliminate performance bottlenecks. It measures the quality
attributes of the system.

 AppLoader

21
AppLoader is a load testing solution designed for business applications. It allows you to test any
application by reproducing the same user experience from all your access points.

 Silk Performer

Silk Performer tool is an enterprise class load and stress testing tool and has the ability to test
multiple application environments with the thousands of concurrent users. It also supports the
widest range of protocols.

 NeoLoad

NeoLoad is an innovative performance testing platform designed to automate test design,


maintenance, and analysis for Agile and DevOps teams. It integrates with continuous delivery
pipelines to support performance testing.

 LoadView

LoadView utilizes real browser-based load testing for websites, web applications, and APIs. It
creates multi-step scripts that simulate users interacting with your website or application. With
LoadView by Dotcom-Monitor, you can show the actual performance of your applications under
load.

 LoadUI Pro

LoadUI Pro allows you to quickly create script less sophisticated load tests, distribute them on
cloud using load agents and monitor the performance of your servers as you increase the load on
them. You can access detailed reports and quickly automate your load tests.

 WebLOAD

WebLOAD is an enterprise-scale load testing tool. It features a comprehensive IDE, Load


Generation Console, and a sophisticated Analytics Dashboard. This is a web and mobile load
testing and analysis tool from Rad View Software.

 Apache JMeter

JMeter is an open source tool that can be used for performance and load testing for analyzing and
measuring the performance of a variety of services. This tool is mainly used for web and web
service applications.
22
 LoadNinja

It allows you to create script less sophisticated load tests and reduces testing time by half. It also
replaces load emulators with real browsers and gets actionable, browser-based metrics at ninja
speed. LoadNinja empowers teams to increase their test coverage without giving up on the quality
by removing the tedious efforts of dynamic correlation, script translation, and script scrubbing.

 What is Non-Functional Testing?

Non-functional testing :-is defined as a type of Software testing to check non-functional aspects
(performance, usability, reliability, etc) of a software application. It is designed to test the readiness
of a system as per nonfunctional parameters which are never addressed by functional testing

 JMeter

JMeter is one of the widely used tools in the market to perform reliability testing and automation
testing. The tool is available for free of cost and is generally used in web and FTP Applications
JMeter is an Apache product, which has a good reputation for compatibility testing. The tool is
highly used for measuring and analyzing the performance of programs.

 Forecast

Forecast is one of the most popular applications, which offers a wide range of options. Therefore,
it is important for users to consider having input data in detail.A detailed set of data related to
scalability testing and recovery testing play a major role for results. Hence, forecast provides an
easy to use interface to enjoy maximum mileage.

 Loadrunner

The reputation of the testing tool is one of the supreme factors because it defines
quality. LoadRunner is a fabulous tool because it offers accurate results in performance testing.
The tool has gained a lot of reputation in offering stress test results with quality.
LoadRunner is a Micro Focus product, which has the capacity to simulate a lot of users at the same
time. The special analyzing strategy in the tool provides a wide room to enjoy the performance.

 Loadster

23
The modern-day tools and applications are coming with extra features to attract. Loadster is a new
tool, which comes with cloud hybrid load testing technique. The technique allows users to test
large scale applications and high-performance websites. The tool offers quality results in volume
testing parameters of the software system. Loadster allows users to improve the technique because
it helps in improving stability.

 Loadstorm

There are huge benefits of non-functional testing tools. it is vital for testers to know the actual
objective of the testing process before starting. A strong set of functional requirements enable the
tool to complete the process with productive results. Loadstormis a powerful tool, which is
available to test various program components. So, the hybrid set of features enables testers to save
time without affecting the performance.

 Neoload

Automation Testing is a modern concept, which allows people to save a lot of money. Hence, It is
obvious that testers find automated ways to save time without compromising on productivity.
NeoLoad is a fine application, which offers Automation Options to enhance performance. The tool
provides quality results while testing various kinds of projects. Projects include APIs, web
applications and so on.

15. Discuss software design tools with their components briefly.


 Artisan Studio: - Artisan Studio is a toolset for the development of software that allows
the modeling of complex mission critical systems and software engineering.
 CAB :- is a Collaborative Architecture Browser (CAB) to support early requirements
engineering and architecture evaluation on the Sense & Respond (S&R) project. This
architecture browser serves as a site for tracking decisions made throughout the design
process concerning rationale for further inquiry and research
 CAMEL:- This research tool provides an environment in which multiple diagrams (UML
and free-style) can be sketched and discussed. It also supports mechanisms with
which manage the focus of dialogue during meetings and provides mechanisms for
capturing all the relevant information arising from design meetings.

24
 Creately :- is a cloud-based diagramming and design application service operated by
Cinergix, Pty Ltd. It is built on Adobe's Flex/Flash technologies and provides a visual
communication platform for virtual teams. It can be used to create informational diagrams,
flowcharts, organizational charts, website wireframes, UML designs, mind maps and many
other diagram types.
 Gliffy :-This tools permits collaboration among distributed team members. It is possible to
invite team members to a session in order to view or edit diagrams.
 GroupUML :-This research tool supports distributed modeling with UML. It provides a
shared UML editor which is accessible from a Smart board.
 Libra-on-chat:- is a collaborative modeling support system that enables to share UML
diagrams created by each developer, associate conversation contents with the specific
elements in a UML diagram that is created by synchronous collaboration.
 Rational Software Modeler :-IBM Rational Software Modeler, (RSM) made by IBM's
Rational Software division, is a Unified Modeling Language (UML) 2.0-based visual
modeling and design tool. Rational Software Modeler is built on the Eclipse open source
software framework and is used for visual modeling and model-driven development
(MDD) with UML for creating applications and web services.
 STEVE :-(Synchronous collaborative modelling Tool Enhanced with VErsioning) is a
collaborative tool supporting distributed Unified Modelling Language (UML) modelling
of software systems. The tool allows communication infrastructure enabling the concurrent
editing of the same UML diagram at the same time by distributed developers.
 Sysiphus:- This research tool provides an environment for distributed modeling and
collaboration. It also provides traceability and awareness mechanisms through which to
facilitate collaboration.
 Together Borland Together 2008 technologies enable you to analyze, design and
implement flexible and maintainable software architectures that can be easily modified as
requirements change. A common visual understanding of important decisions also keeps
business and system analysts, architects, data modelers and developers in sync—whether
they’re changing business processes, creating new applications or extracting design
information from existing systems.

25
16. What is the main objective of code generation or forward engineering in software
development life cycle?

in computing, code generation is the process by which a compiler's code generator converts some
intermediate representation of source code into a form (e.g., machine code) that can be readily
executed by a machine. Sophisticated compilers typically perform multiple passes over various
intermediate forms its main objective are listed bellow

The first part of a compiler analyzes the source code into a structure that carries the meaning of
the program; this structure is generally the abstract syntax tree that’s been checked and decorated.
(Remember decorated means all identifier references have been resolved.)

From this structure we can generate the corresponding code in some other language, the target
language. This is what a code generator does.

Some compilers generate twice: they first generate code in some “intermediate language” like SIL,
LLVM IR, HIR, MIR, CIL, etc. Then they do the “real” code generation into a target language that
is directly runnable (or really close to it), like virtual machine code, assembly language, or machine
language.

Goals of Code Generation

Here are the three goals of any good code generator:

 It should produce correct code.


 It should produce efficient code.
 It should itself be efficient.
17. Why code generation in software development and can we generate source code
from any kind of diagram?
 Yes, we can generate source code from any kind of diagram
 How do I generate code from sequence diagram?
 Select the menu option Project | Generate Code from Sequence Diagrams. You are now
prompted to select the specific Sequence Diagram(s). Clicking the "Select All" button
selects all the Sequence Diagrams in the UML Model project.

26
 Sequence diagrams are sometimes called event diagrams or event scenarios. A sequence
diagram shows, as parallel vertical lines (lifelines), different processes or objects that live
simultaneously, and, as horizontal arrows, the messages exchanged between them, in the
order in which they occur.

18. Differentiate re-engineering, reverse engineering and forward engineering with


their necessity in case of producing quality software product?
 Difference between Forward Engineering and Reverse Engineering
 Forward Engineering:
 Forward Engineering is a method of creating or making an application with the
help of the given requirements. Forward engineering is also known as
Renovation and Reclamation. Forward engineering is required high proficiency
skill. It takes more time to construct or develop an application.
 Reverse Engineering:
 Reverse Engineering is also known as backward engineering, is the process of
forward engineering in reverse. In this, the information are collected from the
given or exist application. It takes less time than forward engineering to develop
an application. In reverse engineering the application are broken to extract
knowledge or its architecture.
 Difference between Forward Engineering and Reverse Engineering:
Forward Engineering Reverse Engineering
In reverse engineering or backward engineering,
In forward engineering, the application are the information are collected from the given
developed with the given requirements. application.

Reverse Engineering or backward engineering is


Forward Engineering is high proficiency skill. low proficiency skill.

While Reverse Engineering or backward


Forward Engineering takes more time to develop an engineering takes less time to develop an
application. application.

The nature of reverse engineering or backward


The nature of forward engineering is Prescriptive. engineering is Adaptive.

27
In reverse engineering, production is started by
taking existing product.
In forward engineering, production is started with
given requirements. The example of backward engineering are
The example of forward engineering are construction research on Instruments etc
of electronic kit, construction of DC MOTOR etc.

 Software Re-Engineering :- is the examination and alteration of a system to reconstitute


it in a new form. The principles of Re-Engineering when applied to the software
development process is called software re-engineering. It affects positively at software
cost, quality, service to the customer and speed of delivery. In Software Re-engineering,
we are improving the software to make it more efficient and effective.

19. Describe the following software design concepts:


 Abstraction
 In software engineering and computer science, abstraction is a technique for
arranging complexity of computer systems. It works by establishing a level of
complexity on which a person interacts with the system, suppressing the more
complex details below the current level
 Modularity

The module simply means the software components that are been created by
dividing the software. The software is divided into various components that
work together to form a single functioning item but sometimes they can perform
as a complete function if not connected with each other. This process of creating
software modules is known as Modularity in software engineering.
 It simply measures the degree to which these components are made up than can
be combined. Some of the projects or software designs are very complex that
it’s not easy to understand its working and functioning. In such cases,
modularity is a key weapon that helps in reducing the complexity of such
software or projects.
 The basic principle of Modularity is that “Systems should be built from
cohesive, loosely coupled components evaluate a design method while
considering its abilities
 Concurrency
 is the ability of different parts or units of a program, algorithm, or problem to
be executed out-of-order or in partial order, without affecting the final outcome.
This allows for parallel execution of the concurrent units, which can significantly

28
improve overall speed of the execution in multi-processor and multi-core systems.
In more technical terms, concurrency refers to the decomposability of a program,
algorithm, or problem into order-independent or partially-ordered components or
units of computation.[1]
 According to Rob Pike, concurrency is the composition of independently executing
computations,[2] and concurrency is not parallelism: concurrency is about dealing
with lots of things at once but parallelism is about doing lots of things at once.
Concurrency is about structure, parallelism is about execution, concurrency
provides a way to structure a solution to solve a problem that may (but not
necessarily) be parallelizable

20. What are the issues in the design of the software? Explain its need for the software
engineering?
 Some of the major challenges include requirements volatility, design process,
quality issues (e.g., performance, usability, security, etc.), distributed software
development, efficient allocation of human resources to development tasks,
limited budgets, unreasonable expectations and schedules, fast-changing
technology,
 Consistency: There should not be any inconsistency in the design.
 Maintainability: The design should be so simple so that it can be easily
maintainable by other designers
 Correctness: Software design should be correct as per requirement.
 Completeness: The design should have all components like data structures,
modules, and external interfaces, etc.
 Efficiency: Resources should be used efficiently by the program.
 Flexibility: Able to modify on changing needs.

21. What is 'design review’? How design review can uncover deficiencies in SRS?

A design review is a technical meeting that is held at an early stage in the software development
process. A design review generally involves a presentation of a planned software design, at a time
early enough in the process to allow for changes is necessary, to an audience of stakeholders.

 It uncovers deficiencies by performing many tasks, such as:

 Ensuring that the proposed design will meet the requirements

29
 Ensuring that the design can be implemented in the required time
 Ensuring that the design will have the needed interfaces with other systems
 Ensuring the design will be consistent with technical goals of the organization
 Ensuring the design will follow established software design principles

22. Explain 'Coupling' and 'Cohesion' in briefly with their objective in software
engineering.
 Coupling

Coupling:- is the measure of the degree of interdependence between the modules. A good
software will have low coupling.

 Types of Coupling:
 Data Coupling: If the dependency between the modules is based on the fact that they
communicate by passing only data, then the modules are said to be data coupled. In data
coupling, the components are independent to each other and communicating through data.
Module communications don’t contain tramp data. Example-customer billing system.
 Stamp Coupling in stamp coupling, the complete data structure is passed from one module
to another module. Therefore, it involves tramp data. It may be necessary due to efficiency
factors- this choice made by the insightful designer, not a lazy programmer.
 Control Coupling: If the modules communicate by passing control information, then they are
said to be control coupled. It can be bad if parameters indicate completely different behavior
and good if parameters allow factoring and reuse of functionality. Example- sort function
that takes comparison function as an argument.
 External Coupling: In external coupling, the modules depend on other modules, external to
the software being developed or to a particular type of hardware. Ex- protocol, external file,
device format, etc.
 Common Coupling: The modules have shared data such as global data structures. The
changes in global data mean tracing back to all modules which access that data to evaluate
the effect of the change. So it has got disadvantages like difficulty in reusing modules,
reduced ability to control data accesses and reduced maintainability.

30
 Content Coupling: In a content coupling, one module can modify the data of another module
or control flow is passed from one module to the other module. This is the worst form of
coupling and should be avoided.

 Cohesion:
Cohesion is a measure of the degree to which the elements of the module are functionally
related. It is the degree to which all elements directed towards performing a single task are
contained in the component. Basically, cohesion is the internal glue that keeps the module
together. A good software design will have high cohesion.

31
 Types of Cohesion:
 Functional Cohesion: Every essential element for a single computation is contained in the
component. A functional cohesion performs the task and functions. It is an ideal situation.
 Sequential Cohesion: An element outputs some data that becomes the input for other
element, i.e., data flow between the parts. It occurs naturally in functional programming
languages.
 Communicational Cohesion: Two elements operate on the same input data or contribute
towards the same output data. Example- update record into the database and send it to the
printer.
 Procedural Cohesion: Elements of procedural cohesion ensure the order of execution.
Actions are still weakly connected and unlikely to be reusable. Ex- calculate student GPA,
print student record, calculate cumulative GPA, print cumulative GPA.
 Temporal Cohesion: The elements are related by their timing involved. A module connected
with temporal cohesion all the tasks must be executed in the same time-span. This cohesion
contains the code for initializing all the parts of the system. Lots of different activities occur,
all at init time.

32
 Logical Cohesion: The elements are logically related and not functionally. Ex- A component
reads inputs from tape, disk, and network. All the code for these functions is in the same
component. Operations are related, but the functions are significantly different.
 Coincidental Cohesion: The elements are not related(unrelated). The elements have no
conceptual relationship other than location in source code. It is accidental and the worst form
of cohesion. Ex- print next line and reverse the characters of a string in a single component.

 objective
To Increase module reusability

To increase system maintainability due to logical changes in the domain affecting fewer modules

to reduce module complexity

23. Define the different approaches used in debugging.


 Debugging
Debugging is the process of finding and resolving defects or problems within a computer
program that prevent correct operation of computer software or a system.

 Need for debugging:


Once errors are known during a program code, it’s necessary to initial establish the precise
program statements liable for the errors and so to repair them.
Debugging Approaches:
The following are a number of approaches popularly adopted by programmers for debugging.

 Brute Force Method:


This is the foremost common technique of debugging however is that the least
economical method. during this approach, the program is loaded with print statements to
print the intermediate values with the hope that a number of the written values can
facilitate to spot the statement in error. This approach becomes a lot of systematic with
the utilization of a symbolic program (also known as a source code debugger), as a result
of values of various variables will be simply checked and breakpoints and watch-points
can be easily set to check the values of variables effortlessly.

33
 Backtracking:
This is additionally a reasonably common approach. during this approach, starting from
the statement at which an error symptom has been discovered, the source code is derived
backward till the error is discovered. sadly, because the variety of supply lines to be
derived back will increase, the quantity of potential backward methods will increase and
should become unimaginably large so limiting the utilization of this approach.
 Cause Elimination Method:
In this approach, a listing of causes that may presumably have contributed to the error
symptom is developed and tests are conducted to eliminate every error. A connected
technique of identification of the error from the error symptom is that the package fault
tree analysis.
 Program Slicing:
This technique is analogous to backtracking. Here the search house is reduced by process
slices. A slice of a program for a specific variable at a particular statement is that the set
of supply lines preceding this statement which will influence the worth of that variable
24. Explain the Entity - Relationship diagram & its notations in software design.

An Entity Relationship Diagram (ERD) is a visual representation of different entities within a


system and how they relate to each other.

An e-r diagram has following features:


 E-R diagrams are used to represent E-R model in a database, which makes them easy to be
converted into relations (tables).
 E-R diagrams provide the purpose of real-world modeling of objects which makes them
intently useful.
 E-R diagrams require no technical knowledge & no hardware support.
 These diagrams are very easy to understand and easy to create even by a naive user.
 It gives a standard solution of visualizing the data logically.
ER Diagrams Symbols, And Notations

34
An E-R diagram constitutes of following Components

A. Entity: - Any real-world object can be represented as an entity about which data can be stored
in a database. All the real world objects like a book, an organization, a product, a car, a person are
the examples of an entity. Any living or non-living objects can be represented by an entity. An
entity is symbolically represented by a rectangle enclosing its name.
 Strong entity: A strong entity has a primary key attribute which uniquely identifies each
entity. Symbol of strong entity is same as an entity.

 Weak entity: A weak entity does not have a primary key attribute and depends on other
entity via a foreign key attribute.
B. Attribute: - Each entity has a set of properties. These properties of each entity are termed as
attributes. For example, a car entity would be described by attributes such as price, registration
number, model number, color etc. Attributes are indicated by ovals in an e-r diagram.
Simple attribute: - An attribute is classified as a simple attribute if it cannot be partitioned into
smaller components.
Composite attribute: - A composite attribute can be subdivided into smaller components which
further form attributes.
C. Relationships: - A relationship is defined as bond or attachment between 2 or more entities.
Normally, a verb in a sentence signifies a relationship.

35
25. Describe the different types of CASE tools used in Software Engineering
industry?
 CASE stands for Computer Aided Software Engineering. It means, development
and maintenance of software projects with help of various automated software
tools.
 It is the implementation of computer facilitated tools and methods in software
development? CASE is used to ensure a high-quality and defect-free software.
CASE ensures a check-pointed and disciplined approach and helps designers,
developers, testers, managers and others to see the project milestones during
development.
 CASE Tools: -The essential idea of CASE tools is that in-built programs can help
to analyze developing systems in order to enhance quality and provide better
outcomes.
Types of CASE Tools:
 Diagramming Tools: -
It helps in diagrammatic and graphical representations of the data and system processes.
It represents system elements, control flow and data flow among different software
components and system structure in a pictorial form.
For example, Flow Chart Maker tool for making state-of-the-art flowcharts.

 Computer Display and Report Generators:-


It helps in understanding the data requirements and the relationships involved.

 Analysis Tools:-
It focuses on inconsistent, incorrect specifications involved in the diagram and data
flow. It helps in collecting requirements, automatically check for any irregularity,
imprecision in the diagrams, data redundancies or erroneous omissions.

 Central Repository:-
It provides the single point of storage for data diagrams, reports and documents
related to project management.

 Documentation Generators: -
It helps in generating user and technical documentation as per standards. It creates
documents for technical users and end users.
For example, Dioxygen, DrExplain, Adobe RoboHelp for documentation.

 Code Generators: -
It aids in the auto generation of code, including definitions, with the help of the
designs, documents and diagrams.
26. Define Design Concepts and Design Objective in software development?

36
Software Design Concepts: -
 Concepts are defined as a principal idea or invention that comes in our mind or in thought
to understand something. The software design concept simply means the idea or
principle behind the design. It describes how you plan to solve the problem of designing
software, the logic, or thinking behind how you will design software. It allows the
software engineer to create the model of the system or software or product that is to be
developed or built. The software design concept provides a supporting and essential
structure or model for developing the right software. There are many concepts of software
design and some of them are given below: -

The set of fundamental software design concepts are as follows:

Abstraction

 A solution is stated in large terms using the language of the problem environment at the
highest level abstraction.
 The lower level of abstraction provides a more detail description of the solution.
 A sequence of instruction that contain a specific and limited function refers in a procedural
abstraction.

37
 A collection of data that describes a data object is a data abstraction.
Architecture

 The complete structure of the software is known as software architecture.


 Structure provides conceptual integrity for a system in a number of ways.
 The architecture is the structure of program modules where they interact with each other
in a specialized way.
 The components use the structure of data.
 The aim of the software design is to obtain an architectural framework of a system.
 The more detailed design activities are conducted from the framework.
Patterns
 A design pattern describes a design structure and that structure solves a particular design
problem in a specified content.

Modularity
 software is separately divided into name and addressable components. Sometime they are
called as modules which integrate to satisfy the problem requirements.
 Modularity is the single attribute of a software that permits a program to be managed
easily.
Information hiding
 Modules must be specified and designed so that the information like algorithm and data
presented in a module is not accessible for other modules not requiring that information.

Functional independence
 The functional independence is the concept of separation and related to the concept of
modularity, abstraction and information hiding.
 The functional independence is accessed using two criteria i.e. Cohesion and coupling.
Cohesion

 Cohesion is an extension of the information hiding concept.


 A cohesive module performs a single task and it requires a small interaction with the other
components in other parts of the program.
Coupling
 Coupling is an indication of interconnection between modules in a structure of software.

Refinement
 Refinement is a top-down design approach.

38
 It is a process of elaboration.
 A program is established for refining levels of procedural details.
 A hierarchy is established by decomposing a statement of function in a stepwise manner
till the programming language statement are reached.
Refactoring

 It is a reorganization technique which simplifies the design of components without changing


its function behavior.
 Refactoring is the process of changing the software system in a way that it does not change
the external behavior of the code still improves its internal structure.
Design classes

 The model of software is defined as a set of design classes.


 Every class describes the elements of problem domain and that focus on features of the
problem which are user visible.
Design Objectives
 are the functional and non-functional qualities of a design. These are often stated as goals
for what a design is meant to achieve. Objectives serve to guide the design process and
measure your results.
 include achieving high engine efficiency (power produced, divided by the product of the
heat of combustion per unit mass of fuel and the rate of fuel consumption) and low rates
of emission of pollutants (oxides of nitrogen, mainly nitric oxide, NO;
 will change from problem to problem. As a designer, the engineer must be able to identify
the objectives pertinent to the problem at hand so that alternatives may be compared. The
problem objective can then be expressed as an objective statement.
 In structural engineering, the objective statement can also be put in the form of an
objective function. Objective statements are generally expressed as "maximize" or
"minimize" statements. Objective functions return a single value that can be used to
compare alternatives. Some typical objective statements, and their associated objective
functions, are:

Objective Statement Objective Function


Select the least cost member minimize(cost)

39
Select the least weight member minimize(weight)

27. Explain in brief Data Model Analysis in software development procedure?


 is an abstract model that organizes elements of data and standardizes how they
relate to one another and to the properties of real-world entities?
 is a description of how data should be used to meet the requirements given by
the end user? Data modeling helps to understand the information requirements.
 Is an organizes data(link is external) elements and standardizes how the data
elements relate to one another. Since data elements document real life(link is
external) people, places and things and the events between them, the data model
represents reality. For example, a house has many windows or a cat has two
eyes.
 A data model explicitly determines the structure of data. Data models are
specified in a data modeling(link is external) notation, which is often graphical
in form.
 Levels of Data Models

 A data model consists of three different phases. (West)Those are:


 Structural part – Consisting a set of rules
 Manipulating part – Types of operations allowed, such as updating, retrieving,
and changing the database
40
 Integrity part – which validates the accuracy of data.
 There are four types of data models identified:
 Conceptual Data Models: -Highest-level relationships between different entities.
 Enterprise Data Models: -Addresses unique requirements of a specific business.
However, this is similar to conceptual data modeling.
 Logical Data Modeling: - Illustrates the specific entities, attributes, and
relationships involved in a business function. This serves as the basis for the
creation of the physical data model.
 Physical Data Modeling: - Represent an application and database-specific
implementation of a logical data model. (SearchDataManagement.com Definitions)
Conceptual Data Models: -
 is a representation of organizational data? The purpose of a conceptual data model
is to show as many rules about the meaning and interrelationships among data as
are possible. Conceptual data modeling is typically done in parallel with other
requirement analysis and structuring steps during system analysis.

Fig 1.1 conceptual data modeling


Enterprise Data Model (External Data Model): -
 An Enterprise Data Model is an integrated view of the data produced and consumed
across an entire organization. An Enterprise Data Model (EDM) represents a single
integrated definition of data, unbiased of any system or application. It is
independent of “how” the data is physically sourced, stored, processed or accessed.

Fig 1.2 Enterprise data model


Logical Data Model
 The logical data model is an evolution of the conceptual data model towards a data
management technology such as relational databases. Actual implementation of the

41
conceptual model is called a logical data model. To implement one conceptual data
model may require multiple logical data models. Data modeling defines the
relationships between data elements and structures

Fig1.3 logical data model


Physical Data Model: -
 Physical data model is a representation of a data design which takes into account
the facilities and constraints of a given database management system. Physical data
model represents how the model will be built in the database. A physical database
model shows all table structures, including column name, column data type, column
constraints, primary key, foreign key, and relationships between tables.

Fig 1.4 physical data model

42

You might also like