Software Development Life Cycle & Documentation

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson

Questions and Answers

In software development, what is the primary benefit of adhering to a well-defined software development lifecycle?

  • It eliminates the need for software maintenance.
  • It automates the software development process.
  • It guarantees the software will be delivered under budget.
  • It ensures higher quality programs are efficiently developed. (correct)

Which of the following aspects is commonly found in most software development lifecycle models?

  • User requirement collection and analysis (correct)
  • Mandatory use of specific programming languages
  • Automated code generation
  • Elimination of testing phases

A software project requires modification due to a change in legal currency. What type of documentation would be MOST helpful in planning and executing these changes?

  • Training manuals
  • Marketing material
  • Internal documentation for developers (correct)
  • End-user documentation

Why is it considered beneficial to have a standard for documentation within a software project?

<p>To ensure documentation is homogeneous. (A)</p> Signup and view all the answers

While writing documentation, what information should specifically be included to help end-users understand how to perform certain tasks?

<p>Screenshots and diagrams illustrating step-by-step instructions (C)</p> Signup and view all the answers

What is the MOST important reason for practicing meticulous version control of software?

<p>To avoid problems such as the loss of recent modifications. (D)</p> Signup and view all the answers

In a team environment, what is a key benefit of using a version control system during software development?

<p>It allows programmers to focus on coding and increases team efficiency. (B)</p> Signup and view all the answers

You need to revert your project to a state from one week ago. What feature of a version control system makes this possible?

<p>Fast return to previous project states (B)</p> Signup and view all the answers

A developer modified a block of code, but doesn't understand its purpose. How can version control systems assist?

<p>Trace the code's history to understand its functionality. (A)</p> Signup and view all the answers

What git command is used to create an empty Git repository?

<p><code>git init</code> (D)</p> Signup and view all the answers

After modifying a file in your working directory, which command do you use to move the changes to the staging area?

<p><code>git add</code> (C)</p> Signup and view all the answers

You've made several changes to a file and added it to the staging area. Which command permanently records these changes to the repository?

<p><code>git commit</code> (D)</p> Signup and view all the answers

What command displays the current status of your Git working directory, including staged and unstaged changes?

<p><code>git status</code> (D)</p> Signup and view all the answers

To make the files in the working directory the same as the most recent commit, what git command would you use?

<p><code>git checkout</code> (C)</p> Signup and view all the answers

In the context of Git, what is the purpose of a 'remote'?

<p>A pointer to an external repository (A)</p> Signup and view all the answers

What command uploads local repository content to a remote repository?

<p><code>git push</code> (D)</p> Signup and view all the answers

What is the purpose of the command git remote add origin <URL>?

<p>It configures a tracking connection to a remote repository. (B)</p> Signup and view all the answers

What type of access does a GitHub 'Team' account provide?

<p>Granular access management and advanced code review features (A)</p> Signup and view all the answers

What is the main goal of Continuous Integration (CI) in software development?

<p>To detect and resolve integration conflicts early and automatically. (D)</p> Signup and view all the answers

Which of the following best describes Continuous Delivery (CD)?

<p>Automating the release of new software versions. (C)</p> Signup and view all the answers

What is the primary purpose of using branches in a version control system?

<p>To isolate experimental code. (D)</p> Signup and view all the answers

In version control, what scenario leads to a 'conflict'?

<p>Two developers modify the same lines in a file. (A)</p> Signup and view all the answers

Which tool gives you the ability to consult the manual of a command?

<p>Man (C)</p> Signup and view all the answers

When consulting a man page, what section number typically corresponds to system calls?

<p>Section 2 (C)</p> Signup and view all the answers

Which application offers a collaborative and centralized wiki for software project documentation?

<p>MediaWiki (B)</p> Signup and view all the answers

In MediaWiki, what is the term for the pages where an application is saved?

<p>Articles (A)</p> Signup and view all the answers

What type of information is stored in the MediaWiki file system?

<p>Images and multimedia content (B)</p> Signup and view all the answers

Which of the following best describes the purpose of Javadoc?

<p>Generating technical documentation from Java code (B)</p> Signup and view all the answers

With Javadoc, what tag has to be used to describe method/constructor parameters in order?

<p><code>@param</code> (B)</p> Signup and view all the answers

Which tag is mandatory when adding info about a method?

<p>@version (D)</p> Signup and view all the answers

What does @deprecated tag mean in the development environment?

<p>Indicates that the element should no longer be used. (A)</p> Signup and view all the answers

To see a list of registered commits, which command can be used?

<p>log (D)</p> Signup and view all the answers

What can be done with the command worktree?

<p>It can administer multiple working branches associated to a repository. (D)</p> Signup and view all the answers

With GitHub, that are responsible of keeping libraries, frameworks or tools updated are called...

<p>Open Source project maintainers (D)</p> Signup and view all the answers

Why is it important to have the initial configuration setted up in a Control Version System?

<p>Because can depend on the characteristics of the project and the team. (B)</p> Signup and view all the answers

Which of the following Git workflow areas that contains copies of files so they can be modified?

<p>Working Directory (A)</p> Signup and view all the answers

The git add commands does...

<p>Adds the content to the staging area (C)</p> Signup and view all the answers

Flashcards

Software lifecycle

Series of processes determining software development, maintenance, and usage.

Why document software?

Crucial for collaboration, future modifications, and understanding software evolution

Why use version control?

Ensures team members use the correct code versions and prevents data loss.

What is 'man'?

Command-line tool providing access to system reference manuals on Linux, Unix, and macOS.

Signup and view all the flashcards

What is MediaWiki?

Collaborative documentation platform based on wiki principles, facilitating updates and version control.

Signup and view all the flashcards

What is Javadoc?

Oracle's tool for generating technical documentation in HTML from Java code, using comments in source files.

Signup and view all the flashcards

Define: Change

A change made to one or more files in the repository.

Signup and view all the flashcards

Define: Conflict

Situation where multiple users modify the same file, requiring resolution to proceed.

Signup and view all the flashcards

Define: Revision

A numbered version of project files.

Signup and view all the flashcards

Define: Branches

Parallel lines of work, allowing testing or multiple developers without conflict.

Signup and view all the flashcards

What is Git?

Distributed, fast version control system.

Signup and view all the flashcards

Working Directory

Directory where files are copied for modification:

Signup and view all the flashcards

Staging Area

Area staging changes for commit:

Signup and view all the flashcards

Git Directory

Contains the historic project metadata:

Signup and view all the flashcards

git init

Git command: create an empty Git repository.

Signup and view all the flashcards

git clone

Git command: copy a repository.

Signup and view all the flashcards

git add

Git command: Stage changes.

Signup and view all the flashcards

git status

Git command: List modified files.

Signup and view all the flashcards

git commit

Git command: Commit changes

Signup and view all the flashcards

Actions

System for CI and CD:

Signup and view all the flashcards

Github

Version control and collaboration platform for software:

Signup and view all the flashcards

What is a Free GitHub account?

A GitHub account for collaborating with others

Signup and view all the flashcards

What is GitHub Pro?

Designed for advanced personal repos

Signup and view all the flashcards

GitHub Teams

Designed for advanced teams repos

Signup and view all the flashcards

CI (Continuous Integration)

Set of automated steps run when code changes in a repository.

Signup and view all the flashcards

CD (Continuous Delivery)

Automated process of rolling out new versions of software.

Signup and view all the flashcards

Study Notes

Introducción

  • Software development involves processes from conception to obsolescence.
  • These processes are known as the software development life cycle.
  • Documentation is generated for each aspect of the life cycle to gather relevant information, such as installation manuals or user guides.
  • Careful version control is essential to prevent issues like data loss or using outdated versions.

Documentación del software

  • Documenting all software project processes with an established structure and standards is essential.
  • Accessible, high-quality documentation prevents problems such as client misunderstandings, difficulties in project modification, and challenges during team replacement.
  • Good user manuals enhance user autonomy and satisfaction.
  • Reasons for lack of documentation:
    • Tight deadlines
    • Lack of company culture valuing documentation
    • Developers finding documentation tedious

Documentation Best Practices

  • Documentation should be understandable and tailored to the audience.
  • Structure the document well, including an index.
  • Enforce standards with defined templates.
  • Start with a clear introduction outlining document contents.
  • Include contextualized examples in technical documentation.
  • Incorporate schemas, screenshots, and a standard file format.
  • Clearly state the documentation's edit date and program version.
  • Focus on essential information and regularly review document validity.
  • Make documentation easily accessible and allow for user participation.

Control de versiones (Version Control)

  • Programs have many modifications throughout their life cycle, including error corrections, improvements, and adaptations to market needs.
  • Managing these modifications can be complex, especially in larger projects.
  • Version control is essential for orderly development of code.
  • It helps to know what version is being worked on and who made the changes.
  • Optimized version control goes beyond backups and offers advantages such as:
    • Quickly reverting to previous project states.
    • Improving team focus and development efficiency.
    • Providing traceability of changes for understanding code functionality.

"Man" Command in Linux

  • The "man" command provides a user interface to access reference manuals in systems like BSD, Unix, Mac OS, or GNU/Linux.
  • Reference manuals are classified into numbered sections, typically from 1 to 8, including:
    • Executable programs and shell commands.
    • System calls (kernel functions).
    • Library calls (library functions).
    • Special files (e.g., configuration files).
    • File formats and conventions.
    • Games.
    • Miscellaneous items (macros and conventions).
    • System administration commands.
  • The basic syntax is: man [man options] [[section] page].

Table Definitions

  • $ man passwd shows help for the passwd command in section 1.
  • $ man 5 passwd displays the format of the /etc/passwd file in section 5.
  • $ man -a passwd shows all the help pages for passwd in any sections that coincide.
  • $ man -f passwd prints the short descriptions of passwd found in all the sections.
  • $ man -k passwd prints short descriptions of entries that coincides with “passwd.”

MediaWiki

  • It is a web application offers a collaborative wiki platform for software documentation.
  • It provides a free, open-source platform for multilanguage content.
  • Permissions can be set for who can change the content.
  • Older versions are saved in case that the current one needs to be recovered.
  • Information is stored in pages and grouped in the spaces of names.
  • The pages are written in wikitext which is HTML based.

Wikitext formatting explained:

  • == Title 1 ==: first level heading.
  • === Title 2 ===: second level heading.
  • "Text": italics, '''Text''': bold, """Text''''' : bold and italics.
  • [[Page]]: internal page link, [[Page Title]]: link with alternative title.
  • [URL Title]: external link with alternative title.
    • Text: unnumbered list element, :Text: paragraph with first level indent.

Javadoc

  • Javadoc is an Oracle tool for generating technical documentation in HTML from Java code.
  • It uses comments in the files for reference to generate the documentation automatically.
  • The comments should be before the declaration of a class, field, constructor, or method.
  • These comments must follow a structured format:
    • Begin with a line containing the delimiter /**.
    • End with a line containing the delimiter */.
    • Each line in the comment starts with *.
    • The description (can include a short first line and longer detailed segment).
    • A section defining sets of tags preceded by @symbol and description.

Javadoc Comment Considerations

  • Each comment line should be a maximum of 80 characters.
  • @author indicates the author of the classes and interfaces, and it is obligatory
  • @version displays the version of the classes and interfaces, and it is obligatory
  • @param displays and describes the name of the parameter
  • @return describes what the method will return
  • @exception and @throws indicate what type of exception is expected

Version Control Concepts

  • Repository: Storage space for source code and metadata, intended as the definitive version.
  • Change: A modification made to repository files.
  • Conflict: Occurs when multiple modifications happen to the same file, needs resolution.
  • Revision: A version of a file identified by a number.
  • Branches: Parallel development paths.

Known Version Control Tools

  • Apache Subversion (SVN): Uses a client-server repository model.
  • CVS: Client-server model, allows multiple programmers to work simultaneously, handling conflicts manually.
  • Git: A distributed system working with HTTP, FTP, and SSH protocols.

GIT

  • Under GNU 2.0 license.
  • Available for GNU/Linux, macOS and Windows.
  • Written in C.
  • Faster than other options.
  • Flexible branching model.
  • Has dedicated branches for different tasks.
  • Merging/eliminating between branches.
  • Initial configuration applies to all the users.

GIT areas of work

  • Working directory: a copy of the repository files available for modification
  • Staging area (index): an area that storage changes.
  • Git directory: an area that contains project and metadata with an older version of it

File status

  • Unmodified: a copy of the working area and has no change so far.
  • Modified: change copy after it was obtained. Was not still added.
  • Staged (Prepared): an area that prepares and confirms an area if the copy makes changes already. Committed: a file confirms and registers in the repository.

Git Commands

  • init: creates the repository
  • clone: clone it from the new directory
  • add: attach contents from one file to one area
  • status: shows areas state from the user.
  • diff: shows the difference among confirmations
  • commit: creates new version content from the current area version.

GIT continued

  • notes: add notes without altering them
  • restore: restores files with no source work
  • reset: the user reset HEAD to the selected state.
  • rm: removes files from work directory, or from the user.
  • mv: moves or renames director and files
  • branch: Lists, creates, or deletes branches.
  • Checkout: Change the branch or restores.
  • mergetool: tools used to solve branch issues and conflicts.
  • log: Shows registers of the confirm.

GIT end

  • stash: tests changes, so that the user can come back.
  • fetch: upload objects
  • Pull: uploads it.
  • Press: press new version of the tool.

GitHub

  • There is a user creation and type, as well as the groups.
  • GitHub is more than a basic code.
  • The site provides options as code.
  • Every student, or company, can find their place in the area.

GitHub accounts for higher education students

  • Can be more that space for the user to manage the place.
  • Educational toll that allows learning control, versions and collaboration
  • Can share projects or make assignments as groups.

Professional developer accounts

  • Can find a collaborate open space where users can contribute
  • Share their experience with community
  • Can manage with team
  • Track issues with the pull features

Company/organization-based accounts

  • Have better solutions.
  • Used for tools, actions, project management
  • Improve collaboration team

Open Source project maintenance accounts

  • Maintain open better sources for the team to use.
  • Maintained by 10s, 100s, or 1000s users.

Enthusiast and Amateur Users

  • GitHub attracts users that are interesting in common tech/programs.
  • In resume: GitHub has more that users can used them.
  • Can work with CI continuous, whose point focuses in time and application.
    • CI: programming changes tested automatically.

CD: to publish new version of tools

  • Verify correct modification the the developers make
  • Hosted by GITHUB to automate.

GitHub type account

  • It has convert to tools.
  • Collab, versioning, efficiently project edition with managed way.
  • The GitHub type account has: an account that can give limited functionalities compared by the payed account.
  • It's a way to let the partners in college/class works code together
  • The follow problems can be solved between: problems, code extras, task and fixes.

PRO accounts

  • More control and advanced features that are popular.

Team for accounts

  • designed to provide advanced access, review code, and improve tool security.

Studying That Suits You

Use AI to generate personalized quizzes and flashcards to suit your learning preferences.

Quiz Team

Related Documents

More Like This

Software Development Process Overview
25 questions
Software Development Standards Overview
40 questions
Use Quizgecko on...
Browser
Browser