SE Practical
SE Practical
C.K.PITHAWALLA COLLEGE OF
ENGINEERING & TECHNOLOGY,
SURAT.
CERTIFICATE
PATEL SHRADDHA B.
This is to certify that Mr./Miss ............................................. .
5th
of•••••••••••••••••••••••••• COMPUTER
seni•••••••••••••••••••••••••••••••••••••••••••••••• bran.ch
- 190090107047
Roll No •••••••••••••••••Enrollrnent No ••••.•••••••
I
••••••••••••••••••••••••••••
I
Date:-•••••••••••••••••
·~~-------------------------------------------------------------------,..,,_·
Gujarat Technological University
C. K. Pithawalla College of Engineering and
Technology, Surat
Academic Year : 2021-22
B.E. - III Semester –V (Computer Engineering)
Subject Name: Software Engineering (3150711)
Practical List
INDEX
7. DevOps 16/09/2021
Faculties Name:
Prof. Vishruti V. Desai ,Prof. Unnati S.Shah
Practical 1
Group Members:
Patel Shraddha Babubhai (Enrollment No: 190090107047)
Thesia Krishnaben Shaileshbhai (Enrollment No: 190090107068)
Design Software Development Life Cycle (SDLC) model and analyze various
activities conducted as a part of various phases. For each SDLC phase, identify the
objectives and summaries outcomes.:
1. Requirement analysis:
Todays sophisticated lifestyles, people can’t dare their own problems. They cannot share their
problems or emotions with their families or friend because they are not comfortable with
them. Especially after the pandemic of covid-19 people forgot their patience level, forgiving
nature, mental health. For solving this situation we though to make an application through
which a person can freely share their frustration and their sentiments to the people who faces
the same problems.
3. Coding:
We use C, Java, PHP, C++ etc. as per requirements.
4. Implementation:
We try our best to solve the maximum issues of people and make them happier.
Software Requirements Specifications
Page 1 of 14 f
Software Requirements Specifications
Sr Enrollment Name
No Number
1 190090107047 Patel Shraddha Babubhai
2 190090107068 Thesia Krishna Shaileshbhai
Faculty Name :
Signature : Date: ( / / )
Page 2 of 14 f
Software Requirements Specifications
Table of Contents
1. Introduction 4
1.1 Purpose 4
1.2 Scope 4
1.3 Definitions, Acronyms, and Abbreviations 4
1.4 References 4
1.5 Overview 5
2. General Description 5
3. Specific Requirements 8
4. Appendices 14
Page 3 of 14 f
Software Requirements Specifications
1. Introduction
1.1 Purpose
1.2 Scope
The proposed software product is the Stress Management Techniques (SMT). The
system will be used to get the information from the users and then providing the
suggestions for stress relief.
Users can get advice instantly from therapist through this system instead of meeting at
the therapist’s place.
The intentions of the system are to reduce time of users as well as money and user get
advices from the experienced people surrounding world.
Acronyms:
SMT - Stress Management Technique
SRS – Software Requriments Specification
DBMS-Data Base Management System
1.4 References
https://play.google.com/store/apps/details?id=com.bearpty.talklife
https://www.webmd.com/balance/stress-management/stress-
management#:~:text=The%20ones%20that%20focus%20on,people%20and%20has%
20many%20benefits.
https://www.mindtools.com/
Page 4 of 14 f
Software Requirements Specifications
1.5 Overview
Our System is based on Stress Management Technique. Now a days due to covid-19 many
peoples have stress for their work load, family problems, finanancial problem and many more.
We observed that many people were suffering from stress and depression. From that we
decide to make a system for solving people’s problem. In our system user can freely share
their problems and get solutions from system and other users also.
The main aim of project is to develop a software which is easily accessible by the public.
Project’s main idea is to implement an automated software application to solve users
problems.
Page 5 of 14 f
Software Requirements Specifications
2. General Description
Stress Management system is a like Talk Life system. In our system we have ask some
questions to user and analysis their problems in that system there is no any question
ask to user.
In both system there is a other users can also share their experience with each other.
System also gives schedule like exercise time , a good and balanced died , enough
sleep time , manage their personal time ,time for fun and relaxation, listening music
and many more.
The expert advice like Psychiatrist are also suggest to user and give some special
therapist to user.
Registration :
When a user is log-in, the system checks to see if the user is already registered with the
system or not.
If he/she is, his/her user name is entered into the system. Otherwise a new user name
is given to the user.
The user’s information such as age, occupation and habbit is also entered into system.
Process :
System ask questions to user and analysis their problems and give suggestion or schedule to
user. Also other user can give their suggestions or share their experience.
Log-out :
When user log-out, the system should remove their data and current status.
Page 6 of 14 f
Software Requirements Specifications
2.5 Assumptions and Dependencies
Assumptions :
It is assumed that the user have their own problems so they get satisfaction answer of
their questions.
It is assumed that the user can easily understand the entire system easily.
Dependencies :
If the user writes their problems properly then the system responds correctly, by this
the system is depend on the user.
The system is updated time to time more user are interested to use the system.
Page 7 of 14 f
Software Requirements Specifications
3. Specific Requirements
3.1.4 Suggestions
3.1.4.1 Viwer’s experience
3.1.4.2 Common solutions
3.2 External Interface Design
Page 8 of 14 f
Software Requirements Specifications
3.2.2 More Information
Page 9 of 14 f
Software Requirements Specifications
3.2.4 Advice given by server
Page 10 of 14 f
Software Requirements Specifications
3.2.6 Viwer’s Suggestios
Mainly the product requires efficient performance and can easily accessable on any device. The other
requirements include:
The product will be based on local server.
The product will take initial load time.
The performance will depend upon hardware componenets.
Different database for employee.
Private data of user will be secure.
Specify design constraints that can be imposed by other standards, hardware limitations, etc.
Specify the requirements derived from existing standards or regulations. They might include:
(1) Report format
(2) Data naming
(3) Accounting procedures
(4) Audit Tracing
For example, this could specify the requirement for software to trace processing activity.
Such traces are needed for some applications to meet minimum regulatory or financial
standards. An audit trace requirement may, for example, state that all changes to a payroll
database must be recorded in a trace file with before and after values.
Page 11 of 14 f
Software Requirements Specifications
There are a number of attributes of software that can serve as requirements. It is important
that required attributes by specified so that their achievement can be objectively verified. The
following items provide a partial list of examples. These are also known as non-functional
requirements or quality attributes.
These are characteristics the system must possess, but that pervade (or cross-cut) the design.
These requirements have to be testable just like the functional requirements. Its easy to start
philosophizing here, but keep it specific.
3.5.1 Reliability
The system should work reliably, with automatic backup and recovery features. In case of
unexpected termination of a session, the unsaved data should be recovered without loss and
displayed to the respective users for saving into the system or continuing with the work. At
any time, audit file and all data base and mailing information are required to be updated in the
backup
3.5.2 Availability
The entire system should be available round the year, except for aperiodic maintenance. The
maintainance period should be pre-scheduled and short. The users should be reminded of the
unavaibility period in advance.
3.5.3 Security
Specify the factors that would protect the software from accidental or malicious access, use,
modification, destruction, or disclosure. Specific requirements in this area could include the
need to:
The whole system secured only admins can access all the data.
This system will use HTTPS because of this product this is more secure.
This system will use secured POS system.
3.5.4 Maintainability
The document should be easy for the users who execute the system day to day. For the
developers who wish to edit or develop further, and for the personal who is in charge of the
maintenance.
3.5.5 Portability
Page 12 of 14 f
Software Requirements Specifications
This system will be easily portable for any windows or IOS based system .
The system should support new versions of the related browsers.
The administrative and server technologies should be standard and supported and supported
by most platforms.
Here in ER diagram the flow of our whole system is there. All logical requirements are shown in
this diagram with keys and different attributes.
Page 13 of 14 f
Software Requirements Specifications
4. Appendices
SMT stands for Stress Management Techniques.It will also help to user to solve their problems
freely and make sure that user will save their life.If we like to make this type of website and
app,that have cost around 10,000-20,000$. It has one suggestion box where users can suggest to
software developer which kind of changes they want.It will help to developer to fulfill user’s
need.
Page 14 of 14 f
Practical : 3
Design Analysis
-
3.2.3 Activity Diagram
3.2.3 State Diagram
3.3 Design DFD
Level – 0
Level – 1
Practical – 4
Software Project Management
1. BaseCamp :
Basecamp is the preferred tool for thousands of project management teams, who enjoy its
modern social media-like interface and carefree team collaboration features.
Top Features:
2. Asana :
Asana combines elements of project management, file storage, and collaboration and helps to
manage projects across a team without email.
Top Features:
3. Scoro :
Scoro is a comprehensive solution that combines all the features you might need in project
management software: projects & tasks, contact management, quotes, team collaboration,
billing, and reporting.
Top Features:
Scoro helps to streamline your entire work progress, so you don’t need to use a lot of
different tools for every task. All your important information is stored in one central place.
4. Citrix Podio :
Podio is a flexible and highly customizable online hub for work and team communication.
Top Features:
• Assign tasks, attach files, and discuss details within the solution
• Share encrypted & large files
• Automate the sales pipelines and project budget tracking
• Get an overview of the company with a visual dashboard
Podio’s workflows feature enables you to add if-this-then-that logic to Podio apps. For example,
instruct your app to create a task or comment.
5. Active Collab :
Active Collab is a project management software helping your team stay organized while you
outgrow email.
Top features:
Active Collab is especially great for collaboration, with functions like collaborative text
editing and @mentions for communication.
6. WorkZone :
Workzone was built by experienced ad executives who wanted to help agencies and creative
teams get visibility into all of their work.
Top features:
Workzone has many powerful features but is simpler to use than more complex tools.
Practical – 5
Coding and Testing
5.1 Implementation :
1. Raxis
Raxis does one better than automated tools that often discover false findings that waste time
and effort.
Raxis scopes an amount of time that works best for your company’s code and assigns a
security-focused former developer to analyze your code for both general security and
business-logic vulnerabilities.
Raxis communicates throughout to be sure your input is used within the code review, and
they provide a report that details each finding with screenshots and remediation advice. A
high-level summary that can be provided to management and a debriefing call are also
included.
2. SonarQube
SonarQube is a household name in Code Quality and Code Security, empowering all
developers to write cleaner and safer code. With thousands of automated Static Code
Analysis rules in more than 25 programming languages, while integrating directly with your
DevOps platform, SonarQube is your teammate to enhance your development workflow and
guide your teams.
SonarQube fits with your existing tools and proactively raises a hand when the quality or
security of your codebase is at risk.
3. PVS-Studio
PVS-Studio is a tool for detecting bugs and security weaknesses in the source code of
programs, written in C, C++, C#, and Java. It works in Windows, Linux, and macOS
environment.
It is possible to integrate it into Visual Studio, IntelliJ IDEA, and other widespread IDE. The
results of the analysis can be imported into SonarQube.
4. reshift
Reshift is a SaaS-based software platform that helps software development teams identify
more vulnerabilities faster in their own code before deploying to production.
Reducing the cost and time of finding and fixing vulnerabilities, identifying the potential risk
of data breaches, and helping software companies achieve compliance and regulatory
requirements.
5. Embold
Embold is an intelligent software analytics platform that supports developers and teams in
building higher quality software in less time, by speeding up code reviews.
It automatically prioritizes hotspots in the code and provides clear visualizations. With its
multi-vector diagnostic technology, it analyses software from multiple lenses, including
software design, and enables users to manage and improve their software quality
transparently.
6. SmartBear Collaborator
SmartBear Collaborator is a code review tool that is suitable for remote as well as co-located
teams. It has comprehensive review capabilities to review various documents like design,
requirements, documentation, user stories, test plans, and source code.
It can be integrated with GitHub, GitLab, Bitbucket, Jira, Eclipse, Visual Studio, etc. For the
proof of review, it offers the features of electronic signatures. It provides detailed reports.
The tool can be used by businesses of any size.
SmartBear contains many more features like tracking & managing defects, customizing
review templates, collaborating on software artifacts & documents, etc. It can be tried for free
and the price starts at $554 per year for a 5 user pack.
5.3 Examine Load Runner and Win Runner and prepare a comparative
analysis.
1. Load Runner
LoadRunner is a software testing tool from Micro Focus. It is used to test applications,
measuring system behavior and performance under load. LoadRunner can simulate
thousands of users concurrently using application software, recording and later analyzing
the performance of key components of the application.
LoadRunner simulates user activity by generating messages between application
components or by simulating interactions with the user interface such as keypresses or
mouse movements. The messages and interactions to be generated are stored in scripts.
LoadRunner can generate the scripts by recording them, such as logging HTTP requests
between a client web browser and an application's web server.
Features of LoadRunner:
Advantages:
Determines root cause of application performance issues
Accurate detection of system, end user, and code-level bottlenecks
Minimizes cost of application downtime stemmed from performance issues
Allows performance testing of existing legacy applications with new
technologies
Enables testers to test for mobile applications
Offers effective tool utilization tracking
Gives users shorter test cycles to expedite application delivery
Browser-based access to global test resources
Optimal usage of load generator farm
Disadvantages:
Debugging capability needs improvement
Extremely expensive
Uses a lot of memory and crashes if the system cannot meet its computing
requirements
May have compatibility issues
Needs improvement in dump analysis and the subsequent results forwarding
Usage license based on the number of virtual users
Limited load generation capacity
2. WinRunner:
HP WinRunner software was an automated functional GUI testing tool that allowed a user to
record and play back user interface (UI) interactions as test scripts.
As a functional test suite, it worked with HP QuickTest Professional and supported
enterprise quality assurance. It captured, verified and replayed user interactions
automatically, in order to identify defects and determine whether business processes worked
as designed.
The software implemented a proprietary Test Script Language (TSL) that allowed
customization and parameterization of user input
Features of WinRunner:
Advantages:
Reduces time consumption and tediousness.
Reduces the amount of investment in human resources.
Roots out most of the serious bugs.
Disadvantages:
JIRA
JIRA is a tool developed by Australian Company Atlassian. This software is used for bug
tracking, issue tracking, and project management. The JIRA full form is actually inherited
from the Japanese word “Gojira” which means “Godzilla”. The basic use of this tool is to
track issue and bugs related to your software and Mobile apps.
It is also used for project management. The JIRA dashboard consists of many useful
functions and features which make handling of issues easy.
JIRA is a cross-platform issue and bug tracking software with advanced project management
capabilities and features.
DevOps
Study of any two Open source tools in DevOps for Infrastructure Automation, Configuration
Management, Deployment Automation, Performance Management, Log Management,
Monitoring.
1. Chef :
Infrastructure management has come a long way. (Mostly) gone are the days of
manual configurations and deployments, when using SSH in a “for” loop was a
perfectly reasonable way to execute server changes. Automation is a way of life.
Configuration management tools like Chef, Puppet, and Ansible — once on the
bleeding edge — are now used by most enterprises. With infrastructure automation,
you get a central place for managing all of your systems, networks, and devices —
both on-prem and in the cloud — so you can deploy infrastructure and applications
faster, without sacrificing reliability.
Using Chef to automate infrastructure management
If you want to treat your infrastructure as code, a configuration management platform
like Chef makes it possible. You use prewritten code, or Chef “recipes,” to define
your
infrastructure, security policies, and system dependencies, and Chef gives you a
central place to manage it all.
Chef automatically detects and repairs configuration drift, and keeps systems in
compliance. You can roll out security changes and spin up VMs, cloud instances, and
containers in minutes.
Using a tool like Chef means gaining visibility, consistency, and repeatability into
your systems, so you can stop focusing on tasks that keep the lights on, and start
working on the projects that move your company forward.
Configuration Management:
Deployment Automation:
Chef Habitat supports multiple automated deployment patterns. Applications built with
Chef Habitat are published to and promoted through “channels” such as ‘dev’, ‘current’,
‘release’, etc. These enable per-channel automated deployments to make continuous
delivery a snap!
Users can define the update strategy they would like to use during the provisioning
processes. Supported deployment automation options and patterns include:
Automated Rollback – return a system to its prior state
Automated Roll-Forward – redeploy the prior version of a release
At-once – upgrades all instances in parallel
Rolling – sequence upgrades across a group
Blue-green – maintain two identical production environments so that one can
be used for final testing
Canary – deploy to a subset of targets, after validation deploy then to the full
group
Feature-flag – control the rollout of new features to subsets of users
Log Management:
Chef Automate 2.0 uses systemd. Log management is performed according to the
configuration defined for the system service journald.
Viewing Logs:
To view the logs, you can run : journalctl -u chef-automate
To follow the logs in Realtime : journalctl -u chef-automate -f
For information on changing the output, please refer to the man page or run:
journalctl –help
Monitoring:
Use the authenticated https endpoint /status to monitor your Chef Automate installation.
Checking the Status Endpoint
The authenticated endpoint /status provides status for the overall Chef Automate
installation as well as for its component services. When all Chef Automate component
services are up, /status returns a response code of 200. Otherwise, /status returns 500.
The status of a service can be OK, UNKNOWN, or CRITICAL, and is reflected in the
JSON output:
{
"ok": false,
"service_status": [{
"service": "deployment-service",
"status": "OK"
},
{
"service": "config-mgmt-service",
"status": "UNKNOWN"
},
{
"service": "ingest-service",
"status": "CRITICAL"
},
]
}
1. Generate a token:
chef-automate iam token create --id <token-id> <token-name>
2. Create a policy that allows your created token to access the /status endpoint.
curl -k -H "api-token: <admin-token>" -d '{ "name": "Monitoring", "id":
"monitoring", "members": [ "token:<token-id>" ], "statements": [ { "effect":
"ALLOW", "actions": [ "system:status:get" ], "projects": [
"*" ] } ] }' -X POST
https://automate.example.com/apis/iam/v2/policies?pretty
3. Test that your token and policy give you access to the / status endpoint by running the
following command:
{
"ok": true,
"services": [
{
1. "name": "deployment-service",
2. "status": "OK"
},
{
3. "name": "backup-gateway",
4. "status": "OK"
},
{
5. "name": "automate-postgresql",
6. "status": "OK"
},
]
}
• Docker is an open platform for developing, shipping, and running applications. Docker
enables you to separate your applications from your infrastructure so you can deliver
software quickly. With Docker, you can manage your infrastructure in the same ways you
manage your applications. By taking advantage of Docker’s methodologies for shipping,
testing, and deploying code quickly, you can significantly reduce the delay between writing
code and running it in production.
• Docker uses a client-server architecture. The Docker client talks to the Docker daemon,
which does the heavy lifting of building, running, and distributing your Docker containers.
The Docker client and daemon can run on the same system, or you can connect a Docker
client to a remote Docker daemon. The Docker client and daemon communicate using a
REST API, over UNIX sockets or a network interface. Another Docker client is Docker
Compose, that lets you work with applications consisting of a set of containers.
Infrastructure Automation:
The entire process of how is Docker used for cloud infrastructure automation starts
with the knowledge of how is Docker used for cloud infrastructure automation? Once
you understand how is Docker used for cloud infrastructure automation, then you can
look at a range of different problems that may be faced by businesses around the
world.
By adopting the standards of the market, such as VMWare Helion, and the principles
of cloud infrastructure automation, such as application-centric programming and
elastic web frameworks, you will be able to use the basic knowledge of these
technologies to tailor the application to fit the needs of your business. Once you have
mastered these techniques, then you will be able to automate the processes to suit
your business.
In the same way that VMWare Helion has developed its own ecosystem and
applications, the cloud infrastructure automation project also has an application
programming interface or API that it has created for itself.
In addition, a number of these applications have been developed to provide end-users
with the ability to automate their own applications.
The automation suite itself has very few requirements for end-users, and there is a
range of automated solutions available.
The fact that the whole process can be carried out entirely from a web browser makes
it possible for a business to develop and manage the automation process from the
comfort of their own office, and from a position of relative ease.
The real issue for those who are looking at how is Docker used for cloud
infrastructure automation is the ability to integrate the process. While the underlying
technologies of containers and orchestration make it possible to automate various
aspects of a certain set of applications, only a small number of these technologies
support the capability to integrate other services and systems through an application.
If you are interested in how is Docker used for cloud infrastructure automation, and
automation of your application, you should be looking at using the available services
of the automation suite for your system. VMWare’s Helion platform is just one
example of this available service.
Deployment Automation:
Docker – run Docker containers via UCD component templates and map Docker
images to components within UrbanCode Deploy (requires Docker Source Config
plugin)
Docker Registry – Source plugin – import versions from registry – traceability,
governance, trusted sources
Docker Compose – configure a single component in UCD and use it to deploy a
Compose file with many services. Create components and corresponding inventory
for each of those automatically.
IBM Container Service on Bluemix – using the Cloud Foundry IBM Containers
command line utility, you can interact with containers running in Bluemix and
coordinate crosscloud or environment deployments
Kubernetes – interact with Kubernetes sources within the UCD interface and kick off
deployments across environments. Our partner Apprenda (PaaS provider) has a
similar plugin.
Log Management:
Log management is important for making development decisions, conducting root cause
analysis when something goes wrong, demonstrating security compliance, and much
more.
When you’re working with containerized apps in Docker, however, logging becomes a bit
more complex than it is with traditional methods. You need more data (compared to
hardware-centric apps) to get to the heart of an issue.
Docker includes logging drivers in the platform to give you access to performance data. It
also enables logging driver plugins for those who would like to integrate another logging
tool. Using Docker’s logging capabilities, you can view log data at both the daemon
process level and the container level.
Logging Methods in Docker
For all of the advantages Docker containers offer to DevOps teams, they also
change how log management is done. In Docker, effective logging includes log
events from the host OS, the application, and the Docker platform.
There are several methods for capturing logs in a Docker environment, each with
their own advantages. Which one works best for you will depend on your
application environment and unique needs.
Application-based logging
An application inside a Docker container can use a logging framework to manage
the logging process. This allows a user to bypass Docker and the host OS, logging
events to a remote server, and it offers more control over the logging event.
However, it also adds significant overhead to the app processes. If you can benefit
from using the app’s logging framework and do not want to add log functionality
to the host, this might be an effective method for you.
Data volumes for log retention
When a container shuts down, it loses its data. To retain log events, those events
need to be sent elsewhere. This can be an external logging service, or it can be a
data volume: a directory within the container that is linked to the host machine.
Saving log events to a data volume helps ensure that log data doesn’t get lost
when the container shuts down. It also makes the log data available for sharing
with other containers.
Docker logging driver
Docker included logging drivers on their platform, and these drivers offer some
performance advantages over other methods because they bypass the need to read
or write from log files. Instead, the logging driver reads events straight from the
container’s output and forwards them to the host.
This may not, however, be a reliable method for many users, as it does not allow
for log parsing.
Monitoring:
Monitoring Docker, no matter if used purely or integrated into one of the systems
mentioned above, should include aspects of health, performance, and resource usage
of the containers. Failures in the daemon directly influence the health of the system as
a whole. There are many ways to monitor basic Docker indicators.
Docker Stats: The easiest tool to use and monitor Docker containers is Docker Stats,
which is built into the actual Docker CLI (command line interface). Replicating much
of the style known from famous Linux tools like top or iotop, it provides information
about container names, CPU, memory and io (block device and network) usage.
9/25/2021
Software Design :
UNIT 5 :
SOFTWARE DESIGN
Data design • It transforms the information domain model created during analysis into the data
Content : structures.
• Data Object, relationship and data dictionary provide the basis for data design.
Design Concept and Design Principles
Architectural Design
Architectural • It defines the relationship between major structural elements of the software.
Component Level Design design • It can be derived from the system specification, the analysis model and the
• Function Oriented Design interaction of subsystems defined within the analysis model.
• Object Oriented Design
• MS Visio Tool
• It describes how the software communicates within itself, with systems that
User Interface Design Interface interoperate and with humans who use it.
design
Web Application Design • Interface is required when something flows. Hence, DFD and CFD provide much
of the information required for interface design.
Patterns
A design pattern describes a design structure and that structure solves a particular design
problem in a specified content.
Modularity
A 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.
Functional independence
Design Concepts : The functional independence is the concept of separation and related to the concept of
modularity, abstraction and information hiding.
The software design concept provides a framework The functional independence is accessed using two criteria i.e Cohesion and coupling.
implementing the right software.
Cohesion
• Abstraction - data, procedure, control • Cohesion is an extension of the information hiding concept.
• A cohesion module performs a single task and it requires a small interaction with the
• Architecture - the overall structure of the software other components in other parts of the program.
• Patterns - “conveys the essence” of a proven design solution
Coupling
• Modularity - compartmentalization of data and function • Coupling is an indication of interconnection between modules in a structure of software.
• Information Hiding - controlled interfaces
Abstraction Refinement
A solution is stated in large terms using the language of the problem environment at the Refinement is a top-down design approach.
highest level abstraction. It is a process of elaboration.
The lower level of abstraction provides a more detail description of the solution. A program is established for refining levels of procedural details.
A sequence of instruction that contain a specific and limited function refers in a procedural A hierarchy is established by decomposing a statement of function in a stepwise manner till
abstraction. the programming language statement are reached.
A collection of data that describes a data object is a data abstraction.
Refactoring
Architecture It is a reorganization technique which simplifies the design of components without changing
The complete structure of the software is known as software architecture. its function behavior.
Structure provides conceptual integrity for a system in a number of ways. Refactoring is the process of changing the software system in a way that it does not change
The architecture is the structure of program modules where they interact with each other in the external behavior of the code still improves its internal structure.
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.
9/25/2021
Architectural Design :
The design should not reinvent the wheel. • Structural model: Illustrates architecture as an ordered collection of program
components.
The design should “minimize the intellectual distance” between the software and the • Dynamic model: Specifies the behavioral aspect of the software architecture and
problem as it exists in the real world. indicates how the structure or system configuration changes as the function
changes due to change in the external environment
The design should exhibit uniformity and integration.
• Process model: Focuses on the design of the business or technical process,
The design should be structured to accommodate change. which must be implemented in the system
• Functional model: Represents the functional hierarchy of a system
The design should be structured to degrade gently, even when aberrant data, events,
• Framework model: Attempts to identify repeatable architectural design patterns
or operating conditions are encountered.
encountered in similar types of application. This leads to an increase in the level of
Design is not coding, coding is not design. abstraction.
The design should be assessed for quality as it is being created, not after the fact.
Architectural Style :
The architectural model or style is a pattern for creating the system architecture for
given problem. However, most of the large systems are heterogeneous and do not
follow single architectural style.
System categories define the architectural style
1. Components : They perform a function. For example : Database, simple computational
modules, clients, servers and filters.
2. Connectors : Enable communications. They define how the components communicate, co-
ordinate and co-operate. For example : Call, event broadcasting, pipes
3. Constraints : Define how the system can be integrated.
ARCHITECTURAL DESIGN 4. Semantic models : Specify how to determine a system's overall properties from the properties
of its parts.
Architecture series of transformations are applied to prove produced output data. The The layer architecture is composed of different
set of components called filters are connected by pipes to transform the data from layers. Each layer is intended to perform specific
one component to another. These filters work independently without bothering about operation so machine instruction set can be
the working of neighboring filters. generated. Various components in each layer
perform specific operations.
3. Structure charts
Component Level Design : The structure chart is a principal tools of structure design.
In the structure chart is module. the module is defined as a collection of program
statement in four attributes.
Component level design is also called as a Procedural design. After data,
architectural and interface design the component level design occurs. • Input and Output : What the module gets from the invoker is called Input and what
the receiver gets from the module is called Output.
The goal of component level design is to translate the design model into operational • Function : The function processes in the input and produces the output.
software. • Mechanics : The code or the logic by which the function is carried out.
The goal of software design strategy is to organize the program modules in such a way • Internal data : It is the own workspace.
that they can be easily developed and can be changed easily if needed. the most
commonly used strategies of software design are
4. Pseudo codes
1. Function oriented design
Pseudo code is a combination of algorithm written in simple language and programming
2. Object oriented design language statements. This code is effective building block for actual program.
Pseudo code avoids variable declaration but they are written using some actual
programming language’s constructs, like C, Fortran, Pascal etc.
Pseudo code contains more programming details than Structured English. It provides a
method to perform the task, as if a computer is executing the code.
In function oriented design, the design of a the software system is divided into various The software product can be designed using structured oriented method or using
interacting units. Each unit then becomes a function. object oriented techniques. There are some merits and demerits associated with these
systems which directly affect the software development process.
A system is viewed as something that performs a set of functions. Starting at this high-
level view of the system, each function is successively refined into more detailed In this techniques, the overhead of partitioning the structure into modules is involved.
functions. Finding bugs is simple because system structure is modular.
Various models that can be created in function oriented design are Objects have their own internal data which define their state.
1. Data flow diagrams
Similar objects constitute a class. In other words, each object is a member of some
2. Data dictionaries class. Classes may inherit features from super class. Conceptually, objects
3. Structure charts communicate by message passing.
4. Pseudo codes
MS Visio is basically software beneath MS Suite, Basically utilized for formats and
charts. They can be utilized for building pictures like flowcharts, choice graphs and
network diagrams. It indeed has sufficient charts to form arranging a straightforward
space format for a conference precise.
The Microsoft Visio tool is commonly used for designing the UML diagrams. Using this
tool you can draw all kinds of UML diagrams. You can drag and drop different
components of object oriented design and can join them together using appropriate
connector.
Hence are some steps used to create the class diagram in Visio Step 3 : Save the diagram in different formats. You can copy and paste the diagram in Word
Document.
Step 1 : Start Visio 2003 or 2007. Then choose the drawing type. Select Software folder,
choose UML-model diagram icon and UML Static Structure Diagram.
• Place the mouse over the shapes in UML Static Structure Diagram to view more details.
The visual part of a computer application or operating system through which a client Following design principles are used :
interacts with a computer or software. It determines how commands are given to the 1. User familiarity : Instead of using computer terminology make use of user oriented
computer or the program and how data is displayed on the screen. terminologies. For example in Microsoft Office 'software, the terms such as document,
spreadsheet, letter, folder are used and use of the terms directory, file and identities are
Types of User Interface : avoided.
• There are two main types of User Interface: 2. Consistency : The appropriate level of consistency should be maintained in the
user interface. For example the commands or menus should be of the same format.
Text-Based User Interface or Command Line Interface
Graphical User Interface (GUI) 3. Minimal surprise : The commands should operate in a known way. This makes the
user to easily predict the interface. For example the in word processing document under
the tool menu there should be a facility of spelling and grammar checking.
4. Recoverability : The system should provide recovering facility to user from his
errors so that user can correct those error. For example an undo command should be
given so that the user can correct his errors, or while deleting something the confirmation
action must be provided, so that the user can think again while deleting something.
5. User guidance : The user interface can be effectively used by a novice user if some
user guidance such as help systems, online manuals etc. are supplied.
This method relies primarily on the keyboard. A typical example of this is UNIX. Thao Model has proposed three golden rules for user interface design :
1) Place the user in control.
2) Reduce the user’s memory load.
Advantages : 3) Make the interface consistent.
• Many and easier to customizations options.
• Typically capable of more important tasks.
Disadvantages :
• Relies heavily on recall rather than recognition.
• Navigation is often more difficult.
GUI relies much more heavily on the mouse. A typical example of this type of interface is While analyzing any requirement during requirement analysis the user often demands
any versions of the Windows operating systems. for the system which will satisfy user requirements and help him to get things done.
That means the user always wants to control the computerized system.
Following are the Design Principle to that allows user to control system :
Advantages :
• Define the interaction modes in such a way that user will be restricted from doing
• Less expert knowledge is required to use it. the unnecessary action.
• Easier to Navigate and can look through folders quickly in a guess and check manner.
• The interaction should be flexible.
• The user may switch quickly from one task to another and can interact with several
different applications.
• Provide the facility of ‘undo’ or ‘interruption’ in user interaction.
• Allow user to customize the interaction.
• Hide technical details from the user.
Disadvantages :
• The objects appearing on the screen should be interactive with user.
• Typically decreased options.
• Usually less customizable. Not easy to use one button for tons of different variations.
9/25/2021
Following are the principle suggested by Mandel to reduce the memory load of the Interface design :
user : The interface design is a phase in which all the interface objects and corresponding
• Do not force the user to have short term memory. actions of each task are defined.
• Established meaningful defaults. Implementation :
• Use intuitive shortcuts. The implementation phase involves creation of prototype using which the interface
• The visual layout of the interface should be realistic. scenarios can be evaluated. To accomplish the construction of user interface some
• Disclose the information gradually. automated tools can be used
Validation :
The goal of validation is to validate the interface for its correct performance. During
validation it is tested whether all the user requirements get satisfied or not. The purpose of
validation is also to check whether the interface is easy to learn and easy to use.
The user interface should be consistent. This consistency can be maintained at three
levels such as
The visual information (all screen layouts) should be consistent throughout and it
should be as per the design standards.
There should be limited at of input help holding the non conflicting information.
The information flow translating from one class to another should be consistent.
Designing the user interface is an iterative process which can be defined with the help In web engineering, the web design can be of two types - it can be Generic and it can
of a spiral model. The designing of an interface starts from the mid of the spiral. be Specific.
The spiral model encompasses four different frameworks those are: From generic viewpoint various design models get developed as a outcome of
1. Interface Analysis and Modelling design phase. Using these design models the user requirements can be translated into
the executable code form. At the same time design must be specific. That means the
2. Interface Design web design must address key attributes of the web application in such a manner that
3. Implementation the web engineer can build the complete web application and can test it.
4. Interface Validation
9/25/2021
Design Pyramid :
The web design can be defined as the design that leads to a model that contains
appropriate mix of aesthetic, content and technology. This mix may vary depending
upon the nature and design activities of the web application.
Interface Design :
The interface design must be easy to use, easy to learn, easy to navigate, intuitive,
consistent, efficient, error free and functional. It should provide a satisfying experience to the end
user. This kind of defines the structure and organization of user interface. It includes the
representation of screen layout, various modes of interactions and navigation mechanism.
Aesthetic Design :
Aesthetic design means the graphical design. This kind of design define the look and feel of
the web application it includes text style, graphic design, color scheme, text size and related
athletic decisions. In aesthetic design there are two important issues that must be focused :
• Layout Issues
• Graphic Design Issues
Content Design :
The content design develops the Representation for the content object. It also defines the
mechanism required to instantiate state the relationship of one content object with other. This
design defines the layout, structure and outline of the content present in the web application.
Architecture Design :
This design defines the hypermedia structure of the web application. The architecture design
focuses on two type of a design architecture
• Content architecture
• Web application architecture
Navigation Design :
The navigation pathways are nothing but the links which allow user to access the content
object and functionalities of the web application. To define the navigational pathways designer
must do following things -
• Identify the semantics of navigation for different users of the site.
• Define the mechanism (Syntax) or a method for achieving the navigation.
Component Design :
This design defines the processing logic required to implement functional components.