Comprehensive Guide to Modern Software Development Practices

Ranuga Disansa
6 min readMay 14, 2024

Overview

  • Introduction to SDP
  • Ethical, legal, and social issues
  • Design Patterns
  • Architectural Frameworks
  • Application Architectures
  • Design Decisions
  • Agile Software Development
  • Technical and Socio-technical systems
  • Requirements engineering
  • Software Security
  • Software testing
  • Component-based software engineering
  • Software reuse
  • Quality management
  • Process improvement
  • Programming languages
  • Frameworks
  • Tools for: Testing, management, deployment, artifacts
  • Emerging trends

Importance of Software

  • Huge impact on any aspect of society
  • Where can we find software?
  • Air ticket booking?
  • Google
  • Facebook
  • Almost everywhere

Introduction to Software Development Practices

  • The economies of ALL developed nations are dependent on software
  • More and more systems are using software
  • Software engineering has: theories, methods, and tools for professional software development
  • Expenditure on software represents a significant fraction of GNP in all developed countries
  • Gross National Product (GNP) is the total value of all finished goods and services produced by a country’s citizens in a given financial year, irrespective of their location

Common Issues of Software

  • final software doesn’t fulfill the needs of the customer
  • Hard to extend and improve
  • Bad documentation
  • Bad quality
  • More time and costs than expected

Cross-section of Software Projects

  • 53%: Over Budget 💸
  • 31%: Failure 〽️
  • 16%: Success ✅

Software costs

  • Software often dominates computer system costs
  • Often greater than the hardware costs
  • It costs more to maintain than it does to develop
  • Good software development practices are concerned with cost-effective software

Software Crisis

  • Schedule and cost estimates are grossly inaccurate
  • Not have the required quality
  • Difficulty in maintenance
  • The productivity of software people is not satisfactory
  • Software bugs and malfunctions
  • The answer to the above problem is “Software engineering.”

Software Products

Generic Products

  • Stand-alone systems sold to any customer
  • Owned by the software developer and decisions on software change are made by the developer
  • Examples: Graphic programs, CAD software

Customized Products

  • Commissioned by a specific customer to meet their own needs
  • specification of what the software should do is owned by the customer for the software and they make decisions on the software
  • Examples: embedded control systems, traffic monitoring systems

Software

  • Computer software or just software, is a collection of computer programs, Data provides the instructions for telling a computer what to do
  • Refers to one or more computer programs
  • Software is a set of programs, procedures, algorithms, and documentation

What is Software?

  • Computer Program (Instructions) and Associated documents (data)

Definition for Software Engineering

  • Use of Systematic and scientific techniques in every stage of software
  • Use good project management techniques with appropriate CASE tools
  • A CASE tool is a product that helps to analyze, model, and document business processes
  • Types of software that use SDP
  • System software (OS, compilers, interpreters, etc.)
  • Application software (Excel, word, google, search engine)

Attributes of Good Software

  • Maintainability
  • By prioritizing maintainability as a fundamental attribute, software development teams can create systems that are resilient to change, adaptable to evolving requirements, and sustainable in the long run. Investing in maintainability upfront leads to reduced maintenance costs, faster time-to-market for new features, and improved overall quality and reliability of the software product.
  • Dependability and security
  • Good software should prioritize both dependability and security throughout its development lifecycle, from design and implementation to testing and maintenance. This involves incorporating best practices, following security protocols, regular updates, and addressing vulnerabilities promptly to maintain trust and reliability among users.
  • Efficiency
  • In summary, efficiency is a fundamental attribute of good software that encompasses performance, resource utilization, scalability, cost-effectiveness, reliability, optimized algorithms, effective caching, and optimization across different layers of the software stack. Prioritizing efficiency during the design, development, and optimization phases is essential for delivering high-quality software that meets user expectations and business requirements.
  • Acceptability
  • In summary, the attribute of acceptability is crucial for ensuring that software meets users’ needs, drives user satisfaction, fosters adoption, and ultimately contributes to the success of both the software itself and the businesses or organizations that rely on it.

Software Engineering

  • Engineering is a discipline that is concerned with all aspects of software production, from the early stages of the system Through to maintaining the system
  • Engineering discipline
  • Using theories and methods to solve problems while taking into account organizational and financial constraints
  • All aspects of software production
  • Not just technical, but also management and development of tools to support software production

Software Components

Documentation

Analysis and Specification

  • Documentation in the analysis and specification phase includes a range of documents that capture requirements, specifications, and other essential information needed to guide the development process

Design

  • Overall, thorough documentation in the design phase is essential for facilitating communication among stakeholders, guiding development efforts, ensuring consistency and quality, and supporting future maintenance and enhancements of the software.

Implementation

  • Overall, documentation during the implementation phase serves to provide guidance, context, and reference materials for developers, users, and other stakeholders involved in the software development process. It facilitates understanding, collaboration, and the successful deployment and usage of the software product.

Testing

  • In summary, documentation in testing is essential for planning, executing, and reporting on testing activities, as well as for ensuring clear communication among stakeholders and maintaining the quality of the software under test.

Operation Procedures

User Manuals

  • By providing comprehensive operation procedures, user manuals empower users to effectively utilize the product or software, troubleshoot issues, and maintain it for optimal performance, ultimately enhancing the user experience.

Operational Manuals

  • Overall, operation procedures in operational manuals serve as a valuable resource for employees, providing clear guidance on how to perform tasks safely, efficiently, and in compliance with organizational standards and requirements.

Software Process Activities

  • Software specification: define the software that is to be produced and the constraints on its operation
  • Software development: software is designed and programmed
  • Software validation: software is checked to ensure that it is what the customer requires
  • Software evolution: software is modified to reflect changing customer and market requirements

Software Product

  • Products designated for delivery to the user
  • Such as:
  • Source Codes
  • Reports
  • Documents
  • Plans
  • Data
  • Test results
  • Prototypes

Software engineering diversity

  • There are many different types of software systems there is no universal set of software techniques applicable to all
  • Software engineering methods and tools used depend on the type of application, requirements, and background of the development team

Nature of Software

System Software

  • System software is a type of computer program that is designed to run a computer’s hardware and application programs

Real-time Software

  • A real-time operating system is an operating system for real-time computing applications that processes data and events that have critically defined time constraints

Embedded Software

  • Embedded software applications are specialized programming within non-PC devices

Business Software

  • Business software (or a business application) is any software or set of computer programs used by business users to perform various business functions

Artificial Intelligence Software

  • Artificial intelligence is the simulation of human intelligence processes by machines, especially computer systems

Web-based Software

  • software that runs on a server (computer connected to the Internet), while users connect to it from their computers using an Internet browser.

Engineering and Scientific Software

  • Scientific and engineering software satisfies the needs of a scientific or engineering user to perform enterprise-specific tasks

Application types

Stand-alone applications

  • Systems that run on a local computer
  • Necessary functionality and do not need to be connected to a network

Interactive transaction-based applications

  • Execute on a remote computer
  • Accessed by users from their own PCs
  • Web applications, such as e-commerce applications

Embedded Control Systems

  • Control and manage hardware devices

Batch processing systems

  • Business systems designed to process data in large batches
  • Large number of inputs to create outputs

Entertainment systems

  • Primarily for personal use, intended to entertain the user

Systems for modeling and simulation

  • Developed by scientists
  • Model physical processes
  • Interacting objects

Data collection systems

  • Collect data from their environment set of sensors and send data to other systems

Systems of systems

  • Systems composed of other software systems

Change in Nature of Software

  • trend has emerged to provide source code to customers and organizations
  • Software where source code is available is called open-source software
  • Examples:
  • LINUX, MySQL, PHP, Open Office, and Apache Webserver
  • Could be customized and evolve rapidly where centralized management is required to monitor

Software engineering fundamentals

  • Fundamental principles for all types of software systems:
  • Developed using a managed and understood development process
  • Dependability and performance are important
  • Understanding and managing the software specification is important
  • Reuse software that has already been developed

Basic Stages of Software Process

  • Requirement analysis
  • Software Design
  • Implementation
  • Testing
  • Maintenance

SDP & The Web

  • Web is now a platform for running application
  • Organizations are increasingly developing web-based systems
  • Allow application functionality to be accessed over the web
  • The cloud computing approach allows applications to run remotely on the cloud

Web Software Engineering

  • Web-based systems are complex, distributed systems
  • Fundamental principles discussed previously are also applicable

Aspects of Web

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

--

--