0% found this document useful (0 votes)
24 views25 pages

Week 2

The document outlines a generic process framework for software development, detailing stages such as communication, planning, modeling, construction, and deployment. It classifies software into various types based on application and copyright, and discusses the software crisis concerning size, quality, cost, and delivery delays. Additionally, it explains the Software Development Life Cycle (SDLC) and traditional process models like the Waterfall model, emphasizing the importance of systematic approaches in software engineering.

Uploaded by

mujtabajamal2004
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
24 views25 pages

Week 2

The document outlines a generic process framework for software development, detailing stages such as communication, planning, modeling, construction, and deployment. It classifies software into various types based on application and copyright, and discusses the software crisis concerning size, quality, cost, and delivery delays. Additionally, it explains the Software Development Life Cycle (SDLC) and traditional process models like the Waterfall model, emphasizing the importance of systematic approaches in software engineering.

Uploaded by

mujtabajamal2004
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 25

LEC # 2

Generic Process Framework


• Communication
– Involves communication among the customer and other stake holders;
encompasses requirements gathering
• Planning
– Establishes a plan for software engineering work; addresses technical tasks,
resources, work products, and work schedule
• Modelling (Analyse, Design)
– Encompasses the creation of models to better under the requirements and
the design
• Construction (Code, Test)
– Combines code generation and testing to uncover errors
• Deployment
– Involves delivery of software to the customer for evaluation and feedback
Classification of Software
The software is used extensively in several domains including hospitals, banks, schools,
defense, finance, stock markets, and so on. It can be categorized into different types:
On the basis of application:
System Software: System Software is necessary to manage the computer resources and
support the execution of application programs. Software like operating systems, compilers,
editors and drivers, etc., come under this category. A computer cannot function without the
presence of these. Operating systems are needed to link the machine-dependent needs of a
program with the capabilities of the machine on which it runs. Compilers translate programs
from high-level language to machine language.
Application Software: Application software is designed to fulfill the user’s requirement by
interacting with the user directly. It could be classified into two major categories:- generic or
customized. Generic Software is the software that is open to all and behaves the same for all
of its users. Its function is limited and not customized as per the user’s changing
requirements. However, on the other hand, Customized software is the software products
that are designed as per the user requirement, and are not available for all.
Networking and Web Application Software: Networking Software provides the required
support necessary for computers to interact with each other and with data storage facilities.
Networking software is also used when software is running on a network of computers (such
as the World Wide Web). It includes all network management software, server software,
security and encryption software, and software to develop web-based applications like HTML
(Hyper Text Markup Language), PHP (Hypertext Preprocessor), XML (Extensible Markup
Language), etc.
Embedded Software: This type of software is embedded into the hardware normally in the
Read-Only Memory (ROM) as a part of a large system and is used to support certain
functionality under the control conditions. Examples are software used in instrumentation
and control applications like washing machines, satellites, microwaves, etc.
Reservation Software: A Reservation system is primarily used to store and retrieve
information and perform transactions related to air travel, car rental, hotels, or other
activities. They also provide access to bus and railway reservations, although these are not
always integrated with the main system. These are also used to relay computerized
information for users in the hotel industry, making a reservation and ensuring that the hotel
is not overbooked.
Business Software: This category of software is used to support business applications and is
widely used category of software for inventory management, accounts, banking, hospitals,
schools, stock markets, etc.
Entertainment Software: Education and entertainment software provides a powerful tool
for educational agencies, especially those that deal with educating young children. There is
a wide range of entertainment software such as computer games, educational games,
translation software, mapping software, etc.
Artificial Intelligence Software: Software like expert systems, decision support systems,
pattern recognition software, artificial neural networks, etc. come under this category. They
involve complex problems which are not affected by complex computations using non-
numerical algorithms.
Scientific Software: Scientific and engineering software satisfies the needs of a scientific or
engineering user to perform enterprise-specific tasks. Such software is written for specific
applications using principles, techniques, and formulae particular to that field. Examples
are software like MATLAB, AUTOCAD, CST etc.
Utilities Software: The programs coming under this category perform specific tasks and are
different from other software in terms of size, cost, and complexity. Examples are anti-virus
software, voice recognition software, compression programs, etc.
On the basis of copyright:
Commercial: It represents the majority of software that we purchase from software
companies, commercial computer stores, etc. In this case, when a user buys software, they
acquire a license key to use it. Users are not allowed to make copies of the software. The
copyright of the program is owned by the company.
Shareware: Shareware software is also covered under copyright but the purchasers are
allowed to make and distribute copies with the condition that after testing the software, if
the purchaser adopts it for use, then they must pay for it. In both of the above types of
software, changes to the software are not allowed.
Freeware: In general, according to freeware software licenses, copies of the software can be
made both for archival and distribution purposes but here, distribution cannot be for
making a profit. Derivative works and modifications to the software are allowed and
encouraged. Decompiling of the program code is also allowed without the explicit
permission of the copyright holder.
Public Domain: In the case of public domain software, the original copyright holder
explicitly relinquishes all rights to the software. Hence software copies can be made both
for archival and distribution purposes with no restrictions on distribution. Modifications to
the software and reverse engineering are also allowed.
Software Crisis
Size:
Software is becoming more expensive and more complex with the growing complexity
and expectation out of software. For example, the code in the consumer product is
doubling every couple of years.
Quality:
Many software products have poor quality, i.e., the software products defects after
putting into use due to ineffective testing technique. For example, Software testing
typically finds 25 errors per 1000 lines of code.
Cost:
Software development is costly i.e. in terms of time to develop and the money involved.
Delayed Delivery:
Serious schedule overruns are common. Very often the software takes longer than the
estimated time to develop, which in turn leads to higher cost.
Program vs Software
Software is more than a program. Any program is a subset of software, and it becomes
software only if documentation and operating procedure manuals are defined.
There are three components of the software as shown in figure.
Program: Program is the combination of source code (instructions) and object code
(readable output such as GUI).
Documentation: Documentation consists of different types of manuals such as data flow
diagram, flow charts, entity relationship (ER) diagrams, etc.

• https://www.smartdraw.com/
entity-relationship-
diagram/er-diagram-tool.htm
Operating procedures: Operating procedures consist of instructions to set up and use the
software system and instructions on how react to the system failure. Examples include
operating system procedure manual, installation guide, beginner's guide, reference guide,
system administration guide, etc.
Software Development Life Cycle
A software life cycle model (also termed process model) is a pictorial and diagrammatic
representation of the software life cycle. A life cycle model represents all the methods
required to make a software product transit through its life cycle stages. It also captures the
structure in which these methods are to be undertaken.
Need of SDLC
• The development team must determine a suitable life cycle model for a particular plan
and later observe to it.
• Without using an exact life cycle model, the development of a software product will not
follow a systematic and disciplined manner. There must be a clear understanding among
team representative about when and what to do. Otherwise, it would point to chaos and
project failure.
• A software life cycle model describes entry and exit criteria for each phase. A phase can
begin only if its stage-entry criteria have been fulfilled. So without a software life cycle
model, the entry and exit criteria for a stage cannot be recognized. Without software life
cycle models, it becomes difficult for software project managers to monitor the progress
of the project.
SDLC Cycle
SDLC framework includes the following steps:
The stages of SDLC are as follows:

Stage1: Requirements analysis (Planning)

• Requirement Analysis is the most important and necessary stage in SDLC.


• Helps software engineers to better understand the problem they will work to solve.
• Encompasses the set of tasks that lead to an understanding of what the business impact
of the software will be, what the customer wants, and how end-users will interact with
the software and associated risk.
• Uses a combination of text and diagrams to depict requirements for data, function, and
behaviour.
– Provides a relatively easy way to understand and review the requirements for
correctness, completeness and consistency.
Stage2: Defining requirements
• Brings together customer requirements, business needs, and technical considerations to
form the “blueprint” for a product.
• This is accomplished through "SRS"- Software Requirement Specification document which
contains all the product requirements to be constructed and developed during the project
life cycle.
Stage3: Software design
• Creates a model that provides detail about software data structures, software
architecture, interfaces, and components that are necessary to implement the system.
• Architectural design
– Represents the structure of data and program components that are required to build
the software.
– Considers the architectural style, the structure and properties of components that
constitute the system, and interrelationships that occur among all.
• User Interface Design
– Creates an effective communication medium between a human and a computer.
– Identifies interface objects and actions and then creates a screen layout that forms the
basis for a user interface prototype.
• Component-level Design
– Defines the data structures, algorithms, interface characteristics, and
communication mechanisms allocated to each software component.
Stage4: Developing the project
• In this phase of SDLC, the actual development begins, and the programming is built. The
implementation of design begins concerning writing code. Developers have to follow
the coding guidelines described by their management and programming tools like
compilers, interpreters, debuggers, etc. are used to develop and implement the code.
Stage5: Testing
• After the code is generated, it is tested against the requirements to make sure that the
products are solving the needs addressed and gathered during the requirements stage.
• During this stage, unit testing, integration testing, system testing, acceptance testing
are performed.
Stage6: Deployment
• Once the software is certified, and no bugs or errors are stated, then it is deployed.
• Then based on the assessment, the software may be released as it is or with
suggested enhancement in the object segment.
• After the software is deployed, then its maintenance begins.
Stage7: Maintenance
• Once when the client starts using the developed systems, then the real issues come
up and requirements to be solved from time to time.
• This procedure where the care is taken for the developed product is known as
maintenance.
Traditional Process Models
Process Model
• Defines a distinct set of activities, actions, tasks, milestones,
and work products that are required to engineer high-quality
software
• The activities may be linear, incremental, or evolutionary
Classical Waterfall Model
The classical waterfall model divides the life cycle into a set of phases. This model considers that
one phase can be started after the completion of the previous phase. That is the output of one
phase will be the input to the next phase. Thus the development process can be considered as a
sequential flow in the waterfall. Here the phases do not overlap with each other.
Feasibility Study: The main goal of this phase is to determine whether it would be
financially and technically feasible to develop the software. The feasibility study involves
understanding the problem and then determining the various possible strategies to solve
the problem. These different identified solutions are analyzed based on their benefits and
drawbacks, The best solution is chosen and all the other phases are carried out as per this
solution strategy.
•Requirements analysis and specification: The aim of the requirement analysis and
specification phase is to understand the exact requirements of the customer and
document them properly. This phase consists of two different activities. Requirement
gathering and analysis: Firstly all the requirements regarding the software are gathered
from the customer and then the gathered requirements are analyzed. The goal of the
analysis part is to remove incompleteness (an incomplete requirement is one in which
some parts of the actual requirements have been omitted) and inconsistencies (an
inconsistent requirement is one in which some part of the requirement contradicts some
other part).
•Requirement specification: These analyzed requirements are documented in a software
requirement specification (SRS) document. SRS document serves as a contract between
the development team and customers. Any future dispute between the customers and the
developers can be settled by examining the SRS document.
Design: The goal of this phase is to convert the requirements acquired in the SRS into a
format that can be coded in a programming language. It includes high-level and detailed
design as well as the overall software architecture. A Software Design Document is used
to document all of this effort (SDD).
Coding and Unit testing: In the coding phase software design is translated into source
code using any suitable programming language. Thus each designed module is coded.
The aim of the unit testing phase is to check whether each module is working properly or
not.
Integration and System testing: Integration of different modules are undertaken soon
after they have been coded and unit tested. Integration of various modules is carried out
incrementally over a number of steps. During each integration step, previously planned
modules are added to the partially integrated system and the resultant system is tested.
Finally, after all the modules have been successfully integrated and tested, the full
working system is obtained and system testing is carried out on this. System testing
consists of three different kinds of testing activities as described below :
•Alpha testing: Alpha testing is the system testing performed by the development team.
•Beta testing: Beta testing is the system testing performed by a friendly set of customers.
•Acceptance testing: After the software has been delivered, the customer performed
acceptance testing to determine whether to accept the delivered software or reject it.
•Maintenance: Maintenance is the most important phase of a software life cycle. The
effort spent on maintenance is 60% of the total effort spent to develop a full software.
There are basically three types of maintenance :
•Corrective Maintenance: This type of maintenance is carried out to correct errors that
were not discovered during the product development phase.
•Perfective Maintenance: This type of maintenance is carried out to enhance the
functionalities of the system based on the customer’s request.
•Adaptive Maintenance: Adaptive maintenance is usually required for porting the
software to work in a new environment such as working on a new computer platform or
with a new operating system.
Advantages of Classical Waterfall Model
Oldest software lifecycle model with following advantages:
• This model is used when requirements are well understood and risk is low.
• Phases in this model are in linear i.e., sequential manner.
• Each stage in the model is clearly defined.
• This model has very clear and well-understood milestones.
• Doesn't support iteration, so changes can cause confusion.
• Process, actions and results are very well documented.
• Reinforces good habits: define-before- design,
design-before-code.
• This model works well for smaller projects and projects where requirements are well
understood.
Waterfall Model with Feedback

You might also like