CSE 1101 Intro
CSE 1101 Intro
Software Engineering
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.
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.
Main Attributes of Software Engineering
Software Engineering is a systematic, disciplined, quantifiable
study and approach to the design, development, operation, and
maintenance of a software system. There are four main Attributes
of Software Engineering.
2. Reliability: It assures that the product will deliver the same results when
used in similar working environment.
3. Reusability: This attribute makes sure that the module can be used in
multiple applications.
There is a dual role of software in the industry. The first one is as a product and the
other one is as a vehicle for delivering the product. We will discuss both.
• 1. As a Product
2. Efficiency: The software should not make wasteful use of computing devices such as memory,
processor cycles, etc.
4. Reusability: A software product has good reusability if the different modules of the product can
easily be reused to develop new products.
5. Testability: Here software facilitates both the establishment of test criteria and the evaluation of the
software concerning those criteria.
6. Reliability: It is an attribute of software quality. The extent to which a Maintainabi
program can be expected to perform its desired function, over an Efficiency Correctness
lity
arbitrary constraints,.
• Software testing
• Software development
• Following are some must have soft skills to become Software Engineers:
• Communication skills
• Team player
• Problem solving
• Attention to detail
Human Factors in Software Engineering
Cultural Diversity
Education and
and Organizational
Training
Factors
Advantages of Software Engineering
1. Improved Quality: By following 5. Increased Customer Satisfaction: By
established software engineering principles involving customers in the development
and techniques, the software can be process and developing software that
developed with fewer bugs and higher meets their needs, software engineering
reliability. can help to increase customer satisfaction.