Software engineering
Software engineering
functionality. Engineering is the process of designing and building something that serves a particular
purpose and finds a cost-effective solution to problems.
Software Engineering is the process of designing, developing, testing, and maintaining software. It is
a systematic and disciplined approach to software development that aims to create high-quality,
reliable, and maintainable software.
2. It is a rapidly evolving field, and new tools and technologies are constantly being developed
to improve the software development process.
3. By following the principles of software engineering and using the appropriate tools and
methodologies, software developers can create high-quality, reliable, and maintainable
software that meets the needs of its users.
4. Software Engineering is mainly used for large projects based on software systems rather than
single programs or applications.
5. The main goal of Software Engineering is to develop software applications for improving
quality, budget, and time efficiency.
6. Software Engineering ensures that the software that has to be built should be consistent,
correct, also on budget, on time, and within the required requirements.
1. Modularity: Breaking the software into smaller, reusable components that can be developed
and tested independently.
2. Abstraction: Hiding the implementation details of a component and exposing only the
necessary functionality to other parts of the software.
3. Encapsulation: Wrapping up the data and functions of an object into a single unit, and
protecting the internal state of an object from external modifications.
4. Reusability: Creating components that can be used in multiple projects, which can save time
and resources.
5. Maintenance: Regularly updating and improving the software to fix bugs, add new features,
and address security vulnerabilities.
6. Testing: Verifying that the software meets its requirements and is free of bugs.
7. Design Patterns: Solving recurring problems in software design by providing templates for
solving them.
8. Agile methodologies: Using iterative and incremental development processes that focus on
customer satisfaction, rapid delivery, and flexibility.
9. Continuous Integration & Deployment: Continuously integrating the code changes and
deploying them into the production environment.
A Software Process Framework is a structured approach that defines the steps, tasks, and activities
involved in software development. This framework serves as a foundation for software engineering,
guiding the development team through various stages to ensure a systematic and efficient process.
A Software Process Framework helps in project planning, risk management, and quality assurance by
detailing the chronological order of actions.
Capability Maturity Model Integration (CMMI) is a successor of CMM and is a more evolved model
that incorporates best components of individual disciplines of CMM like Software CMM, Systems
Engineering CMM, People CMM, etc. Since CMM is a reference model of matured practices in a
specific discipline, so it becomes difficult to integrate these disciplines as per the requirements. This
is why CMMI is used as it allows the integration of multiple disciplines as and when needed.
Objectives of CMMI
In CMMI with staged representation, there are five maturity levels described as follows :
This risk involved is lower than Initial level, but still exists.
Quality is better than Initial level.
processes are well characterized and described using standards, proper procedures,
and methods, tools, etc.
lower risk
A capability level includes relevant specific and generic practices for a specific process area that can
improve the organization’s processes associated with that process area. For CMMI models with
continuous representation, there are six capability levels as described below :
a capability level 1 process is expected to perform all specific and generic practices
for this level.
objectives are both model and other including cost, quality, schedule.
4. Capabili
]]={“+_”_”
5. ty level 3 : Defined\
a defined process is managed and meets the organization’s set of guidelines and
standards.
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 then
observe to it.
Without using an exact life cycle model, the development of a software product would not be in a
systematic and disciplined manner. When a team is developing a software product, there must be a
clear understanding among team representative about when and what to do. Otherwise, it would
point to chaos and project failure. This problem can be defined by using an example. Suppose a
software development issue is divided into various parts and the parts are assigned to the team
members. From then on, suppose the team representative is allowed the freedom to develop the
roles assigned to them in whatever way they like. It is possible that one representative might start
writing the code for his part, another might choose to prepare the test documents first, and some
other engineer might begin with the design phase of the roles assigned to him. This would be one of
the perfect methods for project failure.
SDLC Cycle
SDLC Cycle represents the process of developing software. SDLC framework includes the following
steps:
The senior members of the team perform it with inputs from all the stakeholders and domain experts
or SMEs in the industry.
Planning for the quality assurance requirements and identifications of the risks associated with the
projects is also done at this stage.
Business analyst and Project organizer set up a meeting with the client to gather all the data like
what the customer wants to build, who will be the end user, what is the objective of the product.
Before creating a product, a core understanding or knowledge of the product is very necessary.
Once the requirement analysis is done, the next stage is to certainly represent and document the
software requirements and get them accepted from the project stakeholders.
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.
The next phase is about to bring down all the knowledge of requirements, analysis, and design of the
software project. This phase is the product of the last two, like inputs from the customer and
requirement gathering.
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 done.
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.
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.
Software Requirements
The software requirements are description of features and functionalities of the target system.
Requirements convey the expectations of users from the software product. The requirements can be
obvious or hidden, known or unknown, expected or unexpected from client’s point of view.
1. Functional Requirements
Definition: Functional requirements describe what the software should do. They define the functions
or features that the system must have.
Examples:
User Authentication: The system must allow users to log in using a username and password.
Search Functionality: The software should enable users to search for products by name or
category.
Report Generation: The system should be able to generate sales reports for a specified date
range.
Explanation: Functional requirements specify the actions that the software needs to perform. These
are the basic features and functionalities that users expect from the software.
2. Non-functional Requirements
Definition: Non-functional requirements describe how the software performs a task rather than
what it should do. They define the quality attributes, performance criteria, and constraints.
Examples:
Usability: The software should be easy to use and have a user-friendly interface.
Explanation: Non-functional requirements are about the system’s behavior, quality, and constraints.
They ensure that the software meets certain standards of performance, usability, reliability, and
security.
3.User requirements: These requirements describe what the end-user wants from the software
system. User requirements are usually expressed in natural language and are typically gathered
through interviews, surveys, or user feedback.
4.System requirements: These requirements specify the technical characteristics of the software
system, such as its architecture, hardware requirements, software components, and interfaces.
System requirements are typically expressed in technical terms and are often used as a basis for
system design.
5.Interface requirements: These requirements specify the interactions between the software system
and external systems or components, such as databases, web services, or other software
applications.