Introduction To Software Engineering

Ace your homework & exams now with Quizwiz!

What is a software engineering code of ethics?

A set of guidelines that set out expected ethical and professional behavior for software engineers. This was defined by the major U.S. professional societies (the ACM and the IEEE) and defines ethical behavior under eight headings: public, client and employer, product, judgment, management, colleagues, profession, and self.

What is test-first development?

An automated unit test framework is used to write tests for a new piece of functionality before that functionality itself is implemented.

Design Activities

Architectural Design Interface Design Component Design Database Design

What are the development stages in reuse-based development?

Component analysis; Requirements modification; System design with reuse; Development and integration.

What is software?

Computer programs and associated documentation.

What is the distinction between computer science and software engineering?

Computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.

Software engineering is not only concerned with issues like system heterogeneity, business and social change, trust, and security, but also with ethical issues affecting the domain. Give some examples of ethical issues that have an impact on the software engineering domain.

Confidentiality - Always respect this even if no confidentiality agreement is signed Competence - don't mis-represent your level of competence Intellectual property rights - be aware of local laws governing intellectual property rights

List the 5 principles of agile methods.

Customer involvement incremental delivery people not process embrace change maintain simplicity

What are the six fundamental best practices in the Rational Unified Process?

Develop software iteratively Manage requirements Use component-based architectures Visually model software Verify software quality Control changes to software

Testing Stages

Development or component testing system testing acceptance testing

Briefly discuss why it is usually cheaper in the long run to use software engineering methods and techniques for software systems.

Failure to use software engineering method leads to higher costs for testing, quality assurance, and long-term maintenance

What are the principal requirements engineering activities?

Feasibility study Requirements elicitation and analysis Requirements specification Requirements validation.

Why is it increasingly irrelevant to distinguish between software development and evolution?

Fewer and fewer systems are completely new

What are the two fundamental types of software product?

Generic products Customized products

What are the two fundamental types of software product?

Generic products (sold on open market) & Customized products (commissioned by client)

What are the 3 general issues that affect many different types of software?

Heterogeneity Increasingly, systems are required to operate as distributed systems across networks that include different types of computer and mobile devices. Business and social change Business and society are changing incredibly quickly as emerging economies develop and new technologies become available. They need to be able to change their existing software and to rapidly develop new software. Security and trust As software is intertwined with all aspects of our lives, it is essential that we can trust that software.

What are the 4 general issues that affect many different types of software?

Heterogeneity, Business and social change, Security and trust, Scale

Benefits of prototyping

Improved system stability A closer match to users' real needs Improved design quality Improved maintainability Reduced development effort

Briefly describe the advantages of pair programming.

It supports the idea of collective ownership and responsibility for the system. Individuals are not held responsible for problems with the code. Instead, the team has collective responsibility for resolving these problems. It acts as an informal review process because each line of code is looked at by at least two people. It helps support refactoring, which is a process of software improvement. Where pair programming and collective ownership are used, others benefit immediately from the refactoring so they are likely to support the process.

Why are iterations usually limited when the waterfall model is used?

Iterations are limited because in order for the waterfall model to work efficiently it requires well-understood project requirements and one phase cannot begin until another is complete.

What are the barriers to introducing agile methods into large companies?

Large companies are less flexible to change, have trouble with communication, and can have cultural differences.

What are the essential attributes of good software?

Maintainability, Dependability/Security, Efficiency, Acceptability

What are the three important characteristics of extreme programming?

New versions are built every day increments are delivered to customers every 2 weeks All tests must be run for every build and the build is only accepted if tests run successfully.

What are the four sectors in each loop in Boehm's spiral model?

Objective setting RIsk assessment and reduction Development and validation Planning

Throw-away prototypes

Prototypes should be discarded after development as theyre not a good basis for a productive system

Phases in the waterfall model

Requirements analysis and definition System and software design Implementation and unit testing Integration and system testing Operation and maintenance

Explain why professional software that is developed for a customer is not simply the programs that have been developed and delivered.

SE requires the compilation of documentation, support websites, design, evolution, requirements, etc to help make the software system functional and complete. Software is a continuous process of developing and updating, so you will never simply code and be done.

For what types of system are agile approaches to development particularly likely to be successful?

Small or medium sized Have customers that want to be involved in the development process

What is Software Engineering ?

Software engineering is an engineering discipline that is concerned with all aspects of software production

What is software engineering?

Software engineering is an engineering discipline that is concerned with all aspects of software production.

What are the three key characteristics of the engineering of web-based software engineering ?

Software reuse is the dominant approach for constructing web-based systems: Web-based systems should be developed and delivered incrementally User interfaces are constrained by the capabilities of web browsers:

What are three key characteristics of the engineering of web-based software engineering?

Software reuse, Incremental and agile development, Service-oriented systems, Rich interfaces

What are the fundamental activities that are common to all software processes?

Specification Design and implementation Validation Evolution

What are the shared characteristics of different approaches to rapid software development?

Specification, design and implementation are interleaved system is developed as a series of versions with stakeholders involved in version evaluation User interfaces are often developed using an IDE and graphical toolset

What are the four fundamental activities in software process?

Specification, development, validation, evolution

List 5 different types of software Application

Stand-alone applications Interactive transaction-based applications Embedded control systems Batch processing systems Entertainment systems Data collection systems Systems of systems

List 5 different types of software application?

Stand-alone applications, Interactive transaction-based applications, Embedded control systems Batch processing systems, Entertainment systems, Systems for modeling and simulation, Data collection systems, Systems of systems

What software engineering fundamentals apply to all types of software systems?

Systems should be developed using a managed and understood development process. Of course, different processes are used for different types of software. Dependability and performance are important for all types of system. Understanding and managing the software specification and requirements (what the software should do) are important. Where appropriate, you should reuse software that has already been developed rather than write new software.

What are the possible problems of test-first development?

Tests are written before code clarifies the requirements to be implemented.

What are the three benefits of incremental development, compared to the waterfall model?

The cost of accommodating changing customer requirements is reduced It is easier to get customer feedback on the development work that has to be done

What are the advantages of using incremental development and delivery?

The cost of accommodating changing customer requirements is reduced. It is easier to get customer feedback on the development work that has been done. More rapid delivery and deployment of useful software to the customer is possible.

Prototyping can be used in?

The requirements engineering process to help with requirements elicitation and validation in design processes to explore options and develop a UI design In the testing process to run back-to-back tests

List the 3 generic process models that are used in software engineering

The waterfall model Plan-driven model. Separate and distinct phases of specification and development. Incremental development Specification, development and validation are interleaved. May be plan-driven or agile. Reuse-oriented software engineering The system is assembled from existing components. May be plan-driven or agile.

What software engineering fundamentals apply to all types of software systems?

They should be developed using a managed and understood development process; Dependability and performance are important for all types of systems; Understanding and managing the software specification and requirements (what the software should do) are important; You should make as effective use as possible of existing resources

Explain how electronic connectivity between various development teams can support software engineering activities

This can allow teams in different geographic locations and still code the same project in real time and host meetings to discuss next steps

Non certified individuals are still allowed to practice software engineering. Discuss some of the possible drawbacks of this

This means that certified individuals may have to work hand in hand with non certified individuals. This could lead to conflicting ideas about security and development processes

List four questions you should ask when deciding whether or not to adopt an agile method of software development?

What type of system is being developed? What is the expected system lifetime? What technologies are available to support system development? How is the development team organized?

What is the most important difference between generic software product development and custom software development? What might this mean in practice for users of generic software?

With generic software, the developer is in control of all decisions regarding dev and functionality. With custom software, the buyer is in charge of dev specifications and functionality. Users of generic software need to be aware that they will have less control over a generic product than if they get a custom product made for them.

What is the distinction between Computer Science and Software Engineering ?

computer science focuses on theory and fundamentals; software engineering is concerned with the practicalities of developing and delivering useful software.

What is Software Validation and Verification

is intended to show that a system conforms to its specification and meets the requirements of the system customer.

What are the essential attributes of good software

maintainability, dependability and security, efficiency, and acceptability

drawbacks of prototyping

may leave out functionality

What are the four fundamental activities in software processes?

software specification, software development, software validation, and software evolution


Related study sets

Genetics book questions - exam 2

View Set

Language Arts 709 QUIZ 1: CORRECT SENTENCES

View Set

Refrigeration Cycle +Refrigeration (4 Major components)

View Set

Factoring Trinomials: a = 1 Assignment

View Set

Lesson 12: Female Reproductive System

View Set

FIN3403 - Exam One Review Questions (Chp 3)

View Set