Se 4,2
Se 4,2
- Software refers to a collection of programs, data, and instructions that enable a computer system
to perform specific tasks. It encompasses everything from operating systems and applications to
games and utilities.
- The failure curve of hardware typically follows a "bathtub" shape, characterized by high initial
failure rates (early-life failures), followed by a period of relatively low failure rates (useful life), and
ending with an increasing failure rate as the hardware ages (wear-out failures).
- The failure curve of software is different. Software failures often occur due to design flaws or bugs
rather than wear and tear. Software failure rates tend to be more constant over time, with occasional
spikes due to newly introduced bugs or changes in the operating environment.
3. **Nature of Software:**
- Software is intangible and doesn't wear out with use like hardware.
4. **Changes in Software:**
- Changes in software can include bug fixes, feature enhancements, performance improvements,
and security updates.
- Software changes are often iterative and incremental, with new versions released regularly.
- "Once it's built, it's done": Software requires ongoing maintenance and updates.
- "More features mean better software": Quality is more important than quantity.
- "Software development is quick and easy": Developing high-quality software takes time and
effort.
- "Testing can ensure bug-free software": Testing can uncover bugs, but it's impossible to guarantee
their absence.
- "Good developers don't need documentation": Documentation is crucial for understanding and
maintaining software.
1. **Process Layer**: Defines the methodologies, frameworks, and processes used in software
development.
2. **Methods Layer**: Specifies the techniques and tools used to analyze, design, implement,
test, and maintain software.
3. **Tools Layer**: Encompasses the actual software tools used in the development process, such
as compilers, debuggers, and version control systems.
- CMMI is a framework used to improve the processes involved in developing and maintaining
software.
- It provides a structured approach for organizations to assess and improve their software
development processes.
- Example: The "Iterative Development" pattern involves breaking down the development process
into small, manageable iterations, allowing for continuous feedback and improvement.
- Incremental Development
- Test-Driven Development
- Agile Development
- Waterfall Development
- It helps identify areas for improvement and benchmarks against industry standards.
- Team process models consider the interactions and collaboration among team members in
executing software development tasks.
- Planning
- High-Level Design
- Detailed Design
- Coding
- Compile & Test
- Postmortem
https://medium.com/agileactors/software-engineering-a-layered-approach-3caa573febad
2 marks
- The role of software is continuously evolving due to advancements in technology and changing
user needs.
- Software is transitioning from being a tool for automation to becoming integral to various aspects
of life, including communication, entertainment, healthcare, and transportation.
- Software has a dual nature in that it consists of both tangible and intangible aspects.
- Tangible aspects include the code, data, and documentation, while intangible aspects encompass
its functionality, usability, and user experience.
- Changes in software can be managed through version control systems, rigorous testing
procedures, and agile development methodologies.
- Continuous integration and deployment practices also help in managing changes efficiently.
4. **System Software:**
- System software is a type of software designed to provide a platform for other software to run on.
- It includes operating systems, device drivers, and utilities necessary for managing hardware
resources and providing essential services to applications.
- A software myth is a commonly held belief about software development that is untrue or
misleading.
- These myths often arise from misconceptions about the nature of software development and its
complexities.
- "The best software is developed quickly": Quality software requires thorough planning, design,
and testing.
- "More developers equals faster development": Adding more developers can lead to
communication overhead and decreased productivity.
- "Testing can ensure bug-free software": Testing is essential but cannot guarantee the absence of
all bugs.
- Communication
- Planning
- Modeling
- Construction
- Deployment
1. Process Layer
2. Methods Layer
3. Tools Layer
- Initial
- Managed
- Defined
- Quantitatively Managed
- Optimizing
- Goals
- Practices
- Maturity Levels
- PSP (Personal Software Process) is a structured methodology for individual software developers
to improve their personal development processes.
- TSP (Team Software Process) extends PSP principles to teams, emphasizing collaboration and
coordination among team members.
- Process patterns provide reusable solutions to common problems encountered during software
development.
- They offer guidance on how to structure and execute various development activities.
- Data Collection
- Process Capability
- Process Maturity
- Planning
- Time Recording
- Quality Management
16. **Framework Activities Used During PSP:**
- Planning
- High-Level Design
- Detailed Design
- Coding
- Postmortem
unit 4
1. **Test Case:**
- A test case is a set of conditions or actions performed on a software application to determine its
functionality and ensure that it behaves as expected.
- Test Steps:
- Positive Test Case: Validates that the system behaves correctly when provided with valid input.
- Example: In the login scenario, a positive test case would verify successful login with correct
credentials.
- Negative Test Case: Tests the system's ability to handle invalid input or unexpected behavior.
- Example: A negative test case would verify that the system displays an error message when
provided with incorrect login credentials.
- Validation testing techniques ensure that the software meets the user's requirements and
expectations.
- Techniques include:
- Acceptance Testing
- System Testing
2. Acceptance Level: Validates that the system meets user acceptance criteria.
- Functional Testing
- Performance Testing
- Security Testing
- Compatibility Testing
- Regression Testing
7. **Smoke Testing:**
- Smoke testing is a preliminary testing phase to check whether the most crucial functionalities of
the software work without major issues.
- Example: After installing a software application, a smoke test would ensure that the application
launches successfully and essential features like login and navigation work as expected.
- Equivalence Partitioning
- Can uncover errors that may not be apparent from examining the code.
- External Inputs
- External Outputs
- External Inquiries
- Budget constraints.
- Code Reviews
- Automated Testing
- Product Metrics
- Process Metrics
- Project Metrics
- Quality Metrics
- Metrics may not accurately represent the true quality or performance of the software.
- Overemphasis on metrics may lead to gaming the system or focusing on metrics at the expense of
other important aspects.
2 marks
- Unit Testing
- Integration Testing
- System Testing
- Validation testing ensures that the software meets the user's requirements and expectations.
- It verifies that the software performs its intended functions correctly within the context of the
user's environment.
- The goal of validation testing is to confirm that the software satisfies the user's needs and
requirements and is fit for its intended purpose.
- System testing is typically performed by dedicated testing teams or quality assurance engineers.
- System testing can be conducted at various stages of the software development lifecycle, such as
after integration testing or before deployment.
- White box testing is typically performed by software developers who have access to the source
code of the software.
- Yes, white box testing is dynamic as it involves executing code and analyzing the internal logic and
structure of the software during runtime.
- Alpha Testing: Conducted by the development team internally before releasing the software to
external users.
- Beta Testing: Involves testing the software by real end-users in a real environment before the
official release.
- Functional Testing
- Quality of a product can be measured using various metrics such as defect density, reliability,
usability, performance, and customer satisfaction.
12. **Transactional Functional Types in Function Point Calculation:**
- External Inputs
- External Outputs
- External Inquiries
- Reliability
- Efficiency
- Maintainability
- Usability
- Portability
- Achieving zero-defect software is extremely challenging and often impractical due to the
complexity of software systems and the limitations of human capabilities.
- Metrics provide objective measurements to track progress, identify issues, and make data-driven
decisions.
- They help in estimating project effort, identifying areas for improvement, and managing risks.
- The goal of software metrics is to provide quantitative insights into various aspects of the
software development process and product quality, facilitating informed decision-making and
continuous improvement.
UNIT-2
4m
- For technically challenging software products, the Spiral Model is often preferred. It allows for
iterative development with risk analysis and mitigation at each iteration. This model accommodates
changing requirements and technical complexities effectively.
2. **SDLC process model if requirements of a Software Project are not well understood:**
- In situations where requirements are not well understood, an Agile approach such as Scrum or
Extreme Programming (XP) is suitable. These Agile models emphasize iterative development,
frequent collaboration with stakeholders, and flexibility to accommodate evolving requirements.
3. **SDLC process model for developing large projects which can be decomposed into a set:**
- For large projects that can be decomposed into a set of smaller manageable components, the
Incremental or Iterative Model is a good choice. It allows for incremental development and
integration of modules, reducing risks and improving manageability.
- When requirements are well understood, the Waterfall Model is often used. It follows a
sequential approach with distinct phases for requirements gathering, design, implementation,
testing, and deployment. This model is suitable for projects with stable and clear requirements
upfront.
- The Spiral Model is called a meta model because it combines elements of other SDLC models,
such as the Waterfall Model, Iterative Model, and Prototyping Model. It integrates risk analysis,
prototyping, and iterative development in a spiral fashion, making it adaptable to various project
scenarios.
- The Prototyping Model focuses on creating a working prototype to gather user feedback and
refine requirements. It is suitable for projects with evolving or unclear requirements.
- The Incremental Process Model involves dividing the project into increments or phases, with each
increment delivering a subset of functionality. It is suitable for projects with well-defined
requirements that can be developed incrementally.
- Extreme Programming (XP) is an Agile process model that emphasizes collaboration, feedback,
simplicity, and flexibility. It includes practices such as continuous integration, test-driven
development, pair programming, and frequent releases to deliver high-quality software iteratively.
- CBSD allows developers to reuse pre-built components or modules, reducing development time
and effort. By assembling components like building blocks, developers can focus on integrating and
customizing functionalities, leading to faster development and time-to-market.
- Sequence diagrams can depict actions such as user input (selecting ticket type, quantity), system
processing (checking availability, calculating price), payment processing (choosing payment method,
processing payment), and issuing the ticket (generating ticket, printing).
10. **User requirements for spelling-checking and correcting function in a word processor:**
- Natural language processing capabilities for identifying spelling errors, suggesting corrections,
providing grammar suggestions, supporting multiple languages, offering customizable dictionaries,
and integrating seamlessly with the word processor interface.
- Functional requirements include ATM user authentication, cash withdrawal processing, balance
inquiry, receipt printing, error handling.
- Non-functional requirements include system availability (uptime), response time, security (data
encryption, PIN protection), usability (user interface design), and reliability (fault tolerance, backup
systems).
- Functional requirements include ATM user authentication, cash deposit processing, envelope
validation, receipt printing, error handling.
- Non-functional requirements include system availability (uptime), response time, security (data
encryption, transaction validation), usability (user interface design), and reliability (fault tolerance,
audit trails).
13. **System requirements for Fingerprint Biometric system for attendance monitoring:**
- System requirements include user authentication, ticket availability checking, seat selection,
payment processing, booking confirmation, email notifications, cancellation handling, and reporting
capabilities.
- SRS (Software Requirements Specification) defines what the software should do, focusing on user
needs, functionalities, constraints, and specifications.
- Design documents (e.g., architecture design, detailed design) describe how the software will be
implemented, including system architecture, modules, components, interfaces, algorithms, and data
structures.
- The RAD (Rapid Application Development) model assumes the existence of pre-built components
or reusable modules that can be quickly integrated to accelerate development.
- The prototype may need refactoring, optimization, and scalability enhancements to meet
production-level performance and reliability standards.
- Quality assurance and testing efforts must be expanded to ensure robustness, security, and
compatibility.
- Documentation, training materials, and user support systems need to be developed for the final
product.
18. **Combining process models:**
- It is possible to combine process models, such as using a hybrid approach that combines
elements of Agile (e.g., Scrum) for iterative development with aspects of Waterfall for initial planning
and documentation.
- The choice of combined process models depends on project requirements, team dynamics,
organizational culture, and development context.
2m
- States in a concurrent process model represent different stages or conditions of execution within
concurrent or parallel processes. These states can include active execution, waiting for resources or
synchronization, ready to execute, and completed or terminated states.
- Emphasizing development speed over software quality can lead to several consequences:
- Higher long-term costs for bug fixes, rework, and technical debt.
- Cross-cutting concerns in process models refer to aspects or functionalities that affect multiple
components or modules across the software system. Examples include security, logging, error
handling, performance optimization, and authentication mechanisms.
- User requirements focus on what the users need and expect from the system in terms of features,
functionalities, and user interactions.
- Functional system requirements specify how the system should behave or perform specific
functions to meet user requirements.
- User requirements describe what the system should do from the user's perspective, focusing on
user needs, goals, tasks, and interactions.
- This requirement emphasizes a quality aspect (user experience) without specifying quantifiable
metrics.
- Domain requirements for a lift system might include safety regulations compliance, maximum
weight capacity, floor navigation logic, emergency procedures, user interface accessibility, and energy
efficiency.
- Structural natural language refers to a structured format or syntax used to specify requirements,
such as using templates, diagrams, and models to describe system behaviors and interactions.
- Standard natural language refers to conventional written or spoken language used to express
requirements, often without specific structural constraints or formalisms.
- The level of detail in a requirements document depends on the complexity, scope, and nature of
the system being developed. For complex systems, detailed requirements with clear specifications,
use cases, scenarios, and acceptance criteria are necessary.
- The requirements spiral represents iterative refinement of requirements throughout the software
development life cycle, including activities such as elicitation, analysis, prioritization, validation, and
documentation.
These answers cover a wide range of topics related to software requirements, process models,
quality considerations, and system development activities. Let me know if you need more details on
any specific aspect!