Software Engineering Notes - 1 - 1707815619210
Software Engineering Notes - 1 - 1707815619210
Definition:
Software engineering is an engineering-based
approach to software development.
A software engineer is a person who applies
the engineering design process to design,
develop, test, maintain, and evaluate
computer software.
Software engineering is the branch of
computer science that deals with the
design, development, testing,
and maintenance of software
applications.
A good software developer must have a solid
knowledge of specific technical languages
Requirements Specification:
Clearly define and document the requirements before starting the development
process.
Understand and prioritize the needs of the end-users and stakeholders.
Design Before You Build:
Create a detailed design before starting the implementation.
Design should address both functional and non-functional aspects of the software.
Modularity:
Break down the software into smaller, manageable modules.
Each module should have a well-defined and limited scope of functionality.
Principles of Software Engineering
Abstraction:
Use abstraction to simplify complex systems.
Hide unnecessary details and focus on the essential features.
Encapsulation:
Bundle data and methods that operate on the data into a single unit (class or module).
Encapsulation helps in controlling access and maintaining a clear interface.
Reuse:
Reuse existing components, libraries, and code whenever possible.
Promote the development and use of modular, reusable code.
Scalability:
Design the software to handle growth in data, users, and functionality.
Ensure that the system can scale gracefully as requirements evolve.
Principles of Software Engineering
Testing:
Conduct thorough testing at different levels (unit, integration, system, acceptance)
to catch defects early.
Automated testing is encouraged to improve efficiency.
Documentation:
Maintain clear and comprehensive documentation throughout the software
development lifecycle.
Documentation aids understanding, maintenance, and future development.
Version Control:
Use version control systems to manage changes in the codebase.
Version control helps in tracking changes, collaborating with a team, and rolling back
to previous states if needed.
Principles of Software Engineering
Maintainability:
Design and develop software with an emphasis on ease of maintenance.
Write clean, readable, and well-documented code.
Adaptability:
Design software systems that can adapt to changing requirements and
environments.
Plan for future updates and improvements.
what are the software development
process ?
Here are some key aspects of a typical software development process:
Requirements Analysis: Understanding and documenting the needs and
expectations of the end-users and stakeholders.
Design: Creating a blueprint or plan for the software solution based on the
requirements analysis.
Implementation: Writing the actual code according to the design
specifications.
software development process ?
Testing: Verifying that the software behaves as expected and meets the
specified requirements.
Deployment: Introducing the software to the end-users or the production
environment.
Maintenance: Making updates, fixing bugs, and ensuring the ongoing
functionality and usability of the software.
software development process ?
Functionality:
Completeness: The software should provide all the features and capabilities specified in the
requirements.
Accuracy: The system should produce accurate results and perform its intended functions without
errors.
Reliability:
Stability: The software should be stable and reliable, providing consistent performance under various
conditions.
Fault Tolerance: The system should be able to recover gracefully from unexpected errors or failures.
Usability:
User-Friendliness: The software should be easy to use and navigate, with a user interface that is
intuitive and well-designed.
Efficiency: The system should not require excessive user effort to perform tasks, and it should
provide timely responses.
key characteristics of quality software
Performance:
Speed: The software should be responsive and provide acceptable performance in terms of speed
and efficiency.
Scalability: The system should be able to handle increased loads and data without a significant
degradation in performance.
Maintainability:
Modularity: The software should be modular, allowing for easy updates, modifications, and
enhancements without affecting the entire system.
Readability: Code should be well-organized and documented, making it easy for developers to
understand and maintain.
Scalability:
Adaptability: The software should be able to adapt to changing requirements and environments.
Scalability: The system should handle an increasing amount of data or users without a significant
decrease in performance.
key characteristics of quality software
Security:
Confidentiality: Protecting sensitive information and ensuring that unauthorized
users cannot access restricted data.
Integrity: Ensuring that data is accurate and has not been tampered with.
Availability: Ensuring that the system is available and accessible to authorized
users when needed.
Compatibility:
Interoperability: The software should be able to work seamlessly with other
systems or software.
Platform Independence: The ability to run on different operating systems or
environments.
Testability:
Verifiability: The software should be testable, with clear criteria for verifying that
it meets specified requirements.
Maintainability: Testing and debugging should be efficient, and the system should
be easy to troubleshoot.
Compliance:
Standards Compliance: Adhering to industry standards and best practices.
Legal Compliance: Ensuring that the software complies with relevant laws and
regulations.
what is aspects to the Software Crisis:
The term "Software Crisis" was coined in the early days of computing to
relationships define how objects interact and collaborate within the system.
What is Analysis model?
analysis phase of the software development life cycle and serves as a bridge
produce a specific output. Process models are widely used in various fields,
and manufacturing.
Key characteristics of a process model
include:
Key characteristics of a process model include:
Representation: It provides a clear and structured representation of the
sequence of activities or steps involved in a process.
Flow of Activities: It defines the flow and dependencies of activities within
the process, showing the order in which they are executed.
Inputs and Outputs: It identifies the inputs required for each activity and the
outputs produced as a result.
Roles and Responsibilities: It may specify the roles and responsibilities of
individuals or entities involved in each activity.
Control Flow: It describes how the control and data flow through the process,
indicating decision points, branching, and looping.
Types of process models
There are various example of process models, and their complexity depends
on the specific context and purpose. Some common types include:
Waterfall Model: A linear sequential flow of activities where progress is seen
as flowing steadily downwards through phases such as conception, initiation,
analysis, design, construction, testing, and maintenance.
Iterative Models: Processes that involve repeating cycles, with each iteration
refining the product based on feedback from the previous iteration.
Agile Models: Adaptive and flexible models that prioritize collaboration and
customer feedback, emphasizing iterative development and quick response to
change.
Unified Modeling Language (UML): A standardized modeling language that
uses diagrams to represent various aspects of a system, including processes.
Waterfall Model
The classical waterfall model is the basic software development life cycle
model. It is very simple but idealistic. Earlier this model was very popular
but nowadays it is not used. But it is very important because all the other
software development life cycle models are based on the classical waterfall
model.
1. Feasibility Study
The feasibility study involves understanding the problem and then determining
Integration of different modules is 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
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.
Therefore, the software product evolves with time.
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.
The evolutionary model solves this problem with a different approach.
The evolutionary model suggests breaking down work into smaller chunks,
prioritizing them, and then delivering those chunks to the customer one by
one.
The number of chunks is huge and is the number of deliveries made to the
customer.
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.
The model allows for changing requirements as well as all work is broken
down into maintainable work chunks.
Advantages Evolutionary Model
Adaptability to Changing Requirements: Evolutionary models work effectively in
projects when the requirements are ambiguous or change often. They support
adjustments and flexibility along the course of development.
Early and Gradual Distribution: Functional components or prototypes can be
delivered early thanks to incremental development. Faster user satisfaction and
feedback may result from this.
User Commentary and Involvement: Evolutionary models place a strong emphasis
on ongoing user input and participation. This guarantees that the software offered
closely matches the needs and expectations of the user.
Improved Handling of Difficult Projects: Big, complex tasks can be effectively
managed with the help of evolutionary models. The development process is made
simpler by segmenting the project into smaller, easier-to-manage portions
Disadvantages Evolutionary Model
Communication Difficulties: Evolutionary models require constant cooperation and
communication. The strategy may be less effective if there are gaps in communication or if
team members are spread out geographically.
Dependence on an Expert Group: A knowledgeable and experienced group that can quickly
adjust to changes is needed for evolutionary models. Teams lacking experience may find it
difficult to handle these model’s dynamic nature.
Increasing Management Complexity: Complexity can be introduced by organizing and
managing several increments or iterations, particularly in large projects. In order to guarantee
integration and synchronization, good project management is needed.
Greater Initial Expenditure: As evolutionary models necessitate continual testing, user
feedback and prototyping, they may come with a greater starting cost. This may be a problem
for projects that have limited funding.
Unified Process
Unified Process is based on the enlargement and refinement of a system through multiple iterations,
with cyclic feedback and adaptation. The system is developed incrementally over time, iteration by
iteration, and thus this approach is also known as iterative and incremental software development.
concurrent model
simultaneously.
The concurrent model is a methodology in which multiple phases of the software
of the concurrent development model is to produce a final product that meets the
customer's requirements while minimizing the overall development time and cost.
Advance process model
Agile Model
The meaning of Agile is swift or versatile."Agile process model" refers to a software development
approach based on iterative development. Agile methods break tasks into smaller iterations, or
parts do not directly involve long term planning. The project scope and requirements are laid
down at the beginning of the development process. Plans regarding the number of iterations,
the duration and the scope of each iteration are clearly defined in advance.
Phases of Agile Model:
Following are the phases in the Agile model are as follows:
Requirements gathering
Design the requirements
Construction/ iteration
Testing/ Quality assurance
Deployment
Feedback
4.Pre-project
2.Feasibility Study
3.Business Study B.Tech / MCA
4.Functional Model Iteration DBMS
5.Design and build Iteration Learn Latest Tutorials
Data Structures
6.Implementation Next TopicSplunk
Iterative Model
DAA
7.Post-project
SPSS
Operating System
Feature Driven Development(FDD): 1. Requirements gathering: In this phase, you must define the requirements.
You should explain business opportunities and plan the time and effort
needed to build the project. Based on this information, you can evaluate
technical and economic feasibility.
Swagger
Computer Network
This method focuses on "Designing and Building" features. In contrast to other smart methods, FDD describes the small steps of the work that should be obtained separatel
ADVERTISEMENT
2. Design the requirements: When you have identified the project, work with
stakeholders to define requirements. You can use the user flow diagram or
the high-level UML diagram to show the work of new features and show how
Feedback Transact-SQL
aims to deploy a working product. The product will undergo various stages of
improvement, so it includes simple, minimal functionality.
Design
Trending Technologies
4. Testing: In this phase, the Quality Assurance team examines the product's
performance and looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work
environment.
Lean software development methodology follows the principle "just in time production." The lean method indicates the increasing speed of software development and red
6. Feedback: After releasing the product, the last step is feedback. In this, the
team receives feedback about the product and works through the feedback.
feedback@javatpoint •Send
Agile Testing Methods:
ADVERTISEMENT
Tumblr
•Scrum
8.Eliminating Waste
•Crystal
Organization
•Dynamic Software Development Method(DSDM)
•Feature Driven Development(FDD)
•Lean Software Development
Artificial Intelligence
Help Others, Please Share
•eXtreme Programming(XP)
Scrum
SCRUM is an agile development process focused primarily on ways to
manage tasks in team-based development conditions.
ADVERTISEMENT
There are three roles in it, and their responsibilities are:
2.Amplifying learning
•Scrum Master: The scrum can set up the master team, arrange the meeting
DiscreteReactJS
and remove obstacles for the process
•Product owner: The product owner makes the product backlog, prioritizes
Mathematics
the delay and is responsible for the distribution of functionality on each
repetition.
AWS
•Scrum Team: The team manages its work and organizes the work to
complete the sprint or cycle.
Preparation
eXtreme Programming(XP)
This type of methodology is used when customers are constantly changing
Regex
There are three concepts of this method-
1.Chartering: Multi activities are involved in this phase such as making a
Ethical Hacking
development team, performing feasibility analysis, developing plans, etc.
2.Cyclic delivery: under this, two more cycles consist, these are:
1. Team
Selenium
updates
the
4.Early delivery
release
plan.
Aptitude
2. Integrat
ed
product
Reinforcement Learning
delivers
to the
Computer Graphics
utorialLearn PHP TutorialLearn HTML TutorialLearn JavaScript TutorialLearn jQuery TutorialLearn Spring Tutorial
users.
3.Wrap up: According to the user environment, this phase performs
Reasoning
the right to make decisions. The techniques used in DSDM are:
4.Time Boxing
R Programming
5.MoSCoW Rules
6.Prototyping
Software Engineering
6.Building Integrity
The DSDM project contains seven stages:
7.Pre-project
8.Feasibility Study
Hadoop
9.Business Study
10.Functional Model Iteration
11.Design and build Iteration
12.Implementation
Verbal Ability
13.Post-project
Feature Driven Development(FDD):
This method focuses on "Designing and Building" features. In contrast to
Web Technology
erview QuestionsAngular Interview QuestionsSelenium Interview QuestionsSpring Boot Interview QuestionsHR Inte
Lean Software Development:
Lean software development methodology follows the principle "just in time
ReactJS
production." The lean method indicates the increasing speed of software
development and reducing costs. Lean development can be summarized in
seven phases.
14.Eliminating Waste
Interview Questions
15.Amplifying learning
16.Defer commitment (deciding as late as possible)
17.Early delivery
CyberReact Native
18.Empowering the team
19.Building Integrity
Security
20.Optimize the whole
When to use the Agile Model?
•When frequent changes are required.
Data Science
•When a highly qualified and experienced team is available.
•When a customer is ready to have a meeting with a software team all the
time.
Company Questions
Advantage(Pros) of Agile Method:
1.Frequent Delivery
2.Face-to-Face Communication with clients.
Automata
4.Anytime changes are acceptable.
5.It reduces total development time.
Angular 7
Disadvantages(Cons) of Agile Model:
, making it suitable
When afor both beginners
and experiencedand
team isexperienced developers.
the developers allotted to another project, maintenance of the finished
•
project can become a difficulty.
← PrevNext →
C Programming
•When a customer is ready to have a meeting with a software team all the time. Blockchain
the companies. •When project size is small. C++ Python Turtle
Git
Java Keras
Machine Learning
Advantage(Pros) of Agile Method:
.Net
1. Requirements gathering: In this phase, you must define the requirements.
You should explain business opportunities and plan the time and effort
needed to build the project. Based on this information, you can evaluate
technical and economic feasibility.
2. Design the requirements: When you have identified the project, work
with stakeholders to define requirements. You can use the user flow diagram
or the high-level UML diagram to show the work of new features and show
how it will apply to your existing system.
3. Construction/ iteration: When the team defines the requirements, the
work begins. Designers and developers start working on their project, which
aims to deploy a working product. The product will undergo various stages of
improvement, so it includes simple, minimal functionality.
4. Testing: In this phase, the Quality Assurance team examines the product's
performance and looks for the bug.
5. Deployment: In this phase, the team issues a product for the user's work
environment.
6. Feedback: After releasing the product, the last step is feedback. In this,
the team receives feedback about the product and works through the
feedback.
Agile Testing Methods:
Scrum
Crystal
Dynamic Software Development Method(DSDM)
Feature Driven Development(FDD)
Lean Software Development
eXtreme Programming(XP)
Scrum
SCRUM is an agile development process focused primarily on ways to manage
tasks in team-based development conditions.
There are three roles in it, and their responsibilities are:
Scrum Master: The scrum can set up the master team, arrange the meeting
and remove obstacles for the process
Product owner: The product owner makes the product backlog, prioritizes
the delay and is responsible for the distribution of functionality on each
repetition.
Scrum Team: The team manages its work and organizes the work to complete
the sprint or cycle.
eXtreme Programming(XP)
This type of methodology is used when customers are constantly changing demands or
requirements, or when they are not sure about the system's performance.
Crystal:
There are three concepts of this method-
Chartering: Multi activities are involved in this phase such as making a development team,
performing feasibility analysis, developing plans, etc.
Cyclic delivery: under this, two more cycles consist, these are:
Team updates the release plan.
Integrated product delivers to the users.
Wrap up: According to the user environment, this phase performs deployment, post-deployment.
When to use the Agile Model?
Frequent Delivery
Face-to-Face Communication with clients.
Efficient design and fulfils the business requirement.
Anytime changes are acceptable.
It reduces total development time.
Disadvantages(Cons) of Agile Model:
V model and W model are two of the most important models that are
followed in the process of software testing. V Model, also known as
Verification and Validation Model, is similar to waterfall model that follows a
sequential path of execution of processes.
Waterfall model is a linear sequential design approach in which the progress
flows in one direction.
On the other hand, W model is a sequential approach to test a product and
can be done only once the development of the product is complete with no
modifications required to be done in between.
This type of testing is most suitable for short-term projects as medical
applications.
V-Model
V-Model
Devised by the late Paul Rook in 1980s, V-model was developed with an aim to
improve the efficiency and effectiveness of software development. The model
was accepted both in Europe and Asia as an alternative to waterfall model.
V-model is a step-by-step process in which the next phase begins only after the
completion of the present phase. The steps in this process do not move in a linear way.
Instead, the steps in this process are bent upwards. When this model is compared with
the waterfall model, there are larger chances of emphasizing on products testing.
If this model is used to test a product, there is an assurance that the final product