MODULE 1 Flashcards
define software
Software engineering is the establishment and use of sound engineering principles in order to obtain economically software that is reliable and works efficiently on real machines.
The application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software.
that is, the application of engineering to software and the study of approaches as in same.
explain its process.
communication
planning
modeling
construction
deployment
Attributes of a good soft ware
Maintainability: The software should be easy to maintain and modify when required.
Dependability: The software should be reliable, secure, and safe. It should perform its intended functions without causing significant failures.
Efficiency: The software should not waste system resources, such as memory and processing power, and it should run optimally on real machines.
Usability: The software must be user-friendly and cater to the requirements and skills of its users.
Adaptability: The software should be capable of evolving as new requirements emerge or the environment changes
Key challenges
Increasing Complexity: Software systems are becoming increasingly complex, making it difficult to manage interactions among system components and ensuring correct behavior.
Changing Requirements: Software requirements often evolve over time, creating challenges in keeping up with the needs of users and organizations.
Quality and Security: High-quality software must meet reliability and security standards to ensure that it functions as expected and is protected from cyber-attacks.
Rapid Technological Changes: Software engineers must keep up with fast-paced changes in technology, programming languages, tools, and environments.
Cost and Time Constraints: Delivering software on time and within budget while maintaining quality can be challenging
What are Software Patterns?
Software patterns provide proven solutions to recurring problems in the software development process. They offer a structured way to solve problems that occur in a specific context, providing guidance on how to implement the solution and adapt it for similar situations.
Patterns are a way of capturing expertise in software development, making it reusable for future projects. These patterns are derived from experience and are widely applicable in various stages of software engineering, from project management to coding and testing.
Types of Software Patterns
There are three main types of patterns in software engineering:
Stage Patterns: These patterns define problems related to a framework activity (e.g., planning or communication). They cover multiple work tasks relevant to that stage. For example, a stage pattern might include the process of Establishing Communication, which is necessary in the initial stages of any project.
Task Patterns: These patterns focus on specific actions or work tasks. An example would be the Requirements Gathering task pattern, which provides a solution for eliciting stakeholder needs and creating a comprehensive requirements document.
Phase Patterns: These patterns describe a sequence of framework activities that occur within the software process. They represent the flow of activities such as Prototyping or the Spiral Model, ensuring that a consistent approach is followed.
Key Characteristics of Software Patterns:
Name: Each pattern has a unique, meaningful name that reflects its purpose.
Problem: The specific issue the pattern addresses.
Solution: The detailed steps needed to solve the problem.
Context: Describes the situation in which the pattern is applicable.
Forces: Environmental factors that influence the problem and its solution.
Resulting Context: Describes the conditions that will exist after the pattern is applied.
Related Patterns: Connections to other patterns that may be useful in similar contexts
List and Explain the Software Myths”
Software myths are incorrect beliefs about software development that create misconceptions and lead to poor practices. These myths are widely held by managers, customers, and even software practitioners, often leading to problems in the software development process. The myths are typically grouped into three categories: Management Myths, Customer Myths, and Practitioner Myths.
explain Management Myths:
- Management Myths:
Myth: “We already have a book full of standards and procedures for building software. That should provide my people with everything they need.”
Reality: While having standards and procedures is important, they are often outdated or too generic to apply to all situations. They need to be continuously updated and tailored to the specific needs of each project(@vtucode.in-BCS501-modu…).
Myth: “If we fall behind schedule, we can add more programmers to catch up.”
Reality: Adding more people to a project that is already behind schedule usually causes further delays due to the time required for newcomers to learn the project and the need for additional coordination(@vtucode.in-BCS501-modu…).
Myth: “Outsourcing the software project will eliminate all of our problems.”
Reality: Outsourcing can introduce new challenges, including communication issues, quality control, and project management complexities. If a company doesn’t have a solid understanding of managing software projects, outsourcing can worsen the situation
Customer Myths:
Myth: “A general statement of objectives is enough for developers to start building software. We can fill in the details later.”
Reality: Ambiguity in requirements often leads to incomplete or incorrect software. Continuous and clear communication is necessary to fully understand and capture the requirements(@vtucode.in-BCS501-modu…).
Myth: “Software requirements are always flexible, and changes can be made easily because software is adaptable.”
Reality: While software can be changed, making changes late in the development process can be costly and disruptive, requiring significant rework
Practitioner Myths
Myth: “Once we get the program to work, our job is done.”
Reality: A large portion of the effort in software development is spent on maintenance after the software is delivered. Bugs need fixing, and new features will often be required(@vtucode.in-BCS501-modu…).
Myth: “Until I get the program running, I have no way of assessing its quality.”
Reality: Quality can be assessed throughout the development process by conducting reviews and inspections of the code and design before the software is executed(@vtucode.in-BCS501-modu…).
Myth: “The only deliverable is the working program.”
Reality: Software projects produce many other important deliverables such as documentation, design models, and test plans, which are essential for the software’s success and future maintenance(@vtucode.in-BCS501-modu…).
By recognizing and addressing these myths, teams can adopt more realistic expectations and improve their software development practices.
What are Prescriptive Process Models?
Prescriptive process models in software engineering are structured approaches that define a well-established, systematic set of activities for software development. These models provide a detailed framework to guide software development teams, ensuring consistency, predictability, and control over the software development process. They prescribe specific stages, tasks, and work products to be completed and their order of execution
The Waterfall Model:
It is the oldest and most straightforward prescriptive model. The waterfall model is sequential, progressing through clearly defined stages such as communication, planning, modeling, construction, and deployment.
A variation is the V-Model, which emphasizes verification and validation through each stage.
The Incremental Model:
This model breaks down the software into smaller, manageable parts (increments), which are developed and deployed over time. Each increment adds additional functionality to the software.
The Spiral Model:
The spiral model combines the iterative nature of the incremental model with risk assessment. Each cycle of the spiral begins with planning and ends with the evaluation of risks before proceeding to the next phase.
Prototyping Model:
Prototyping is useful when requirements are not well understood. A prototype is quickly built and then evaluated by the customer. Based on feedback, requirements are clarified and refined until the final software is developed.
Concurrent Development Model:
This model allows different software activities (e.g., communication, modeling) to occur simultaneously, making it suitable for projects with parallel teams.
Advantages:
Disadvantages:
ad Predictable timelines, costs, and outcomes.
Ensures a structured approach, which is easier for teams to follow.
dis Inflexibility in accommodating changes during the process.
May introduce bureaucracy if applied dogmatically
Collaborative Requirements Gathering:
Collaborative Requirements Gathering (CRG) is a technique used to gather requirements from stakeholders in a structured, team-oriented way. It involves active participation from both the software engineering team and stakeholders (such as customers, end-users, and other business representatives). The primary goal is to establish a shared understanding of what the system should accomplish and to create a clear, documented set of requirements.
Behavioral Model Concepts”
A Behavioral Model represents the dynamic aspects of a system by depicting how objects or components interact over time. Unlike structural models, which focus on the organization of a system, behavioral models focus on how the system behaves in response to events and how it transitions between states.
Key Concepts of Behavioral Models:
State Diagrams:
State diagrams are used to model the states an object can be in and the transitions between those states based on events.
Each state represents a condition during the life of an object, and the transitions show the response to events, moving the object from one state to another.
Example: For a home security system, a state diagram could depict states such as “Armed,” “Disarmed,” and “Alarm Triggered,” with transitions based on user actions or sensor inputs.
Events:
Events are occurrences that trigger changes in a system’s state. They could be user actions, system messages, or external stimuli.
Example: A motion sensor detecting movement is an event that triggers the transition from “Armed” to “Alarm Triggered” in a security system.
Actions:
Actions represent tasks or operations performed as a result of a state transition. These are typically responses to events.
Example: When the system enters the “Alarm Triggered” state, the action could be sending a notification to the homeowner.
Activities:
Activities are ongoing processes that take place within a state. They continue for as long as the system remains in that state.
Example: While in the “Armed” state, the home security system might continuously monitor sensors for any abnormal activity.
Sequence Diagrams:
Sequence diagrams are used to model the interaction between objects over time. They emphasize the time ordering of messages exchanged between objects.
Example: A sequence diagram for a home security system might show interactions between the homeowner, the system, and sensors when arming the system or responding to an alarm.
Collaboration Diagrams:
Collaboration diagrams depict the organization of objects and their relationships during an interaction. They show how objects collaborate to accomplish a specific task.
Example: Collaboration between sensors and the control system when monitoring a home for security breaches.
Example of Behavioral Model: Home Security System
For a home security system, a state diagram might include the following states:
Disarmed: The system is not monitoring sensors.
Armed: The system is active and monitoring sensors.
Alarm Triggered: The system detects a security breach and sounds an alarm.
Reset: The system is reset after the alarm is triggered.
Transitions between these states are triggered by events such as the user arming the system, sensors detecting movement, or the user resetting the system after an alarm.
Behavioral models provide a clear representation of how a system reacts to different events, making them valuable for understanding the dynamic behavior of complex systems
patterns for requirements modelling
The concept of patterns for requirements modeling focuses on reusing established solutions to common problems encountered during the requirements engineering phase. This involves using analysis patterns, which provide reusable templates for structuring and documenting requirements in various domains. Here are some key concepts related to requirements modeling patterns:
Analysis Patterns: These represent solutions for recurring problems within specific domains. They help speed up the creation of abstract analysis models and ensure consistency across similar projects.
Benefits of Patterns:
Reusability: Patterns provide reusable models that capture common requirements, which can be applied to new projects, reducing the need to start from scratch.
Standardization: They standardize the analysis process by providing a consistent approach to capturing requirements, which helps in both understanding and transforming them into design models.
Common Elements in Analysis Patterns:
Scenarios: Real-world situations and interactions between the user and the system.
Classes and Objects: Definitions of classes that represent important objects and their interactions.
Processes and Functions: Patterns also include functions or services performed by the system based on the user interactions.
These patterns ensure that the requirements are well-structured, making it easier for developers to translate them into design and implementation phases
Stakeholder Validation of Requirements:
Stakeholders validate the requirements through a formal process of review, ensuring that the system aligns with business objectives and satisfies user needs. The key aspects include:
Consistency Check: Stakeholders examine whether the stated requirements are consistent across different perspectives. This avoids conflicts that may arise between user expectations and business needs.
Clarity of Requirements: Stakeholders ensure that requirements are expressed in clear, unambiguous language to prevent misinterpretations.
Source Verification: The origin of each requirement (whether from a specific user, regulation, or document) is checked for accuracy and validity.
Cross-References: Validation includes checking that related requirements are appropriately cross-referenced and that dependencies between them are correctly identified.
Testability: Every requirement is examined to ensure it is testable, meaning that measurable validation criteria can be established for later stages of development.
Traceability: Stakeholders validate that each requirement is traceable to overall system objectives and models. This ensures the requirement fits within the overall context of the project.