Software engineering Flashcards

1
Q

What is software engineering

A

Software engineering is a discipline within the field of computer science that
focuses on the systematic design, development, testing, deployment, and
maintenance of software systems. It involves applying engineering principles to
software development to ensure that software projects are completed on time,
within budget, and with the desired level of quality.The outcome of software
engineering is an efficient and reliable software product.

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

IEEE definition of software engineering

A

The application of a systematic, disciplined, quantifiable approach to the development,
operation and maintenance of software; that is, the application of engineering to
software.

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

Software Evolution Laws

A

Lehman has given laws for software evolution. He divided the software into
three different categories:
* S-type (static-type) - This is software, which works strictly according to
defined specifications and solutions. The solution and the method to achieve it,
both are immediately understood before coding. The s-type software is least
subjected to changes hence this is the simplest of all. For example, a calculator
program for mathematical computation.
* P-type (practical-type) - This is a software with a collection of procedures.
This is defined by exactly what procedures can do. In this software, the
specifications can be described but the solution is not obvious instantly. For
example, gaming software.
* E-type (embedded-type) - This software works closely with the requirements
of the real-world environment. This software has a high degree of evolution as
there are various changes in laws, taxes, etc. in real-world situations. For
example, Online trading software.

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

Characteristics of good software

A

This software must satisfy on the following grounds:
* Operational
* Transitional
* Maintenance

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

Operational
This tells us how well software works in operations. It can be measured on:
* Budget
* Usability
* Efficiency
* Correctness
* Functionality
* Dependability
* Security
* Safety

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

Transitional
This aspect is important when the software is moved from one platform to
another:
* Portability
* Interoperability
* Reusability
* Adaptability

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

Maintenance
This aspect briefs about how well a software has the capabilities to maintain
itself in the ever-changing environment:
* Modularity
* Maintainability
* Flexibility
* Scalability
In short, Software engineering is a branch of computer science, which uses
well-defined engineering concepts required to produce efficient, durable,
scalable, in-budget and on-time software products

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

Characteristics of a good software engineer

A

The features that good software engineers should possess are as
follows:
Exposure to systematic methods, i.e., familiarity with software engineering
principles.
Good technical knowledge of the project range (Domain knowledge).
Good programming abilities.
Good communication skills. These skills comprise of oral, written, and
interpersonal skills.
High motivation.
Sound knowledge of fundamentals of computer science.
Intelligence.
Ability to work in a team
Discipline, etc.

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

Importance of Software Engineering

A
  1. Reduces complexity: Big software is always complicated and
    challenging to progress. Software engineering has a great solution to
    reduce the complication of any project. Software engineering divides big
    problems into various small issues. And then start solving each small
    issue one by one. All these small problems are solved independently to
    each other.
  2. To minimize software cost: Software needs a lot of hardwork and
    software engineers are highly paid experts. A lot of manpower is
    required to develop software with a large number of codes. But in
    software engineering, programmers project everything and decrease all
    those things that are not needed. In turn, the cost for software
    productions becomes less as compared to any software that does not
    use software engineering method.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q
A
  1. To minimize software cost: Software needs a lot of hardwork and
    software engineers are highly paid experts. A lot of manpower is
    required to develop software with a large number of codes. But in
    software engineering, programmers project everything and decrease all
    those things that are not needed. In turn, the cost for software
    productions becomes less as compared to any software that does not
    use software engineering method.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q
A
  1. To decrease time: Anything that is not made according to the project
    always wastes time. And if you are making great software, then you
    may need to run many codes to get the definitive running code. This is
    a very time-consuming procedure, and if it is not well handled, then this
    can take a lot of time. So if you are making your software according to
    the software engineering method, then it will decrease a lot of time.
  2. Handling big projects: Big projects are not done in a couple of days,
    and they need lots of patience, planning, and management. And to
    invest six and seven months of any company, it requires heaps of
    planning, direction, testing, and maintenance. No one can say that he
    has given four months of a company to the task, and the project is still
    in its first stage. Because the company has provided many resources to
    the plan and it should be completed. So to handle a big project without
    any problem, the company has to go for a software engineering method.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q
A
  1. Reliable software: Software should be secure, means if you have
    delivered the software, then it should work for at least its given time or
    subscription. And if any bugs come in the software, the company is
    responsible for solving all these bugs. Because in software engineering,
    testing and maintenance are given, so there is no worry of its reliability.
  2. Effectiveness: Effectiveness comes if anything has made according to
    the standards. Software standards are the big target of companies to
    make it more effective. So Software becomes more effective in the act
    with the help of software engineering.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Key Concepts in Software Engineering:

A

Software Development Life Cycle (SDLC): This is the process that
guides the development of software from its initial conception to its final
deployment and maintenance. The most common SDLC models include
Waterfall, Agile, Scrum, and DevOps.

Requirements Analysis: In this phase, software engineers work
closely with stakeholders to understand their needs and define the
functional and non-functional requirements of the software system.

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

Design: Based on the requirements, the software system’s architecture,
components, and interfaces are designed. This includes both high-level
architectural design and low-level detailed design.

Implementation: During this phase, the actual coding of the software
takes place. Programmers write code according to the design
specifications, following best practices and coding standards.

Testing: Software testing is crucial to identify and fix bugs, ensure the
software works as intended, and meets the defined requirements.
Testing includes unit testing, integration testing, system testing, and
more.

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

Deployment: Once the software is thoroughly tested and deemed
ready, it is deployed to the production environment. This phase involves
configuring the software, setting up servers, and making it available to
users.

Maintenance: After deployment, the software requires ongoing
maintenance, which includes fixing bugs, adding new features, and
adapting to changes in the environment or user requirements.

Version Control: Version control systems like Git help manage changes
to the source code, allowing multiple developers to collaborate efficiently
and track the evolution of the software over time.

Software Quality Assurance: Ensuring the quality of the software
through processes like code reviews, testing automation, and adherence
to coding standards.

Documentation: Proper documentation is essential for understanding
the software’s design, functionality, and usage. It aids in maintenance,
troubleshooting, and knowledge transfer

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

Software Development Methodologies

A

Waterfall: A linear approach where each phase is completed before
moving to the next.

Agile: An iterative and flexible approach that emphasizes collaboration,
adaptability, and customer feedback.

Scrum: A specific Agile framework that organizes work into time-bound
iterations called sprints.

DevOps: Focuses on collaboration between development and IT
operations teams to automate and streamline the software delivery
process.