Unit:1 Introduction ( Software Development Third Year First Parts in IT Engineering )
1.1 Introduce the Software Engineering and its importance.
Software engineering has two parts: software and
engineering.
Software
Software is a collection of codes, documents, and triggers that does a specific job and fills a specific requirement.
Engineering
Engineering is the development of products using best practices, principles, and methods.
What is software engineering?
It is a branch of engineering that deals with the development of software products. It operates within a set of principles, best practices, and methods that have been carefully honed throughout the years, changing as software and technology change.
Software engineering leads to a product that is reliable, efficient, and effective at what it does. While software engineering can lead to products that do not do this, the product will almost always go back into the production stage.
Or
The term software
engineering is the product of two words, software, and engineering.
The software is
a collection of integrated programs.
Software subsists of carefully-organized instructions and
code written by developers on any of various particular computer languages.
Computer programs and related documentation such as
requirements, design models and user manuals.
Engineering is the application of scientific and practical knowledge to invent, design, build, maintain, and improve frameworks, processes, etc.
Software Engineering
Software Engineering is an engineering branch related to the evolution of software product using
well-defined scientific principles, techniques, and procedures. The result of
software engineering is an effective and reliable software product.
Why is Software Engineering required?
Software Engineering is required due to the following reasons:
Need of Software Engineering
The necessity of software engineering appears because of a higher rate of progress in user requirements and the environment on which the program is working.
oHuge Programming:It is simpler to manufacture a wall than to a house or building, similarly, as the measure of programming become extensive engineering has to step to give it a scientific process.
oAdaptability:If the software procedure were not based on scientific and engineering ideas, it would be simpler to re-create new software than to scale an existing one.
oCost:As the hardware industry has demonstrated its skills and huge manufacturing has let down the cost of computer and electronic hardware. But the cost of programming remains high if the proper process is not adapted.
oDynamic Nature:The continually growing and adapting nature of programming hugely depends upon the environment in which the client works. If the quality of the software is continually changing, new upgrades need to be done in the existing one.
oQuality Management:Better procedure of software development provides a better and quality software product.
Importance of Software Engineering
Program vs Software Product:
1.A program is a set of instructions that are given to a computer in order to achieve a specific task whereas software is when a program is made available for commercial business and is properly documented along with its licensing. Software=Program+documentation+licensing.
2.A program is one of the stages involved in the development of the software, whereas a software development usually follows a
life cycle, which involves the feasibility study of the project, requirement gathering, development of a prototype, system design, coding, and testing.
Characteristics of software
Intangibility: Software is intangible, meaning it cannot be touched
or physically sensed. It exists as a collection of instructions, data, and
documentation.
Abstraction: Software is built on layers of abstraction, allowing
developers to focus on high-level concepts without worrying about the
underlying details. This abstraction helps manage complexity and makes software
easier to understand and maintain.
Flexibility: Software can be easily modified or updated to
accommodate changing requirements or to fix issues. It is highly flexible and
can be adapted to various scenarios without requiring extensive physical
changes.
Reproducibility: Software can be replicated effortlessly. Once developed,
it can be copied and distributed across multiple machines, enabling widespread
use and availability.
Scalability: Software can be designed to handle varying workloads
and accommodate increasing demands. It can be scaled up to support more users,
data, or transactions without major physical modifications.
Modularity: Software can be organized into modules or components
that can be developed and tested independently. This modularity promotes
reusability, maintainability, and ease of collaboration among developers.
Complexity: Software can be intricate and involve numerous
interdependencies. It often requires careful design and planning to manage the
complexity effectively.
Evolving: Software is not static; it undergoes continuous
evolution. Updates, bug fixes, and feature enhancements are common to address
changing user needs, improve functionality, or address security concerns.
Interoperability: Software can communicate and interact with other
software systems or components, allowing for integration and interoperability
between different technologies.
Portability: Software can be designed to run on various hardware
platforms or operating systems. It can be developed once and deployed on
multiple environments with minimal modifications.
Maintainability:
Software should be designed and documented in a way that facilitates easy
maintenance and future enhancements.
This involves using clean coding
practices, providing clear documentation, and following established software
engineering principles.
These characteristics collectively contribute to the uniqueness and versatility of software in the modern digital world.
Software applications:
Software finds applications in
various domains and industries. Here are some different applications of
software:
Operating Systems:
Software is used to develop operating systems (e.g., Windows, macOS, Linux) that manage computer hardware and provide a platform for other software applications to run.
Business Applications:
Software is
extensively used for developing applications that support business operations,
such as enterprise resource planning (ERP) systems, customer relationship
management (CRM) software, project management tools, and accounting software.
Web Development:
Software is employed to create websites and web
applications using programming languages like HTML, CSS, JavaScript, and
frameworks like Django, Ruby on Rails, or WordPress.
Mobile Applications:
Software is used
to develop mobile applications for smartphones and tablets. Platforms like iOS
(using Swift or Objective-C) and Android (using Java or Kotlin) enable
developers to create mobile apps for various purposes, such as gaming, social
media, productivity, and e-commerce.
Embedded Systems:
Software plays a
crucial role in embedded systems, which are dedicated computer systems within
larger devices or machinery. These systems control and monitor the functioning
of devices like cars, home appliances, medical equipment, industrial machinery,
and consumer electronics.
Artificial Intelligence and Machine Learning:
Software is used to build intelligent systems that can perform
tasks that typically require human intelligence. Applications include natural
language processing, computer vision, recommendation systems, and autonomous
vehicles.
Scientific and Engineering Software:
Software is used in scientific research and engineering fields for modeling,
simulation, data analysis, and visualization. Examples include computational
chemistry software, finite element analysis tools, and data analysis software
like MATLAB or Python libraries like NumPy and SciPy.
Gaming:
Software is utilized in the development of video games,
encompassing areas like game engines, graphics rendering, physics simulations,
and artificial intelligence for game characters.
Healthcare:
Software applications are used in healthcare for
electronic medical records (EMR), medical imaging, clinical decision support
systems, telemedicine, and health monitoring devices.
Education:
Software is employed in educational institutions for
e-learning platforms, learning management systems, educational games, and
interactive educational content.
Financial Systems:
Software is used for banking applications,
trading platforms, financial analysis, risk management, and transaction
processing systems.
Communication and Networking:
Software underlies communication
technologies like email clients, web browsers, instant messaging applications,
video conferencing tools, and network protocols for data transmission.
These are just a few examples, and software applications
continue to expand into new domains as technology advances.
Deliverables and milestones
Deliverables are tangible or intangible
outcomes, results, or outputs that are expected to be produced or provided as
part of a project, contract, or agreement. They represent the final or interim
products, services, or documents that are delivered to the client,
stakeholders, or customers to fulfill specific requirements and meet the
objectives of the project or agreement.
Deliverables can take various forms
depending on the nature of the project or agreement. They can include physical
products, such as hardware or equipment, software applications or systems,
reports, studies, research findings, design documents, prototypes, training
materials, user manuals, website development, marketing materials, or any other
tangible items or completed tasks that are specified in the project scope.
A milestone is a significant event or
achievement that marks a specific point in a project, process, or journey. It
represents a key turning point or a notable stage of progress towards a goal.
Milestones are often used as markers to measure and track the advancement of a
project, providing a sense of accomplishment and indicating important stages of
completion.
In project management, milestones serve as reference points for project managers, team members, and stakeholders to assess the project's progress, identify key deliverables, and ensure that the project stays on track. They help establish a timeline, set deadlines, and allow for effective monitoring and control of project activities.
Product and Process
• Product
is the final production phase in the project.
• Process
refers to a set of sequence of steps that should be followed with the goal of
creating a project.
• Product
focuses on the final result.
• Process
focuses on completing every step involved in the project that is being
developed.
Software Processes
The term software
specifies to the set of computer programs, procedures and associated documents
(Flowcharts, manuals, etc.) that describe the program and how they are to be
used.
A software process is the set of activities and associated outcome that produce a software product. Software engineers mostly carry out these activities. These are four key process activities, which are common to all software processes. These activities are:
1.Software specifications:The functionality of the software and constraints on its operation must be defined.
2.Software development:The software to meet the requirement must be produced.
3.Software validation:The software must be validated to ensure that it does what the customer wants.
4.Software evolution:The software must evolve to meet changing client needs.
Product metrics
Product metrics are software product measures at any stage of their development, from requirements to established systems.Product metrics are related to software features only.
Product metrics fall into two classes:
1.Dynamic metrics that are collected by measurements made from a program in execution.
2.Static metrics that are collected by measurements made from system representations such as design, programs, or documentation.
Dynamic metrics help in assessing the efficiency and reliability of a program while static metrics help in understanding and maintaining the complexity of a software system.
Generic and customized software
Generic software: is a ready-to-use solution that may be customized to fit the needs of a wide range of customers.
Custom software: is a one-of-a-kind design created to fit a single client's unique requirements, depending on their budget and specifications.
Roles of management in software development
Software project management is an art and discipline of
planning and supervising software projects. It is a sub-discipline of software
project management in which software projects planned, implemented, monitored
and controlled.
It is a procedure of managing, allocating and timing
resources to develop computer software that fulfills requirements.
In software Project Management, the client and the
developers need to know the length, period and cost of the project.
There are three needs for software project management. These are:
1.Time
2.Cost
3.Quality
In software development,
management plays several important roles to ensure the successful execution of
projects and the efficient utilization of resources. Here are some key roles of
management in software development:
Project Planning and Coordination:Management is responsible for planning and coordinating software development projects.
Team Management:Management oversees the software development team, including hiring and
allocating resources, defining roles and responsibilities, and fostering a
collaborative and productive work environment.
Risk Management:Management identifies potential risks and develops strategies to mitigate them. This includes assessing technical, operational, and external risks that may impact the project's success.
Budgeting and Resource Allocation:Management is responsible for budgeting software development projects, allocating resources, and tracking expenditures.
Stakeholder Communication:Management serves as a bridge between the software development team and stakeholders, such as clients, executives, and end-users.
Quality Assurance:Management is involved in ensuring the quality of software products. They establish quality standards, define testing methodologies, and oversee quality assurance processes to identify and resolve defects and bugs.
Performance Evaluation:Management assesses the performance of the software development team and individuals through regular evaluations.
Continuous Improvement:Management promotes a culture of continuous improvement within the software development team.
These roles collectively help management ensure that software development projects are executed efficiently, meet quality standards, and deliver value to stakeholders while effectively managing resources, risks, and timelines.
The Management Spectrum | 4 P’s in Software Project Planning
There are 4 critical components in software project planning which are known as the 4P’s namely:
•Product
•Process
•People
•Project
These
components play a very important role in your project that can help your team
meet its goals and objective. Now, Let’s dive into each of them a little in
detail to get a better understanding:
•People
The most important component of a product and its successful implementation is human resources. In building a proper product, a well-managed team with clear-cut roles defined for each person/team will lead to the success of the product. We need to have a good team in order to save our time, cost, and effort. Some assigned roles in software project planning are project manager, team leaders, stakeholders, analysts, and other IT professionals. Managing people successfully is a tricky process which a good project manager can do.
•Product
As the name inferred, this is the deliverable or the result of the project. The project manager should clearly define the product scope to ensure a successful result, control the team members, as well technical hurdles that he or she may encounter during the building of a product. The product can consist of both tangible or intangible such as shifting the company to a new place or getting a new software in a company.
•Process
In every planning, a clearly defined process is the key to the success of any product. It regulates how the team will go about its development in the respective time period. The Process has several steps involved like, documentation phase, implementation phase, deployment phase, and interaction phase.
•Project
The last and final P in software project planning is Project. It can also be considered as a blueprint of process. In this phase, the project manager plays a critical role. They are responsible to guide the team members to achieve the project’s target and objectives, helping & assisting them with issues, checking on cost and budget, and making sure that the project stays on track with the given deadlines.
Introduction to System
A system is a group of two or more related parts that interact over time to form a whole that has a purpose or function. It can be an interrelated set of business procedures used within one business unit, working together for some purpose. A system consists of interacting elements arranged in a manner that produces a unified whole. The different components of a system interrelate, and each contributes to a project’s goals and success.
Information System and its types
An information system is a set of components that collect, process, store, and distribute information to support decision making and control in an organization. The main types of information systems are:
•Transaction Processing System: used to collect, modify and retrieve business transactions on demand.
•Management Information System: used to study the people, technology, organization, and the relationships between them.
•Decision Support System:used to support problem solving and decision making.
•Expert System:used to emulate the knowledge and skills of human experts.
•Office Automation System:used to automate office tasks and improve productivity.
•Knowledge Management System:used to create, store, and share knowledge within an organization.
Role and attributes of system analyst
A systems analyst is an IT
professional who works on a high level in an organization to ensure that
systems, infrastructures and computer systems are functioning as effectively
and efficiently as possible. System analysts carry the responsibilities of
researching problems, finding solutions, recommending courses of actions and
coordinating with stakeholders in order to meet specified requirements. They
study the current system, procedures and business processes of a company and
create action plans based on the requirements set.
Systems analysts need to be familiar with different
operating systems, hardware configurations, programming languages, and software
and hardware platforms. They can be involved starting from the analysis phase
of the project until the post deployment assessment review.
The job’s responsibilities are as follows:
•Communicate with customers and stakeholders to learn and document requirements in order to create a technical specification
•Interact and coordinate with developers and implementers
•Help perform system testing
•Deploy the system
•Help with technical documentation like manuals
• Deliberate over post-project assessment
Tools Used by System Analyst
System analysts use various tools to facilitate their work throughout the analysis, design, and implementation phases of a project. These tools help them gather requirements, model systems, communicate with stakeholders, and manage project-related tasks. Here are some common tools used by system analysts:
Requirements Gathering Tools:
Interviews and Surveys: Although
not software tools, interviews and surveys are fundamental techniques for
gathering requirements.
Requirement Management Software:
Tools like Jira, Trello, or ReqView help manage and track requirements
throughout the project lifecycle.
Prototyping Tools: Prototyping
tools like Axure RP, Balsamiq, or Sketch allow system analysts to create
interactive prototypes to gather feedback and validate requirements.
Modeling Tools:
Unified Modeling Language (UML) Tools:
Software like Microsoft Visio, Lucidchart, or Enterprise Architect
supports UML diagrams such as use case diagrams, class diagrams, sequence
diagrams, and more.
Data Modeling Tools:
Tools like
ER/Studio, Lucidchart, or IBM InfoSphere Data Architect assist in creating and
managing data models, including entity-relationship diagrams (ERD).
Documentation Tools:
Word Processors: Microsoft Word,
Google Docs, or LaTeX are commonly used for creating documentation such as
requirement specifications, design documents, and user manuals.
Collaboration Platforms: Tools
like Confluence or SharePoint facilitate collaborative documentation creation
and version control.
Project Management Tools:
Project Management Software:
Tools such as Microsoft Project, Asana, or Monday.com help system analysts
plan, schedule, and track project tasks, milestones, and resources.
Issue Tracking Systems: Jira,
Redmine, or Bugzilla assist in tracking and managing project issues, defects,
and change requests.
Communication and Collaboration Tools:
Video Conferencing Tools:
Platforms like Zoom, Microsoft Teams, or Google Meet facilitate remote meetings
and collaboration with stakeholders.
Instant Messaging: Tools like
Slack or Microsoft Teams provide real-time communication channels for team
collaboration and quick discussions.
Version Control Systems:
Git: Version control systems like
Git, along with platforms like GitHub or GitLab, help manage changes to project
artifacts, code, and documentation.
Analysis and Design Tools:
Software Development Environments (IDEs): Tools like Visual Studio, Eclipse, or IntelliJ IDEA are used by system analysts for analyzing and designing software systems, especially in cases where they may need to delve into code or review software architecture.
Testing Tools:
Test Management Software: Tools
such as TestRail, QTest, or Zephyr help system analysts plan, execute, and
track testing activities and test cases.
These tools help system analysts
streamline their work processes, collaborate effectively with stakeholders and
project teams, and ensure successful project outcomes.
0 Comments