SE - Unit I
SE - Unit I
SE - Unit I
Software Product and Process: Software Characteristics & Applications, Software Process,
Software Process Models; Linear Sequential Model, Prototyping Model, RAD Model, Evolutionary
Software Process Models, Software Development Process
Software Characteristics
Functionality:
It refers to the degree of performance of the software against its intended purpose.
Functionality refers to the set of features and capabilities that a software program or system
provides to its users. It is one of the most important characteristics of software, as it determines
the usefulness of the software for the intended purpose. Examples of functionality in software
include:
Reliability:
A set of attributes that bears on the capability of software to maintain its level of performance
under the given condition for a stated period of time.
Reliability is a characteristic of software that refers to its ability to perform its intended functions
correctly and consistently over time. Reliability is an important aspect of software quality, as it
helps ensure that the software will work correctly and not fail unexpectedly.
To improve the reliability of software, various techniques, and methodologies can be used, such
as testing and validation, formal verification, and fault tolerance.
Efficiency:
It refers to the ability of the software to use system resources in the most effective and efficient
manner. The software should make effective use of storage space and executive command as per
desired timing requirements.
Efficiency is a characteristic of software that refers to its ability to use resources such as memory,
processing power, and network bandwidth in an optimal way. High efficiency means that a
software program can perform its intended functions quickly and with minimal use of resources,
while low efficiency means that a software program may be slow or consume excessive resources.
Examples of factors that can affect the efficiency of the software include:
5. Unoptimized code
To improve the efficiency of software, various techniques, and methodologies can be used, such
as performance analysis, optimization, and profiling.
Usability:
It refers to the extent to which the software can be used with ease. the amount of effort or time
required to learn how to use the software.
Maintainability:
It refers to the ease with which modifications can be made in a software system to extend its
functionality, improve its performance, or correct errors.
Portability:
A set of attributes that bears on the ability of software to be transferred from one environment to
another, without minimum changes
It can be complex, meaning it can have many interrelated parts and features.
It can be difficult to understand and modify, especially for large and complex systems.
It can be impacted by bugs and other issues, meaning it may need to be tested and
debugged to ensure it works as intended.
Software Processes
The term software specifies to the set of computer programs, procedures and associated
documents (Flowcharts, manuals, etc.) that describe the program and how they are to be used.
A software process is the set of activities and associated outcome that produce a software
product. Software engineers mostly carry out these activities. These are four key process
activities, which are common to all software processes. These activities are:
3. Software validation: The software must be validated to ensure that it does what the
customer wants.
4. Software evolution: The software must evolve to meet changing client needs.
A software process model is a specified definition of a software process, which is presented from
a particular perspective. Models, by their nature, are a simplification, so a software process model
is an abstraction of the actual process, which is being described. Process models may contain
activities, which are part of the software process, software product, and the roles of people
involved in software engineering. Some examples of the types of software process models that
may be produced are:
1. A workflow model: This shows the series of activities in the process along with their
inputs, outputs and dependencies. The activities in this model perform human actions.
2. 2. A dataflow or activity model: This represents the process as a set of activities, each
of which carries out some data transformations. It shows how the input to the process,
such as a specification is converted to an output such as a design. The activities here may
be at a lower level than activities in a workflow model. They may perform transformations
carried out by people or by computers.
3. 3. A role/action model: This means the roles of the people involved in the software
process and the activities for which they are responsible.
his model has five phases: Requirements analysis and specification, design, implementation, and
unit testing, integration and system testing, and operation and maintenance. The steps always
follow in this order and do not overlap. The developer must complete every phase before the next
phase begins. This model is named "Waterfall Model", because its diagrammatic representation
resembles a cascade of waterfalls.
1. Requirements analysis and specification phase: The aim of this phase is to understand the
exact requirements of the customer and to document them properly. Both the customer and the
software developer work together so as to document all the functions, performance, and
interfacing requirement of the software. It describes the "what" of the system to be produced and
not "how."In this phase, a large document called Software Requirement Specification
(SRS) document is created which contained a detailed description of what the system will do in
the common language.
2. Design Phase: This phase aims to transform the requirements gathered in the SRS into a
suitable form which permits further coding in a programming language. It defines the overall
software architecture together with high level and detailed design. All this work is documented
as a Software Design Document (SDD).
3. Implementation and unit testing: During this phase, design is implemented. If the SDD is
complete, the implementation or coding phase proceeds smoothly, because all the information
needed by software developers is contained in the SDD.
During testing, the code is thoroughly examined and modified. Small modules are tested in
isolation initially. After that these modules are tested by writing some overhead code to check the
interaction between these modules and the flow of intermediate output.
4. Integration and System Testing: This phase is highly crucial as the quality of the end product
is determined by the effectiveness of the testing carried out. The better output will lead to
satisfied customers, lower maintenance costs, and accurate results. Unit testing determines the
efficiency of individual modules. However, in this phase, the modules are tested for their
interactions with each other and with the system.
5. Operation and maintenance phase: Maintenance is the task performed by every user once
the software has been delivered to the customer, installed, and operational.
Prototype Model
The prototype model requires that before carrying out the development of actual software, a
working prototype of the system should be built. A prototype is a toy implementation of the
system. A prototype usually turns out to be a very crude version of the actual system, possible
exhibiting limited functional capabilities, low reliability, and inefficient performance as compared
to actual software. In many instances, the client only has a general view of what is expected from
the software product. In such a scenario where there is an absence of detailed information
regarding the input to the system, the processing needs, and the output requirement, the
prototyping model may be employed.
2. Quick Decision
3. Build a Prototype
4. Assessment or User Evaluation
5. Prototype Refinement
6. Engineer Product
6. Errors can be detected much earlier as the system is made side by side.
4. Easy to fall back into the code and fix without proper requirement analysis, design,
customer evaluation, and feedback.
7. It is a time-consuming process.
RAD is a linear sequential software development process model that emphasizes a concise
development cycle using an element based construction approach. If the requirements are well
understood and described, and the project scope is a constraint, the RAD process enables a
development team to create a fully functional system within a concise time period.
RAD (Rapid Application Development) is a concept that products can be developed faster and of
higher quality through:
o A rigidly paced schedule that refers design improvements to the next product version
1.Business Modelling: The information flow among business functions is defined by answering
questions like what data drives the business process, what data is generated, who generates it,
where does the information go, who process it and so on.
2. Data Modelling: The data collected from business modeling is refined into a set of data objects
(entities) that are needed to support the business. The attributes (character of each entity) are
identified, and the relation between these data objects (entities) is defined.
3. Process Modelling: The information object defined in the data modeling phase are
transformed to achieve the data flow necessary to implement a business function. Processing
descriptions are created for adding, modifying, deleting, or retrieving a data object.
4. Application Generation: Automated tools are used to facilitate construction of the software;
even they use the 4th GL techniques.
5. Testing & Turnover: Many of the programming components have already been tested since
RAD emphasis reuse. This reduces the overall testing time. But the new part must be tested, and
all interfaces must be fully exercised.
The Evolutionary development model divides the development cycle into smaller, incremental
waterfall models in which users can get access to the product at the end of each cycle.
1. Feedback is provided by the users on the product for the planning stage of the next cycle
and the development team responds, often by changing the product, plan, or process.
3. All the models have the disadvantage that the duration of time from the start of the project
to the delivery time of a solution is very high.
5. The evolutionary model suggests breaking down work into smaller chunks, prioritizing
them, and then delivering those chunks to the customer one by one.
6. The number of chunks is huge and is the number of deliveries made to the customer.
7. The main advantage is that the customer’s confidence increases as he constantly gets
quantifiable goods or services from the beginning of the project to verify and validate his
requirements.
8. The model allows for changing requirements as well as all work is broken down into
maintainable work chunks.
1. It is used in large projects where you can easily find modules for incremental
implementation. Evolutionary model is commonly used when the customer wants to start
using the core features instead of waiting for the full software.
2. Evolutionary model is also used in object oriented software development because the
system can be easily portioned into units in terms of objects.
The software development process is nothing but the process of developing software. This
process might include improving design and product management by splitting the work into
smaller steps or processes.
Software is nothing but a set of programs having specific functions that are designed to work
according to human needs. The Software Development Process includes different steps in an
organized way to form a software product. In this article, we are going to learn about Software
Development Process, their needs, the purpose of the software development process, steps of the
software development process, approaches of Software Development, and types of software
development process.
1. Communication
The first and foremost step is where the user contacts the service provider i.e. software
organization and initiates the request for a desired software product. The software organization
talks with the customer about its requirement and then work according to its needs.
2. Requirement Gathering
In this step, the team of software developers holds discussions with various stakeholders from
the problem domain and provides as much as information possible for the requirement of the
software product. The requirements can be of different forms like user requirements, system
requirements, functional requirements, etc.
3. Feasibility Study
After requirement gathering, with the help of many algorithms, the team analyzes that if the
software can be designed to fulfil all requirements of the user and also analyzes if the project is
financially, practically and technologically feasible for the organization or not.
Software developer decides on a roadmap for their plan and tries to bring up the best software
model stable for the project. System analysis may also include understanding product limitations
and identifying and addressing the impact of the project on the organization. The project analyzes
the scope of the project and plans the resources accordingly.
5. Software Design
Software design whole knowledge of requirements and analyses are taken together to plan up
design of software products. It takes input from the user and information gathered in the
requirement-gathering phase. It gives output in the form of logical and physical design.
6. Coding
This step is also known as the programming phase. The implementation of software design starts
in the form of writing code in suitable programming and developing error-free programs
efficiently.
7. Testing
Software testing is done while coding by the testers’ developing team members. Testing is done
at various levels i.e. module testing, product testing, program testing and user-end testing.
8. Integration
After writing all the codes for the software such as frontend, backend, and databases, The
software is integrated with libraries, databases and other programs.
9. Implementation
In this step, the software product is finally ready to be installed on the user’s machine. Software
is tested for profitability, integration, adaptability, etc.
This phase confirms the software operations in terms of more efficiency and fewer errors. If
required, the users are trained or aided with the documentation on how to operate the software
and how they keep the software operational. This software is maintained timely by updating the
code according to the changes taking place in the user and environment or technology