Podcast
Questions and Answers
Which of the following is the most accurate definition of software?
Which of the following is the most accurate definition of software?
- Electronic components of a computer
- A set of instructions for a computer
- The physical components of a computer system
- A computer program with associated documentation and data configuration (correct)
Generic software products are tailored to meet the specific needs of a particular customer.
Generic software products are tailored to meet the specific needs of a particular customer.
False (B)
What are two main factors contributing to the failure of software projects?
What are two main factors contributing to the failure of software projects?
Increasing demand for complex systems delivered quickly, and failure to use software engineering methods.
The majority of costs for most types of systems are those associated with changing the _______ after it has gone into use.
The majority of costs for most types of systems are those associated with changing the _______ after it has gone into use.
Match each software characteristic with its description:
Match each software characteristic with its description:
Which of the following highlights the difference between software engineering and computer science?
Which of the following highlights the difference between software engineering and computer science?
Stand-alone software applications typically require a continuous network connection to function correctly.
Stand-alone software applications typically require a continuous network connection to function correctly.
Name three factors that influence the choice of software engineering methods and tools.
Name three factors that influence the choice of software engineering methods and tools.
Dependability and _________ are important for all types of systems.
Dependability and _________ are important for all types of systems.
Which of the following statements best describes the role of a Software Requirements Specification (SRS)?
Which of the following statements best describes the role of a Software Requirements Specification (SRS)?
Reusing existing developed software should be avoided for the software.
Reusing existing developed software should be avoided for the software.
Web services allow application _______ to be accessed over the web.
Web services allow application _______ to be accessed over the web.
What is professional software engineering ethics?
What is professional software engineering ethics?
What does it mean for software engineers to maintain 'confidentiality' in their professional responsibilities?
What does it mean for software engineers to maintain 'confidentiality' in their professional responsibilities?
Software development success relies solely on technical skills, with little need for attention to ethical considerations.
Software development success relies solely on technical skills, with little need for attention to ethical considerations.
What is cloud computing?
What is cloud computing?
What is the software?
What is the software?
What are attributes of good software?
What are attributes of good software?
The software methods and tools used depend on _______, the requirements of the customer, and the background of the development team.
The software methods and tools used depend on _______, the requirements of the customer, and the background of the development team.
System should NOT be developed using a managed and understood development process.
System should NOT be developed using a managed and understood development process.
What are the Software Engineering Fundamentals?
What are the Software Engineering Fundamentals?
Software engineers should NEVER misrepresent their level of _______.
Software engineers should NEVER misrepresent their level of _______.
Software engineers should NEVER misuse other people's computers.
Software engineers should NEVER misuse other people's computers.
Software engineers should normally respect the _______ of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.
Software engineers should normally respect the _______ of their employers or clients irrespective of whether or not a formal confidentiality agreement has been signed.
What is a software process?
What is a software process?
What are the products of Software process discussions?
What are the products of Software process discussions?
There is an ideal software process.
There is an ideal software process.
In agile processes, _______ is incremental and it is easier to change the process to reflect changing customer requirements.
In agile processes, _______ is incremental and it is easier to change the process to reflect changing customer requirements.
What are the three types of Software Process Models?
What are the three types of Software Process Models?
What is limitations in the Waterfall Model?
What is limitations in the Waterfall Model?
The waterfall model is only appropriate when _______ and changes will be fairly limited during the design process.
The waterfall model is only appropriate when _______ and changes will be fairly limited during the design process.
Managers do NOT need regular deliverables to measure progress. If systems are developed quickly, it is not cost-effective to produce documents that reflect every version of the system.
Managers do NOT need regular deliverables to measure progress. If systems are developed quickly, it is not cost-effective to produce documents that reflect every version of the system.
Reuse-Oriented Software Engineering - Based on systematic reuse where systems are integrated from existing components or _______ systems.
Reuse-Oriented Software Engineering - Based on systematic reuse where systems are integrated from existing components or _______ systems.
In Software Discovery, what process are the software in?
In Software Discovery, what process are the software in?
Software discovery and evaluation is a Key process stages of reuse
Software discovery and evaluation is a Key process stages of reuse
What is Software Specification?
What is Software Specification?
Software Specification's output is _______
Software Specification's output is _______
The SRS serve as input to the 2nd Software Process Activity
The SRS serve as input to the 2nd Software Process Activity
The SRS + _______ + developed software serve as input to the 3rd Software Process Activity
The SRS + _______ + developed software serve as input to the 3rd Software Process Activity
Define Software Validation?
Define Software Validation?
Flashcards
What is Software?
What is Software?
Software is a computer program with associated documentation and data configuration.
Generic vs Customized Software
Generic vs Customized Software
Generic software is made for the mass market. Customized software is tailored for specific needs.
Software vs. Hardware costs
Software vs. Hardware costs
Software costs often exceed hardware because of maintenance.
What is Software Engineering?
What is Software Engineering?
Signup and view all the flashcards
Software Engineering concerns
Software Engineering concerns
Signup and view all the flashcards
Another definition for Software Engineering
Another definition for Software Engineering
Signup and view all the flashcards
Attributes of good software
Attributes of good software
Signup and view all the flashcards
Software engineer ethics
Software engineer ethics
Signup and view all the flashcards
Responsibilities of software engineers
Responsibilities of software engineers
Signup and view all the flashcards
Stand-alone Applications
Stand-alone Applications
Signup and view all the flashcards
Data Collection Systems
Data Collection Systems
Signup and view all the flashcards
Batch processing systems
Batch processing systems
Signup and view all the flashcards
Entertainment systems
Entertainment systems
Signup and view all the flashcards
Software Engineering Diversity
Software Engineering Diversity
Signup and view all the flashcards
S/W Eng Fundamentals
S/W Eng Fundamentals
Signup and view all the flashcards
Key S / W engineering practices
Key S / W engineering practices
Signup and view all the flashcards
Software Engineering and Web
Software Engineering and Web
Signup and view all the flashcards
General Software Issues
General Software Issues
Signup and view all the flashcards
Software Process
Software Process
Signup and view all the flashcards
Software Process Activities
Software Process Activities
Signup and view all the flashcards
Software process aspects
Software process aspects
Signup and view all the flashcards
Plan driven approaches vs Agile approaches
Plan driven approaches vs Agile approaches
Signup and view all the flashcards
Waterfall Model
Waterfall Model
Signup and view all the flashcards
Incremental Development
Incremental Development
Signup and view all the flashcards
Reuse-oriented Software Engineering
Reuse-oriented Software Engineering
Signup and view all the flashcards
Requirements engineering process
Requirements engineering process
Signup and view all the flashcards
Software Development
Software Development
Signup and view all the flashcards
Software Validation
Software Validation
Signup and view all the flashcards
Verification
Verification
Signup and view all the flashcards
Three stages of testing
Three stages of testing
Signup and view all the flashcards
Software evolution goal
Software evolution goal
Signup and view all the flashcards
Reducing rework costs
Reducing rework costs
Signup and view all the flashcards
Plan vs Agile: what goes first
Plan vs Agile: what goes first
Signup and view all the flashcards
Study Notes
- Software engineering is achieving sucess through planning, hard work, respect, and paying attention.
- To do well in SE 262, read the relevant textbook portions before each lecture.
- Take notes and ask questions during each lecture.
- Review the lecture slides after each lecture.
Introduction to Software
- Software is a computer program accompanied by documentation and data configuration used in many systems
- Examples of software include mobile apps, autopilot software, embedded software and medical software.
- Software comes in generic and customized forms.
- Generic types are created for any customer.
- Google Chrome and Microsoft Office are generic examples.
- The software developer typically owns what the software should do and makes decisions on changes.
- Custom software is designed for a specific customer.
- Embedded software for Tesla full self-driving is a customized example.
- The customer owns the software specifications and decides on changes.
- Software costs are often higher than computer hardware costs, particularly maintenance.
- Software maintenance costs for long-life systems may be several times the initial development cost.
Importance of Software Engineering
- Many software projects fail due to increasing demand for complex systems and failure to use software engineering methods.
- Individuals and society rely on complex, reliable, trustworthy, economical, and fast software.
- Using software engineering techniques to create software is cheaper in the long run.
- For most systems, the majority of costs are due to changes to the the software requirements after it has already been created.
- Project failures can be attributed to poor requirements definition(50%), inadequate risk management(17%), scope definition(15%) and communication problems(14%) and lack of qualified resources(3%).
- The systematic approach in defining a software project is known as software engineering.
Software Engineering Defined
- Software engineering is an engineering discipline concerned with the theories, methods, and tools for professional and cost-effective software development.
- It manages various aspects of software production from initial specification to user maintenance including project management and tool development.
- A systematic approach concerned with all facets of software production, including specification, development, validation, and evolution
- A software process can be defined with four stages; specification, development, validation and evolution.
- Good software solves problems and makes tasks easier.
Essential Attributes of Good Software
- Functionality: Good software delivers the functionality required to solve problems or make tasks easier.
- Performance: Good software avoids the wasteful use of system resources such as memory and processor cycles.
- Maintainability: Good software evolves to meet the changing needs of customers or business environments.
- Dependability: Good software should not cause physical or economic damage in the event of system failure.
- Acceptability: Good software is understandable, usable, and compatible with other systems.
Software Engineering vs Computer Science
- Computer science concentrates on theory and fundamentals.
- Software Engineering deals with realizing practical applications to meet customers or business needs.
Software Types
- Stand-alone applications run on a local computer and include all necessary functionality without needing a network.
- Interactive applications execute on a remote computer and are accessed by users via their own PCs or terminals.
- Embedded control systems are software systems that control and manage hardware devices.
- Data collection systems gather environmental data using sensors and transmit it to other systems for processing.
- Batch processing systems are the systems designed to process data in large batches.
- Entertainment systems are primarily personal software intended to entertain the user.
- Modeling and simulation systems are developed by scientists and engineers to model physical processes.
- Systems of systems comprise of a number of software systems.
Software Engineering Diversity and Fundamentals
- There is not a universal set of methods and tools for software engineering applicable to all systems; it depends on the software type, the requirements of the customer and the team's background.
- All systems should be developed using managed and understood development processes.
- Dependability and performance are important for all types of systems.
- It is important to understand and manage the software requirements specification (SRS).
- Reuse any software that has already been developed rather than writing new software where appropriate.
Software Engineering and the Web
- The web has become a platform for running applications.
- Web services facilitate application functionality access over the web.
- Cloud computing provides computer services where users pay according to their usage.
General Issues Affecting Most Software
- Today, software often needs to work across many types of devices, like computers and smartphones, that are connected through networks.
- Businesses and societies are changing quickly due to new technologies and the growth of developing countries; software must adapt.
- It is important that all software is safe and reliable.
Software Engineering Ethics
- Software engineers must behave in an honest and ethically responsible way.
- Ethical behavior includes following a set of principles that are morally correct and upholds the law.
Issues of Professional Responsibility
- Confidentiality: Respect the confidentiality of employers or clients, with or without a formal agreement.
- Intellectual property rights include the use of patents and copyrights while ensuring the the intellectual property of employers and clients is protected.
- Competence should never be misrepresented and you should not knowingly accept work which is outside the developers comopetence .
- Computer misuse is anything from computer misuse ranges from relatively trivial (game playing on an employer's machine, say) to extremely serious (dissemination of viruses).
Key Takeaways
- Software engineering is an engineering discipline concerned with aspects of software production.
- Important software product attributes are functionality, performance, maintainability, dependability, and acceptability.
- Fundamental principles and ideas of software engineering are universally applicable to all types of development.
- There are various types of software and each require different software engineering toolsets for development.
Chapter 2 Topics - Software Processes
- Software process activities
- Software process models
- Coping with change
Definition of Software Process
- A set of activities which are needed to develop a software system using software, processes, activites and models.
- A model is a simplified representation of software process activities.
Software Process Description
- Products are the outcome of a software process activity.
- Roles define who is responsible of a software process activity.
- The statements for pre- and post-conditions define if conditions are true before and after a process
Agile and Plan Driven Processes
- Plan driven processes are activities that are planned in advance and progress is measured through the plan.
- Agile processes are incremented so it is easier to reflect changing customer demands.
- Most processes include both agile and plan driven processes in practical applications.
- There are no right or wrong processes.
Software Process Examples
- The waterfall model is an example of processes that are planned, with specification and development in seperate phases.
- The water fall model is most often used for large projects.
- Inflexible project partitioning makes adapting to changing requirements difficult.
- Waterfall models are appropriate when requirements are well understood and changes will be limited during design.
- Incremental development defines development and validation as interleaved.
- Reuse-oriented software engineering integrates existing components or commercial systems.
Incremental Development
- Reduced costs and the amount of redone documentation.
- Easy to get customer feedback for incremental changes.
- Rapid product delivery to the customer is possible, faster than the waterfall method.
- It may not be visible, managers would need deliverables to measure the progress.
- System structure may degrade as new increments are added.
- May be difficult to manage in conjunction with current software.
Reuse-Oriented Software Engineering
- Based on reuse across multiple systems from existing components.
- Key stages include requirements, software evaluation, refinement, configuration and finally integration.
- Reduced costs, faster delivery and reduced risks are achieved.
- There is a loss of control as requirements must meet the current standards.
Software Process Activities
- Software specification defines what the software will be and constraints on its operation.
- Software development defines designed and programmed software.
- Software valiation defines the process which checks the software meets customer requirements.
- Software evolution reflects changes to cater to customers and market requirements.
- Software Specification requires the process of the sub-activity requirement engineering, lead by an Engineer.
- Requirements are gathered and validated from the customers system by a Requirements Engineer.
- A Software Engineer's Architectural design and Interface design is used in combination with different Design outputs such Specifications to make the final software.
- Validation and Verification is achieved through system testing of the system and its components; including unit, system and acceptance testing; using either agile or planned processes
- When making changes, it is important to be as flexible as possible when defining requirements so it does not evolve into chaos
Change Models
There are two change models
- Change avoidance, planning activites with prototype to address changes and future requirements
- Change tolerance, where a incremental based approach can manage lower costs when making changes
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.