Not Unit 1
Not Unit 1
Software includes not just programs but also documentation, libraries, and
configuration data.
Software Engineering
Software engineering is an engineering discipline that is concerned with all
aspects of software production from the early stages of system specification
through to maintaining the system after it has gone into use.
In this definition, there are two key phrases:
Engineering Discipline
Unit 1 1
All Aspects of Software Production
Unit 1 2
3. Software validation, where the software is checked to ensure that it is what
the customer requires.
This is particularly important for remote systems accessed via web pages
or services.
Unit 1 3
4. Scale:
Often incorporate a large data store that is accessed and updated with each
transaction.
Unit 1 4
Most common type of system in terms of numbers.
5. Entertainment Systems:
Collect data from the environment and send it to other systems for
processing.
8. Systems of Systems:
May include generic software products (e.g., ERP systems) and custom
systems specific to the environment.
Unit 1 5
Internet software Engineering:
Initially, the web was primarily an information store with minimal impact on
local software systems.
This led to new system products and services accessible via the web, often
funded by ads instead of direct payments.
The rise of Software as a Service (SaaS) and cloud computing has become
the standard, with software running on remote clouds and accessed over
the Internet.
4. Computer misuse You should not use your technical skills to misuse other
people’s computers. Computer misuse ranges from relatively trivial (game
playing on an employer’s machine) to extremely serious (dissemination of
viruses or other malware).
Software processes
Unit 1 6
A software process is a set of related activities that leads to the production of
a software system
Topics to be covered(
SE ethics
Waterfall
Increment development
Integration and configuration
Software design implementation
Prototyping
Principles of ethics
Agile model
)
Agile
External factors.
Unit 1 7
True requirements often emerge only after system delivery and user
experience.
Plan-Driven Development
Relies on complete specification before design and implementation.
2. Incremental Development:
4. Frequent Releases:
Unit 1 8
New system releases every 2-3 weeks.
Plan-Driven:
Agile:
Agile processes may include planned activities like system modeling and
documentation.
Unit 1 9
Agile methods
Origins: Developed in the 1980s and early 1990s for large, long-lived
systems like aerospace and government projects.
Characteristics:
Limitations:
Agile Methods
Development: Introduced in the late 1990s as a response to dissatisfaction
with heavyweight plan-driven processes.
Focus:
Unit 1 10
Responding to change over following a plan.
2. Embrace Change:
3. Incremental Delivery:
4. Maintain Simplicity:
Leverages the skills of the team, allowing members to define their own
workflows.
Unit 1 11
Key Advantages of Agile
Continuous communication between the customer and development team
ensures alignment.
Key Features:
Tests are created before code, and all tests must pass after integration.
Unit 1 12
2. XP Practices
1. Incremental Development
2. Customer Involvement
3. People-Centric Development
Unit 1 13
4. Continuous Integration
Tasks are integrated into the main system immediately upon completion.
All unit tests must pass after every integration to ensure stability.
5. Test-First Development
6. Refactoring
7. Simple Design
8. Small Releases
9. Sustainable Development
3. Key Principles of XP
4. XP in Practice
Unit 1 14
Steps:
User Stories
Introduction to User Stories
Brief and Flexible: Each story is short and can be modified or discarded as
requirements evolve.
Actions:
Unit 1 15
Stories are broken into smaller tasks to simplify implementation.
Completeness:
Accuracy:
2. Task Breakdown: Development team divides the story into smaller tasks for
implementation.
3. Prioritization: Customers decide the priority of stories for the next release.
Unit 1 16
8. Key Takeaways
Refactoring
1. Design for Change:
Unit 1 17
The overall structure deteriorates as workarounds are applied.
4. Benefits of Refactoring:
5. Refactoring Tools:
Unit 1 18
XP integrates testing as a central part of development, with an emphasis on
automated tests that must pass before proceeding with the code.
2. Test-First Development:
This approach defines both the interface and behavior of the functionality
being developed.
Problems like test-lag, where developers move faster than testers and skip
tests, are avoided.
5. Writing Tests:
Unit 1 19
Automated Tests: Tests should be executable, stand-alone, simulate
inputs, and check the output against expected results.
Unit Tests: Each task in the development process generates one or more
unit tests, which ensure the functionality is correctly implemented.
Automation tools like JUnit for Java are used to write and run tests easily.
Pair Programming
1. Overview:
Unit 1 20
Pair programming is an innovative practice introduced in Extreme
Programming (XP) where two programmers work together at the same
computer to develop software.
Pairs are not fixed and are created dynamically, so each team member
collaborates with others throughout the development process.
Pair programming supports the idea that the team collectively owns and
is responsible for the software.
Encourages Refactoring:
3. Efficiency Considerations:
Unit 1 21
4. Studies on Pair Programming:
The informal inspection process also helps avoid errors that would
otherwise be discovered later in the testing phase, reducing time spent
on bug fixing.
Although there were some quality benefits, the productivity loss did
not fully justify the pair-programming overhead.
5. Knowledge Sharing:
This reduces overall risks to the project, particularly when team members
leave, as the knowledge is distributed across the team.
Unit 1 22