Podcast
Questions and Answers
When evaluating software quality, which perspective primarily focuses on cost-effectiveness?
When evaluating software quality, which perspective primarily focuses on cost-effectiveness?
- The customer's perspective (correct)
- The developer's perspective
- The user group's perspective
- The software engineer's perspective
What is the primary reason for the shift away from custom-built software towards assembling software from existing components?
What is the primary reason for the shift away from custom-built software towards assembling software from existing components?
- To accelerate development time (correct)
- To limit the use of in-house resources
- To increase the complexity of software systems
- To reduce software reusability
Which of the following is an essential attribute of good software that ensures changes can be implemented quickly without affecting the software's integrity?
Which of the following is an essential attribute of good software that ensures changes can be implemented quickly without affecting the software's integrity?
- Efficiency
- Dependability
- Maintainability (correct)
- Usability
What is the significance of using CASE tools and automated tools in software development?
What is the significance of using CASE tools and automated tools in software development?
In the context of software, what does 'dependability' primarily encompass?
In the context of software, what does 'dependability' primarily encompass?
Which type of software is specifically designed to control the functions of resident products by residing in Read-Only Memory (ROM)?
Which type of software is specifically designed to control the functions of resident products by residing in Read-Only Memory (ROM)?
What is the primary purpose of system software?
What is the primary purpose of system software?
Why is software engineering considered an engineering discipline?
Why is software engineering considered an engineering discipline?
What should software design and architecture emphasize to ensure efficient resource utilization?
What should software design and architecture emphasize to ensure efficient resource utilization?
In software maintenance, what does 'adaptive' primarily refer to?
In software maintenance, what does 'adaptive' primarily refer to?
Flashcards
Software Engineering
Software Engineering
A discipline addressing aspects of software and its development, including economics, design, maintenance, and implementation.
Economic Aspect of Software Engineering
Economic Aspect of Software Engineering
Cost, benefit, and return on investment in software development.
Design Aspect of Software Engineering
Design Aspect of Software Engineering
Ease of development, ensuring customer requirements are met.
Maintainability
Maintainability
Signup and view all the flashcards
Description of Software
Description of Software
Signup and view all the flashcards
Embedded Software
Embedded Software
Signup and view all the flashcards
Artificial Intelligence Software
Artificial Intelligence Software
Signup and view all the flashcards
Measure of Good Software
Measure of Good Software
Signup and view all the flashcards
Business Software
Business Software
Signup and view all the flashcards
Engineering/Scientific Software
Engineering/Scientific Software
Signup and view all the flashcards
Study Notes
- Software Engineering Module One by Professor Oluwole Charles Akinyokun, Department of Computer Science, Federal University of Technology, Akure.
Objectives
- Software engineering (SE) scope and content.
- Good software and the type of software.
- Quality software production through knowledge of domain application.
- Software engineering issue.
- Software engineering methodology.
- System engineering and system development engineering.
- Approaches to Analysis and Design, SSAD and OOSAD.
- Development process models and their application in different environments.
- Analysis of development process models.
- Importance and use of Fourth Generation Techniques (4GT).
Contents
- Introduction to Software.
- Good software.
- Software engineering.
- Component of software engineering.
- Software development models.
- Comparative analysis of process models.
- Summary.
- Key terms.
Introduction
- From the early 60s, software has assumed strategic importance in information technology.
- Software is seen in all disciplines including information management and decision making.
- Software contrasts with hardware as it is not a physical product with specified dimensions or weight. It is an intellectual product emerging from software development methodology.
- Software is a set of instructions designed to perform specific processing on input to produce a result, written to handle an input-process-output system to achieve predetermined goals.
- Software doesn't wear out or degrade like hardware making it immortal, but it may become obsolete or not be useful to users after a period.
- Software sometimes becomes obsolete and needs replacement or radical modification due to changing functional and performance requirements.
- In computing, data storage, communications, networking, and programming languages, software also undergoes a change, resulting in software written in the 60s now being different in specifications.
- Software is a set of instructions to acquire input and manipulate it to produce the desired output, along with the documents for users to understand the software system.
- The context and size of the software varies in different conditions, influenced by programming languages used, system, and application architectures.
- Different teams working on the software development task will come up with different software designs, varying in cost, effort, and time.
- Modern software development has shifted towards assembling software from existing components, using in-house resources and vendor-supplied libraries.
- Early software was written by scientists and engineers for scientific applications, using Machine and Assembly Languages for "number crunching".
- As different programming languages emerged, programming became specialized, with languages ranging from low-level machine and assembly languages to high-end Fourth Generation Languages (4GL).
- Software development involves the use of tools to generate code, extensive use of CASE tools for analysis and design, and use of component technology.
- Using tools is intended to reduce the resources needed to generate the code; using CASE tools and automated tools can drastically reduce the effort and improve programming quality.
- The choice of language affects the size of the software, measured in Line of Code (LoC).
- Programming languages in descending order of LOC/FP are: Assembly (320), C (128), Fortran (105), C++ (56), Java (55), Visual Basic (35), Fourth Generation Language (20), Code Generation (15).
- The trend is to build software components that are independent and non-specific to save development time; these components are assembled to generate domain-specific application software.
Description of Software
- Software is described by its functionality, features, and facilities, with different functions for processing different orders.
- It is developed keeping hardware and operating systems in mind (the platform).
- Hence, software is described along with its capabilities and platform specifications required to run it, and is judged by its quality attributes.
Classes of Software
- Customized products are developed for specific customer needs and requirements, and managed by that customer.
- Generic products are managed by the developer; both types are developed in a similar manner through various life cycle phases.
Good Software
- Software can have many attributes that determine whether it is good or bad, varying with the evaluator (customer, end-users, or software engineers).
- The customer decides based on cost-effectiveness, the user group considers usability and reliability, and the software engineer looks at maintainability and efficiency.
- Essential attributes of good software are maintainability, dependability, efficiency, and usability.
Attributes of Good Software
- Maintainability: The ease of software maintenance is critical to software engineers and users; requirements can be fulfilled effectively if the software design and architecture allow changes in the shortest time.
- Dependability: Dependability is the result of attributes, such as reliability through assured performance, fully verified and validated processes, security, and safety, and is dependable in all conditions.
- Efficiency: Good software uses resources effectively. Software design and architecture should offer a quick response in the least time (using resources at optimum level).
- Usability: Software becomes usable if it does not call for extra effort to be learnt, and usability increases with good communication.
- Measure of good software includes customer satisfaction and cost/budget fulfillment, which depends on the degree to which customer requirements and expectations are met.
System Software
- System software is a collection of programs used to run the system and assist in using other programs; examples include compilers, editors, utilities, and operating system components.
- System software resides in the computer system, consumes its resources, and enables/provides services to software applications, regulating the system's performance.
Business Software
- Software designed to process business application is called business software. Business software can be data and information processing application, and can drive business through transaction processing in online or in real-time mode.
- They include software written for payroll, accounting, inventory, and planning, or Enterprise Resources Planning, Customer Relation Management, and Supply Chain Management.
- Business software can be a generic or customer-specific product.
Engineering and Scientific Software
- Engineering or scientific software deals with processing requirements in their specific fields, written for specific applications using the principles and formulae of each field.
- They service needs, such as drawing, drafting, modeling, load calculations, and specifications; dedicated software can be available for stress analysis or engineering data.
Embedded Software
- Embedded software performs certain functions under control conditions and is embedded into hardware as part of a larger system.
- The software resides in Read-Only Memory (ROM) and is used to control the various functions of the resident's products.
- Because of their role and performance, they are also termed intelligent software.
Artificial Intelligence Software
- Artificial Intelligence (AI) software uses non-numerical algorithms, which use the date and information generated in the system, to solve complex problems.
- Expert systems, knowledge-based systems, image and voice recognition systems are examples of AI software, and may be interactive, sharable, or secure, depending on the user's needs.
- Some software is exclusively designed for the web or is vendor-specific.
Software Engineering
- Software engineering is a discipline that addresses various aspects of the software and its development.
- It includes economic considerations (cost, benefit), design for ease of development and delivery of customer requirements, ease of maintenance, and ease of installation.
- Software is an engineering discipline because it is systematic and uses standards, models, and algorithms in design and development.
The Scope of Software Engineering
- Requirement study and definition for determined software scope.
- Requirement analysis to generate software specifications.
- Software design to deliver various components and specifications.
- Software development integration and testing.
- Implementation
- Maintenance of the Software.
Software Engineering Focus, Application and Consideration (SEFA&C)
- SE focuses on quality and develops processes to deliver quantity, dealing with processes to ensure software delivery through production of requirement analysis models, data models, and information products.
- SE technology is applied for software development through Engineering Methods that include requirement definition, scoping, analysis and modeling, designing the software architecture, program construction, testing, and software implementation.
- SE considers issues like hardware platforms, operating systems, interoperability, performance, scalability, and upgradability.
- SE enforces an engineering discipline to achieve the basic purpose of software through a development methodology.
Software Engineering Activities, Skills, and Challenges
- It includes requirement analysis, scoping, factoring software into components, scheduling, testing, documenting, implementing, and change management.
- Managerial activities include resource, effort, and risk management, as well as development process and project management.
Basic Skills of Software Engineer
- Analysis and modeling.
- Conceptualize a software solution and support it by design.
- Software development skills using tools, techniques and technologies.
- Strategizing skills to evolve development.
- Domain knowledge of the software system.
- Project Management skills.
- Communication skills and leadership qualities.
- Essential Technology and language skills.
Challenges of Software Practitioners
- Integrating new software in legacy systems.
- Ensuring heterogeneous systems work together effectively.
- Handling issues of data immigration, system interfacing.
- Continuously upgrading technology.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.