Module 1
Module 1
1. System Software
2. Application Software
3. Engineering/Scientific Software
4. Embedded Software
5. Product-Line Software
o Software that runs online, ranging from simple websites to complex systems
connected to databases.
Emerging Challenges
1. Open-World Computing
2. Netsourcing
o The internet is becoming more than just a place for information; it’s now a
platform for running programs.
o Engineers must design both simple and complex online tools for users
globally.
3. Open Source
o The challenge for engineers is to write clear, understandable code and keep
track of changes to ensure users and developers know what’s new.
1.1.3 Legacy Software
What is Legacy Software?
Legacy software refers to old computer programs developed decades ago but still in
use today.
These systems have been continuously updated to meet changes in business needs
and new technology.
Importance of Legacy Software
Legacy systems often support key business operations, making them critical for the
organization.
Even though they are old, they are sometimes considered "indispensable" because
they still fulfil important business functions.
Problems with Legacy Software
Poor quality is common in legacy systems. Problems include:
o Hard-to-modify designs.
o Complicated, outdated code.
o Lack of proper documentation or test records.
o Poor management of changes over time.
What Can Be Done About Legacy Software?
If the legacy system works well and meets user needs, it doesn’t need to be fixed.
However, changes might become necessary over time due to:
o Adapting to new technologies or computing environments.
o Adding new features to meet evolving business needs.
o Making the system work with modern databases or other systems.
o Updating the system’s design to work in networked environments.
1. Network-Based: WebApps exist on a network (e.g., the Internet) and are accessible
to a wide range of users. This can be a global audience or a limited internal network
(Intranet).
2. Concurrency: Many users can access a WebApp at the same time, and their usage
patterns can vary significantly.
3. Unpredictable Load: The number of users can fluctuate greatly. For example, there
might be 100 users on one day and 10,000 the next.
5. Availability: Users often expect WebApps to be accessible 24/7, even though it's
unrealistic to guarantee this.
7. Content Sensitive: The quality and appearance of the content play a big role in how
well a WebApp is received.
9. Immediacy: WebApps are often developed and launched quickly, sometimes within
days or weeks.
10. Security: Since WebApps are network-based and open to many users, security is
crucial. Developers must protect sensitive information and ensure safe data
transmission.
11. Aesthetics: The look and feel of a WebApp are essential, especially for those that
market or sell products. Visual design can be as important as technical features.
o Process Layer: The next layer is the software engineering process, which is
the framework guiding the development. It helps manage and control the
project, ensuring tasks are completed on time and software is built efficiently.
o Methods Layer: This layer provides technical steps to build software, like how
to communicate with stakeholders, analyze requirements, design software,
write code, and test it.
Action: A set of tasks that lead to a major outcome, like designing the architecture of
the software.
Task: A small, specific goal, like testing a piece of code, with a clear result.
A process framework outlines basic activities needed for all software projects and includes
umbrella activities that apply throughout the process.
1.Communication
Purpose: Understand what the customer wants and gather all requirements.
How: Teams collaborate with customers and other stakeholders to identify goals,
features, and functionality for the software.
2.Planning
o Tasks to be done.
o Deliverables or outcomes.
3.Modeling
How:
o Create diagrams or "sketches" to see how the system will work overall.
o Refine these models to focus on details like design and functionality.
o Models help to spot problems early and clarify how everything fits together.
4.Construction
How:
5.Deployment
Purpose: Deliver the software to the customer for use and evaluation.
How:
1. Project Tracking and Control: Keep track of the project's progress and make sure it's
on schedule.
2. Risk Management: Identify and manage potential problems that could affect the
project or its quality.
4. Technical Reviews: Review the work regularly to find and fix mistakes early.
5. Measurement: Collect data about the project and software to help improve it.
7. Reusability Management: Make sure parts of the software can be reused in future
projects.
8. Work Product Preparation: Create documents, models, and other important
materials for the project.
o It's crucial to first understand the problem before jumping into a solution.
Answering these questions helps:
o Before writing any code, think through the solution. Consider these:
Have you solved a similar problem before? Can you reuse any parts?
Can you create a design or model that shows how the solution will
work?
o Now, you start coding, following the design you've created. As you
implement:
o After coding, you need to test thoroughly to ensure the solution works as
intended:
Management Myths
o Reality: While a book of standards may exist, it’s often not followed. The
standards may be outdated, unknown, incomplete, or not practical enough to
improve project delivery and quality.
2. Myth: Adding more programmers can help a project catch up if it's behind
schedule.
3. Myth: Outsourcing the project means I can relax and let someone else handle it.
Customer Myths
o Reality: Starting with vague objectives leads to failure. You need clear and
specific requirements developed through ongoing communication between
the customer and the developer.
Practitioner Myths
o Reality: Writing the code is only part of the job. Most of the work (60-80%)
happens after the software is delivered, including maintenance, bug fixing,
and updates.
o Reality: Quality can be assessed early through technical reviews, which are
better than testing for catching certain types of errors.
1. Software Process Framework: This is like a roadmap for how to build software. It
includes five main activities
2. Umbrella Activities: These are tasks that are done throughout the entire process,
Process Flow: This is how the main activities are arranged over time:
Linear flow: Each activity happens one after the other (communication, then
planning, then modelling, etc.).
Iterative flow: Some activities are repeated before moving to the next step (e.g.,
after modelling, you might need to go back to planning).
Evolutionary flow: The software is built in small cycles, improving each time until the
final version is complete.
Parallel flow: Different activities can happen at the same time (e.g., while one part of
the software is being modelled, another part might already be under construction).
2.1.1 Defining a Framework Activity
1. For a simple project:
If you're building a small piece of software for one person with clear and simple
requirements, you might not need a lot of formal steps. The communication activity
could be as basic as:
o Validation: Ensure all stakeholders agree and verify that the requirements
meet their needs.
2. Customization: It's important to choose a task set that fits the specific project and
team. This means:
o Team Characteristics: The skills and preferences of the team members can
influence which tasks are most effective. A team with strong communication
skills might prioritize face-to-face interviews, while a more introverted team
might prefer surveys or written communications.
1. Pattern Name: A meaningful name that describes the pattern (e.g., "Technical
Reviews").
2. Forces: The circumstances that highlight the problem and influence the solution. This
includes the environment and issues that make the problem apparent.
1. Initial Context: Describes the situation before the pattern is applied. It outlines what
has already happened and what information exists.
2. Problem: Clearly states the specific issue that the pattern aims to solve.
3. Solution: Provides guidance on how to implement the pattern. It explains how the
current state will change once the pattern is applied.
5. Related Patterns: Lists other patterns that are connected to this one, often
represented in a hierarchy. For instance, a "Communication" stage pattern might
include task patterns like "Requirements Gathering."
6. Known Uses and Examples: Provides real-life instances where the pattern is
applicable, demonstrating when and how to use it.
o This is a general quality standard that any organization can use to improve the
overall quality of its products or services.
How it works: The Waterfall Model follows a step-by-step process, starting with:
6. Support: Fixing any issues or making updates after the product is in use.
The V-model variation: A variation of the Waterfall Model is called the V-model. It
focuses more on quality by integrating testing and verification throughout the
process. The left side of the "V" represents the planning and design stages, while the
right side represents the testing that happens after coding. This ensures that each
step is tested as the project moves forward.
1. Non-linear Progress: Projects often don't move smoothly through phases, making
adjustments difficult when changes arise.
2. Unclear Requirements: Customers may struggle to specify all their needs upfront,
but the model requires clarity from the beginning.
3. Delayed Product Visibility: Customers wait until the final stages to see a working
product, risking the discovery of major issues late in the process.
4. Team Delays: Team members may have to wait on others to complete tasks, leading
to inefficiencies.
5. Inflexibility to Changes: The rigid structure of the Waterfall Model makes it hard to
adapt to changing requirements in fast-paced environments.
2. Well-organized: Each phase has a clear goal, so it’s structured and easy to manage.
3. Great for small, stable projects: It works well when the project is simple and the
requirements are fixed from the start.
4. Clear documentation: Each phase creates documents that help track progress and
guide future maintenance.
5. Customer agreement early: Customers know what to expect since requirements are
set at the beginning.
o This model is helpful when the basic requirements are clear but there might
be future changes or additions.
o It’s also useful when the customer needs to see some functionality early, and
the complete software can be delivered over time.
How it works:
1. The project starts by developing a core product, which includes the most
important features.
2. The core product is delivered to the customer, who can use it or test it to give
feedback.
3. Based on this feedback, the next increment is planned, adding more features
or improving the product.
4. This process is repeated, with each increment adding more functionality until
the full software is complete.
o The first increment might include basic functions like creating, saving, and
editing documents.
o The final increment could add complex features like page layout.
Advantages:
1. Early product delivery: Customers receive a basic version early to start using and
providing feedback.
5. Resource management: Smaller teams can handle initial increments, with more
added later.
Disadvantages:
4. Overhead: Planning and testing for each increment can increase effort and costs.
Prototyping
The prototyping model is useful when software requirements aren't fully clear at the
beginning. In many cases, a customer might have a general idea of what they want but can't
define the exact details. Similarly, the developer may be unsure of certain technical aspects,
such as the best algorithm or user interaction design.
1. Initial Meeting: You meet with the stakeholders (like customers or users) to discuss
the overall goals of the software and any known requirements.
2. Quick Design: You create a basic design focused on visible parts of the software, such
as the user interface or output format.
3. Prototype Creation: A simple version of the software (the prototype) is built quickly
based on this design.
4. Feedback and Refinement: The prototype is shown to stakeholders, who test it and
give feedback. This feedback is used to improve and refine the prototype.
5. Iteration: This process repeats until the prototype meets the stakeholders'
expectations and helps clarify the actual software requirements.
2. Early Feedback: Users can interact with the prototype early on, providing feedback
that can be incorporated into the final product.
3. Improved User Involvement: Users are more engaged as they get to see how the
software is shaping up, making the development more user-focused.
4. Reduced Development Time and Costs: By identifying issues early, prototyping helps
avoid costly changes later in the project.
5. Flexibility in Design: The model allows for iterative improvements, which makes
adapting to changes in requirements easier.
1. Risk of Incomplete Understanding: Stakeholders may mistake the prototype for the
final product, leading to unrealistic expectations.
2. Quality Issues: Quick development of the prototype can lead to poor quality code or
shortcuts that may affect the final product if not addressed.
3. Increased Costs: If not managed well, prototyping can increase costs as multiple
iterations may require additional resources and time.
4. Pressure to Use the Prototype: There may be pressure to convert the prototype into
the final product, even though it was not built with production-quality standards in
mind.
Spiral Model
The Spiral Model is a software development process that combines the iterative nature of
prototyping with the structured approach of the Waterfall Model. It was created by Barry
Boehm and is used to build software through repeated cycles, which allow the system to
grow while minimizing risk.
How it Works:
Anchor Points: These are milestones that ensure all stakeholders (like developers and
customers) agree on the project’s direction and feasibility.
Framework Activities:
2. Risk Analysis: Identifying potential risks and figuring out ways to mitigate them.
4. Evaluation: Gathering feedback from the customer to refine the next iteration.
Unlike other models, the Spiral Model continues even after the software is delivered. For
example, a product can be improved with enhancements, and the process resumes when
changes are needed. The spiral cycles continue until the software is no longer needed.
Advantages:
3. Customer Feedback: Allows customers to review early versions and provide input,
ensuring the final product meets their needs.
4. Continuous Improvement: Each cycle improves and builds on the previous one,
resulting in a more refined product.
5. Prototyping: Helps clarify requirements and reduce uncertainty through the use of
prototypes.
Disadvantages:
2. Cost and Time: More expensive and time-consuming due to repeated planning and
risk analysis.
3. Risk Expertise Required: Success relies on the team’s ability to effectively manage
risks.
4. Difficult to Manage Contracts: Clients may find the flexible timeline hard to control,
making contract-based work challenging.
5. Overemphasis on Risk: May add unnecessary work for projects with low risk.
Flexibility: Activities can happen at the same time instead of following a strict
sequence, making the process more adaptable.
Triggering Events: Changes in one activity can trigger transitions in others. For
example, if a requirement changes, an activity might move from "under
development" back to "awaiting changes."
Team Collaboration: This model is suitable for complex projects involving multiple
engineering teams working together.
Process Network: Rather than a linear flow, it defines a network of activities that
exist simultaneously, allowing for efficient project management.
2.4 Specialized Process Models
2.4.1 Component-Based Development
The Component-Based Development (CBD) model focuses on building software using pre-
made components, often called COTS (Commercial Off-The-Shelf) software. These
components provide specific functionalities with defined interfaces, making it easier to
integrate them into a new system. This model is similar to the spiral model, meaning it
evolves over time through multiple iterations.
2. Consider Integration: Check how these components will work together and fit into
the project.
3. Design Software Architecture: Create a structure or blueprint for the software that
accommodates these components.
Key Advantages:
Software Reuse: You don’t have to build everything from scratch; you can reuse pre-
made components, which can save time and money.
Faster Development: Since you are reusing components, the project can be
completed faster.
Cost Reduction: Reusing components can help cut down the overall project cost.
2. Early Problem Detection: Since it uses math to verify the design, problems can be
spotted and fixed early in the process.
Advantages:
It reduces errors in critical systems, like aircraft software or medical devices, where
mistakes can have serious consequences.
Disadvantages:
Time-Consuming and Expensive: Developing formal models can take longer and cost
more.
Requires Special Skills: Not many software developers have the expertise to use
formal methods, and they need special training.
Key Points:
o Aspects handle the concerns that affect multiple components (e.g., managing
security across different features).
4. Process: Although the process isn't fully defined yet, AOSD typically involves:
5. Benefits: AOSD allows you to deal with broad concerns like security or error
management independently of the main software components, making the system
easier to maintain and modify.
1. Use Cases: These describe how users interact with the system, ensuring the software
meets user needs.
It combines the best parts of traditional methods and agile principles to handle modern,
complex projects efficiently.
1. Inception Phase:
o The team talks to customers to understand what the software should do.
o A basic plan is made, including rough ideas for the system's structure
(architecture).
o Initial use cases (how users will interact with the system) are written.
2. Elaboration Phase:
o The team further defines and improves the use cases and architecture.
3. Construction Phase:
o Testing is done to ensure each component works, and the system is put
together and tested as a whole.
4. Transition Phase:
5. Production Phase:
o Any bugs or requests for changes are addressed, and support is provided.