0% found this document useful (0 votes)
15 views3 pages

Understanding Software Engineering Essentials

Uploaded by

ricpogi008
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
15 views3 pages

Understanding Software Engineering Essentials

Uploaded by

ricpogi008
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

Software – Computer programs and associated documentation.

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

 DIFFERENCE BETWEEN CS AND SOFTWARE ENGINEERING

Computer Science - focuses on theory and fundamentals

Software Engineering - concerned with the practicalities f developing and delivering useful software.

 DIFFERENCE BETWEEN SOFTWARE ENGINEERING AND SYSTEM ENGINEERING

System Engineering – System engineering is concerned with all aspects of computer-based systems development
including Hardware, Software and Process engineering.

Software Engineering - is part of this more general process.

Generic Products - Stand-alone systems that are marketed and sold to any customer who wishes to buy them.

Customized Products – Software that is commissioned by a specific customer to meet their own needs.

 ESSENTIAL ATTRIBUTES OF GOOD SOFTWARE

MAINTAINABILITY- Software should be written in such a way so that it can evolve to meet the changing needs of
customers.

EFFICIENCY - Software should not make wasteful use of system resources such as memory and processor cycles.

DEPENDABILITY AND SECURITY- Software dependability includes a range of characteristics Including reliability,
security and safety.

ACCEPTABILITY - Software must be acceptable o the type of users for which it is designed.

 SOFTWARE PROCESS ACTIVITIES

Software SPECIFICATION - where customers and engineers define The software that is to be produced and the
constraints on its Operation.

Software DEVELOPMENT - where the software is designed and Programmed.

Software VALIDATION - where the software is checked to ensure That it is what the customer requires.

Software EVOLUTION - where the software is modified to reflect Changing customer and market requirements.

 GENERAL ISSUES THAT AFFECT SOFTWARE

HETEROGENEITY - Increasingly, systems are required to operate

BUSINESS AND SOCIAL CHANGE – changing incredibly quickly as emerging economies develop

SECURITY AND TRUST - As software is intertwined with all aspects of our lives,

SCALE - Software has to be developed across a very wide range of scales,

 APPLICATION TYPES

Stand-alone applications - These are application systems that run on a local computer

Interactive transaction-based applications - Applications that execute on a remote computer

Embedded control systems - These are software control systems that control

Batch processing systems - These are business systems that are designed to process data

Entertainment systems - These are systems that are primarily for personal use
Systems for modeling and simulation - These are systems that are developed by scientists and engineers

Data collection systems - These are systems that collect data from their environment using a set of sensors

Systems of systems - These are systems that are composed of a number of other software systems.

The Web - is now a platform for running application and Organizations are increasingly developing web-based
systems Rather than local systems.

Web services - allow application Functionality to be accessed over the web.

Cloud computing - is an approach to the provision of computer services where applications run remotely on the
‘cloud’.

 WEB SOFTWARE ENGINEERING

Software reuse - Software reuse is the dominant approach for constructing web-based systems.

Incremental and agile development - Web-based systems should be developed and delivered incrementally

Service-oriented systems - Software may be implemented using service-oriented software

Rich interfaces - Interface development technologies such as AJAX and HTML5

 ISSUES OF PROFESSIONAL RESPONSIBILITY

Confidentiality - Engineers should normally respect the confidentiality of their Employers or clients

Competence - Engineers should not misrepresent their level of competence.

Intellectual property rights - Engineers should be aware of local laws governing the use of

intellectual property such as patents

 PREAMBLE - The short version of the code summarizes aspirations at a high level of the abstraction; The
clauses that are included in the full version give examples and details of how these Aspirations change the
way we act as software engineering professionals
 ETHICAL PRINCIPLES

PUBLIC - Software engineers shall act consistently with the public interest.

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.

PRODUCT - Software engineers shall ensure that their products and related modifications meet the highest
professional standards possible.

JUDGMENT - Software engineers shall maintain integrity and independence in their professional judgment.

MANAGEMENT - Software engineering managers and leaders shall subscribe to and promote an ethical approach to
the management of software development and maintenance.

PROFESSION - Software engineers shall advance the integrity and reputation of the profession consistent with the
public interest.

COLLEAGUES - Software engineers shall be fair to and supportive of their colleagues.

SELF - Software engineers shall participate in lifelong learning regarding the practice
Software Process Model - is an abstract representation of a process.

 MANY DIFFERENT SOFTWARE PROCESSES BUT ALL INVOLVE:

Specification – defining what the system should do;

Design and implementation – defining the organization of the system and implementing the system;

Validation – checking that it does what the customer wants;

Evolution – changing the system in response to changing customer needs.

Plan-driven processes - are processes where all of the process activities are planned in advance and progress is
measured against this plan.

Agile Processes - planning is incremental and it is easier to Change the process to reflect changing customer
requirements.

 SOFTWARE PROCESS MODEL

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.

Integration and Configuration - The system is assembled from existing configurable components.

Common questions

Powered by AI

Software process models provide structured frameworks for planning and executing software development projects, guiding teams through specification, design, implementation, validation, and evolution. Different models have distinct impacts on project management and delivery. Plan-driven models like the Waterfall Model emphasize sequential phase completions, aiding in detailed upfront project planning but making them less adaptable to changes. Agile models promote flexibility through iterative development and incremental planning, allowing changes to be readily accommodated and improving responsiveness to customer feedback. The choice of model affects how teams organize tasks, manage timelines, and handle risks, impacting overall project efficiency and client satisfaction .

Implementing service-oriented systems requires careful attention to scalability and reliability. Scalability is achieved by designing services that can handle increased load without performance degradation, often through stateless service architecture and load balancing to distribute requests efficiently. Reliability involves ensuring that services are robust, with error handling and fallback mechanisms to manage failure gracefully. This can include implementing redundancy and failover strategies to maintain service availability, utilizing reliable messaging protocols, and employing monitoring tools to preemptively identify and resolve issues. These considerations are crucial in ensuring that the system can support varying demands and maintain consistent operational performance .

Software reuse in web engineering is pivotal for enhancing both evolution and efficiency of web-based systems. By reusing existing components, developers can save time and resources, focusing on new functionalities or tailoring existing solutions to specific needs. This not only speeds up the development process but also aids in maintaining consistency and reliability across different systems. Additionally, reuse facilitates the evolution of web applications by allowing easy updates and integration of new features into existing systems, ensuring that applications can adapt swiftly to changing requirements and technologies .

The essential attributes of good software—maintainability, efficiency, dependability, and acceptability—directly impact various stages of the software development lifecycle. Maintainability requires that the software be designed and documented in a way that allows it to be easily updated to meet changing requirements. This affects the design, coding, and testing stages, where modular design and clear documentation become priorities. Efficiency, which involves optimizing resource usage, impacts the development and optimization stages, pushing developers to write code that performs well under expected workloads. Dependability is crucial in testing and validation to ensure reliability, security, and safety, while acceptability affects the requirements gathering and design phases, ensuring that the software aligns well with user expectations and needs .

Increasing software heterogeneity, which entails integrating various languages, platforms, and components, challenges developers in creating robust and secure systems. This heterogeneity complicates integration efforts, elevates the risk of introducing vulnerabilities, and requires diverse skill sets among teams. While it enables the creation of more feature-rich and adaptable systems, it demands rigorous testing across diverse environments and careful architectural planning to maintain system integrity. Addressing security within this context becomes complex, necessitating comprehensive strategies that incorporate multi-layered security controls across system interactions to safeguard data and operations .

Computer Science focuses on theory and fundamentals, emphasizing algorithms, computational complexity, and theoretical underpinnings of computing. Software Engineering, on the other hand, is concerned with the practical aspects of developing and delivering useful software, such as requirements gathering, system design, testing, and maintenance. These differences influence their approaches to software development by making Computer Science more research and development-oriented, focusing on creating algorithms and models. In contrast, Software Engineering adopts a more systematic and disciplined approach, addressing real-world problems by integrating project management and quality processes to ensure that the software meets user needs and is maintainable, efficient, and secure .

The ethical principles in software engineering, such as public interest, client and employer interests, product standards, professional judgment, management ethics, maintenance of the profession's integrity, and lifelong learning, are foundational to professional responsibility. They require engineers to act with integrity, ensuring that actions and decisions align with the broader societal good, adapt to changing technologies, and uphold standards that protect user welfare and data privacy. They shape decision-making by setting boundaries on actions, prompting engineers to seek solutions that balance varying stakeholder interests, ensure product quality, and protect intellectual properties, thereby maintaining trust and credibility in the profession .

The roles of a Software Engineer and a System Engineer in computer-based systems development both involve ensuring the effective delivery of technical solutions, but they focus on different scopes. A Software Engineer concentrates on developing software within a project, focusing on programming, testing, and maintaining software applications. A System Engineer takes a broader view, managing the entire lifecycle of complex systems, integrating hardware, software, and process engineering. Responsibilities overlap in areas like requirements gathering and validation, but diverge as Software Engineers focus on software-specific aspects while System Engineers ensure all components work harmoniously within the system, including non-software elements .

Interactive transaction-based applications are critical in modern computing, facilitating real-time processing of transactions such as purchases or database queries. They are essential in e-commerce, online banking, and enterprise environments, providing quick and reliable data interactions. With advancements in distributed computing and network technology, these applications have the potential to further evolve, potentially integrating AI for enhanced user experiences or decentralized technologies like blockchain for increased security. Future development may focus on improving processing efficiency and integrating with IoT devices to enhance data collection and user interaction .

Cloud computing has revolutionized software development and deployment by enabling on-demand resources, allowing for scalable and flexible infrastructure without upfront hardware costs. It supports continuous integration and delivery, facilitating rapid deployment cycles and collaborative development. However, challenges include complex dependency management, where varied cloud services must be coordinated; security concerns, particularly around data privacy and loss; and cost management, as unregulated cloud utilization can lead to unexpectedly high expenses. Developers must navigate these through careful planning and monitoring, ensuring that cloud solutions are optimized for both functionality and cost-effectiveness .

You might also like