Академический Документы
Профессиональный Документы
Культура Документы
COMPUTER ENGINEERING
SUB CODE: 3340703 SUB NAME: FUNDAMENTALS OF SOFTWARE DESIGNING
PRACTICAL: 1
WATERFALL MODEL:
The Waterfall Model was 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 illustrates the software development process in a linear sequential
flow; hence it is also referred to as a linear-sequential life cycle model. This means that
any phase in the development process begins only if the previous phase is complete. In
waterfall model phases do not overlap.
System Design: The requirement specifications from first phase are studied in
this phase and system design is prepared. System Design helps in specifying
hardware and system requirements and also helps in defining overall system
architecture.
Implementation: With inputs from 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.
All these phases are cascaded to each other in which progress is seen as flowing steadily
downwards (like a waterfall) through the phases. The next phase is started only after the
defined set of goals are achieved for previous phase and it is signed off, so the name
"Waterfall Model". In this model phases do not overlap.
Ample resources with required expertise are available to support the product.
Advantage:
The advantage of waterfall development is that it allows for departmentalization and
control. A schedule can be set with deadlines for each stage of development and a product
can proceed through the development process model phases one by one.
Disadvantage :
The disadvantage of waterfall development is that it does not allow for much reflection or
revision. Once an application is in the testing stage, it is very difficult to go back and
change something that was not well-documented or thought upon in the concept stage.
In incremental model the whole requirement is divided into various builds. During each
iteration, the development module goes through the requirements, design, implementation
and testing phases. Each subsequent release of the module adds function to the previous
release. The process continues till the complete system is ready as per the requirement.
Resources with needed skill set are not available and are planned to be used on
contract basis for specific iterations.
There are some high risk features and goals which may change in the future.
The disadvantage with this SDLC model is that it is applicable only to large and bulky
software development projects. This is because it is hard to break a small software system
into further small serviceable increments/modules.
SPIRAL MODEL:
The spiral model has four phases. A software project repeatedly passes through these
phases in iterations called Spirals.
Identification:
This phase starts with gathering the business requirements in the baseline spiral.
In the subsequent spirals as the product matures, identification of system
requirements, subsystem requirements and unit requirements are all done in this
phase.
This also includes understanding the system requirements by continuous
communication between the customer and the system analyst. At the end of the spiral
the product is deployed in the identified market.
Design:
Design phase starts with the conceptual design in the baseline spiral and involves
architectural design, logical design of modules, physical product design and final
design in the subsequent spirals.
Construct or Build:
Based on the customer evaluation, software development process enters into the next
iteration and subsequently follows the linear approach to implement the feedback
Advantage:
Changing requirements can be accommodated.
Allows for extensive use of prototypes
Requirements can be captured more accurately.
Users see the system early.
Development can be divided into smaller parts and more risky parts can be
developed earlier which helps better risk management.
Disadvantage:
Management is more complex.
End of project may not be known early.
Not suitable for small or low risk projects and could be expensive for small
projects.
Process is complex
Spiral may go indefinitely.
PRACTICAL: 2
There are basically two types of software requirements - Functional and Non-
Functional. As the name implies, Functional requirements describe the functionality of
the product. They describe exactly what tasks the software must perform. Functional
requirements define the scope of the system, the product boundaries, and its connections
to adjacent systems. Functional requirements also define the business rules. Business
rules are the rules that the system must conform to, based on the individual business. This
includes defining the data that must be tracked. The business rules are the most important
type of functional requirements and most of your requirements will be of this type.
Non-Functional requirements describe the look and feel of the system. This includes the
visual properties of the system, its usability, and the performance requirements - how big,
how fast, etc. Non-Functional requirements also include the product's intended operating
environment and any maintainability, portability and security issues. Non-Functional
requirements also include cultural and political issues as well as legal requirements that
the software must conform to.
So, now that we know what types of information we should be collecting, let's take a look
at the characteristics of good requirements. Good requirements have the following
attributes. They are:
Looking at the above list, it's obvious that quality and accuracy are extremely important.
One way to assure quality is to create a single checkpoint that each requirement must
pass through. Thus, a single person or a group of people must eventually individually
approve every requirement no matter where it originated. Having a single quality
checkpoint is especially important in large or complex projects. In addition, it's vital to
make sure that the requirements are not too general, and that they are comprehensive and
completely clear. Keep in mind that the person collecting the requirements might not
always be the same person who will be writing the actual code.
So, where and how do we find out about the requirements for a system? The best places
are from:
Domain Experts - people who are very knowledgeable and work in the area
of the system that is being built
Users - people who will actually be the ones using the system once it's built
It's important that you set up meetings with these people and interview them in order to
extract the information. This, of course, is not always an easy task, depending on the
people involved and how well they can communicate about what they do and how they
do it. More information about dealing with the customer while collecting requirements
can be found in the "Customers vs. Code" column in this issue of Component Developer
Magazine.
PRACTICAL: 3
1. Introduction:
1.1 Purpose:
This document is meant to delineate the features of OSS, so as to serve as a guide to the
developers on one hand and a software validation document for the prospective client on
the other. The Online Shopping System (OSS) for furniture shop web application is
intended to provide complete solutions for vendors as well as customers through a single
get way using the internet. It will enable vendors to setup online shops, customer to
browse through the shop and purchase them online without having to visit the shop
physically. The administration module will enable a system administrator to approve and
reject requests for new shops and maintain various lists of shop category.
1.2 Scope:
This system allows the customer’s to maintain their cart for add or remove the product
over the internet.
1.3 Definitions:
1.3.1 Overview:
2. General Description:
The Online Shopping system (OSS) application enables vendors to set up online shops,
customers to browse through the shops, and a system administrator to approve and reject
requests for new shops and maintain lists of shop categories. Also the developer is
designing an online shopping site to manage the items in the shop and also help
Customers purchase them online without having to visit the shop physically.The online
shopping system will use the internet as the sole method for selling goods to its
consumers.
3. Functional Requirement:
This section provides requirement overview of the system. Various functional modules
that can be implemented by the system will be –
3.1 Description:
3.1.1 Registration:
If customer wants to buy the product then he/she must be registered, unregistered user
can’t go to the shopping cart.
3.1.2 Login:
Customer logins to the system by entering valid user id and password for the shopping.
Changes to cart means the customer after login or registration can make order or cancel
order of the product from the shopping cart.
3.1.4 Payment:
For customer there are many type of secure billing will be prepaid as debit or credit card,
post paid as after shipping, check or bank draft. The security will provide by the third
party like Pay-Pal etc.
3.1.5 Logout:
After the payment or surf the product the customer will logged out.
After all transaction the system can generate the portable document file (.pdf) and then
sent one copy to the customer’s Email-address and another one for the system data base
to calculate the monthly transaction .
4. Interface Requirement:
The System must run over the internet, all the hardware shall require to connect internet
will be hardware interface for the system. As for e.g. Modem, WAN – LAN, Ethernet
Cross-Cable.
The system is on server so it requires the any scripting language like PHP, VBScript
etc.The system require Data Base also for the store the any transaction of the system like
MYSQL etc. system also require DNS(domain name space) for the naming on the
internet. At the last user need web browser for interact with the system.
5. Performance Requirement:
There is no performance requirement in this system because the server request and
response is depended on the end user internet connection.
6. Design Constrain:
The system shall be built using a standard web page development tool that conforms to
Microsoft’s GUI standards like HTML, XML etc.
7.1 Security:
The system use SSL (secured socket layer) in all transactions that include any
confidential customer information. The system must automatically log out all customers
after a period of inactivity. The system should not leave any cookies on the customer’s
computer containing the user’s password. The system’s back-end servers shall only be
accessible to authenticated administrators. Sensitive data will be encrypted before being
sent over insecure connections like the internet.
7.2 Reliability:
The system provides storage of all databases on redundant computers with automatic
switchover.
The reliability of the overall program depends on the reliability of the separate
components. The main pillar of reliability of the system is the backup of the database
which is continuously maintained and updated to reflect the most recent changes.
Thus the overall stability of the system depends on the stability of container and its
underlying operating system.
7.3 Availability:
The system should be available at all times, meaning the user can access it using a web
browser, only restricted by the down time of the server on which the system runs. In case
of a of a hardware failure or database corruption, a replacement page will be shown. Also
in case of a hardware failure or database corruption, backups of the database should be
retrieved from the server and saved by the administrator. Then the service will be
restarted. It means 24 X 7 availability.
7.4 Maintainability:
A commercial database is used for maintaining the database and the application server
takes care of the site. In case of a failure, a re-initialization of the program will be done.
Also the software design is being done with modularity in mind so that maintainability
can be done efficiently.
7.5 Portability:
The application is HTML and scripting language based. So The end-user part is fully
portable and any system using any web browser should be able to use the features of the
system, including any hardware platform that is available or will be available in the
future.
An end-user is use this system on any OS; either it is Windows or Linux.
The system shall run on PC, Laptops, and PDA etc.
8. Operational Scenario:
The customer wants to buy item. The system shows all product categories to customer. If
customer select item then they listed in shopping cart for buying.
PRACTICAL: 4
Typically used for business process modeling, activity diagrams are also useful for
system modeling. In its basic form, an activity diagram is a simple and intuitive
illustration of what happens in a workflow, what activities can be done in parallel, and
whether there are alternative paths through the workflow.
Activity diagrams as defined in the Unified Modeling Language (UML) are derived from
various techniques to visually illustrate workflows.
In the Rational Unified Process, we talk about how you can use activity diagrams to
visualize the workflow of a business use case. A complete workflow description will have
a basic flow, and one or several alternative flows. This workflow has a structure that we
can define textually, using informal if, if-then-else, or does-until statements of various
kinds. For a simple workflow with a simple structure, such textual definitions may be
quite sufficient, but in the case of more complex structures, activity diagrams help to
clarify and make more apparent what the workflow is.
Historically, activity diagramming techniques have mostly been used in the business
process modeling domain, but this practical will also briefly discuss how you can use it in
the system modeling domain.
The purpose of this practical is to show how you can use activity diagrams within the
Rational Unified Process for business modeling as well as system modeling. Activity
diagrams are often mentioned almost as a synonym to business modeling.
Diagram Notations:
Decision Node:
The diamond below represents a conditional branch point or decision node. A
decision node has one input and two or more outputs:
Each output has a condition attached to it, which is written in brackets. If a condition
is met, the flow proceeds along the appropriate output. An ‘else’ output can be
defined along which the flow can proceed if no other condition is met.
Arrows run from the start towards the end and represent the order in which activities
happen .Within the control flow an incoming arrow starts a single step of an activity;
after the step is completed the flow continues along the outgoing arrow. A name can
be attached to an edge (close to the arrow).
Merge Node:
The diamond below has several inputs and only one output:
Its purpose is the merging of flows. The inputs are not synchronized; if a flow reaches
such a node it precedes at the output without waiting for the arrival of other flows.
Initial Node:
The initial node is the starting point of an activity. An activity can have more than one
initial node; in this case several flows start at the beginning of an activity:
Exit
PRACTICAL: 5
A use case diagram at its simplest is a representation of a user's interaction with the
system and depicting the specifications of a use case. A use case diagram can portray the
different types of users of a system and the various ways that they interact with the
system. This type of diagram is typically used in conjunction with the textual use case
and will often be accompanied by other types of diagrams as well.
An Actor models a type of role played by an entity that interacts with the subject (e.g., by
exchanging signals and data), but which is external to the subject.
Diagram Notations:
The actors that the system you are describing interacts with, the system itself, the use
cases, or services, that the system knows how to perform, and the lines that represent
relationships between these elements.
Actor:
An actor can be defined as some internal or external entity that interacts with the system.
Actor is used in a use case diagram to describe the internal or external entities.
"Actors may represent roles played by human users, external hardware, or other subjects.
Note that an actor does not necessarily represent a specific physical entity but merely a
particular facet (i.e., “role”) of some entity that is relevant to the specification of its
associated use cases. Thus, a single physical instance may play the role of several
different actors and, conversely, a given actor may be played by multiple different
instances."
Use case is represented as an eclipse with a name inside it. It may contain additional
responsibilities.
USECASE DIAGRAM:
PRACTICAL: 6
The terms data dictionary and data repository indicate a more general software utility
than a catalogue. A catalogue is closely coupled with the DBMS software. It provides the
information stored in it to the user and the DBA, but it is mainly accessed by the various
software modules of the DBMS itself, such as DDL and DML compilers, the query
optimizer, the transaction processor, report generators, and the constraint enforcer. On the
other hand, a data dictionary is a data structure that stores metadata, i.e., (structured) data
about data. The software package for a stand-alone data dictionary or data repository may
interact with the software modules of the DBMS, but it is mainly used by the designers,
users and administrators of a computer system for information resource management.
These systems maintain information on system hardware and software configuration,
documentation, application and users as well as other information relevant to system
administration.
If a data dictionary system is used only by the designers, users, and administrators and
not by the DBMS Software, it is called a passive data dictionary. Otherwise, it is called
an active data dictionary or data dictionary. When a passive data dictionary is updated, it
is done so manually and independently from any changes to a DBMS (database)
structure. With an active data dictionary, the dictionary is updated first and changes occur
in the DBMS automatically as a result.
Database users and application developers can benefit from an authoritative data
dictionary document that catalogs the organization, contents, and conventions of one or
more databases. This typically includes the names and descriptions of various tables
(records or Entities) and their contents (fields) plus additional details, like the type and
length of each data element. Another important piece of information that a data dictionary
can provide is the relationship between Tables. This is sometimes referred to in Entity-
Relationship diagrams, or if using Set descriptors, identifying which Sets database Tables
participate in.
In an active data dictionary constraints may be placed upon the underlying data. For
instance, a Range may be imposed on the value of numeric data in a data element (field),
or a Record in a Table may be FORCED to participate in a set relationship with another
Record-Type. Additionally, a distributed DBMS may have certain location specifics
described within its active data dictionary (e.g. where Tables are physically located).
The data dictionary consists of record types (tables) created in the database by systems
generated command files, tailored for each supported back-end DBMS. Command files
contain SQL Statements for CREATE TABLE, CREATE UNIQUE INDEX, ALTER
TABLE (for referential integrity), etc., using the specific statement required by that type
of database. There is no universal standard as to the level of detail in such a document
PRACTICAL: 7
An ER Diagram
Entity
An entity is an object or concept about which you want to store information.
Learn how to edit text on an entity.
Weak Entity
Key attribute
A key attribute is the unique, distinguishing characteristic of the entity. For example, an
employee's social security number might be the employee's key attribute.
Multivalued attribute
A multivalued attribute can have more than one value. For example, an employee entity
can have multiple skill values.
Derived attribute
A derived attribute is based on another attribute. For example, an employee's monthly
salary is based on the employee's annual salary.
Relationships
Relationships illustrate how two entities share information in the database structure.
Ordinality is also closely linked to cardinality. While cardinality specifies the occurrences
of a relationship, ordinality describes the relationship as either mandatory or optional. In
other words, cardinality specifies the maximum number of relationships and ordinality
specifies the absolute minimum number of relationships.
Recursive relationship
In some cases, entities can be self-linked. For example, employees can supervise other
employees.
PRACTICAL: 8
Process Notations:
Process
A process transforms incoming data flow into outgoing data flow.
Data Store
Data stores are repositories of data in the system. They are sometimes also referred to as
files.
Dataflow Notations
Dataflow
Data flows are pipelines through which packets of information flow. Label the arrows
with the name of the data that moves through it.
External Entity
External entities are objects outside the system, with which the system communicates.
External entities are sources and destinations of the system's inputs and outputs.
[LEVEL 0]
[DFD FOR HOSPITAL MANAGEMENT SYSTEM]
LEVEL 1 ADMINISTROTOR
LEVEL 1 USER
PRACTICAL: 9
A Gantt chart, commonly used in project management, is one of the most popular and
useful ways of showing activities (tasks or events) displayed against time. On the left of
the chart is a list of the activities and along the top is a suitable time scale. Each activity
is represented by a bar; the position and length of the bar reflects the start date, duration
and end date of the activity. This allows you to see at a glance:
To summarize, a Gantt chart shows you what has to be done (the activities) and when (the
schedule).
PRACTICAL: 10
A test case is a documentation which specifies input values, expected output and the
preconditions for executing the test.
A set of test inputs, execution conditions, and expected results developed for a particular
objective, such as to exercise a particular program path or to verify compliance with a
specific requirement. A sequence of one or more subtests executed as a sequence because
the outcome and/or final state of one subtest is the input and/or initial state of the next.
The word ‘test’ is used to include subtests, tests proper, and test suites.
Below mentioned are some of the objectives behind running the test cases.
What is Validation?
Validation ensures that the software operates as planned in the requirements phase by
executing it, running predefined test cases and measuring the output with expected
results.
Validation answers the question “Did we build the software fit for purpose and does it
provides the solution to the problem”.
Acceptance Testing:
Acceptance testing is performed after system testing is done and all or most of the major
defects have been fixed. The goal of acceptance testing is to establish confidence in the
delivered software/system that it meets the end user/customers requirements and is fit for
use Acceptance testing is done by user/customer and some of the project stakeholders.
Acceptance testing is done in production kind of environment.
For Commercial off the shelf (COTS) software’s that are meant for the mass market
testing needs to be done by the potential users, there are two types of acceptance testing
for COTS software’s.
Alpha Testing
Alpha testing is mostly applicable for software’s developed for mass market i.e.
Commercial off the shelf (COTS), feedback is needed from potential users. Alpha testing
is conducted at developers site, potential users, members or developers organization are
invited to use the system and report defects.
Beta Testing
System Testing
Following types of testing should be considered during system testing cycle. The test
types followed in system testing differ from organization to organization however this list
covers some of the main testing types which need to be covered in system testing.
Sanity Testing
Usability Testing
Stress Testing
Load Testing
Performance Testing
Regression Testing
Maintenance Testing
Security Testing
Accessibility Testing
Integration Testing
In integration testing the individual tested units are grouped as one and the interface
between them is tested. Integration testing identifies the problems that occur when the
individual units are combined i.e. it detects the problem in interface of the two units.
Integration testing is done after unit testing.
Top-down Approach
Top down approach tests the integration from top to bottom, it follows the architectural
structure.
Example: Integration can start with GUI and the missing components will be substituted
by stubs and integration will go on.
Bottom-up approach
In bottom up approach testing takes place from the bottom of the control flow, the higher
level components are substituted with drivers
Unit Testing
Unit is the smallest testable part of the software system. Unit testing is done to verify that
the lowest independent entities in any software are working fine. The smallest testable
Once the system is integrated and you found error in an integrated system it becomes
difficult to differentiate that the error occurred in which unit so unit testing is mandatory
before integrating the units.
When developer is coding the software it may happen that the dependent modules are not
completed for testing, in such cases developers use stubs and drivers to simulate the
called (stub) and caller (driver) units. Unit testing requires stubs and drivers, stubs
simulate the called unit and driver simulates the calling unit.
STUBS:
Assume you have 3 modules, Module A, Module B and module C. Module A is ready and
we need to test it, but module A calls functions from Module B and C which are not
ready, so developer will write a dummy module which simulates B and C and returns
values to module A. This dummy module code is known as stub.
DRIVERS:
Now suppose you have modules B and C ready but module A which calls functions from
module B and C is not ready so developer will write a dummy piece of code for module A
which will return values to module B and C. This dummy piece of code is known as
driver.
Functional Testing:
Non functional testing tests the characteristics of the software like how fast the response
is, or what time does the software takes to perform any operation.
Some examples of Non-Functional Testing are:
1. Performance Testing
2. Load Testing
3. Stress Testing
Non functionality testing focuses on the software’s performance i.e. How well it works.
Static Testing
Static testing is the form of software testing where you do not execute the code being
examined. This technique could be called non-execution technique. It is primarily syntax
checking of the code or manually reviewing the code, requirements documents, design
documents etc. to find errors.
From the black box testing point of view, static testing involves reviewing requirements
and specifications. This is done with an eye toward completeness or appropriateness for
the task at hand. This is the verification portion of Verification and Validation.
The fundamental objective of static testing technique is to improve the quality of the
software products by finding errors in early stages of software development life cycle.
Dynamic Testing
Dynamic Testing is used to test the software by executing it. Dynamic Testing is also
known as Dynamic Analysis, this technique is used to test the dynamic behavior of the
code. In dynamic testing the software should be compiled and executed, this analyses the
variable quantities like memory usage, CPU usage, response time and overall
performance of the software.
Dynamic testing involves working with the software, input values are given and output
values are checked with the expected output. Dynamic testing is the Validation part of
Verification and Validation.
Unit Testing
Integration Testing
System Testing
Acceptance Testing
Black box testing tests functional and non-functional characteristics of the software
without referring to the internal code of the software.
White Box testing tests the structure of the software or software component. It checks
what going on inside the software.
Also Know as clear box Testing, glass box testing or structural testing. Requires
knowledge of internal code structure and good programming skills. It tests paths within a
unit and also flow between units during integration of units.
Regression Testing
Regression Testing is done to find out the defects that arise due to code changes made in
existing code like functional enhancements or configuration changes.
The main intent behind regression testing is to ensure that any code changes made for
software enhancements or configuration changes has not introduced any new defects in
the software.
It is necessary to have a regression test suite and execute that suite after every new
version of software is available. Regression test suite is the ideal candidate for
automation because it needs to be executed after every new version.
Load Testing
Load testing tests the software or component with increasing load, number of concurrent
users or transactions is increased and the behavior of the system is examined and checked
what load can be handled by the software.
The main objective of load testing is to determine the response time of the software for
critical transactions and make sure that they are within the specified limit. It is a type of
performance testing. Load Testing is non-functional testing.
Stress Testing
Stress testing tests the software with a focus to check that the software does not crashes if
the hardware resources (like memory, CPU, Disk Space) are not sufficient.
Stress testing puts the hardware resources under extensive levels of stress in order to
ensure that software is stable in a normal environment.
In stress testing we load the software with large number of concurrent users/processes
which cannot be handled by the systems hardware resources. Stress Testing is a type of
performance testing and it is a non-functional testing.
Performance Testing
Performance Testing is done to determine the software characteristics like response time,
throughput or MIPS (Millions of instructions per second) at which the system/software
operates.
The purpose of doing performance testing is to ensure that the software meets the
specified performance criteria, and figure out which part of the software is causing the
software performance go down.
Security Testing
Security Testing tests the ability of the system/software to prevent unauthorized access to
the resources and data. Security Testing needs to cover the six basic security concepts:
confidentiality, integrity, authentication, authorization, availability and non-repudiation.
Confidentiality
A security measure which protects against the disclosure of information to parties other
than the intended recipient that is by no means the only way of ensuring the security.
Integrity
A measure intended to allow the receiver to determine that the information which it is
providing is correct. Integrity schemes often use some of the same underlying
technologies as confidentiality schemes, but they usually involve adding additional
information to a communication to form the basis of an algorithmic check rather than the
encoding all of the communication.
Authentication
The process of establishing the identity of the user. Authentication can take many forms
including but not limited to: passwords, biometrics, radio frequency identification, etc.
Authorization
The process of determining that a requester is allowed to receive a service or perform an
operation. Access control is an example of authorization.
Availability
Assuring information and communications services will be ready for use when expected.
Information must be kept available to authorized persons when they need it.
Non-repudiation
A measure intended to prevent the later denial that an action happened, or a
communication that took place etc.In communication terms this often involves the
interchange of authentication information combined with some form of provable time
stamp.
What is Verification?
Verification ensures that the software documents comply with the organizations
standards, it is static analysis technique.
Verification answers the question “Is the Software build according to the specifications”.