Introduction to Software Engineering Flashcards
How is software engineering similar to other types of engineering?
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
What is a method?
refers to a formal procedure; a formal “recipe” for accomplishing a goal that is typically independent of the tools used
What is a tool?
an instrument or automated system for accomplishing something in a better way
What is a procedure?
a combination of tools and techniques to produce a product
What is a paradigm?
philosophy or approach for building a product (e.g., OO vs structured approaches)
What is the difference between computer science and software engineering?
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.
What is software?
- (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.
What are the characteristics of software?
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
Why must legacy system change?
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.
What are characteristics of web apps?
•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.
What is product line software?
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
What are the characteristics of software costs?
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.
What are essential attributes of good software?
- Maintainability
- Dependability and security
- Efficiency
- Acceptability
What is software engineering?
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
What are software engineering principles?
•Rigor and formality •Separation of concerns –Modularity and decomposition –Abstraction •Anticipation of change •Generality •Incrementality •Scalability •Compositionality •Heterogeneity