Introduction to Software Engineering Flashcards

1
Q

How is software engineering similar to other types of engineering?

A

Abstraction and Modularity
Software products are large and complex
•Development requires analysis and synthesis
–Analysis: decompose a large problem into smaller, understandable pieces
•abstraction is the key
–Synthesis: build (compose) a software from smaller building blocks
•composition is challenging

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

What is a method?

A

refers to a formal procedure; a formal “recipe” for accomplishing a goal that is typically independent of the tools used

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

What is a tool?

A

an instrument or automated system for accomplishing something in a better way

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

What is a procedure?

A

a combination of tools and techniques to produce a product

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

What is a paradigm?

A

philosophy or approach for building a product (e.g., OO vs structured approaches)

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

What is the difference between computer science and software engineering?

A

a discipline that uses computer and software technologies as a problem-solving tools
CS gives theories and computer function to SE, while custmer gives problems. SE produces toold and techniques to solve them.

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

What is software?

A
  • (1) instructions (computer programs) that when executed provide desired features, function, and performance;
  • (2) data structures that enable the programs to adequately manipulate information and
  • (3) documentation that describes the operation and use of the programs.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

What are the characteristics of software?

A

SW is developed or engineered, it is not manufactured in the classical sense
Software does not wear out
Most SW is custom built, rather than being assembled from existing components
Typically errors are high when software is built or changed and the error rates come down
The cost of correction/change increases exponentially when we move ahead in the life cycle of an SW project

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

Why must legacy system change?

A

software must be adapted to meet the needs of new computing environments or technology.
–software must be enhanced to implement new business requirements.
–software must be extended to make it interoperable with other more modern systems or databases.
–software must be re-architected to make it viable within a network environment.

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

What are characteristics of web apps?

A

•Data-driven. The primary function of many WebAppsis to use hypermedia to present text, graphics, audio, and video content to the end-user.
•Content sensitive. The quality and aesthetic nature of content remain an important determinant of the quality of a WebApp.
•Continuous evolution. Unlike conventional application software that evolves over a series of planned, chronologically-spaced releases, Web applications evolve continuously.
Immediacy.Although immediacy—the compelling need to get the software to market quickly—is a characteristic of many application domains, WebAppsoften exhibit a time to market that can be a matter of a few days or weeks.
•Security. Because web apps are available via network access, it is difficult, if not impossible, to limit the population of end-users who may access the application.
•Aesthetics.An undeniable part of the appeal of a web app is its look and feel.

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

What is product line software?

A

Product line software is a set of software-intensive systems that share a common set of features and satisfy the needs of a particular market
These software products are developed using the same application and data architectures using a common core of reusable software components
•A software product line shares a set of assets that include requirements, architecture, design patterns, reusable components, test cases, and other work products
•A software product line allows in the development of many products that are engineered by capitalizing on the commonality among all products within the product line

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

What are the characteristics of software costs?

A

Software costs often dominate computer system costs. The costs of software on a PC are often greater than the hardware cost.
•Software costs more to maintainthan it does to develop. For systems with a long life, maintenance costs may be several times development costs.
•Software engineering is concerned with cost-effective software development.

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

What are essential attributes of good software?

A
  • Maintainability
  • Dependability and security
  • Efficiency
  • Acceptability
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

What is software engineering?

A

the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, i.e. the application of engineering to software
Software engineering is an engineering discipline that is concerned with all aspects of software production from the early stages of system specification through to maintaining the system after it has gone into use

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

What are software engineering principles?

A
•Rigor and formality
•Separation of concerns
–Modularity and decomposition
–Abstraction
•Anticipation of change
•Generality
•Incrementality
•Scalability
•Compositionality
•Heterogeneity
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

What are objectives of software engineering?

A

To organize and control software development process and produce a well-structured, accurate and useful software solution.

17
Q

What are the reasons for software project failures?

A
  • Increasing system complexity

* Failure to use software engineering methods

18
Q

What is systems engineering?

A
  • System engineering is concerned with all aspects of computer-based systems development including hardware, software, and process engineering. Software engineering is part of this process concerned with developing the software infrastructure, control, applications and databases in the system.
  • System engineers are involved in system specification, architectural design, integration, and deployment.
19
Q

What are three parts of software development process?

A
  • Process Framework
  • Software Engineering Process
  • Software Process Models
20
Q

What does process framework contain?

A

Framework Activities

Umbrella activities

21
Q

What do framework activities contain?

A
•Communication
•Planning
•Modeling
–Analysis of requirements
–Design
•Construction
–Code generation
–Testing
•Deployment
22
Q

What do umbrella activities contain?

A
  • Software project management
  • Formal technical reviews
  • Software quality assurance
  • Software configuration management
  • Work product preparation and production
  • Reusability management
  • Measurement
  • Risk management
23
Q

What are four steps in the essence of software development practice?

A
  1. Understand the problem(communication and analysis).
  2. Plan a solution(modeling and software design).
  3. Carry out the plan(code generation).
  4. Examine the result for accuracy(testing and quality assurance).
24
Q

What are software development process and its generic activities?

A

•A set of activities whose goal is the development or evolution of software.
•Generic activities in all software processes are:
A.Specification-what the system should do and its development constraints
B.Development-production of the software system (designed and implemented)
C.Validation-checking that the software is what the customer wants
D.Evolution-changing the software in response to changing demands.

25
Q

What are parts of the design process activities?

A
  • Architectural design, where you identify the overall structure of the system, the principal components (sometimes called sub-systems or modules), their relationships and how they are distributed.
  • Interface design, where you define the interfaces between system components.
  • Component design, where you take each system component and design how it will operate.
  • Database design, where you design the system data structures and how these are to be represented in a database.
26
Q

What is a software process model?

A
A simplified representation of a software process, presented from a specific perspective.
•Generic process models
–Waterfall;
–Iterative development;
–Component-based software engineering.
27
Q

What are the key challenges facing software engineering?

A

Heterogeneity, delivery and trust.
•Heterogeneity
–Developing techniques for building software that can cope with heterogeneous platforms and execution environments;
•Delivery
–Developing techniques that lead to faster delivery of software;
•Trust
–Developing techniques that demonstrate that software can be trusted by its users.

28
Q

What are ethical principles for software engineering?

A
  1. PUBLIC -Software engineers shall act consistently with the public interest.
  2. CLIENT AND EMPLOYER -Software engineers shall act in a manner that is in the best interests of their client and employer consistent with the public interest.
  3. PRODUCT -Software engineers shall ensure that their products and related modifications meet the highest professional standards possible.
  4. JUDGMENT -Software engineers shall maintain integrity and independence in their professional judgment.
  5. MANAGEMENT -Software engineering managers and leaders shall subscribe to and promote an ethical approach to the management of software development and maintenance.
  6. PROFESSION -Software engineers shall advance the integrity and reputation of the profession consistent with the public interest.
  7. COLLEAGUES -Software engineers shall be fair to and supportive of their colleagues.
  8. SELF -Software engineers shall participate in lifelong learning regarding the practice of their profession and shall promote an ethical approach to the practice of the profession.