0% found this document useful (0 votes)
16 views

Software engineering

Software Engineering is a systematic process for designing, developing, testing, and maintaining software, aimed at creating high-quality and reliable applications. It encompasses various methodologies and principles such as modularity, abstraction, and agile practices, while also utilizing frameworks like Capability Maturity Model Integration (CMMI) to enhance project management and quality assurance. The Software Development Life Cycle (SDLC) outlines the stages of software development, from planning and requirement analysis to maintenance, ensuring a structured approach to meet user expectations.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
16 views

Software engineering

Software Engineering is a systematic process for designing, developing, testing, and maintaining software, aimed at creating high-quality and reliable applications. It encompasses various methodologies and principles such as modularity, abstraction, and agile practices, while also utilizing frameworks like Capability Maturity Model Integration (CMMI) to enhance project management and quality assurance. The Software Development Life Cycle (SDLC) outlines the stages of software development, from planning and requirement analysis to maintenance, ensuring a structured approach to meet user expectations.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 8

Software is a program or set of programs containing instructions that provide the desired

functionality. Engineering is the process of designing and building something that serves a particular
purpose and finds a cost-effective solution to problems.

What is Software Engineering?

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.

1. Software engineering includes a variety of techniques, tools, and methodologies, including


requirements analysis, design, testing, and maintenance.

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.

Key Principles of Software Engineering

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.

Software Process Framework

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)

What is Capability Maturity Model Integration (CMMI)?

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

1. Fulfilling customer needs and expectations.

2. Value creation for investors/stockholders.

3. Market growth is increased.

4. Improved quality of products and services.

5. Enhanced reputation in Industry.

CMMI Model – Maturity Levels

In CMMI with staged representation, there are five maturity levels described as follows :

1. Maturity level 1 : Initial

 processes are poorly managed or controlled.

 unpredictable outcomes of processes involved.

 ad hoc and chaotic approach used.

 No KPAs (Key Process Areas) defined.

 Lowest quality and highest risk.

2. Maturity level 2 : Managed

 requirements are managed.

 processes are planned and controlled.

 projects are managed and implemented according to their documented plans.

 This risk involved is lower than Initial level, but still exists.
 Quality is better than Initial level.

3. Maturity level 3 : Defined

 processes are well characterized and described using standards, proper procedures,
and methods, tools, etc.

 Medium quality and medium risk involved.

 Focus is process standardization.

4. Maturity level 4 : Quantitatively managed

 quantitative objectives for process performance and quality are set.

 quantitative objectives are based on customer requirements, organization needs,


etc.

 process performance measures are analyzed quantitatively.

 higher quality of processes is achieved.

 lower risk

5. Maturity level 5 : Optimizing

 continuous improvement in processes and their performance.

 improvement has to be both incremental and innovative.

 highest quality of processes.

 lowest risk in processes and their performance.

CMMI Model – Capability Levels

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 :

1. Capability level 0 : Incomplete

 incomplete process – partially or not performed.

 one or more specific goals of process area are not met.

 No generic goals are specified for this level.

 this capability level is same as maturity level 1.

2. Capability level 1 : Performed

 process performance may not be stable.

 objectives of quality, cost and schedule may not be met.

 a capability level 1 process is expected to perform all specific and generic practices
for this level.

 only a start-step for process improvement.


3. Capability level 2 : Managed

 process is planned, monitored and controlled.

 managing the process by ensuring that objectives are achieved.

 objectives are both model and other including cost, quality, schedule.

 actively managing processing with the help of metrics.

4. Capabili
]]={“+_”_”

5. ty level 3 : Defined\

 a defined process is managed and meets the organization’s set of guidelines and
standards.

 focus is process standardization.

5. Capability level 4 : Quantitatively Managed

 process is controlled using statistical and quantitative techniques.

 process performance and quality is understood in statistical terms and metrics.

 quantitative objectives for process quality and performance are established.

6. Capability level 5 : Optimizing

 focuses on continually improving process performance.

 performance is improved in both ways – incremental and innovation.

 emphasizes on studying the performance results across the organization to ensure


that common causes or issues are identified and fixed.

Software Development Life Cycle (SDLC)

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 stages of SDLC are as follows:

Stage1: Planning and requirement analysis

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

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.

Stage2: Defining Requirements

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.

Stage3: Designing the Software

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.

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 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.

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.
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.

Types of Software Requirements

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:

 Performance: The system should process 1,000 transactions per second.

 Usability: The software should be easy to use and have a user-friendly interface.

 Reliability: The system must have 99.9% uptime.

 Security: Data must be encrypted during transmission and storage.

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.

You might also like