SE-Module-1-Key-Points
SE-Module-1-Key-Points
SE-Module-1-Key-Points
Software: Software is a set of instructions, data or programs used to operate computers and
execute specific tasks. Unlike hardware, which describes the physical aspects of a computer.
Software is a generic term used to refer to applications, scripts and programs that run on a
device. It can be thought of as the variable part of a computer, while hardware is the
invariable part.
Types of Software:
1. System software
a. OS
b. Language processor
c. Device drivers
2. Application software
a. General purpose application software
b. Customized application software
c. Utility application software
Objectives:
1. Maintainability
2. Efficiency
3. Correctness
4. Reusability
5. Testability
6. Reliability
7. Portability
8. Adaptability
Page 1 of 13
Key Principles of SE:
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: It is not a rigid prescription for how to build computer software. Rather, it
is an adaptable approach that enables software team to pick and choose the appropriate set of
work actions and tasks.
Page 2 of 13
Therefore, a process adopted for one project might be significantly different than a
process adopted for another project.
SE Practice:
General principles: Amongst many principles that would be proposed there are 7
major principles (by David Hooker) that would focus on software engineering, while
others consider a specific generic framework activity (e.g., communication), and still
others focus on software engineering actions (e.g., architectural design) or technical
tasks (e.g., write a usage scenario).
Software development myths: the wrongful beliefs about software and the process
that is used to build it. Myths have several attributes that make them treacherous. For
instance, they appear to be reasonable statements of fact, sometimes containing few
elements of truth but the whole belief would be falsified.
Types of myths:
1. Manager myths
2. Customer myths
3. Practitioner’s myths
Page 3 of 13
on projects must teach newcomers
and this may delay the project. Also,
the newcomers are much less
productive compared to the
developers. Therefore, they find it
difficult to meet the deadline due to
the extra time spent on newcomers.
If an organization does not understand
If I decide to outsource the
how to manage and control software
software project to a third party, I
3 projects internally, it will invariably
can just relax and let that fi rm
struggle when it outsources software
build it.
projects.
Page 4 of 13
that the final product meets the
desired standards
A working program is only one part of
a software configuration that includes
many elements. A variety of work
The only deliverable work
products (e.g., models, documents,
3 product for a successful project is
plans) provide a foundation for
the working program.
successful engineering and, more
important, guidance for software
support.
Software engineering is not about
Software engineering will make creating documents. It is about
us create voluminous and creating a quality product. Better
4
unnecessary documentation and quality leads to reduced rework. And
will invariably slow us down. reduced rework results in faster
delivery times.
Software Development Life Cycle (SDLC): Software development life cycle (SDLC) is a
structured process that is used to design, develop, and test good-quality software. SDLC, or
software development life cycle, is a methodology that defines the entire procedure of
software development step-by-step.
Page 5 of 13
Process Models
A process model provides a specific roadmap for software engineering work. It defines the
flow of all activities, actions and tasks, the degree of iteration, the work products, and the
organization of the work that must be done.
Prescriptive process model: The name 'prescriptive' is given because the model prescribes
a set of activities, actions, tasks, quality assurance and change the mechanism for every
project. The different models are:
1. Waterfall model
2. Incremental process model
3. Evolutionary process model
a. Spiral model
b. Prototyping
Waterfall Model: In "The Waterfall" approach, the whole process of software development
is divided into separate phases. In this Waterfall model, typically, the outcome of one phase
acts as the input for the next phase sequentially.
Page 6 of 13
Advantages:
Disadvantages:
a. No working software is produced until late during the life cycle.
b. High amounts of risk and uncertainty.
c. Not a good model for complex and object-oriented projects.
d. Poor model for long and ongoing projects.
e. Not suitable for the projects where requirements are at a moderate to
high risk of changing. So, risk and uncertainty is high with this process
model.
f. It is difficult to measure progress within stages.
g. Cannot accommodate changing requirements.
h. Adjusting scope during the life cycle can end a project.
Incremental model: The incremental model involves dividing a complex project into smaller
modules known as increments. Each increment represents a partial system with added
functionality, allowing for the project's gradual development. The key feature of this model is
its iterative process, where increments are developed, tested, and integrated one after another
into the evolving system. This iterative approach facilitates frequent testing, quick feedback,
and early defect detection. By breaking the project into increments, teams can prioritize
features and address changes efficiently.
Page 7 of 13
situations where the use of incremental model is most appropriate are:
Advantages:
1. Errors are easy to be recognized.
2. Easier to test and debug
3. More flexible.
4. Simple to manage risk because it handled during its iteration.
5. The Client gets important functionality early.
Disadvantages:
Evolutionary process model: The evolutionary models are iterative. They are characterized
in a manner that enables you to develop increasingly more complete versions of the software.
Software, like all complex systems, evolves over a period. Business and product requirements
often change as development proceeds, making a straight-line path to a product unrealistic.
There are 2 common evolutionary models:
Page 8 of 13
situations where the use of incremental model is most appropriate are:
Advantages:
a. The customers get to see the partial product early in the life cycle.
b. New requirements can be easily accommodated as there is scope for
refinement.
c. Missing functionalities can be easily figured out.
d. Errors can be detected much earlier
Disadvantages:
Page 9 of 13
Situations where the spiral model is most appropriate are:
Advantages:
Disadvantages:
Specialised process model: Specialized process models take on many of the characteristics of
one or more of the traditional models presented in the preceding sections. However, these
models tend to be applied when a specialized or narrowly defined software engineering
approach is chosen.
Step-2: If these candidate components are used in previous software projects, then they must
be present in the library.
Step-3: Such preexisting components can be excited from the library and used for further
development.
Step-4: But if the required component is not present in the library, then build or create the
component as per requirement.
Step-5: Place this newly created component in the library. This makes one iteration of the
system.
Step-6: Repeat all the above steps for creating ‘n’ iterations, where n denotes the number of
iterations required to develop the complete application.
Page 10 of 13
Formal methods model: The formal methods model encompasses a set of activities that leads
to formal mathematical specification of computer software. Formal methods enable you to
specify, develop, and verify a computer-based system by applying a rigorous, mathematical
notation. A variation on this approach, called cleanroom software engineering. When formal
methods are used during design, they serve as a basis for program verification and therefore
enable you to discover and correct errors that might otherwise go undetected. Concerns about
its applicability in a business environment are:
Agile Development
Agile software engineering combines a philosophy and a set of development guidelines. The
philosophy encourages customer satisfaction and early incremental delivery of software. The
development guide lines stress delivery over analysis and design and active and continuous
communication between developers and customers.
Page 11 of 13
Agility principles: There are 12 principles that must be considered to achieve the
concept of agility towards the software or its product.
Page 12 of 13
Extreme Programming (XP): it’s one of the most important software development
frameworks of Agile models. It is used to improve software quality and responsiveness to
customer requirements. Extreme Programming uses an object-oriented approach as its
preferred development paradigm and encompasses a set of rules and practices that occur
within the context of four framework activities: planning, design, coding, and testing.
Page 13 of 13