Unit 1 Notes Software Engineering
Unit 1 Notes Software Engineering
NOTES UNIT-1
These define the attributes of the software itself, focusing on its functionality,
usability, reliability, and maintainability. Key characteristics include:
1. Functionality
o Ability to perform the required tasks.
o Includes correctness, completeness, and interoperability.
2. Reliability
o Consistency in performance and ability to handle errors gracefully.
o Includes fault tolerance, availability, and recoverability.
3. Usability
o Ease of use and user-friendliness.
o Includes learnability, operability, and accessibility.
4. Efficiency
o Optimal use of system resources, such as memory, CPU, and network.
o Includes time behavior (response time) and resource utilization.
5. Maintainability
o Ease of modifying, extending, and debugging the software.
o Includes modularity, analyzability, and changeability.
6. Portability
o Ability to adapt the software to different environments or platforms.
These define the attributes of the development processes that ensure high-quality
software delivery within constraints like time and budget. Key characteristics
include:
1. Predictability
o Consistent outcomes from the process.
o Measured through adherence to schedules, budgets, and deliverables.
2. Repeatability
o Ability to achieve consistent results across different projects and
teams.
3. Efficiency
o Minimizing time, effort, and resources required to develop the
software.
4. Flexibility
o Ability to accommodate changes in requirements or constraints during
the development lifecycle.
5. Scalability
o Applicability of the process to projects of varying sizes and
complexities.
6. Quality Assurance
o Incorporation of testing, reviews, and validation steps to ensure the
quality of the software.
7. Traceability
o Ability to trace requirements, design decisions, and changes
throughout the lifecycle.
8. Transparency
o Clear visibility into the development process for stakeholders.
1. Requirement Analysis
o In this phase, the software's requirements are gathered and documented in detail.
o Deliverables: Requirement Specification Document (e.g., Software Requirements
Specification, or SRS).
2. System Design
o The system's architecture and design are developed based on the requirements.
o Deliverables: High-level design (HLD) and low-level design (LLD) documents,
which detail components, modules, and interfaces.
3. Implementation (Coding)
o Actual development and coding of the software begin based on the design
documents.
o Deliverables: Source code and corresponding documentation.
4. Integration and Testing
o Different modules of the software are integrated and tested for functionality,
performance, and reliability.
o Deliverables: Test plans, test cases, and test reports.
5. Deployment
Prototyping Model
The Prototyping Model is a software development model that emphasizes building a prototype
(a working model of the software) early in the development process. It is particularly useful
when requirements are not well-defined or are expected to evolve over time. By creating a
prototype, stakeholders can visualize the product and refine the requirements iteratively.
Types of Prototyping
1. Throwaway/Rapid Prototyping
o A temporary prototype is built to gather feedback and clarify requirements.
o It is discarded after use, and the actual system is developed from scratch.
2. Evolutionary Prototyping
o The prototype is continuously refined and evolves into the final product.
o Suitable for systems where requirements are expected to change over time.
3. Incremental Prototyping
o The system is developed in increments, with each increment being a prototype of
a specific module or feature.
o These increments are eventually integrated into the final system.
4. Extreme Prototyping
o Commonly used in web development, it involves three phases: creating a basic
prototype (static pages), programming functionality, and integrating both.
Better Requirement Clarity: Stakeholders can visualize the product early, reducing
ambiguity in requirements.
User Involvement: Regular feedback ensures the final product aligns with user
expectations.
Risk Reduction: Identifying and addressing issues early minimizes costly changes later.
Improved Communication: A tangible prototype facilitates better collaboration between
developers and stakeholders.
Time and Cost Overruns: Frequent changes and iterations may increase development
time and cost.
Lack of Focus on Documentation: Emphasis on the prototype may lead to inadequate
documentation.
Scope Creep: Stakeholders may continuously request additional features, delaying
completion.
Unsuitable for Complex Systems: For large and complex systems, the iterative process
may become unmanageable.
RAD ModeL
The RAD (Rapid Application Development) Model is a software development methodology
that emphasizes speed, flexibility, and user feedback. It focuses on delivering functional
components of the software quickly and iteratively, with active user involvement. This model is
particularly suited for projects where requirements evolve and where rapid delivery of a working
product is critical.
1. Business Modeling
o Understand and define the business processes, objectives, and flow of
information.
o The goal is to identify what data is required, how it is processed, and how it will
benefit the business.
2. Data Modeling
o Define the data objects needed for the software and their relationships.
The Incremental Model is one of the most widely used evolutionary models.
The Incremental Model develops a software system in small, manageable increments, each
delivering a part of the functionality. Each increment adds new features or modules until the full
system is complete. Importantly, each increment is fully functional and usable.
1. Requirement Analysis
o All requirements are gathered upfront but prioritized based on importance and
delivery schedules.
o High-priority requirements are implemented in the early increments.
2. System Design
o A high-level design is created for the entire system, focusing on its architecture
and module interconnections.
3. Implementation of Increments
o The system is developed in increments. Each increment involves:
Detailed design.
Coding and unit testing.
Integration testing of the new increment with existing increments.
4. Testing of the Increment
o Each increment undergoes thorough testing to ensure it works as intended and
integrates with previously delivered components.
5. Delivery and Deployment
o After testing, the increment is deployed, and feedback is collected from users.
o This feedback may influence subsequent increments.
6. Integration and Final Testing
o After all increments are developed, the complete system is subjected to final
integration and testing to ensure overall functionality.
1. Early Delivery
o Users get access to a working product early in the development process.
2. Flexibility
o Accommodates changes in requirements during development.
3. Risk Reduction
o Issues are identified and resolved early, as smaller parts are built and tested
iteratively.
4. User Feedback
o Early user feedback ensures the software aligns with user expectations.
5. Prioritization
o Critical functionalities are delivered first, which is beneficial in time-sensitive
projects.
6. Cost-Effectiveness
o Smaller, iterative cycles allow for better budget management.
Spiral Model
The Spiral Model is an evolutionary software development model that combines elements of
iterative development with systematic risk management. It is ideal for large, complex, and high-
risk projects, where requirements are likely to evolve over time. The model emphasizes repeated
cycles of planning, development, and evaluation, with a focus on identifying and mitigating risks
at each iteration.
The Spiral Model consists of multiple cycles, each divided into four key phases. Each cycle
represents a step closer to the final product.
This process continues through multiple spirals (iterations) until the final product is delivered.
Risk Management: Risk identification and mitigation are central to every phase.
Iterative Development: Each spiral builds on the previous one, incorporating feedback
and refining the product.
Prototyping: Prototypes are often used to clarify requirements, reduce risks, or test
components.
Customer Involvement: Regular stakeholder reviews ensure alignment with
expectations.
Flexibility: The model adapts to changing requirements and project needs.
1. Complexity
o Managing the iterative cycles and risk assessments can be complex and resource-
intensive.
2. High Cost
o Frequent reviews, prototyping, and risk analysis can make this model expensive.
3. Requires Expertise
o Effective risk assessment and management require experienced teams and tools.
4. Not Suitable for Small Projects
o For small-scale or straightforward projects, the overhead of the Spiral Model may
outweigh its benefits.
5. Difficulty in Setting End Goals
o Iterative cycles and evolving requirements may make it challenging to define a
fixed endpoint.
For large and complex projects with high risk or significant uncertainty.
When requirements are likely to evolve or are not well-understood at the outset.
In systems requiring frequent updates or integrations, such as enterprise software.
When incorporating new technologies or dealing with projects involving high technical
or operational risks.
o The Spiral Model focuses on risk management, whereas the Waterfall Model
assumes stable requirements.
2. Spiral Model vs. Agile Model
o Both are iterative, but Agile emphasizes collaboration and quick delivery of
increments, while the Spiral Model emphasizes risk management.
o Agile is more lightweight and suited for smaller teams, whereas the Spiral Model
is better for complex, high-risk projects.
These classes are basically the prepackaged components. The model works in following manner:
Step-1: First identify all the required candidate components, i.e., classes with the help of
application data and algorithms.
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 steps 1 to 5 for creating n iterations, where n denotes the number of
iterations required to develop the complete application.
1. Inception –
Communication and planning are the main ones.
Identifies the scope of the project using a use-case model allowing managers to estimate
costs and time required.
Customers’ requirements are identified and then it becomes easy to make a plan for the
project.
The project plan, Project goal, risks, use-case model, and Project description, are made.
The project is checked against the milestone criteria and if it couldn’t pass these criteria
then the project can be either canceled or redesigned.
2. Elaboration –
Planning and modeling are the main ones.
A detailed evaluation and development plan is carried out and diminishes the risks.
Revise or redefine the use-case model (approx. 80%), business case, and risks.
Again, checked against milestone criteria and if it couldn’t pass these criteria then again
project can be canceled or redesigned.
Executable architecture baseline.
3. Construction –
The project is developed and completed.
System or source code is created and then testing is done.
Agile Processes
Agile refers to a group of lightweight methodologies designed for flexibility, collaboration, and
iterative development. Common Agile frameworks include Scrum, Kanban, Extreme
Programming (XP), and Lean.
Key Characteristics
Iteration Length Longer iterations within each phase Short, time-boxed sprints or iterations
Purpose of CMM
CMM is divided into five maturity levels that represent an organization's process capabilities:
Characteristics:
o Processes are ad-hoc, unstructured, and reactive.
o Success depends on individual efforts rather than defined processes.
o Projects often exceed budgets and deadlines.
Challenges:
o Unpredictable outcomes.
o High reliance on key individuals.
Level 2: Repeatable
Characteristics:
o Basic project management processes are established.
o Success is repeatable for similar projects.
o Focus is on managing requirements, timelines, and budgets.
Key Processes:
o Requirements management.
o Project planning.
o Quality assurance.
Level 3: Defined
Characteristics:
o Processes are documented and standardized across the organization.
o A strong emphasis on process definition and institutionalization.
o Teams follow established guidelines and best practices.
Key Processes:
o Organizational process focus.
o Risk management.
o Peer reviews.
Characteristics:
o Processes are measured and controlled using quantitative data.
o Data-driven decision-making to predict performance.
o Variations in processes are identified and addressed.
Key Processes:
o Quantitative process management.
o Performance analysis.
Level 5: Optimizing
Characteristics:
o Continuous process improvement is the focus.
o Innovations and lessons learned are incorporated into processes.
o Emphasis on defect prevention and process optimization.
Key Processes:
o Continuous improvement.
o Process innovation.
1. Predictable Results: Organizations can deliver projects on time and within budget.
2. Improved Quality: High process maturity leads to fewer defects.
3. Scalability: Processes are standardized, enabling scaling for larger projects.
4. Customer Confidence: Clients trust organizations with higher maturity levels.
Criticism of CMM
1. Rigid Framework: The model may be too rigid for dynamic environments like Agile
software development.
2. Costly Implementation: Achieving higher levels of maturity requires significant time
and financial investment.
3. Documentation Overload: Focus on documentation can sometimes outweigh actual
process improvements.
Metrics are quantitative measures used to evaluate, control, and improve software development
processes and the quality of the software product. They help software engineers make data-
driven decisions, identify issues, and ensure project success.
1. Product Metrics
Product metrics focus on measuring the attributes and quality of the software product itself. They
evaluate the software’s functionality, performance, maintainability, and reliability.
1. Size Metrics:
o Lines of Code (LOC): Measures the total number of lines in the source code.
o Function Points (FP): Estimates the size of software based on its functional
requirements.
2. Complexity Metrics:
o Cyclomatic Complexity: Measures the number of independent paths in the
program’s control flow. High complexity indicates higher testing and
maintenance efforts.
o Halstead Metrics: Measures complexity based on the number of operators and
operands in the code.
3. Quality Metrics:
o Defect Density: Number of defects per unit of code (e.g., defects per KLOC).
o Reliability: Measures the probability of failure-free operation in a given time
frame.
4. Performance Metrics:
o Response Time: Time taken to respond to a user input.
o Throughput: Amount of work completed in a given time period.
o Resource Utilization: Measures CPU, memory, or disk usage during operation.
2. Process Metrics
Process metrics measure and monitor the efficiency and effectiveness of the software
development process. They help identify bottlenecks, track progress, and improve workflows.