MODULE 1 Flashcards

1
Q

define software

A

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. ​

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

explain its process.

A

communication
planning
modeling
construction
deployment

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Attributes of a good soft ware

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Key challenges

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

What are Software Patterns?

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Types of Software Patterns

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Key Characteristics of Software Patterns:

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

List and Explain the Software Myths”

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

explain Management Myths:

A
  1. 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​

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Customer Myths:

A

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​

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Practitioner Myths

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What are Prescriptive Process Models?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

The Waterfall Model:

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

The Incremental Model:

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

The Spiral Model:

A

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.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Prototyping Model:

A

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.

17
Q

Concurrent Development Model:

A

This model allows different software activities (e.g., communication, modeling) to occur simultaneously, making it suitable for projects with parallel teams.

18
Q

Advantages:

Disadvantages:

A

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

19
Q

Collaborative Requirements Gathering:

A

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.

20
Q

Behavioral Model Concepts”

A

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.

21
Q

Key Concepts of Behavioral Models:

A

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.

22
Q

Example of Behavioral Model: Home Security System

A

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​

23
Q

patterns for requirements modelling

A

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​

24
Q

Stakeholder Validation of Requirements:

A

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.

25
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.
26
Requirements Validation Process
Requirements validation involves verifying the correctness, completeness, and feasibility of the documented requirements. The key steps in the validation process are: Technical Reviews: A formal review where stakeholders, including customers, users, and developers, assess the specifications for any errors, omissions, or conflicts. Checklists: A structured set of checklist questions (such as those related to clarity, testability, and consistency) is used to evaluate each requirement. Prototype Evaluation: Prototypes may be used to validate certain types of requirements by giving stakeholders a hands-on experience of the system's behavior before full development. Prioritization and Negotiation: If stakeholders identify conflicting requirements, a negotiation process is used to determine priorities and reconcile differing expectations. In summary, stakeholders play a critical role in validating that requirements meet project goals, align with business needs, and are feasible for implementation
27
Discuss the classbased modeling elements concepts
Class-based modeling focuses on representing the key objects or entities in a system, their attributes, operations, and the relationships among them. This is central to object-oriented software engineering and serves as a blueprint for system design. The following elements form the core of class-based modeling: Classes and Objects: A class is a blueprint for creating objects, defining the properties and behaviors shared by all instances. An object is an instance of a class, representing a concrete entity in the system. For example, a "Car" class might define properties like make, model, and color, and methods like start() or accelerate(), while an actual car is an object. Attributes: These are the data members or properties of a class that represent the state of an object. For a "Student" class, attributes might include name, age, and roll number. Operations: Operations, also known as methods or functions, define the behaviors or actions that a class can perform. For example, a "BankAccount" class may have operations like deposit() or withdraw() to manipulate its balance attribute. Relationships: Associations: Defines how classes are related to each other. For example, an "Employee" class might be associated with a "Company" class, representing that an employee works for a company. Inheritance: A mechanism where a new class (subclass) inherits attributes and operations from an existing class (superclass). For instance, a "SavingsAccount" class might inherit from a general "Account" class. Aggregation/Composition: Represents a "whole-part" relationship where a class (whole) is composed of other classes (parts). For example, a "Car" class may aggregate classes like "Engine" and "Wheel." Encapsulation: Encapsulation ensures that an object’s internal state is hidden from the outside world, only allowing controlled access via methods. This protects the object’s integrity. Class-Responsibility-Collaborator (CRC) Cards: This technique helps define the responsibilities of each class and how they collaborate with other classes. It organizes the design by ensuring each class has a clear role in the system. Class-based modeling provides a structured approach to define how objects behave and interact in a system, serving as the foundation for object-oriented design and ensuring that complex systems can be developed in a modular, reusable, and maintainable manner
28
Explain the Unique Nature of WebApps and Software Engineering - A Layered Technology"
1. Unique Nature of WebApps: Web applications, or WebApps, are software systems designed to be used over a network, often the internet. They have evolved significantly from simple websites to complex applications that offer diverse functionalities. WebApps exhibit several unique characteristics that distinguish them from other types of software: Network Intensiveness: WebApps reside on a network (e.g., the internet or intranet) and must support multiple clients simultaneously, often requiring complex network interaction. Concurrency: A large number of users may access a WebApp simultaneously, requiring concurrent processing capabilities. Unpredictable Load: The number of users can fluctuate significantly, making WebApps vulnerable to unpredictable loads and requiring efficient resource management. Performance: If users experience delays, they may abandon the WebApp. Therefore, high-performance standards are crucial. Availability: Users expect WebApps to be accessible at all times, often 24/7, especially for global applications. Data-Driven: Many WebApps are built around hypermedia content (text, images, video) or data from external databases, requiring effective data handling mechanisms. Continuous Evolution: Unlike traditional software, WebApps evolve continuously with frequent updates and improvements. Changes are often deployed instantly without the need for new installations on the user's side. Security: Because WebApps are accessible via the internet, robust security measures (encryption, authentication) are required to protect user data. Aesthetics: Visual appeal plays a significant role in the success of WebApps. Aesthetics are often as important as functionality​
29
Software Engineering - A Layered Technology:
Software engineering is often described as a layered technology because it consists of multiple layers, each building on the previous one to ensure quality and efficiency in software development. These layers provide the structure for a systematic approach to building software.
30
The Layers of Software Engineering:
Quality Focus (Foundation Layer): The base of software engineering is a commitment to quality. Every process and activity in software engineering must ensure that the software meets quality standards. Quality assurance, reviews, and testing are applied at every stage. Process Layer: The process layer serves as the "glue" that holds the different aspects of software engineering together. It defines the framework for tasks and activities, ensuring systematic and repeatable development efforts. This layer encompasses the generic process activities such as communication, planning, modeling, construction, and deployment. Methods Layer: This layer provides the technical "how-to's" for software development. It includes all activities related to design, coding, testing, and documentation. Methods ensure that tasks are performed efficiently using sound engineering principles. Tools Layer: The top layer consists of tools that support the process and methods. Tools may automate or assist with tasks such as code development, version control, testing, and modeling.
31
Explain Software Engineering Layers with Diagram
Software Engineering Layers: Software engineering is composed of multiple layers that work together to deliver high-quality software. Each layer focuses on different aspects of software development and builds upon the previous one to ensure systematic development and delivery of software.
32
The Layers of Software Engineering:
Quality Focus (Foundation Layer): At the base of software engineering is the commitment to quality. Every activity and process in software development is designed to ensure that the final product meets a high standard of quality. This layer emphasizes quality assurance activities, which include reviews, testing, and continuous process improvement. Process Layer: The process layer is the backbone that holds all the activities of software engineering together. It provides a framework for all software development tasks, ensuring that these tasks are carried out in a structured and systematic way. It covers core activities such as communication, planning, modeling, construction, and deployment. Methods Layer: This layer defines the technical methods and procedures that software engineers follow to develop software. It includes techniques for gathering requirements, analyzing the system, designing the architecture, writing code, and testing. The methods layer ensures that the tasks are completed efficiently and according to best practices. Tools Layer: The tools layer consists of various software tools that support the software engineering process and methods. These tools help automate tasks like version control, debugging, code generation, testing, and project management. They enable developers to execute tasks more efficiently and ensure that processes are followed correctly.
33
"Explain the Nature of Software with Software Domain Applications and Software Challenges"
1. Nature of Software: Software is a collection of computer programs and related data that provide instructions to the computer to perform specific tasks. Unlike physical products, software is an intangible system element, which makes it unique in several ways: Software is Developed, Not Manufactured: Software is created through a systematic engineering process. It does not undergo wear and tear like physical products. Once developed, software can be deployed in multiple instances without the need for a manufacturing process. Software Doesn’t Wear Out, but It Deteriorates: Software doesn’t degrade due to environmental factors like hardware. However, it can deteriorate due to changes or updates that introduce defects. Custom-built or Generic: Software can be custom-built for specific needs or developed as generic products to serve various users or organizations.
34
2. Software Domain Applications:
oftware is used in various application domains, each serving a specific purpose: System Software: This includes operating systems, device drivers, and utilities that manage hardware components and support the operation of other software. Examples include Windows, Linux, and Android. Application Software: These are programs designed to meet specific user needs, such as word processors, spreadsheets, and databases. They solve business problems or facilitate management operations. Engineering and Scientific Software: These applications involve complex computations and technical tasks, such as simulations, CAD systems, and scientific analysis software. Embedded Software: Embedded software operates within hardware systems like cars, home appliances, and medical devices, performing specific control functions. Product-line Software: Software products like word processors, spreadsheets, and graphic tools serve many users with similar needs. Examples include Microsoft Office and Adobe Photoshop. Web Applications (WebApps): Web-based software accessible via the internet, which delivers various functions such as e-commerce platforms, social media, and information management systems. Artificial Intelligence Software: AI-based software uses algorithms to mimic human decision-making and problem-solving. Examples include expert systems, robotics, and machine learning applications​
35
3. Software Challenges:
There are several challenges faced in software engineering: Complexity: Modern software systems are large and highly complex, requiring careful design and development to manage the interactions between various components. Conformity: Software must conform to the ever-changing requirements of the real world. As systems evolve, software needs to be updated frequently to meet new demands, which can introduce errors. Changeability: Unlike physical products, software is easily modified. However, frequent changes often introduce bugs and inconsistencies, making it difficult to maintain software quality over time. Intangibility: Because software is not a physical entity, it can be difficult to visualize and manage. Stakeholders may struggle to understand the full scope of the software system, leading to unrealistic expectations. Security and Reliability: As software becomes more integral to critical systems (such as healthcare, banking, and infrastructure), ensuring that software is secure and reliable becomes paramount. Software vulnerabilities can lead to severe consequences such as data breaches or system failures​
36